From fc5adc02fea15d9095e2c6f7dd68c538f36bf24b Mon Sep 17 00:00:00 2001 From: Vitalii Dmyterko <92328789+vitaliidm@users.noreply.github.com> Date: Fri, 14 Feb 2025 20:09:53 +0000 Subject: [PATCH 01/78] [Security Solution][Detection Engine] fixes lists/items API when @timestamp field is number (#210440) ## Summary - addresses https://github.com/elastic/security-team/issues/11831 **To Reproduce** 1. Create Security lists/items in 7.17 by uploading value list https://www.elastic.co/guide/en/security/current/value-lists-exceptions.html 2. Upgrade to 8.18 3. Visit detection engine page to ensure .lists-{SPACE} and .items-{SPACE} data streams have been created. Would be enough to lookup value lists in lists UI https://www.elastic.co/guide/en/security/current/value-lists-exceptions.html#edit-value-lists 4. Go to Kibana Upgrade assistant 5. Reindex .lists-{SPACE} and .items-{SPACE} data streams 6. After reindex lists are not retrievable with error `"data.0.@timestamp: Expected string, received number" ` through `/lists/_find` API **After fix** `@timestamp` of number type will be converted to ISO string **To test** use 8.18 mirror of this branch: https://github.com/elastic/kibana/pull/210439 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../src/common/timestamp/index.ts | 5 +++ .../search_es_list_item_schema.ts | 4 +-- .../search_es_list_schema.mock.ts | 6 ++-- .../elastic_response/search_es_list_schema.ts | 4 +-- .../utils/convert_date_number_to_string.ts | 18 ++++++++++ .../services/utils/find_source_value.ts | 2 +- .../utils/transform_elastic_to_list.test.ts | 36 +++++++++++++++++++ .../utils/transform_elastic_to_list.ts | 3 ++ .../transform_elastic_to_list_item.test.ts | 32 ++++++++++++++++- .../utils/transform_elastic_to_list_item.ts | 3 +- 10 files changed, 104 insertions(+), 9 deletions(-) create mode 100644 x-pack/solutions/security/plugins/lists/server/services/utils/convert_date_number_to_string.ts create mode 100644 x-pack/solutions/security/plugins/lists/server/services/utils/transform_elastic_to_list.test.ts diff --git a/x-pack/solutions/security/packages/kbn-securitysolution-io-ts-list-types/src/common/timestamp/index.ts b/x-pack/solutions/security/packages/kbn-securitysolution-io-ts-list-types/src/common/timestamp/index.ts index 30472bcd101f9..b60ef66bb2e65 100644 --- a/x-pack/solutions/security/packages/kbn-securitysolution-io-ts-list-types/src/common/timestamp/index.ts +++ b/x-pack/solutions/security/packages/kbn-securitysolution-io-ts-list-types/src/common/timestamp/index.ts @@ -10,3 +10,8 @@ import { IsoDateString } from '@kbn/securitysolution-io-ts-types'; export const timestamp = IsoDateString; export const timestampOrUndefined = t.union([IsoDateString, t.undefined]); + +/** + * timestamp field type as it can be returned form ES: string, number or undefined + */ +export const timestampFromEsResponse = t.union([IsoDateString, t.number, t.undefined]); diff --git a/x-pack/solutions/security/plugins/lists/server/schemas/elastic_response/search_es_list_item_schema.ts b/x-pack/solutions/security/plugins/lists/server/schemas/elastic_response/search_es_list_item_schema.ts index 8b0fa71f2222f..be683e3ec6ca9 100644 --- a/x-pack/solutions/security/plugins/lists/server/schemas/elastic_response/search_es_list_item_schema.ts +++ b/x-pack/solutions/security/plugins/lists/server/schemas/elastic_response/search_es_list_item_schema.ts @@ -14,7 +14,7 @@ import { nullableMetaOrUndefined, serializerOrUndefined, tie_breaker_id, - timestampOrUndefined, + timestampFromEsResponse, updated_at, updated_by, } from '@kbn/securitysolution-io-ts-list-types'; @@ -47,7 +47,7 @@ import { export const searchEsListItemSchema = t.exact( t.type({ - '@timestamp': timestampOrUndefined, + '@timestamp': timestampFromEsResponse, binary: binaryOrUndefined, boolean: booleanOrUndefined, byte: byteOrUndefined, diff --git a/x-pack/solutions/security/plugins/lists/server/schemas/elastic_response/search_es_list_schema.mock.ts b/x-pack/solutions/security/plugins/lists/server/schemas/elastic_response/search_es_list_schema.mock.ts index 1d4b282d5352a..00ce8b58d7e0a 100644 --- a/x-pack/solutions/security/plugins/lists/server/schemas/elastic_response/search_es_list_schema.mock.ts +++ b/x-pack/solutions/security/plugins/lists/server/schemas/elastic_response/search_es_list_schema.mock.ts @@ -41,7 +41,9 @@ export const getSearchEsListMock = (): SearchEsListSchema => ({ version: VERSION, }); -export const getSearchListMock = (): estypes.SearchResponse => ({ +export const getSearchListMock = ( + source?: SearchEsListSchema +): estypes.SearchResponse => ({ _scroll_id: '123', _shards: getShardMock(), hits: { @@ -50,7 +52,7 @@ export const getSearchListMock = (): estypes.SearchResponse _id: LIST_ID, _index: LIST_INDEX, _score: 0, - _source: getSearchEsListMock(), + _source: source || getSearchEsListMock(), }, ], max_score: 0, diff --git a/x-pack/solutions/security/plugins/lists/server/schemas/elastic_response/search_es_list_schema.ts b/x-pack/solutions/security/plugins/lists/server/schemas/elastic_response/search_es_list_schema.ts index 17d2e64fb7542..93ae1cb1ce6f9 100644 --- a/x-pack/solutions/security/plugins/lists/server/schemas/elastic_response/search_es_list_schema.ts +++ b/x-pack/solutions/security/plugins/lists/server/schemas/elastic_response/search_es_list_schema.ts @@ -16,7 +16,7 @@ import { nullableMetaOrUndefined, serializerOrUndefined, tie_breaker_id, - timestampOrUndefined, + timestampFromEsResponse, type, updated_at, updated_by, @@ -25,7 +25,7 @@ import { version } from '@kbn/securitysolution-io-ts-types'; export const searchEsListSchema = t.exact( t.type({ - '@timestamp': timestampOrUndefined, + '@timestamp': timestampFromEsResponse, created_at, created_by, description, diff --git a/x-pack/solutions/security/plugins/lists/server/services/utils/convert_date_number_to_string.ts b/x-pack/solutions/security/plugins/lists/server/services/utils/convert_date_number_to_string.ts new file mode 100644 index 0000000000000..ca105834456ca --- /dev/null +++ b/x-pack/solutions/security/plugins/lists/server/services/utils/convert_date_number_to_string.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. + */ + +/** + * if date field is number, converts it to ISO string + */ +export const convertDateNumberToString = ( + dateValue: string | number | undefined +): string | undefined => { + if (typeof dateValue === 'number') { + return new Date(dateValue).toISOString(); + } + return dateValue; +}; diff --git a/x-pack/solutions/security/plugins/lists/server/services/utils/find_source_value.ts b/x-pack/solutions/security/plugins/lists/server/services/utils/find_source_value.ts index 5d03c8f6707b3..959c5478bbc95 100644 --- a/x-pack/solutions/security/plugins/lists/server/services/utils/find_source_value.ts +++ b/x-pack/solutions/security/plugins/lists/server/services/utils/find_source_value.ts @@ -79,7 +79,7 @@ export const deserializeValue = ({ deserializer: DeserializerOrUndefined; defaultValueDeserializer: string; defaultDeserializer: string; - value: string | object | undefined; + value: string | object | number | undefined; }): string | null => { if (esDataTypeRange.is(value)) { const template = diff --git a/x-pack/solutions/security/plugins/lists/server/services/utils/transform_elastic_to_list.test.ts b/x-pack/solutions/security/plugins/lists/server/services/utils/transform_elastic_to_list.test.ts new file mode 100644 index 0000000000000..b6fde32050dd1 --- /dev/null +++ b/x-pack/solutions/security/plugins/lists/server/services/utils/transform_elastic_to_list.test.ts @@ -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 { + getSearchEsListMock, + getSearchListMock, +} from '../../schemas/elastic_response/search_es_list_schema.mock'; + +import { transformElasticToList } from './transform_elastic_to_list'; +describe('transformElasticToList', () => { + test('does not change timestamp in string format', () => { + const response = getSearchListMock({ + ...getSearchEsListMock(), + '@timestamp': '2020-04-20T15:25:31.830Z', + }); + + const result = transformElasticToList({ + response, + }); + + expect(result[0]['@timestamp']).toBe('2020-04-20T15:25:31.830Z'); + }); + test('converts timestamp from number format to ISO string', () => { + const response = getSearchListMock({ ...getSearchEsListMock(), '@timestamp': 0 }); + + const result = transformElasticToList({ + response, + }); + + expect(result[0]['@timestamp']).toBe('1970-01-01T00:00:00.000Z'); + }); +}); diff --git a/x-pack/solutions/security/plugins/lists/server/services/utils/transform_elastic_to_list.ts b/x-pack/solutions/security/plugins/lists/server/services/utils/transform_elastic_to_list.ts index e5e917a147ac9..8247f5281d6ee 100644 --- a/x-pack/solutions/security/plugins/lists/server/services/utils/transform_elastic_to_list.ts +++ b/x-pack/solutions/security/plugins/lists/server/services/utils/transform_elastic_to_list.ts @@ -11,6 +11,8 @@ import { encodeHitVersion } from '@kbn/securitysolution-es-utils'; import { SearchEsListSchema } from '../../schemas/elastic_response'; +import { convertDateNumberToString } from './convert_date_number_to_string'; + export interface TransformElasticToListOptions { response: estypes.SearchResponse; } @@ -24,6 +26,7 @@ export const transformElasticToList = ({ _version: encodeHitVersion(hit), id: hit._id, ...hit._source, + '@timestamp': convertDateNumberToString(hit._source?.['@timestamp']), // meta can be null if deleted (empty in PUT payload), since update_by_query set deleted values as null // return it as undefined to keep it consistent with payload meta: hit._source?.meta ?? undefined, diff --git a/x-pack/solutions/security/plugins/lists/server/services/utils/transform_elastic_to_list_item.test.ts b/x-pack/solutions/security/plugins/lists/server/services/utils/transform_elastic_to_list_item.test.ts index e2ec36e533bd1..797cff33cda53 100644 --- a/x-pack/solutions/security/plugins/lists/server/services/utils/transform_elastic_to_list_item.test.ts +++ b/x-pack/solutions/security/plugins/lists/server/services/utils/transform_elastic_to_list_item.test.ts @@ -8,7 +8,10 @@ import type { ListItemArraySchema } from '@kbn/securitysolution-io-ts-list-types'; import { getListItemResponseMock } from '../../../common/schemas/response/list_item_schema.mock'; -import { getSearchListItemMock } from '../../schemas/elastic_response/search_es_list_item_schema.mock'; +import { + getSearchEsListItemMock, + getSearchListItemMock, +} from '../../schemas/elastic_response/search_es_list_item_schema.mock'; import { transformElasticHitsToListItem, @@ -84,5 +87,32 @@ describe('transform_elastic_to_list_item', () => { const expected: ListItemArraySchema = [listItemResponse]; expect(queryFilter).toEqual(expected); }); + + test('converts timestamp from number format to ISO string', () => { + const hits = [{ _index: 'test', _source: { ...getSearchEsListItemMock(), '@timestamp': 0 } }]; + + const result = transformElasticHitsToListItem({ + hits, + type: 'keyword', + }); + + expect(result[0]['@timestamp']).toBe('1970-01-01T00:00:00.000Z'); + }); + + test('converts negative from number timestamp to ISO string', () => { + const hits = [ + { + _index: 'test', + _source: { ...getSearchEsListItemMock(), '@timestamp': -63549289600000 }, + }, + ]; + + const result = transformElasticHitsToListItem({ + hits, + type: 'keyword', + }); + + expect(result[0]['@timestamp']).toBe('-000044-03-15T19:33:20.000Z'); + }); }); }); diff --git a/x-pack/solutions/security/plugins/lists/server/services/utils/transform_elastic_to_list_item.ts b/x-pack/solutions/security/plugins/lists/server/services/utils/transform_elastic_to_list_item.ts index a41a78a6b8fed..060f4fa279681 100644 --- a/x-pack/solutions/security/plugins/lists/server/services/utils/transform_elastic_to_list_item.ts +++ b/x-pack/solutions/security/plugins/lists/server/services/utils/transform_elastic_to_list_item.ts @@ -13,6 +13,7 @@ import { ErrorWithStatusCode } from '../../error_with_status_code'; import { SearchEsListItemSchema } from '../../schemas/elastic_response'; import { findSourceValue } from './find_source_value'; +import { convertDateNumberToString } from './convert_date_number_to_string'; export interface TransformElasticToListItemOptions { response: estypes.SearchResponse; @@ -56,7 +57,7 @@ export const transformElasticHitsToListItem = ({ throw new ErrorWithStatusCode(`Was expected ${type} to not be null/undefined`, 400); } else { return { - '@timestamp': _source?.['@timestamp'], + '@timestamp': convertDateNumberToString(_source?.['@timestamp']), _version: encodeHitVersion(hit), created_at, created_by, From 89b05458ad291293d9584983a48500976151562b Mon Sep 17 00:00:00 2001 From: Gerard Soldevila Date: Fri, 14 Feb 2025 22:12:16 +0100 Subject: [PATCH 02/78] SKA: Fix kebab-case issues in cloud-security-posture packages (#211314) --- .github/CODEOWNERS | 2 +- package.json | 2 +- tsconfig.base.json | 4 ++-- .../packages/{distribution_bar => distribution-bar}/README.md | 0 .../packages/{distribution_bar => distribution-bar}/index.ts | 0 .../{distribution_bar => distribution-bar}/jest.config.js | 2 +- .../{distribution_bar => distribution-bar}/kibana.jsonc | 0 .../{distribution_bar => distribution-bar}/package.json | 0 .../src/distribution_bar.stories.tsx | 0 .../src/distribution_bar.test.tsx | 0 .../src/distribution_bar.tsx | 0 .../{distribution_bar => distribution-bar}/tsconfig.json | 0 yarn.lock | 2 +- 13 files changed, 6 insertions(+), 6 deletions(-) rename x-pack/solutions/security/packages/{distribution_bar => distribution-bar}/README.md (100%) rename x-pack/solutions/security/packages/{distribution_bar => distribution-bar}/index.ts (100%) rename x-pack/solutions/security/packages/{distribution_bar => distribution-bar}/jest.config.js (97%) rename x-pack/solutions/security/packages/{distribution_bar => distribution-bar}/kibana.jsonc (100%) rename x-pack/solutions/security/packages/{distribution_bar => distribution-bar}/package.json (100%) rename x-pack/solutions/security/packages/{distribution_bar => distribution-bar}/src/distribution_bar.stories.tsx (100%) rename x-pack/solutions/security/packages/{distribution_bar => distribution-bar}/src/distribution_bar.test.tsx (100%) rename x-pack/solutions/security/packages/{distribution_bar => distribution-bar}/src/distribution_bar.tsx (100%) rename x-pack/solutions/security/packages/{distribution_bar => distribution-bar}/tsconfig.json (100%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 672662550de1e..3c93751aeecbd 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -978,7 +978,7 @@ x-pack/solutions/search/plugins/serverless_search @elastic/search-kibana x-pack/solutions/security/packages/connectors @elastic/security-threat-hunting-explore x-pack/solutions/security/packages/data_table @elastic/security-threat-hunting-investigations x-pack/solutions/security/packages/data-stream-adapter @elastic/security-threat-hunting -x-pack/solutions/security/packages/distribution_bar @elastic/kibana-cloud-security-posture +x-pack/solutions/security/packages/distribution-bar @elastic/kibana-cloud-security-posture x-pack/solutions/security/packages/ecs_data_quality_dashboard @elastic/security-threat-hunting-explore x-pack/solutions/security/packages/expandable-flyout @elastic/security-threat-hunting-investigations x-pack/solutions/security/packages/features @elastic/security-threat-hunting-explore diff --git a/package.json b/package.json index 587dfcb36b0b3..e1a3291218ea9 100644 --- a/package.json +++ b/package.json @@ -831,7 +831,7 @@ "@kbn/security-plugin-types-server": "link:x-pack/platform/packages/shared/security/plugin_types_server", "@kbn/security-role-management-model": "link:x-pack/platform/packages/private/security/role_management_model", "@kbn/security-solution-connectors": "link:x-pack/solutions/security/packages/connectors", - "@kbn/security-solution-distribution-bar": "link:x-pack/solutions/security/packages/distribution_bar", + "@kbn/security-solution-distribution-bar": "link:x-pack/solutions/security/packages/distribution-bar", "@kbn/security-solution-ess": "link:x-pack/solutions/security/plugins/security_solution_ess", "@kbn/security-solution-features": "link:x-pack/solutions/security/packages/features", "@kbn/security-solution-fixtures-plugin": "link:x-pack/test/cases_api_integration/common/plugins/security_solution", diff --git a/tsconfig.base.json b/tsconfig.base.json index f202935bc33d8..d5005c960cd70 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1654,8 +1654,8 @@ "@kbn/security-role-management-model/*": ["x-pack/platform/packages/private/security/role_management_model/*"], "@kbn/security-solution-connectors": ["x-pack/solutions/security/packages/connectors"], "@kbn/security-solution-connectors/*": ["x-pack/solutions/security/packages/connectors/*"], - "@kbn/security-solution-distribution-bar": ["x-pack/solutions/security/packages/distribution_bar"], - "@kbn/security-solution-distribution-bar/*": ["x-pack/solutions/security/packages/distribution_bar/*"], + "@kbn/security-solution-distribution-bar": ["x-pack/solutions/security/packages/distribution-bar"], + "@kbn/security-solution-distribution-bar/*": ["x-pack/solutions/security/packages/distribution-bar/*"], "@kbn/security-solution-ess": ["x-pack/solutions/security/plugins/security_solution_ess"], "@kbn/security-solution-ess/*": ["x-pack/solutions/security/plugins/security_solution_ess/*"], "@kbn/security-solution-features": ["x-pack/solutions/security/packages/features"], diff --git a/x-pack/solutions/security/packages/distribution_bar/README.md b/x-pack/solutions/security/packages/distribution-bar/README.md similarity index 100% rename from x-pack/solutions/security/packages/distribution_bar/README.md rename to x-pack/solutions/security/packages/distribution-bar/README.md diff --git a/x-pack/solutions/security/packages/distribution_bar/index.ts b/x-pack/solutions/security/packages/distribution-bar/index.ts similarity index 100% rename from x-pack/solutions/security/packages/distribution_bar/index.ts rename to x-pack/solutions/security/packages/distribution-bar/index.ts diff --git a/x-pack/solutions/security/packages/distribution_bar/jest.config.js b/x-pack/solutions/security/packages/distribution-bar/jest.config.js similarity index 97% rename from x-pack/solutions/security/packages/distribution_bar/jest.config.js rename to x-pack/solutions/security/packages/distribution-bar/jest.config.js index 296ff5369079c..8d577c36568c2 100644 --- a/x-pack/solutions/security/packages/distribution_bar/jest.config.js +++ b/x-pack/solutions/security/packages/distribution-bar/jest.config.js @@ -7,6 +7,6 @@ module.exports = { preset: '@kbn/test', - roots: ['/x-pack/solutions/security/packages/distribution_bar'], + roots: ['/x-pack/solutions/security/packages/distribution-bar'], rootDir: '../../../../..', }; diff --git a/x-pack/solutions/security/packages/distribution_bar/kibana.jsonc b/x-pack/solutions/security/packages/distribution-bar/kibana.jsonc similarity index 100% rename from x-pack/solutions/security/packages/distribution_bar/kibana.jsonc rename to x-pack/solutions/security/packages/distribution-bar/kibana.jsonc diff --git a/x-pack/solutions/security/packages/distribution_bar/package.json b/x-pack/solutions/security/packages/distribution-bar/package.json similarity index 100% rename from x-pack/solutions/security/packages/distribution_bar/package.json rename to x-pack/solutions/security/packages/distribution-bar/package.json diff --git a/x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.stories.tsx b/x-pack/solutions/security/packages/distribution-bar/src/distribution_bar.stories.tsx similarity index 100% rename from x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.stories.tsx rename to x-pack/solutions/security/packages/distribution-bar/src/distribution_bar.stories.tsx diff --git a/x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.test.tsx b/x-pack/solutions/security/packages/distribution-bar/src/distribution_bar.test.tsx similarity index 100% rename from x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.test.tsx rename to x-pack/solutions/security/packages/distribution-bar/src/distribution_bar.test.tsx diff --git a/x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx b/x-pack/solutions/security/packages/distribution-bar/src/distribution_bar.tsx similarity index 100% rename from x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx rename to x-pack/solutions/security/packages/distribution-bar/src/distribution_bar.tsx diff --git a/x-pack/solutions/security/packages/distribution_bar/tsconfig.json b/x-pack/solutions/security/packages/distribution-bar/tsconfig.json similarity index 100% rename from x-pack/solutions/security/packages/distribution_bar/tsconfig.json rename to x-pack/solutions/security/packages/distribution-bar/tsconfig.json diff --git a/yarn.lock b/yarn.lock index 783a82257168e..441eeb4ebceac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7177,7 +7177,7 @@ version "0.0.0" uid "" -"@kbn/security-solution-distribution-bar@link:x-pack/solutions/security/packages/distribution_bar": +"@kbn/security-solution-distribution-bar@link:x-pack/solutions/security/packages/distribution-bar": version "0.0.0" uid "" From 6006546dc4abd005eb05a587b28bbef2a2b39bc7 Mon Sep 17 00:00:00 2001 From: Ievgen Sorokopud Date: Sat, 15 Feb 2025 00:30:43 +0100 Subject: [PATCH 03/78] [Rules migration][Integration test] Stats APIs (#11232) (#211315) ## Summary [Internal link](https://github.com/elastic/security-team/issues/10820) to the feature details Part of https://github.com/elastic/security-team/issues/11232 This PR covers SIEM Migrations Stats APIs: * Retrieves the stats for the specific migration: (route: `GET /internal/siem_migrations/rules/{migration_id}/stat`) * Retrieves the stats for all the existing migrations, aggregated by `migration_id`: (route: `GET /internal/siem_migrations/rules/stats`) * Retrieves the translation stats for the migration: (route: `GET /internal/siem_migrations/rules/{migration_id}/translation_stats`) --- .../public/siem_migrations/rules/api/index.ts | 2 +- .../trial_license_complete_tier/index.ts | 1 + .../trial_license_complete_tier/stats.ts | 145 ++++++++++++++++++ .../siem_migrations/utils/mocks.ts | 56 +++++++ .../siem_migrations/utils/rules.ts | 76 +++++++-- 5 files changed, 268 insertions(+), 12 deletions(-) create mode 100644 x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/stats.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/api/index.ts b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/api/index.ts index e149804630dc9..e4b976a51ab3f 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/api/index.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/siem_migrations/rules/api/index.ts @@ -52,7 +52,7 @@ export interface GetRuleMigrationStatsParams { /** Optional AbortSignal for cancelling request */ signal?: AbortSignal; } -/** Retrieves the stats for all the existing migrations, aggregated by `migration_id`. */ +/** Retrieves the stats for the specific migration. */ export const getRuleMigrationStats = async ({ migrationId, signal, diff --git a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/index.ts b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/index.ts index d36f93afb8656..c5d53b96bafb1 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/index.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/index.ts @@ -10,6 +10,7 @@ export default function ({ loadTestFile }: FtrProviderContext) { describe('@ess SecuritySolution SIEM Migrations', () => { loadTestFile(require.resolve('./create')); loadTestFile(require.resolve('./get')); + loadTestFile(require.resolve('./stats')); loadTestFile(require.resolve('./update')); }); } diff --git a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/stats.ts b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/stats.ts new file mode 100644 index 0000000000000..42c6d4f097150 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/stats.ts @@ -0,0 +1,145 @@ +/* + * 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 expect from 'expect'; +import { v4 as uuidv4 } from 'uuid'; +import { + createMigrationRules, + deleteAllMigrationRules, + getMigrationRuleDocuments, + migrationRulesRouteHelpersFactory, + statsOverrideCallbackFactory, +} from '../../utils'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default ({ getService }: FtrProviderContext) => { + const es = getService('es'); + const supertest = getService('supertest'); + const migrationRulesRoutes = migrationRulesRouteHelpersFactory(supertest); + + describe('@ess @serverless @serverlessQA Stats API', () => { + beforeEach(async () => { + await deleteAllMigrationRules(es); + }); + + it('should return stats for the specific migration', async () => { + const migrationId = uuidv4(); + + const failed = 3; + const pending = 5; + const processing = 7; + const completed = 10; + const total = failed + pending + processing + completed; + const overrideCallback = statsOverrideCallbackFactory({ + migrationId, + failed, + pending, + processing, + completed, // 4 - full, 5 - partial, 1 - untranslated + fullyTranslated: 4, + partiallyTranslated: 5, + }); + const migrationRuleDocuments = getMigrationRuleDocuments(total, overrideCallback); + await createMigrationRules(es, migrationRuleDocuments); + + const response = await migrationRulesRoutes.stats({ migrationId }); + expect(response.body).toEqual( + expect.objectContaining({ + status: 'stopped', + id: migrationId, + rules: { + total, + pending, + processing, + completed, + failed, + }, + }) + ); + }); + + it('should return stats for the existing migrations', async () => { + const migrationId1 = uuidv4(); + const migrationId2 = uuidv4(); + + const overrideCallback1 = statsOverrideCallbackFactory({ + migrationId: migrationId1, + failed: 2, + pending: 4, + processing: 3, + completed: 33, + fullyTranslated: 10, + partiallyTranslated: 10, + }); + const migrationRuleDocuments1 = getMigrationRuleDocuments(42, overrideCallback1); + const overrideCallback2 = statsOverrideCallbackFactory({ + migrationId: migrationId2, + failed: 7, + pending: 2, + processing: 5, + completed: 14, + fullyTranslated: 3, + partiallyTranslated: 5, + }); + const migrationRuleDocuments2 = getMigrationRuleDocuments(28, overrideCallback2); + await createMigrationRules(es, [...migrationRuleDocuments1, ...migrationRuleDocuments2]); + + const response = await migrationRulesRoutes.statsAll({}); + const expectedStats = expect.arrayContaining([ + expect.objectContaining({ + status: 'stopped', + id: migrationId1, + rules: { total: 42, pending: 4, processing: 3, completed: 33, failed: 2 }, + }), + expect.objectContaining({ + status: 'stopped', + id: migrationId2, + rules: { total: 28, pending: 2, processing: 5, completed: 14, failed: 7 }, + }), + ]); + expect(response.body).toEqual(expectedStats); + }); + + it('should return translation stats for the specific migration', async () => { + const migrationId = uuidv4(); + + const failed = 3; + const pending = 5; + const processing = 7; + const completed = 10; + const total = failed + pending + processing + completed; + const overrideCallback = statsOverrideCallbackFactory({ + migrationId, + failed, + pending, + processing, + completed, // 4 - full, 5 - partial, 1 - untranslated + fullyTranslated: 4, + partiallyTranslated: 5, + }); + const migrationRuleDocuments = getMigrationRuleDocuments(total, overrideCallback); + await createMigrationRules(es, migrationRuleDocuments); + + const response = await migrationRulesRoutes.translationStats({ migrationId }); + expect(response.body).toEqual( + expect.objectContaining({ + id: migrationId, + rules: { + total, + success: { + total: completed, + result: { full: 4, partial: 5, untranslatable: 1 }, + installable: 4, + prebuilt: 0, + }, + failed, + }, + }) + ); + }); + }); +}; diff --git a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/mocks.ts b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/mocks.ts index 63ce51c0a5b2e..ee75f3e4a5dd3 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/mocks.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/mocks.ts @@ -6,6 +6,10 @@ */ import type { Client } from '@elastic/elasticsearch'; +import { + RuleTranslationResult, + SiemMigrationStatus, +} from '@kbn/security-solution-plugin/common/siem_migrations/constants'; import { ElasticRule, @@ -95,6 +99,58 @@ export const getMigrationRuleDocuments = ( return docs; }; +export const statsOverrideCallbackFactory = ({ + migrationId, + failed, + pending, + processing, + completed, + fullyTranslated, + partiallyTranslated, +}: { + migrationId: string; + failed: number; + pending: number; + processing: number; + completed: number; + fullyTranslated: number; + partiallyTranslated: number; +}) => { + const overrideCallback = (index: number): Partial => { + let translationResult; + let status = SiemMigrationStatus.PENDING; + + const pendingEndIndex = failed + pending; + const processingEndIndex = failed + pending + processing; + const completedEndIndex = failed + pending + processing + completed; + if (index < failed) { + status = SiemMigrationStatus.FAILED; + } else if (index < pendingEndIndex) { + status = SiemMigrationStatus.PENDING; + } else if (index < processingEndIndex) { + status = SiemMigrationStatus.PROCESSING; + } else if (index < completedEndIndex) { + status = SiemMigrationStatus.COMPLETED; + const fullyTranslatedEndIndex = completedEndIndex - completed + fullyTranslated; + const partiallyTranslatedEndIndex = + completedEndIndex - completed + fullyTranslated + partiallyTranslated; + if (index < fullyTranslatedEndIndex) { + translationResult = RuleTranslationResult.FULL; + } else if (index < partiallyTranslatedEndIndex) { + translationResult = RuleTranslationResult.PARTIAL; + } else { + translationResult = RuleTranslationResult.UNTRANSLATABLE; + } + } + return { + migration_id: migrationId, + translation_result: translationResult, + status, + }; + }; + return overrideCallback; +}; + export const createMigrationRules = async ( es: Client, rules: RuleMigrationDocument[] diff --git a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/rules.ts b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/rules.ts index a58cbb53a4310..07e845805cda2 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/rules.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/rules.ts @@ -13,44 +13,49 @@ import { import { replaceParams } from '@kbn/openapi-common/shared'; import { + SIEM_RULE_MIGRATIONS_ALL_STATS_PATH, SIEM_RULE_MIGRATIONS_PATH, SIEM_RULE_MIGRATION_PATH, + SIEM_RULE_MIGRATION_STATS_PATH, + SIEM_RULE_MIGRATION_TRANSLATION_STATS_PATH, } from '@kbn/security-solution-plugin/common/siem_migrations/constants'; import { CreateRuleMigrationResponse, + GetAllStatsRuleMigrationResponse, GetRuleMigrationRequestQuery, GetRuleMigrationResponse, + GetRuleMigrationStatsResponse, UpdateRuleMigrationResponse, } from '@kbn/security-solution-plugin/common/siem_migrations/model/api/rules/rule_migration.gen'; import { API_VERSIONS } from '@kbn/security-solution-plugin/common/constants'; import { assertStatusCode } from './asserts'; -export interface GetRuleMigrationParams { +export interface RequestParams { + /** Optional expected status code parameter */ + expectStatusCode?: number; +} + +export interface MigrationRequestParams extends RequestParams { /** `id` of the migration to get rules documents for */ migrationId: string; +} + +export interface GetRuleMigrationParams extends MigrationRequestParams { /** Optional query parameters */ queryParams?: GetRuleMigrationRequestQuery; - /** Optional expected status code parameter */ - expectStatusCode?: number; } -export interface CreateRuleMigrationParams { +export interface CreateRuleMigrationParams extends RequestParams { /** Optional `id` of migration to add the rules to. * The id is necessary only for batching the migration creation in multiple requests */ migrationId?: string; /** Optional payload to send */ payload?: any; - /** Optional expected status code parameter */ - expectStatusCode?: number; } -export interface UpdateRulesParams { - /** `id` of the migration to install rules for */ - migrationId: string; +export interface UpdateRulesParams extends MigrationRequestParams { /** Optional payload to send */ payload?: any; - /** Optional expected status code parameter */ - expectStatusCode?: number; } export const migrationRulesRouteHelpersFactory = (supertest: SuperTest.Agent) => { @@ -106,5 +111,54 @@ export const migrationRulesRouteHelpersFactory = (supertest: SuperTest.Agent) => return response; }, + + stats: async ({ + migrationId, + expectStatusCode = 200, + }: MigrationRequestParams): Promise<{ body: GetRuleMigrationStatsResponse }> => { + const response = await supertest + .get(replaceParams(SIEM_RULE_MIGRATION_STATS_PATH, { migration_id: migrationId })) + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, API_VERSIONS.internal.v1) + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .send(); + + assertStatusCode(expectStatusCode, response); + + return response; + }, + + statsAll: async ({ + expectStatusCode = 200, + }: RequestParams): Promise<{ body: GetAllStatsRuleMigrationResponse }> => { + const response = await supertest + .get(SIEM_RULE_MIGRATIONS_ALL_STATS_PATH) + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, API_VERSIONS.internal.v1) + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .send(); + + assertStatusCode(expectStatusCode, response); + + return response; + }, + + translationStats: async ({ + migrationId, + expectStatusCode = 200, + }: MigrationRequestParams): Promise<{ body: GetRuleMigrationStatsResponse }> => { + const response = await supertest + .get( + replaceParams(SIEM_RULE_MIGRATION_TRANSLATION_STATS_PATH, { migration_id: migrationId }) + ) + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, API_VERSIONS.internal.v1) + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .send(); + + assertStatusCode(expectStatusCode, response); + + return response; + }, }; }; From ece08bd3f6f4d697c27b508cde97e991b6fc5c88 Mon Sep 17 00:00:00 2001 From: christineweng <18648970+christineweng@users.noreply.github.com> Date: Fri, 14 Feb 2025 22:07:54 -0600 Subject: [PATCH 04/78] [Security Solution] Expandable flyout - update preview shadow (#211098) ## Summary Improved UI on preview background Before ![image](https://github.com/user-attachments/assets/5ae595a3-ebdc-4a18-a58d-6e65eb61574a) After ![image](https://github.com/user-attachments/assets/e8f9aafb-6bcc-42e3-ab92-0c394be4d695) ### Checklist - [x] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --- .../src/components/preview_section.tsx | 19 ++++++++----------- .../components/modal/index.styles.tsx | 1 + 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/x-pack/solutions/security/packages/expandable-flyout/src/components/preview_section.tsx b/x-pack/solutions/security/packages/expandable-flyout/src/components/preview_section.tsx index 719c6af4a18cd..f8f7be38c5f48 100644 --- a/x-pack/solutions/security/packages/expandable-flyout/src/components/preview_section.tsx +++ b/x-pack/solutions/security/packages/expandable-flyout/src/components/preview_section.tsx @@ -13,6 +13,7 @@ import { EuiSplitPanel, EuiText, useEuiTheme, + transparentize, } from '@elastic/eui'; import React, { memo, useMemo } from 'react'; import { css } from '@emotion/react'; @@ -134,21 +135,17 @@ export const PreviewSection: React.FC = memo(
- + {isPreviewBanner(banner) && ( { left: 0; right: 0; bottom: 0; + // TODO EUI: add color with transparency background: ${transparentize(euiTheme.colors.ink, 0.5)}; z-index: ${(euiTheme.levels.flyout as number) + 1}; // this z-index needs to be between the eventFlyout (set at 1000) and the timelineFlyout (set at 1002) From e9206f9a4d1a08dedf2a5bb092e2291b7ebab4e7 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Sat, 15 Feb 2025 18:16:44 +1100 Subject: [PATCH 05/78] [api-docs] 2025-02-15 Daily api_docs build (#211345) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/984 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- .../ai_assistant_management_selection.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/automatic_import.mdx | 2 +- api_docs/banners.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_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- 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_quality.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_usage.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/dataset_quality.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/discover_shared.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.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/entities_data_access.mdx | 2 +- api_docs/entity_manager.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/esql.mdx | 2 +- api_docs/esql_data_grid.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.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_legacy_metric_vis.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/fields_metadata.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.devdocs.json | 46 +- api_docs/fleet.mdx | 4 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/inference.mdx | 2 +- api_docs/inference_endpoint.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/ingest_pipelines.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/inventory.mdx | 2 +- api_docs/investigate.mdx | 2 +- api_docs/investigate_app.mdx | 2 +- api_docs/kbn_actions_types.mdx | 2 +- api_docs/kbn_ai_assistant.mdx | 2 +- api_docs/kbn_ai_assistant_common.mdx | 2 +- api_docs/kbn_ai_assistant_icon.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_log_pattern_analysis.mdx | 2 +- api_docs/kbn_aiops_log_rate_analysis.mdx | 2 +- .../kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_comparators.mdx | 2 +- api_docs/kbn_alerting_rule_utils.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerting_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_grouping.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_collection_utils.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_data_view.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_types.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_avc_banner.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_calculate_auto.mdx | 2 +- .../kbn_calculate_width_from_char_count.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cbor.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_charts_theme.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_cloud_security_posture.mdx | 2 +- .../kbn_cloud_security_posture_common.mdx | 2 +- api_docs/kbn_cloud_security_posture_graph.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_editor_mock.mdx | 2 +- api_docs/kbn_code_owners.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 +- .../kbn_content_management_content_editor.mdx | 2 +- ...ent_management_content_insights_public.mdx | 2 +- ...ent_management_content_insights_server.mdx | 2 +- ...bn_content_management_favorites_common.mdx | 2 +- ...bn_content_management_favorites_public.mdx | 2 +- ...bn_content_management_favorites_server.mdx | 2 +- ...tent_management_tabbed_table_list_view.mdx | 2 +- ...kbn_content_management_table_list_view.mdx | 2 +- ...tent_management_table_list_view_common.mdx | 2 +- ...ntent_management_table_list_view_table.mdx | 2 +- .../kbn_content_management_user_profiles.mdx | 2 +- api_docs/kbn_content_management_utils.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_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.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_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- .../kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- ..._core_custom_branding_browser_internal.mdx | 2 +- ...kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- ...n_core_custom_branding_server_internal.mdx | 2 +- .../kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_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 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_feature_flags_browser.mdx | 2 +- ...bn_core_feature_flags_browser_internal.mdx | 2 +- .../kbn_core_feature_flags_browser_mocks.mdx | 2 +- api_docs/kbn_core_feature_flags_server.mdx | 2 +- ...kbn_core_feature_flags_server_internal.mdx | 2 +- .../kbn_core_feature_flags_server_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- ...re_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- ...bn_core_http_resources_server_internal.mdx | 2 +- .../kbn_core_http_resources_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server_utils.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.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 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- .../kbn_core_plugins_contracts_browser.mdx | 2 +- .../kbn_core_plugins_contracts_server.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.mdx | 2 +- ...ore_saved_objects_base_server_internal.mdx | 2 +- ...n_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_security_browser.mdx | 2 +- .../kbn_core_security_browser_internal.mdx | 2 +- api_docs/kbn_core_security_browser_mocks.mdx | 2 +- api_docs/kbn_core_security_common.mdx | 2 +- api_docs/kbn_core_security_server.mdx | 2 +- .../kbn_core_security_server_internal.mdx | 2 +- api_docs/kbn_core_security_server_mocks.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- .../kbn_core_test_helpers_model_versions.mdx | 2 +- ...n_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_internal.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- .../kbn_core_ui_settings_browser_internal.mdx | 2 +- .../kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_profile_browser.mdx | 2 +- ...kbn_core_user_profile_browser_internal.mdx | 2 +- .../kbn_core_user_profile_browser_mocks.mdx | 2 +- api_docs/kbn_core_user_profile_common.mdx | 2 +- api_docs/kbn_core_user_profile_server.mdx | 2 +- .../kbn_core_user_profile_server_internal.mdx | 2 +- .../kbn_core_user_profile_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- .../kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_icons.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_forge.mdx | 2 +- api_docs/kbn_data_grid_in_table_search.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_data_stream_adapter.mdx | 2 +- api_docs/kbn_data_view_utils.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_fleet.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_deeplinks_security.mdx | 2 +- api_docs/kbn_deeplinks_shared.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_delete_managed_asset_callout.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 +- ...iscover_contextual_components.devdocs.json | 127 ++-- .../kbn_discover_contextual_components.mdx | 4 +- api_docs/kbn_discover_utils.devdocs.json | 150 +++++ api_docs/kbn_discover_utils.mdx | 4 +- api_docs/kbn_doc_links.devdocs.json | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_agent_utils.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_elastic_assistant_common.mdx | 2 +- api_docs/kbn_entities_schema.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_esql_ast.mdx | 2 +- api_docs/kbn_esql_editor.mdx | 2 +- api_docs/kbn_esql_utils.mdx | 2 +- ..._esql_validation_autocomplete.devdocs.json | 2 +- api_docs/kbn_esql_validation_autocomplete.mdx | 2 +- api_docs/kbn_esql_variables_types.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_event_stacktrace.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_file_upload_common.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- .../kbn_ftr_common_functional_services.mdx | 2 +- .../kbn_ftr_common_functional_ui_services.mdx | 2 +- api_docs/kbn_gen_ai_functional_testing.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_grid_layout.mdx | 2 +- api_docs/kbn_grouping.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_index_adapter.mdx | 2 +- ...dex_lifecycle_management_common_shared.mdx | 2 +- .../kbn_index_management_shared_types.mdx | 2 +- api_docs/kbn_inference_common.mdx | 2 +- api_docs/kbn_inference_endpoint_ui_common.mdx | 2 +- api_docs/kbn_inference_integration_flyout.mdx | 2 +- api_docs/kbn_inference_langchain.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_investigation_shared.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_ipynb.mdx | 2 +- api_docs/kbn_item_buffer.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_json_schemas.mdx | 2 +- api_docs/kbn_key_value_metadata_table.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- api_docs/kbn_language_documentation.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_lens_formula_docs.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_logs_overview.mdx | 2 +- api_docs/kbn_managed_content_badge.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- .../kbn_management_settings_application.mdx | 2 +- ...ent_settings_components_field_category.mdx | 2 +- ...gement_settings_components_field_input.mdx | 2 +- ...nagement_settings_components_field_row.mdx | 2 +- ...bn_management_settings_components_form.mdx | 2 +- ...n_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- ...n_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- .../kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_manifest.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_cancellable_search.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- .../kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_field_stats_flyout.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_parse_interval.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_time_buckets.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_ui_actions.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_ml_validators.mdx | 2 +- api_docs/kbn_mock_idp_utils.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_utils.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_object_versioning_utils.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- .../kbn_observability_alerting_test_data.mdx | 2 +- ...ility_get_padded_alert_time_range_util.mdx | 2 +- ...kbn_observability_synthetics_test_data.mdx | 2 +- api_docs/kbn_openapi_bundler.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_palettes.mdx | 2 +- api_docs/kbn_panel_loader.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_check.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_presentation_containers.mdx | 2 +- api_docs/kbn_presentation_publishing.mdx | 2 +- api_docs/kbn_product_doc_artifact_builder.mdx | 2 +- api_docs/kbn_product_doc_common.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_hooks.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- .../kbn_react_mute_legacy_root_warning.mdx | 2 +- api_docs/kbn_recently_accessed.mdx | 2 +- api_docs/kbn_relocate.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_reporting_csv_share_panel.mdx | 2 +- api_docs/kbn_reporting_export_types_csv.mdx | 2 +- .../kbn_reporting_export_types_csv_common.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf.mdx | 2 +- .../kbn_reporting_export_types_pdf_common.mdx | 2 +- api_docs/kbn_reporting_export_types_png.mdx | 2 +- .../kbn_reporting_export_types_png_common.mdx | 2 +- api_docs/kbn_reporting_mocks_server.mdx | 2 +- api_docs/kbn_reporting_public.mdx | 2 +- api_docs/kbn_reporting_server.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- ...kbn_response_ops_alerts_fields_browser.mdx | 2 +- api_docs/kbn_response_ops_alerts_table.mdx | 2 +- api_docs/kbn_response_ops_rule_form.mdx | 2 +- api_docs/kbn_response_ops_rule_params.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_rollup.mdx | 2 +- api_docs/kbn_router_to_openapispec.mdx | 2 +- api_docs/kbn_router_utils.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_saved_search_component.mdx | 2 +- api_docs/kbn_scout.devdocs.json | 121 +++- api_docs/kbn_scout.mdx | 4 +- api_docs/kbn_scout_info.mdx | 2 +- api_docs/kbn_scout_oblt.devdocs.json | 4 +- api_docs/kbn_scout_oblt.mdx | 2 +- api_docs/kbn_scout_reporting.mdx | 2 +- api_docs/kbn_screenshotting_server.mdx | 2 +- api_docs/kbn_search_api_keys_components.mdx | 2 +- api_docs/kbn_search_api_keys_server.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_errors.mdx | 2 +- api_docs/kbn_search_index_documents.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_search_shared_ui.mdx | 2 +- api_docs/kbn_search_types.mdx | 2 +- api_docs/kbn_security_ai_prompts.mdx | 2 +- api_docs/kbn_security_api_key_management.mdx | 2 +- api_docs/kbn_security_authorization_core.mdx | 2 +- ...kbn_security_authorization_core_common.mdx | 2 +- api_docs/kbn_security_form_components.mdx | 2 +- api_docs/kbn_security_hardening.mdx | 2 +- api_docs/kbn_security_plugin_types_common.mdx | 2 +- api_docs/kbn_security_plugin_types_public.mdx | 2 +- api_docs/kbn_security_plugin_types_server.mdx | 2 +- .../kbn_security_role_management_model.mdx | 2 +- api_docs/kbn_security_solution_connectors.mdx | 2 +- ...ity_solution_distribution_bar.devdocs.json | 10 +- ...kbn_security_solution_distribution_bar.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- ...kbn_security_solution_storybook_config.mdx | 2 +- api_docs/kbn_security_ui_components.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- ...ritysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- ..._securitysolution_io_ts_alerting_types.mdx | 2 +- ...ritysolution_io_ts_list_types.devdocs.json | 24 + .../kbn_securitysolution_io_ts_list_types.mdx | 4 +- 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_server_route_repository_client.mdx | 2 +- .../kbn_server_route_repository_utils.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- .../kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- .../kbn_shared_ux_button_exit_full_screen.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_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_error_boundary.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- .../kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_analytics_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- ...bn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_template.mdx | 2 +- ...n_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- .../kbn_shared_ux_page_no_data_config.mdx | 2 +- ...bn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- ...n_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_tabbed_modal.mdx | 2 +- api_docs/kbn_shared_ux_table_persist.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_sort_predicates.mdx | 2 +- api_docs/kbn_sse_utils.mdx | 2 +- api_docs/kbn_sse_utils_client.mdx | 2 +- api_docs/kbn_sse_utils_server.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_streams_schema.devdocs.json | 464 +++++++++------ api_docs/kbn_streams_schema.mdx | 2 +- api_docs/kbn_synthetics_e2e.mdx | 2 +- api_docs/kbn_synthetics_private_location.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_eui_helpers.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_timerange.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_transpose_utils.mdx | 2 +- api_docs/kbn_triggers_actions_ui_types.mdx | 2 +- api_docs/kbn_try_in_console.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_unsaved_changes_badge.mdx | 2 +- api_docs/kbn_unsaved_changes_prompt.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.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/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_visualization_utils.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kbn_zod.mdx | 2 +- api_docs/kbn_zod_helpers.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.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/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/llm_tasks.mdx | 2 +- api_docs/logs_data_access.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/mock_idp_plugin.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/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_a_i_assistant_app.mdx | 2 +- .../observability_ai_assistant_management.mdx | 2 +- api_docs/observability_logs_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 14 +- api_docs/presentation_panel.mdx | 2 +- api_docs/presentation_util.mdx | 2 +- api_docs/product_doc_base.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.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_finder.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/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/search_assistant.mdx | 2 +- api_docs/search_connectors.mdx | 2 +- api_docs/search_homepage.mdx | 2 +- api_docs/search_indices.mdx | 2 +- api_docs/search_inference_endpoints.mdx | 2 +- api_docs/search_navigation.mdx | 2 +- api_docs/search_notebooks.mdx | 2 +- api_docs/search_playground.mdx | 2 +- api_docs/search_synonyms.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/slo.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/streams.devdocs.json | 552 +++++++++++------- api_docs/streams.mdx | 2 +- api_docs/streams_app.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/threat_intelligence.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_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.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 +- 798 files changed, 1824 insertions(+), 1274 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 74a1f580241f4..69f7607ff3368 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 37cddbfbda35f..68c9fa016dac5 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index f1b4af4c1f0ea..7be54f1b794fb 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 59f34e679f741..1ed2ce2aa05a1 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index ed05d630870b5..05b124baead60 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index dd81723683951..82c8d27896c3d 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index d1043d084338a..442231e2e6df5 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/automatic_import.mdx b/api_docs/automatic_import.mdx index 025405943590a..6a9b57e9e8184 100644 --- a/api_docs/automatic_import.mdx +++ b/api_docs/automatic_import.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/automaticImport title: "automaticImport" image: https://source.unsplash.com/400x175/?github description: API docs for the automaticImport plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'automaticImport'] --- import automaticImportObj from './automatic_import.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index cc89506a2e64c..5f60cfc189806 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 6f7e7e04c8a5a..5f4423c7cd809 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 96ca53160c93d..a459fa758f647 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 5a5110b4832ff..af1ec818ed06f 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index fe5eefda8a1f9..1c25ffa19ac56 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index da9fa5f97cbdb..5671832d5c9ac 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index f6d11b2383350..4c0bc377090c4 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 156d188b41ae4..c44c16feb0372 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 85020d8c80757..48b060a2eaeaf 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx index 0eabffffa3ab1..9750a9fc07398 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 4b4a813fc8dde..6c02832bc802a 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 195282bb871cd..1351515e1c842 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index 1424f455236c1..9b43fc4f1c569 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index a922afe48a316..36abad047fb0a 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 2bf0932b2db39..171578d018ad5 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_quality.mdx b/api_docs/data_quality.mdx index 3660797203def..3df6a99c8c58f 100644 --- a/api_docs/data_quality.mdx +++ b/api_docs/data_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataQuality title: "dataQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the dataQuality plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataQuality'] --- import dataQualityObj from './data_quality.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 3b82ddd992803..518540767df5c 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index ca0aecf941623..4c86f0686ec2d 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_usage.mdx b/api_docs/data_usage.mdx index 7ac9d12b7aeba..5021e8da2ae78 100644 --- a/api_docs/data_usage.mdx +++ b/api_docs/data_usage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataUsage title: "dataUsage" image: https://source.unsplash.com/400x175/?github description: API docs for the dataUsage plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataUsage'] --- import dataUsageObj from './data_usage.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 04977cdb4fa0c..a45c77c0a9e22 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index 7900ce32120d4..a82a91dc04e64 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index 7f146ab409d10..6a0801c717043 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index e9f7b2f323eed..12a08306b56cb 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 132b68aed80b4..b805c730a1855 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index 1cb50400d55c8..c09659004f844 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 9cff719daf00a..401512f1f9ad5 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 1764dd6cf7d8f..4399f2e052edf 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 73523a4b2c6c3..a0b6459615812 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index e5275041ed008..aec799551f74a 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 5430f1060a291..19c94bf2d1a36 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 76f37b5a5bc16..b6799bfa182d9 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/discover_shared.mdx b/api_docs/discover_shared.mdx index fba200de813c9..602fb7387f33e 100644 --- a/api_docs/discover_shared.mdx +++ b/api_docs/discover_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverShared title: "discoverShared" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverShared plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverShared'] --- import discoverSharedObj from './discover_shared.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index ed8fd71420ed4..357edbea620de 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index 85e29358dc48d..f5d04bcfb48c8 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 4a6853c1a925c..bf93c9753a478 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index b6fd723a8a438..782df7777b60f 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index d83e149199728..cea7413db8d9d 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 64b0fbec95780..dc77cd0ef5292 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/entities_data_access.mdx b/api_docs/entities_data_access.mdx index 4d05600083168..c524a0206b70c 100644 --- a/api_docs/entities_data_access.mdx +++ b/api_docs/entities_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entitiesDataAccess title: "entitiesDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the entitiesDataAccess plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entitiesDataAccess'] --- import entitiesDataAccessObj from './entities_data_access.devdocs.json'; diff --git a/api_docs/entity_manager.mdx b/api_docs/entity_manager.mdx index 1ba9a9b3bec0f..9a045a7911d85 100644 --- a/api_docs/entity_manager.mdx +++ b/api_docs/entity_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entityManager title: "entityManager" image: https://source.unsplash.com/400x175/?github description: API docs for the entityManager plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entityManager'] --- import entityManagerObj from './entity_manager.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index a0fe65f75d384..772e0c126016d 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/esql.mdx b/api_docs/esql.mdx index f082bcc3620cb..85792e181d6a2 100644 --- a/api_docs/esql.mdx +++ b/api_docs/esql.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esql title: "esql" image: https://source.unsplash.com/400x175/?github description: API docs for the esql plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esql'] --- import esqlObj from './esql.devdocs.json'; diff --git a/api_docs/esql_data_grid.mdx b/api_docs/esql_data_grid.mdx index d65a06fa059bc..6f0eec7404766 100644 --- a/api_docs/esql_data_grid.mdx +++ b/api_docs/esql_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esqlDataGrid title: "esqlDataGrid" image: https://source.unsplash.com/400x175/?github description: API docs for the esqlDataGrid plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esqlDataGrid'] --- import esqlDataGridObj from './esql_data_grid.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 35cd05c037e9b..5fb17a1fac06a 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 68566373ebc39..562516003f5be 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index c2ab82f63d5b6..9404d45f7b1fd 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 71b0fe087dc18..b3e19b0ba9ad0 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView'] --- import exploratoryViewObj from './exploratory_view.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index c31cac358cb3e..918918b9ac7fb 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index 2a5185012de06..d6e1319232c8a 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 34f4f95bdbd61..c4ccc536ccd86 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 7f5e14230e0f7..6866698f6eea0 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index 7ee66a494a628..52f75213c88b7 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index fdf3174a57251..915e247f3757b 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index e501417ac2aa9..d95e5bc393b3e 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index d1cb80c9971eb..a1a02d3fd5349 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index 6d7e6f4aeffa3..8dab2ee71b91d 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 46fcab6071bd7..223422fb82e68 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index a7c068f45b901..ef9f896ae41dd 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index 709000a7ad1c6..ef24210975704 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index e9457f328ca80..e9ce8665ba9ad 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 040a982074ca6..63878fed1c018 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index a615e9320fd77..3a5ee00de0f09 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 53538155be0c7..460180b8d4b8b 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/fields_metadata.mdx b/api_docs/fields_metadata.mdx index 303de8fc3c652..00a7954402167 100644 --- a/api_docs/fields_metadata.mdx +++ b/api_docs/fields_metadata.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldsMetadata title: "fieldsMetadata" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldsMetadata plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldsMetadata'] --- import fieldsMetadataObj from './fields_metadata.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 960aa8bb0450d..168033461eedf 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 0d02bbadbb482..f3000bb1482a3 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index 0abeff0e3bd44..02c43e84064b6 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.devdocs.json b/api_docs/fleet.devdocs.json index 52e294ff527cb..01a807b9b5728 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -1824,6 +1824,20 @@ "path": "x-pack/platform/plugins/shared/fleet/common/types/models/package_policy.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "fleet", + "id": "def-public.NewPackagePolicy.additional_datastreams_permissions", + "type": "Array", + "tags": [], + "label": "additional_datastreams_permissions", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "x-pack/platform/plugins/shared/fleet/common/types/models/package_policy.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -3068,7 +3082,7 @@ "section": "def-common.PackagePolicyConfigRecord", "text": "PackagePolicyConfigRecord" }, - " | undefined; elasticsearch?: { [key: string]: any; privileges?: { cluster?: string[] | undefined; } | undefined; } | undefined; overrides?: { inputs?: { [key: string]: any; } | undefined; } | null | undefined; supports_agentless?: boolean | null | undefined; }" + " | undefined; elasticsearch?: { [key: string]: any; privileges?: { cluster?: string[] | undefined; } | undefined; } | undefined; overrides?: { inputs?: { [key: string]: any; } | undefined; } | null | undefined; supports_agentless?: boolean | null | undefined; additional_datastreams_permissions?: string[] | undefined; }" ], "path": "x-pack/platform/plugins/shared/fleet/public/types/ui_extensions.ts", "deprecated": false, @@ -26525,6 +26539,20 @@ "path": "x-pack/platform/plugins/shared/fleet/common/types/models/package_policy.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "fleet", + "id": "def-common.NewPackagePolicy.additional_datastreams_permissions", + "type": "Array", + "tags": [], + "label": "additional_datastreams_permissions", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "x-pack/platform/plugins/shared/fleet/common/types/models/package_policy.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -32767,6 +32795,22 @@ "children": [], "returnComment": [] }, + { + "parentPluginId": "fleet", + "id": "def-common.epmRouteService.getDatastreamsPath", + "type": "Function", + "tags": [], + "label": "getDatastreamsPath", + "description": [], + "signature": [ + "() => string" + ], + "path": "x-pack/platform/plugins/shared/fleet/common/services/routes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, { "parentPluginId": "fleet", "id": "def-common.epmRouteService.getInfoPath", diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index e148388a8e8dd..852fd75ef3e62 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) for questi | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 1451 | 5 | 1324 | 85 | +| 1454 | 5 | 1327 | 85 | ## Client diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 13ef4a9377705..403bcc2fad0e3 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index ccd021ea23ba1..915c95191a4af 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index 81815676efca0..e3931ef5ceb2a 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index b51abc40af493..dcad6f96321de 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 55c7891894a74..dd29c45118aad 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/inference.mdx b/api_docs/inference.mdx index 639c85c16dd95..7bff85767b769 100644 --- a/api_docs/inference.mdx +++ b/api_docs/inference.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inference title: "inference" image: https://source.unsplash.com/400x175/?github description: API docs for the inference plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inference'] --- import inferenceObj from './inference.devdocs.json'; diff --git a/api_docs/inference_endpoint.mdx b/api_docs/inference_endpoint.mdx index 32f175951be2f..139ca495fdcfc 100644 --- a/api_docs/inference_endpoint.mdx +++ b/api_docs/inference_endpoint.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inferenceEndpoint title: "inferenceEndpoint" image: https://source.unsplash.com/400x175/?github description: API docs for the inferenceEndpoint plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inferenceEndpoint'] --- import inferenceEndpointObj from './inference_endpoint.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 5a044822989a2..628e887bbda38 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/ingest_pipelines.mdx b/api_docs/ingest_pipelines.mdx index dc2261623d8b0..c1700fc975297 100644 --- a/api_docs/ingest_pipelines.mdx +++ b/api_docs/ingest_pipelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ingestPipelines title: "ingestPipelines" image: https://source.unsplash.com/400x175/?github description: API docs for the ingestPipelines plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ingestPipelines'] --- import ingestPipelinesObj from './ingest_pipelines.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 4b30292558d80..1c1cb10891981 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 657074df938e0..faf5bb094da70 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/inventory.mdx b/api_docs/inventory.mdx index 6f16e1b26fd68..25c4472a1f0c6 100644 --- a/api_docs/inventory.mdx +++ b/api_docs/inventory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inventory title: "inventory" image: https://source.unsplash.com/400x175/?github description: API docs for the inventory plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inventory'] --- import inventoryObj from './inventory.devdocs.json'; diff --git a/api_docs/investigate.mdx b/api_docs/investigate.mdx index f64623b44ffaf..187a898f0bbda 100644 --- a/api_docs/investigate.mdx +++ b/api_docs/investigate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigate title: "investigate" image: https://source.unsplash.com/400x175/?github description: API docs for the investigate plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigate'] --- import investigateObj from './investigate.devdocs.json'; diff --git a/api_docs/investigate_app.mdx b/api_docs/investigate_app.mdx index cf402c8be993e..0cd8a54b89a46 100644 --- a/api_docs/investigate_app.mdx +++ b/api_docs/investigate_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigateApp title: "investigateApp" image: https://source.unsplash.com/400x175/?github description: API docs for the investigateApp plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigateApp'] --- import investigateAppObj from './investigate_app.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index 0cf4e5005ca30..dfc0b95a592a9 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant.mdx b/api_docs/kbn_ai_assistant.mdx index c80d25f26263f..8d6a5d89f7056 100644 --- a/api_docs/kbn_ai_assistant.mdx +++ b/api_docs/kbn_ai_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant title: "@kbn/ai-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant'] --- import kbnAiAssistantObj from './kbn_ai_assistant.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant_common.mdx b/api_docs/kbn_ai_assistant_common.mdx index b8e3deb233375..ba1520c257139 100644 --- a/api_docs/kbn_ai_assistant_common.mdx +++ b/api_docs/kbn_ai_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant-common title: "@kbn/ai-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant-common'] --- import kbnAiAssistantCommonObj from './kbn_ai_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant_icon.mdx b/api_docs/kbn_ai_assistant_icon.mdx index 08fe3b3be4cf9..de9b7e9dbef8d 100644 --- a/api_docs/kbn_ai_assistant_icon.mdx +++ b/api_docs/kbn_ai_assistant_icon.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant-icon title: "@kbn/ai-assistant-icon" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant-icon plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant-icon'] --- import kbnAiAssistantIconObj from './kbn_ai_assistant_icon.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index e2c2cb2d41528..4f53a31b9b1c5 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_pattern_analysis.mdx b/api_docs/kbn_aiops_log_pattern_analysis.mdx index ab59b74f6929a..cc80b9af12e4a 100644 --- a/api_docs/kbn_aiops_log_pattern_analysis.mdx +++ b/api_docs/kbn_aiops_log_pattern_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-pattern-analysis title: "@kbn/aiops-log-pattern-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-pattern-analysis plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-pattern-analysis'] --- import kbnAiopsLogPatternAnalysisObj from './kbn_aiops_log_pattern_analysis.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_rate_analysis.mdx b/api_docs/kbn_aiops_log_rate_analysis.mdx index 8ad9ba6118da4..f810ce272d7f0 100644 --- a/api_docs/kbn_aiops_log_rate_analysis.mdx +++ b/api_docs/kbn_aiops_log_rate_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-rate-analysis title: "@kbn/aiops-log-rate-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-rate-analysis plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-rate-analysis'] --- import kbnAiopsLogRateAnalysisObj from './kbn_aiops_log_rate_analysis.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index cedca7e3485a4..6ede70556fc1f 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_comparators.mdx b/api_docs/kbn_alerting_comparators.mdx index 3b406606f7f76..5594c2c23303f 100644 --- a/api_docs/kbn_alerting_comparators.mdx +++ b/api_docs/kbn_alerting_comparators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-comparators title: "@kbn/alerting-comparators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-comparators plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-comparators'] --- import kbnAlertingComparatorsObj from './kbn_alerting_comparators.devdocs.json'; diff --git a/api_docs/kbn_alerting_rule_utils.mdx b/api_docs/kbn_alerting_rule_utils.mdx index 1562542925994..be8b89120217a 100644 --- a/api_docs/kbn_alerting_rule_utils.mdx +++ b/api_docs/kbn_alerting_rule_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-rule-utils title: "@kbn/alerting-rule-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-rule-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-rule-utils'] --- import kbnAlertingRuleUtilsObj from './kbn_alerting_rule_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 3c7222889841a..6cb668db8d741 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index 17ad99aac01e3..f0099d7c553bc 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index de5fd6ddde2a4..43ee438631fbd 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_grouping.mdx b/api_docs/kbn_alerts_grouping.mdx index 19b3f1a0a240d..52a459997366c 100644 --- a/api_docs/kbn_alerts_grouping.mdx +++ b/api_docs/kbn_alerts_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-grouping title: "@kbn/alerts-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-grouping plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-grouping'] --- import kbnAlertsGroupingObj from './kbn_alerts_grouping.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 97567a8789f12..93219ddadd795 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared'] --- import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index 3246aff411805..917e72cc66ef2 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index 0cdefe619e70b..4ae3bbf7cd48a 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 42709b6e1b873..08744e2e27c0c 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_data_view.mdx b/api_docs/kbn_apm_data_view.mdx index 9c109b490dd91..045540561637f 100644 --- a/api_docs/kbn_apm_data_view.mdx +++ b/api_docs/kbn_apm_data_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-data-view title: "@kbn/apm-data-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-data-view plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-data-view'] --- import kbnApmDataViewObj from './kbn_apm_data_view.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index d8f0eec09c508..13802fbc6445b 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 16b0f0733a484..a1a6ea40f2f40 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_types.mdx b/api_docs/kbn_apm_types.mdx index 9b5977e96c547..74d9d70332749 100644 --- a/api_docs/kbn_apm_types.mdx +++ b/api_docs/kbn_apm_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-types title: "@kbn/apm-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-types'] --- import kbnApmTypesObj from './kbn_apm_types.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 131964ca89eb6..0fce696248a74 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_avc_banner.mdx b/api_docs/kbn_avc_banner.mdx index 714ee2ca21863..7f5d5ce0629d9 100644 --- a/api_docs/kbn_avc_banner.mdx +++ b/api_docs/kbn_avc_banner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-avc-banner title: "@kbn/avc-banner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/avc-banner plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/avc-banner'] --- import kbnAvcBannerObj from './kbn_avc_banner.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index 53d4a91a245d2..9f1811e72e29c 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index fd9ce13a134d0..f496209454c79 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index ccf33a2a360ac..938ff2ff3788d 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index daedf08b82488..360c0b1d460dd 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cbor.mdx b/api_docs/kbn_cbor.mdx index 39c66edcf91b7..c709fa46be21f 100644 --- a/api_docs/kbn_cbor.mdx +++ b/api_docs/kbn_cbor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cbor title: "@kbn/cbor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cbor plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cbor'] --- import kbnCborObj from './kbn_cbor.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 8d11c656cbc72..633842e02f789 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx index 58b71c7bb60bd..f31897aa56e79 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index 0839e1a3b1d99..7bd97aba81135 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_charts_theme.mdx b/api_docs/kbn_charts_theme.mdx index 3e35ea04c973b..0874ecfe3398c 100644 --- a/api_docs/kbn_charts_theme.mdx +++ b/api_docs/kbn_charts_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-charts-theme title: "@kbn/charts-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/charts-theme plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/charts-theme'] --- import kbnChartsThemeObj from './kbn_charts_theme.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index a7da08dde550e..8d7fba13ceb62 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index d54e21b23e952..9abe33c10f5fb 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index 50aba6f293c3d..84167dac893f1 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index bd6f35224ea8d..a68454fe2600d 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture.mdx b/api_docs/kbn_cloud_security_posture.mdx index 5c98c80a8ef0e..f629917a601c6 100644 --- a/api_docs/kbn_cloud_security_posture.mdx +++ b/api_docs/kbn_cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture title: "@kbn/cloud-security-posture" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture'] --- import kbnCloudSecurityPostureObj from './kbn_cloud_security_posture.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture_common.mdx b/api_docs/kbn_cloud_security_posture_common.mdx index ec7ff9a67a851..44086bb9fba0b 100644 --- a/api_docs/kbn_cloud_security_posture_common.mdx +++ b/api_docs/kbn_cloud_security_posture_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture-common title: "@kbn/cloud-security-posture-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture-common'] --- import kbnCloudSecurityPostureCommonObj from './kbn_cloud_security_posture_common.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture_graph.mdx b/api_docs/kbn_cloud_security_posture_graph.mdx index db83632bd3c7d..bc91115f4e9e2 100644 --- a/api_docs/kbn_cloud_security_posture_graph.mdx +++ b/api_docs/kbn_cloud_security_posture_graph.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture-graph title: "@kbn/cloud-security-posture-graph" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture-graph plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture-graph'] --- import kbnCloudSecurityPostureGraphObj from './kbn_cloud_security_posture_graph.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index cdc20af360a20..b924672a7b74e 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mock.mdx b/api_docs/kbn_code_editor_mock.mdx index f1aeaff3da026..39d33053b5b8f 100644 --- a/api_docs/kbn_code_editor_mock.mdx +++ b/api_docs/kbn_code_editor_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mock title: "@kbn/code-editor-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mock plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mock'] --- import kbnCodeEditorMockObj from './kbn_code_editor_mock.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index 6c2fe61a106f5..e73985c6c26cd 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index ee22cdc59d292..9d34219863d10 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index 66e724745b0b7..488deca0a22c1 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index f990b630ef338..7ae1502927121 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 22af03fbcaa83..0e1061dff706a 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index aa02eea49de14..2d42a0e452354 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_insights_public.mdx b/api_docs/kbn_content_management_content_insights_public.mdx index bc2de096ef713..12d48febbdbaa 100644 --- a/api_docs/kbn_content_management_content_insights_public.mdx +++ b/api_docs/kbn_content_management_content_insights_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-insights-public title: "@kbn/content-management-content-insights-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-insights-public plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-insights-public'] --- import kbnContentManagementContentInsightsPublicObj from './kbn_content_management_content_insights_public.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_insights_server.mdx b/api_docs/kbn_content_management_content_insights_server.mdx index 659409de6e272..681a5ac482334 100644 --- a/api_docs/kbn_content_management_content_insights_server.mdx +++ b/api_docs/kbn_content_management_content_insights_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-insights-server title: "@kbn/content-management-content-insights-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-insights-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-insights-server'] --- import kbnContentManagementContentInsightsServerObj from './kbn_content_management_content_insights_server.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_common.mdx b/api_docs/kbn_content_management_favorites_common.mdx index 7841514d912ed..11e1e718b7e34 100644 --- a/api_docs/kbn_content_management_favorites_common.mdx +++ b/api_docs/kbn_content_management_favorites_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-common title: "@kbn/content-management-favorites-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-common'] --- import kbnContentManagementFavoritesCommonObj from './kbn_content_management_favorites_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_public.mdx b/api_docs/kbn_content_management_favorites_public.mdx index c19e3a636da3d..2e8944ee6bc2d 100644 --- a/api_docs/kbn_content_management_favorites_public.mdx +++ b/api_docs/kbn_content_management_favorites_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-public title: "@kbn/content-management-favorites-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-public plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-public'] --- import kbnContentManagementFavoritesPublicObj from './kbn_content_management_favorites_public.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_server.mdx b/api_docs/kbn_content_management_favorites_server.mdx index c8c46be4d16f5..8d69c035a25fe 100644 --- a/api_docs/kbn_content_management_favorites_server.mdx +++ b/api_docs/kbn_content_management_favorites_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-server title: "@kbn/content-management-favorites-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-server'] --- import kbnContentManagementFavoritesServerObj from './kbn_content_management_favorites_server.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index 560f3670559d7..5f8591165c7a7 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view'] --- import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx index f993a4e5cfdb2..b3351fcf4438c 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index 022321e8e9cc3..918a7306ab649 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index f0a28b9a037e9..25146e77d896a 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_user_profiles.mdx b/api_docs/kbn_content_management_user_profiles.mdx index 8690acc29469e..b349850c2a79c 100644 --- a/api_docs/kbn_content_management_user_profiles.mdx +++ b/api_docs/kbn_content_management_user_profiles.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-user-profiles title: "@kbn/content-management-user-profiles" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-user-profiles plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-user-profiles'] --- import kbnContentManagementUserProfilesObj from './kbn_content_management_user_profiles.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index d0e57256610e5..862ddc7f4099b 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 9db0bf7e3b8b3..f04ca46707446 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index fbfa7f3999c24..043ab03f6b307 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index 87b83a5c566f0..3ab0e5c01b698 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index 4e447ef760c58..b14b2d2e5cd05 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index 0bc753ff953b6..69e42a60ae0c7 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index 089157bcc6064..1a9247029d7fb 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index b506639a6a4fd..152728cf55e68 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index 4a2eea2ff8d9b..6ce34f3b878d8 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index e33476413e119..fb34c61f211e6 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index 178bcb1335e06..9658dd0951e46 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index 39a990a2e1f41..d67734f5bf6c2 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 811c5254c124c..5a1bb02d4a22e 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index b20b5ab4ace66..282fc3add9a39 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 50c4a36565a9b..7488d89e736f0 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 5492731fed12a..09100da102b52 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index 9623f9cbad251..da6a6c74bed6d 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index ba7d065a1ccee..35710e031a140 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index cfc6ae9221d9a..28cf20c3a821f 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 451712540d930..2dae1e103b88a 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index 6ffc62da46c5a..965e077f012f2 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index 85ae24b2ca6d7..deb90cec1affb 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index 0b0731e83e2e9..a644c26e990c9 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index 77350d604074e..f8e871f3f4dc1 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 1ca122fd4db6e..04f4a21c8ed24 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index 0947d24485775..3d437709d7c61 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index 5a56ca52d9862..9adf9cd60b319 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index d53c67624a07d..23cce73b0f081 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index cef33879ca432..de9aac2f600e9 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index 827b1bd5ab641..a46656fcbf305 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index c6e4de53769d5..d66c3f726f985 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index dd5df61dce758..d455aa9ae8d12 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 3a44c64a36fd2..0a5e5741227fa 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index cf21c2ef79ea4..1957e602c3e95 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index ba2ca5eee20ff..86f7243ae7ec2 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index 41475c2c448eb..7517baafc2bc8 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index 1da9abb05fdc2..a1979203ea512 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index 1345710c25671..fdf3f216e22bc 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index a8f62384c37e2..b66ebd5857f70 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 391e93d2c5675..e8528392aec52 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index 47a71451537a5..2f4c6695e251f 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,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 description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index 33b9700487cb7..bf24bc587ca35 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index ec87d406088d8..bed7252be6d13 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,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 description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index 38c5381374846..d9b87b4ac2a99 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index 47235eb5df19b..6feb5ea34a549 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index 0776c2767c54f..65c38d76ff24f 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index 8e537e394b702..83c3f3daaf5f7 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index c26e59bfd2182..67c0bf340f12a 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index 73f178c9b880a..10133441f3396 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index 2ff13c5ec2802..1d9d3a9c34318 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index 80a11d6c54732..e8fdc0891052e 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index 25b6610c45f42..bb892f3ab9d30 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index 34fa2edf6adbe..fc1e17b0b9d7f 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index 6eb8805f10d27..e6e753fff2393 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index e7ecc5106d05b..b75e74470b35d 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index 6991c98f86f2d..0fcb9d700ffa7 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index dd128deb81f10..c25bbecb10118 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index 07830f6258af5..dfafa950e054c 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index fd0f88d68e90b..ded4d49c94711 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser.mdx b/api_docs/kbn_core_feature_flags_browser.mdx index 17dbeb596847e..75cdfa4b7148f 100644 --- a/api_docs/kbn_core_feature_flags_browser.mdx +++ b/api_docs/kbn_core_feature_flags_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser title: "@kbn/core-feature-flags-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser'] --- import kbnCoreFeatureFlagsBrowserObj from './kbn_core_feature_flags_browser.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser_internal.mdx b/api_docs/kbn_core_feature_flags_browser_internal.mdx index 955ee2c465b28..690a242de47e0 100644 --- a/api_docs/kbn_core_feature_flags_browser_internal.mdx +++ b/api_docs/kbn_core_feature_flags_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser-internal title: "@kbn/core-feature-flags-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser-internal'] --- import kbnCoreFeatureFlagsBrowserInternalObj from './kbn_core_feature_flags_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser_mocks.mdx b/api_docs/kbn_core_feature_flags_browser_mocks.mdx index 91eaccdedf35e..e710566392e55 100644 --- a/api_docs/kbn_core_feature_flags_browser_mocks.mdx +++ b/api_docs/kbn_core_feature_flags_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser-mocks title: "@kbn/core-feature-flags-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser-mocks'] --- import kbnCoreFeatureFlagsBrowserMocksObj from './kbn_core_feature_flags_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server.mdx b/api_docs/kbn_core_feature_flags_server.mdx index 17895cfe53fb3..d5c5c485feed4 100644 --- a/api_docs/kbn_core_feature_flags_server.mdx +++ b/api_docs/kbn_core_feature_flags_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server title: "@kbn/core-feature-flags-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server'] --- import kbnCoreFeatureFlagsServerObj from './kbn_core_feature_flags_server.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server_internal.mdx b/api_docs/kbn_core_feature_flags_server_internal.mdx index 9a827d18b4f69..17e714c7c3aeb 100644 --- a/api_docs/kbn_core_feature_flags_server_internal.mdx +++ b/api_docs/kbn_core_feature_flags_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server-internal title: "@kbn/core-feature-flags-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server-internal'] --- import kbnCoreFeatureFlagsServerInternalObj from './kbn_core_feature_flags_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server_mocks.mdx b/api_docs/kbn_core_feature_flags_server_mocks.mdx index c3944ae6e6b94..fe6c342de94ad 100644 --- a/api_docs/kbn_core_feature_flags_server_mocks.mdx +++ b/api_docs/kbn_core_feature_flags_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server-mocks title: "@kbn/core-feature-flags-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server-mocks'] --- import kbnCoreFeatureFlagsServerMocksObj from './kbn_core_feature_flags_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index e7e4abe54305c..d37ba77ccfdc3 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index a5e0d51575e50..7c278a8a07f2e 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 0ce1e632b5f1f..2d72d7274289e 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index da59688433566..ff49f652b0427 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index 9f5defe49863a..4e3232edf60e9 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index fda0e8847984c..bc59cab32f331 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index c403f434f8894..385960e993cab 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index 48d1bba07705a..c78affb98c263 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index ab3cfcf59268c..6fdbb7fae044f 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index 6c3812d93bce9..e47245ef7ff6a 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index 4d92d14f39ee7..907bd2c62c7b8 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index a3824112e617a..06ca969f289a4 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index a1c7402d3d11a..647aef756620e 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index e02ad762b2df7..0c3823cd6440f 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_utils.mdx b/api_docs/kbn_core_http_server_utils.mdx index e4550f7e433fb..001a36cc5f099 100644 --- a/api_docs/kbn_core_http_server_utils.mdx +++ b/api_docs/kbn_core_http_server_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-utils title: "@kbn/core-http-server-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-utils'] --- import kbnCoreHttpServerUtilsObj from './kbn_core_http_server_utils.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 9c6c7eabfb417..56158630d6c53 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index ce7d6084f43ea..6ef356d5cd195 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index 8af538165fde8..f79d48f852ee6 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index 49813c819b987..038f314e3e23f 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index cdf4b5c060b33..de12451d1adaa 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 937a05c6b59ef..7db0a9ad58128 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,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 description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index 4efbb40fe1445..f99509538ba82 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index 3a9079bbeb71b..15eb929da18f7 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index 6496b58d27444..5f4617727c345 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index 67ea21fd62c99..f48beee303245 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index cdceba25cc422..6dda9635c18b1 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index c5250a7f74d3e..80f9e1a2ea6e0 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index d7787bfb553de..31f5f152d9ac3 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index 618196cc36cb3..d8965ed71a964 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 04d5418af52ed..ff7a830d21066 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index cfce0133fe186..c971b96b3bcf2 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index 47bed60ed4ece..a46ba29e5d04a 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index 94745a971285d..2dd0720d1220b 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index 915f675da8139..ef68101a0e1f5 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index 7d2daef498b14..588ee3a9b3009 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index eb2239f9ccb1b..994804860cee7 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index 87ba36e9371d3..9576285e2ef25 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index fcfd3662eff8d..41c19a951932c 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index af20c173d76e5..f16acf3114d59 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index dc8639b379af2..a6ab10f019c58 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index 9ae30b359603f..b93e9bc08e249 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index d4592dfaf1553..9336eceae76b6 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index b26d1270c0c7c..f241e20c36f05 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index 4f4d253de70d1..35bc16b4e9bb4 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index 37eb407468242..863c72f1bf67d 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index c5ee9549f49fc..4790273fb25a3 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index bece62b7f0763..866fcb99f2bdb 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index f80acee9d9fca..9e8823d1ed9e7 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index 218eaa9f0ab8d..846aaf6bd5613 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index f2623220f5c08..42cbe0317095c 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index e29c4a5d53c4e..317c53118b41e 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index dc699afe6c2c4..810e3c675436c 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index e9222020be707..1d82d2eb6d4b1 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index a36cda002d572..7b67823f397da 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index 88f28743ba832..f15b4c2ccfe13 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser.mdx b/api_docs/kbn_core_rendering_browser.mdx index 759d0bcccfbba..8354803c971fb 100644 --- a/api_docs/kbn_core_rendering_browser.mdx +++ b/api_docs/kbn_core_rendering_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser title: "@kbn/core-rendering-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser'] --- import kbnCoreRenderingBrowserObj from './kbn_core_rendering_browser.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 50c2aaf580556..b5cd7e84479d2 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index 9ee630ec1b4bb..b457bf53db825 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index 50f210f5cc5a0..bff57a940f694 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index a75fc7a07b620..454c884a51639 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index 27c8819abf961..a9f4994202806 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 78a66a0f40594..46619402b307a 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index 22f356b56ac27..696e788c16912 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 1326dfadabbc5..cb6fc73b60f6f 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index 9faf7d1378498..52b52e37f5934 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index 4bf63d119d27d..959e7759c6e59 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index af918b61b1f45..629153519a25c 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index cfa28bff7fb35..453e9d45f1359 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index 0232090304643..425df5b50415a 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index d82c7c1ff3f65..0bf6985543342 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index 02b5a3abf8e63..0834e0a4c4a3b 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index 57bebaccef102..4b8d66c424874 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index 5af0ae6a21d35..96accc6d08825 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 7cd6a1e7f8abb..2e56a877896b6 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index 0df2a15dbee54..635d272056692 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index 8b85e0f39c7b0..506fc23991842 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index 61b27e9cf81bc..3068d04af0a90 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser.mdx b/api_docs/kbn_core_security_browser.mdx index 3a7a2d9c4e15e..e2288d9f228f3 100644 --- a/api_docs/kbn_core_security_browser.mdx +++ b/api_docs/kbn_core_security_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser title: "@kbn/core-security-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser'] --- import kbnCoreSecurityBrowserObj from './kbn_core_security_browser.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_internal.mdx b/api_docs/kbn_core_security_browser_internal.mdx index 98de0cd089e20..a2229dd6d153f 100644 --- a/api_docs/kbn_core_security_browser_internal.mdx +++ b/api_docs/kbn_core_security_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-internal title: "@kbn/core-security-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-internal'] --- import kbnCoreSecurityBrowserInternalObj from './kbn_core_security_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_mocks.mdx b/api_docs/kbn_core_security_browser_mocks.mdx index 2087e7c097bfb..34a35ac38e7f5 100644 --- a/api_docs/kbn_core_security_browser_mocks.mdx +++ b/api_docs/kbn_core_security_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-mocks title: "@kbn/core-security-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-mocks'] --- import kbnCoreSecurityBrowserMocksObj from './kbn_core_security_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_security_common.mdx b/api_docs/kbn_core_security_common.mdx index e9b60b8b36f48..4bf742e608fc0 100644 --- a/api_docs/kbn_core_security_common.mdx +++ b/api_docs/kbn_core_security_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-common title: "@kbn/core-security-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-common'] --- import kbnCoreSecurityCommonObj from './kbn_core_security_common.devdocs.json'; diff --git a/api_docs/kbn_core_security_server.mdx b/api_docs/kbn_core_security_server.mdx index 9d020fed86557..f1412785fda2d 100644 --- a/api_docs/kbn_core_security_server.mdx +++ b/api_docs/kbn_core_security_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server title: "@kbn/core-security-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server'] --- import kbnCoreSecurityServerObj from './kbn_core_security_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_internal.mdx b/api_docs/kbn_core_security_server_internal.mdx index d43a0e70a35dc..c47c2382f8b64 100644 --- a/api_docs/kbn_core_security_server_internal.mdx +++ b/api_docs/kbn_core_security_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-internal title: "@kbn/core-security-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-internal'] --- import kbnCoreSecurityServerInternalObj from './kbn_core_security_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_mocks.mdx b/api_docs/kbn_core_security_server_mocks.mdx index 201415bbe16f2..158ce4f0918c9 100644 --- a/api_docs/kbn_core_security_server_mocks.mdx +++ b/api_docs/kbn_core_security_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-mocks title: "@kbn/core-security-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-mocks'] --- import kbnCoreSecurityServerMocksObj from './kbn_core_security_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 9b862e35924b7..950a173f43af5 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index 752760cca4bcf..11d2b9420d681 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index e094f9dede007..f45b38b2e782f 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index a41a184e7d877..721c4f92a0824 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index e6ca240e6db43..963c5a3c1506a 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index 7df76d4bb9315..27ecd735b4655 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index 841f486947a24..a70cccb696f8a 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index a9c0c6881406e..c2aad67d1730b 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 0769bb4613505..7a741fa5d1695 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index bfb4e0c0eef02..5c449c724dca1 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 6406377434888..8d27f544d0c63 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_internal.mdx b/api_docs/kbn_core_theme_browser_internal.mdx index b2df9cf1573a3..3c8c6f36937f4 100644 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ b/api_docs/kbn_core_theme_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-internal title: "@kbn/core-theme-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-internal'] --- import kbnCoreThemeBrowserInternalObj from './kbn_core_theme_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 5d9f92ba90daa..2dc3d14e551d4 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index d6062a76b48db..2d324601c342c 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index 2cd965bebb7c8..acb0d595dad18 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index 84bdddf7b7b97..34b9085db1a29 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index 815d00d8b08fb..865d21aa18558 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index 86a3bee03e320..b11eab2662662 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index 38de7bbb6dafc..2639006ddddfa 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index 3f5e523716b36..aa45c32faeed2 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index 1874219c3b8e0..50ff003034bc0 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index 2f0e2f60c4419..b33b5e2bd348d 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index b8c513fdd2365..8ab8f43f80bce 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser.mdx b/api_docs/kbn_core_user_profile_browser.mdx index d3396271e618d..81f1ca40ac39c 100644 --- a/api_docs/kbn_core_user_profile_browser.mdx +++ b/api_docs/kbn_core_user_profile_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser title: "@kbn/core-user-profile-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser'] --- import kbnCoreUserProfileBrowserObj from './kbn_core_user_profile_browser.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_internal.mdx b/api_docs/kbn_core_user_profile_browser_internal.mdx index a68a4a4bded84..4432a80c89e28 100644 --- a/api_docs/kbn_core_user_profile_browser_internal.mdx +++ b/api_docs/kbn_core_user_profile_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-internal title: "@kbn/core-user-profile-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-internal'] --- import kbnCoreUserProfileBrowserInternalObj from './kbn_core_user_profile_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_mocks.mdx b/api_docs/kbn_core_user_profile_browser_mocks.mdx index 55273b1e71a1c..a29aa9aeaf4e1 100644 --- a/api_docs/kbn_core_user_profile_browser_mocks.mdx +++ b/api_docs/kbn_core_user_profile_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-mocks title: "@kbn/core-user-profile-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-mocks'] --- import kbnCoreUserProfileBrowserMocksObj from './kbn_core_user_profile_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_common.mdx b/api_docs/kbn_core_user_profile_common.mdx index 9da6a7b6aeac2..ac73d100cfdc9 100644 --- a/api_docs/kbn_core_user_profile_common.mdx +++ b/api_docs/kbn_core_user_profile_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-common title: "@kbn/core-user-profile-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-common'] --- import kbnCoreUserProfileCommonObj from './kbn_core_user_profile_common.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server.mdx b/api_docs/kbn_core_user_profile_server.mdx index 50793173f010f..cdcd21c2fcda5 100644 --- a/api_docs/kbn_core_user_profile_server.mdx +++ b/api_docs/kbn_core_user_profile_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server title: "@kbn/core-user-profile-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server'] --- import kbnCoreUserProfileServerObj from './kbn_core_user_profile_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_internal.mdx b/api_docs/kbn_core_user_profile_server_internal.mdx index 3d033fa57b6f3..ec6273fbe16f5 100644 --- a/api_docs/kbn_core_user_profile_server_internal.mdx +++ b/api_docs/kbn_core_user_profile_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-internal title: "@kbn/core-user-profile-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-internal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-internal'] --- import kbnCoreUserProfileServerInternalObj from './kbn_core_user_profile_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_mocks.mdx b/api_docs/kbn_core_user_profile_server_mocks.mdx index 704f11106c6b4..b9662abc1edef 100644 --- a/api_docs/kbn_core_user_profile_server_mocks.mdx +++ b/api_docs/kbn_core_user_profile_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-mocks title: "@kbn/core-user-profile-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-mocks'] --- import kbnCoreUserProfileServerMocksObj from './kbn_core_user_profile_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index 7fa040df2b9b9..e9a3b095e2dba 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index 7597cc650c89e..e6d31d9a5aa48 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks'] --- import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index b4adccc8cbdbf..17813de3d0139 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index 7a52d1e84d512..b8e639b51e334 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index 6dea2c212727c..65adb92ce9801 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index 3d574b2222a2a..fbd1e91088e45 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index fe96497d59eb8..6d62392c57d9d 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_forge.mdx b/api_docs/kbn_data_forge.mdx index 2eef29ce8f430..cc6e9f04361f3 100644 --- a/api_docs/kbn_data_forge.mdx +++ b/api_docs/kbn_data_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-forge title: "@kbn/data-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-forge plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-forge'] --- import kbnDataForgeObj from './kbn_data_forge.devdocs.json'; diff --git a/api_docs/kbn_data_grid_in_table_search.mdx b/api_docs/kbn_data_grid_in_table_search.mdx index 2842f1833f6b8..ec690f29ec718 100644 --- a/api_docs/kbn_data_grid_in_table_search.mdx +++ b/api_docs/kbn_data_grid_in_table_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-grid-in-table-search title: "@kbn/data-grid-in-table-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-grid-in-table-search plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-grid-in-table-search'] --- import kbnDataGridInTableSearchObj from './kbn_data_grid_in_table_search.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index 64d0ecbb1c4e3..a6e3e01db481a 100644 --- a/api_docs/kbn_data_service.mdx +++ b/api_docs/kbn_data_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service title: "@kbn/data-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-service plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_data_stream_adapter.mdx b/api_docs/kbn_data_stream_adapter.mdx index 7d57154aafb27..0cb960bb53fff 100644 --- a/api_docs/kbn_data_stream_adapter.mdx +++ b/api_docs/kbn_data_stream_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-stream-adapter title: "@kbn/data-stream-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-stream-adapter plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-stream-adapter'] --- import kbnDataStreamAdapterObj from './kbn_data_stream_adapter.devdocs.json'; diff --git a/api_docs/kbn_data_view_utils.mdx b/api_docs/kbn_data_view_utils.mdx index d7be68cdfc9a8..65b0040d4a084 100644 --- a/api_docs/kbn_data_view_utils.mdx +++ b/api_docs/kbn_data_view_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-view-utils title: "@kbn/data-view-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-view-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-view-utils'] --- import kbnDataViewUtilsObj from './kbn_data_view_utils.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 239a5a4681274..9d3e0c7515e6a 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx index 4ec4d17887c5c..60637b3cc7914 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics'] --- import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx index 353356bd01e98..191540b051271 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_fleet.mdx b/api_docs/kbn_deeplinks_fleet.mdx index 3ea9b75322d1c..a900a18a7dedf 100644 --- a/api_docs/kbn_deeplinks_fleet.mdx +++ b/api_docs/kbn_deeplinks_fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-fleet title: "@kbn/deeplinks-fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-fleet plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-fleet'] --- import kbnDeeplinksFleetObj from './kbn_deeplinks_fleet.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index df93539a54c04..b55a7faa39710 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index 33278b5a44b47..8912642275b82 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index b7ed7954ebb8d..e5c62f9b4aa3c 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index 4f35df3f745e1..dec75342aaabd 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_security.mdx b/api_docs/kbn_deeplinks_security.mdx index 2601402c72914..70d3ba716d18b 100644 --- a/api_docs/kbn_deeplinks_security.mdx +++ b/api_docs/kbn_deeplinks_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-security title: "@kbn/deeplinks-security" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-security plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-security'] --- import kbnDeeplinksSecurityObj from './kbn_deeplinks_security.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_shared.mdx b/api_docs/kbn_deeplinks_shared.mdx index 6276866edb5b2..6c6d01931798f 100644 --- a/api_docs/kbn_deeplinks_shared.mdx +++ b/api_docs/kbn_deeplinks_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-shared title: "@kbn/deeplinks-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-shared plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-shared'] --- import kbnDeeplinksSharedObj from './kbn_deeplinks_shared.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index 3949bcedefd43..f1f3b17958e89 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics'] --- import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx index 1821b744951d8..1b41288bb593c 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools'] --- import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json'; diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index c49884b811ea1..ff95d5a018294 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index df85378abebff..38f52427c2c77 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml'] --- import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json'; diff --git a/api_docs/kbn_delete_managed_asset_callout.mdx b/api_docs/kbn_delete_managed_asset_callout.mdx index 6bb3316e9fad2..dd93889c2d9ca 100644 --- a/api_docs/kbn_delete_managed_asset_callout.mdx +++ b/api_docs/kbn_delete_managed_asset_callout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-delete-managed-asset-callout title: "@kbn/delete-managed-asset-callout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/delete-managed-asset-callout plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/delete-managed-asset-callout'] --- import kbnDeleteManagedAssetCalloutObj from './kbn_delete_managed_asset_callout.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 43a0d51d74e1c..2dd29c68b5ace 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index bea6d65397186..fc7515965e4e2 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index bf20d99fcdd55..e8e26c0718054 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index 1b8db9d337083..5a7b5b1d10ea3 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_contextual_components.devdocs.json b/api_docs/kbn_discover_contextual_components.devdocs.json index 6736367fcfdae..31b6f55a94dc0 100644 --- a/api_docs/kbn_discover_contextual_components.devdocs.json +++ b/api_docs/kbn_discover_contextual_components.devdocs.json @@ -44,25 +44,7 @@ "label": "createResourceFields", "description": [], "signature": [ - "(row: ", - { - "pluginId": "@kbn/discover-utils", - "scope": "common", - "docId": "kibKbnDiscoverUtilsPluginApi", - "section": "def-common.DataTableRecord", - "text": "DataTableRecord" - }, - ", core: ", - "CoreStart", - ", share?: ", - { - "pluginId": "share", - "scope": "public", - "docId": "kibSharePluginApi", - "section": "def-public.SharePublicStart", - "text": "SharePublicStart" - }, - " | undefined) => ", + "({ row, fields, getAvailableFields, dataView, core, share, fieldFormats, }: ResourceFieldsProps) => ", { "pluginId": "@kbn/discover-contextual-components", "scope": "public", @@ -81,58 +63,15 @@ "id": "def-public.createResourceFields.$1", "type": "Object", "tags": [], - "label": "row", + "label": "{\n row,\n fields,\n getAvailableFields,\n dataView,\n core,\n share,\n fieldFormats,\n}", "description": [], "signature": [ - { - "pluginId": "@kbn/discover-utils", - "scope": "common", - "docId": "kibKbnDiscoverUtilsPluginApi", - "section": "def-common.DataTableRecord", - "text": "DataTableRecord" - } + "ResourceFieldsProps" ], "path": "src/platform/packages/shared/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/utils.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true - }, - { - "parentPluginId": "@kbn/discover-contextual-components", - "id": "def-public.createResourceFields.$2", - "type": "Object", - "tags": [], - "label": "core", - "description": [], - "signature": [ - "CoreStart" - ], - "path": "src/platform/packages/shared/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/utils.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/discover-contextual-components", - "id": "def-public.createResourceFields.$3", - "type": "CompoundType", - "tags": [], - "label": "share", - "description": [], - "signature": [ - { - "pluginId": "share", - "scope": "public", - "docId": "kibSharePluginApi", - "section": "def-public.SharePublicStart", - "text": "SharePublicStart" - }, - " | undefined" - ], - "path": "src/platform/packages/shared/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/utils.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false } ], "returnComment": [], @@ -238,18 +177,22 @@ }, { "parentPluginId": "@kbn/discover-contextual-components", - "id": "def-public.getUnformattedResourceFields", + "id": "def-public.isTraceDocument", "type": "Function", "tags": [], - "label": "getUnformattedResourceFields", - "description": [ - "\ngetUnformattedResourceFields definitions" - ], + "label": "isTraceDocument", + "description": [], "signature": [ - "(doc: ", - "LogDocument", - ") => ", - "ResourceFields" + "(row: ", + { + "pluginId": "@kbn/discover-utils", + "scope": "common", + "docId": "kibKbnDiscoverUtilsPluginApi", + "section": "def-common.DataTableRecord", + "text": "DataTableRecord" + }, + ") => row is ", + "TraceDocument" ], "path": "src/platform/packages/shared/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/utils.tsx", "deprecated": false, @@ -257,13 +200,19 @@ "children": [ { "parentPluginId": "@kbn/discover-contextual-components", - "id": "def-public.getUnformattedResourceFields.$1", + "id": "def-public.isTraceDocument.$1", "type": "Object", "tags": [], - "label": "doc", + "label": "row", "description": [], "signature": [ - "LogDocument" + { + "pluginId": "@kbn/discover-utils", + "scope": "common", + "docId": "kibKbnDiscoverUtilsPluginApi", + "section": "def-common.DataTableRecord", + "text": "DataTableRecord" + } ], "path": "src/platform/packages/shared/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/utils.tsx", "deprecated": false, @@ -308,7 +257,7 @@ "section": "def-public.FieldFormatsStart", "text": "FieldFormatsStart" }, - "; closePopover: () => void; isCompressed?: boolean | undefined; } & ", + "; closePopover: () => void; isCompressed?: boolean | undefined; } & { isTracesSummary?: boolean | undefined; } & ", { "pluginId": "@kbn/discover-contextual-components", "scope": "public", @@ -552,14 +501,10 @@ { "parentPluginId": "@kbn/discover-contextual-components", "id": "def-public.ResourceFieldDescriptor.name", - "type": "CompoundType", + "type": "string", "tags": [], "label": "name", "description": [], - "signature": [ - "keyof ", - "ResourceFields" - ], "path": "src/platform/packages/shared/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/utils.tsx", "deprecated": false, "trackAdoption": false @@ -574,6 +519,20 @@ "path": "src/platform/packages/shared/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/utils.tsx", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/discover-contextual-components", + "id": "def-public.ResourceFieldDescriptor.rawValue", + "type": "Unknown", + "tags": [], + "label": "rawValue", + "description": [], + "signature": [ + "unknown" + ], + "path": "src/platform/packages/shared/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/utils.tsx", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -741,7 +700,7 @@ "section": "def-public.FieldFormatsStart", "text": "FieldFormatsStart" }, - "; closePopover: () => void; isCompressed?: boolean | undefined; } & ", + "; closePopover: () => void; isCompressed?: boolean | undefined; } & { isTracesSummary?: boolean | undefined; } & ", { "pluginId": "@kbn/discover-contextual-components", "scope": "public", @@ -853,7 +812,7 @@ "section": "def-public.FieldFormatsStart", "text": "FieldFormatsStart" }, - "; closePopover: () => void; isCompressed?: boolean | undefined; }" + "; closePopover: () => void; isCompressed?: boolean | undefined; } & { isTracesSummary?: boolean | undefined; }" ], "path": "src/platform/packages/shared/kbn-discover-contextual-components/src/data_types/logs/components/summary_column/summary_column.tsx", "deprecated": false, diff --git a/api_docs/kbn_discover_contextual_components.mdx b/api_docs/kbn_discover_contextual_components.mdx index b6d5ed45ffec9..965b824a552d1 100644 --- a/api_docs/kbn_discover_contextual_components.mdx +++ b/api_docs/kbn_discover_contextual_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-contextual-components title: "@kbn/discover-contextual-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-contextual-components plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-contextual-components'] --- import kbnDiscoverContextualComponentsObj from './kbn_discover_contextual_components.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 39 | 0 | 36 | 2 | +| 38 | 0 | 36 | 2 | ## Client diff --git a/api_docs/kbn_discover_utils.devdocs.json b/api_docs/kbn_discover_utils.devdocs.json index 3daec1f965cd9..0ca0e5753785a 100644 --- a/api_docs/kbn_discover_utils.devdocs.json +++ b/api_docs/kbn_discover_utils.devdocs.json @@ -4774,6 +4774,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/discover-utils", + "id": "def-common.EVENT_OUTCOME_FIELD", + "type": "string", + "tags": [], + "label": "EVENT_OUTCOME_FIELD", + "description": [], + "signature": [ + "\"event.outcome\"" + ], + "path": "src/platform/packages/shared/kbn-discover-utils/src/field_constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/discover-utils", "id": "def-common.FIELDS_LIMIT_SETTING", @@ -4881,6 +4896,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/discover-utils", + "id": "def-common.INDEX_FIELD", + "type": "string", + "tags": [], + "label": "INDEX_FIELD", + "description": [], + "signature": [ + "\"_index\"" + ], + "path": "src/platform/packages/shared/kbn-discover-utils/src/field_constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/discover-utils", "id": "def-common.LOG_FILE_PATH_FIELD", @@ -4986,6 +5016,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/discover-utils", + "id": "def-common.ORCHESTRATOR_CLUSTER_ID_FIELD", + "type": "string", + "tags": [], + "label": "ORCHESTRATOR_CLUSTER_ID_FIELD", + "description": [], + "signature": [ + "\"orchestrator.cluster.id\"" + ], + "path": "src/platform/packages/shared/kbn-discover-utils/src/field_constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/discover-utils", "id": "def-common.ORCHESTRATOR_CLUSTER_NAME_FIELD", @@ -5279,6 +5324,36 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/discover-utils", + "id": "def-common.SPAN_DURATION_FIELD", + "type": "string", + "tags": [], + "label": "SPAN_DURATION_FIELD", + "description": [], + "signature": [ + "\"span.duration.us\"" + ], + "path": "src/platform/packages/shared/kbn-discover-utils/src/field_constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/discover-utils", + "id": "def-common.SPAN_NAME_FIELD", + "type": "string", + "tags": [], + "label": "SPAN_NAME_FIELD", + "description": [], + "signature": [ + "\"span.name\"" + ], + "path": "src/platform/packages/shared/kbn-discover-utils/src/field_constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/discover-utils", "id": "def-common.TIMESTAMP_FIELD", @@ -5308,6 +5383,36 @@ "deprecated": false, "trackAdoption": false, "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/discover-utils", + "id": "def-common.TRANSACTION_DURATION_FIELD", + "type": "string", + "tags": [], + "label": "TRANSACTION_DURATION_FIELD", + "description": [], + "signature": [ + "\"transaction.duration.us\"" + ], + "path": "src/platform/packages/shared/kbn-discover-utils/src/field_constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/discover-utils", + "id": "def-common.TRANSACTION_NAME_FIELD", + "type": "string", + "tags": [], + "label": "TRANSACTION_NAME_FIELD", + "description": [], + "signature": [ + "\"transaction.name\"" + ], + "path": "src/platform/packages/shared/kbn-discover-utils/src/field_constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false } ], "objects": [ @@ -5382,6 +5487,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/discover-utils", + "id": "def-common.DURATION_FIELDS", + "type": "Object", + "tags": [], + "label": "DURATION_FIELDS", + "description": [], + "signature": [ + "readonly string[]" + ], + "path": "src/platform/packages/shared/kbn-discover-utils/src/data_types/logs/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/discover-utils", "id": "def-common.RESOURCE_FIELD_CONFIGURATION", @@ -5449,6 +5569,21 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/discover-utils", + "id": "def-common.RESOURCE_FIELDS", + "type": "Object", + "tags": [], + "label": "RESOURCE_FIELDS", + "description": [], + "signature": [ + "readonly [\"service.name\", \"container.name\", \"host.name\", \"orchestrator.namespace\", \"cloud.instance.id\", \"orchestrator.resource.id\", \"orchestrator.cluster.name\", \"orchestrator.cluster.id\", \"container.id\", \"agent.name\"]" + ], + "path": "src/platform/packages/shared/kbn-discover-utils/src/data_types/logs/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/discover-utils", "id": "def-common.SMART_FALLBACK_FIELDS", @@ -5490,6 +5625,21 @@ } ], "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/discover-utils", + "id": "def-common.TRACE_FIELDS", + "type": "Object", + "tags": [], + "label": "TRACE_FIELDS", + "description": [], + "signature": [ + "readonly [\"service.name\", \"event.outcome\", \"transaction.name\", \"transaction.duration.us\", \"span.name\", \"span.duration.us\", \"agent.name\"]" + ], + "path": "src/platform/packages/shared/kbn-discover-utils/src/data_types/logs/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false } ] } diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index ca6e84107fbb8..0c10ba7dc4a09 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 280 | 0 | 230 | 4 | +| 290 | 0 | 240 | 3 | ## Common diff --git a/api_docs/kbn_doc_links.devdocs.json b/api_docs/kbn_doc_links.devdocs.json index ce85efaac5a45..aeab54c4cf3e1 100644 --- a/api_docs/kbn_doc_links.devdocs.json +++ b/api_docs/kbn_doc_links.devdocs.json @@ -543,7 +543,7 @@ "label": "securitySolution", "description": [], "signature": [ - "{ readonly aiAssistant: string; readonly artifactControl: string; readonly avcResults: string; readonly bidirectionalIntegrations: string; readonly trustedApps: string; readonly eventFilters: string; readonly eventMerging: string; readonly blocklist: string; readonly endpointArtifacts: string; readonly policyResponseTroubleshooting: { full_disk_access: string; macos_system_ext: string; linux_deadlock: string; }; readonly packageActionTroubleshooting: { es_connection: string; }; readonly threatIntelInt: string; readonly responseActions: string; readonly configureEndpointIntegrationPolicy: string; readonly exceptions: { value_lists: string; }; readonly privileges: string; readonly manageDetectionRules: string; readonly createDetectionRules: string; readonly createEsqlRuleType: string; readonly ruleUiAdvancedParams: string; readonly entityAnalytics: { readonly riskScorePrerequisites: string; readonly entityRiskScoring: string; readonly assetCriticality: string; }; readonly detectionEngineOverview: string; readonly signalsMigrationApi: string; readonly legacyEndpointManagementApiDeprecations: string; readonly legacyBulkApiDeprecations: string; }" + "{ readonly aiAssistant: string; readonly artifactControl: string; readonly avcResults: string; readonly bidirectionalIntegrations: string; readonly trustedApps: string; readonly eventFilters: string; readonly eventMerging: string; readonly blocklist: string; readonly endpointArtifacts: string; readonly policyResponseTroubleshooting: { full_disk_access: string; macos_system_ext: string; linux_deadlock: string; }; readonly packageActionTroubleshooting: { es_connection: string; }; readonly threatIntelInt: string; readonly responseActions: string; readonly configureEndpointIntegrationPolicy: string; readonly exceptions: { value_lists: string; }; readonly privileges: string; readonly manageDetectionRules: string; readonly createDetectionRules: string; readonly createEsqlRuleType: string; readonly ruleUiAdvancedParams: string; readonly entityAnalytics: { readonly riskScorePrerequisites: string; readonly entityRiskScoring: string; readonly assetCriticality: string; }; readonly detectionEngineOverview: string; readonly signalsMigrationApi: string; readonly legacyEndpointManagementApiDeprecations: string; readonly legacyRuleManagementBulkApiDeprecations: string; }" ], "path": "src/platform/packages/shared/kbn-doc-links/src/types.ts", "deprecated": false, diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 3d1c24c9dcace..5b6e83d113738 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index 03ab336b0c804..ad8d5c817462e 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx index b4098dcb6aa71..43666fa0cfee6 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop'] --- import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index d00f02943622d..203cfd85e102d 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index 011ea17db2be1..d88ee761d1dca 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index 86c938ce514af..325f38dc64471 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 4283626eb95db..3317ad0470ebe 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index baea7f099471d..1b52484139af7 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_entities_schema.mdx b/api_docs/kbn_entities_schema.mdx index bbc38f30fbb57..6430259153700 100644 --- a/api_docs/kbn_entities_schema.mdx +++ b/api_docs/kbn_entities_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-entities-schema title: "@kbn/entities-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/entities-schema plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/entities-schema'] --- import kbnEntitiesSchemaObj from './kbn_entities_schema.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index fe9589f7a5adb..720e589d57c96 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 6e06785dc9152..ec82f4b2e7a28 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index 0f5931e27e41f..17f294778ca38 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 4103b75245554..dbf4cebc5dda7 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index f495f7a7fe9be..3f6fc8d7042d3 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index f21fdcb4bfdc9..45b291b7ab113 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_esql_ast.mdx b/api_docs/kbn_esql_ast.mdx index 0ec9273249f48..ec34845e49c50 100644 --- a/api_docs/kbn_esql_ast.mdx +++ b/api_docs/kbn_esql_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-ast title: "@kbn/esql-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-ast plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-ast'] --- import kbnEsqlAstObj from './kbn_esql_ast.devdocs.json'; diff --git a/api_docs/kbn_esql_editor.mdx b/api_docs/kbn_esql_editor.mdx index 1d655c0ceeb30..ce6df0c471f1a 100644 --- a/api_docs/kbn_esql_editor.mdx +++ b/api_docs/kbn_esql_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-editor title: "@kbn/esql-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-editor plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-editor'] --- import kbnEsqlEditorObj from './kbn_esql_editor.devdocs.json'; diff --git a/api_docs/kbn_esql_utils.mdx b/api_docs/kbn_esql_utils.mdx index e768b212e6587..89c991f50196a 100644 --- a/api_docs/kbn_esql_utils.mdx +++ b/api_docs/kbn_esql_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-utils title: "@kbn/esql-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-utils'] --- import kbnEsqlUtilsObj from './kbn_esql_utils.devdocs.json'; diff --git a/api_docs/kbn_esql_validation_autocomplete.devdocs.json b/api_docs/kbn_esql_validation_autocomplete.devdocs.json index f54ddf9e58f3b..1ceb59bef6711 100644 --- a/api_docs/kbn_esql_validation_autocomplete.devdocs.json +++ b/api_docs/kbn_esql_validation_autocomplete.devdocs.json @@ -1265,7 +1265,7 @@ "section": "def-common.ESQLCallbacks", "text": "ESQLCallbacks" }, - " | undefined) => { getFieldsByType: (expectedType?: string | string[], ignored?: string[]) => Promise<", + " | undefined) => { getFieldsByType: (expectedType?: string | readonly string[], ignored?: string[]) => Promise<", { "pluginId": "@kbn/esql-validation-autocomplete", "scope": "common", diff --git a/api_docs/kbn_esql_validation_autocomplete.mdx b/api_docs/kbn_esql_validation_autocomplete.mdx index edfb9110143e2..95e3ffdd6f3de 100644 --- a/api_docs/kbn_esql_validation_autocomplete.mdx +++ b/api_docs/kbn_esql_validation_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-validation-autocomplete title: "@kbn/esql-validation-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-validation-autocomplete plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-validation-autocomplete'] --- import kbnEsqlValidationAutocompleteObj from './kbn_esql_validation_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_esql_variables_types.mdx b/api_docs/kbn_esql_variables_types.mdx index 012da799b6db3..53cc9ef376a1a 100644 --- a/api_docs/kbn_esql_variables_types.mdx +++ b/api_docs/kbn_esql_variables_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-variables-types title: "@kbn/esql-variables-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-variables-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-variables-types'] --- import kbnEsqlVariablesTypesObj from './kbn_esql_variables_types.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 5ddcda322e2b7..aa93af9c02596 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index 65d7f1be8cf9b..fb526048a07d6 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_event_stacktrace.mdx b/api_docs/kbn_event_stacktrace.mdx index 0497ba9270df7..e6f8947f56f6c 100644 --- a/api_docs/kbn_event_stacktrace.mdx +++ b/api_docs/kbn_event_stacktrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-stacktrace title: "@kbn/event-stacktrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-stacktrace plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-stacktrace'] --- import kbnEventStacktraceObj from './kbn_event_stacktrace.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index c63b15873a4a2..82cc0b6090df6 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 326de82dafe06..11ddd545bb474 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 555bc6e21749f..260c171a40ffe 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_file_upload_common.mdx b/api_docs/kbn_file_upload_common.mdx index 544fa557215ff..fcc082945dca1 100644 --- a/api_docs/kbn_file_upload_common.mdx +++ b/api_docs/kbn_file_upload_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-file-upload-common title: "@kbn/file-upload-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/file-upload-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/file-upload-common'] --- import kbnFileUploadCommonObj from './kbn_file_upload_common.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 46c68da2651f0..2b09778b07764 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index f7c0b2bb474dc..64e09ac7c4542 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index 4327e65081866..f74a2727f402a 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_gen_ai_functional_testing.mdx b/api_docs/kbn_gen_ai_functional_testing.mdx index 6c60ff0e872d5..9ab1510787e2f 100644 --- a/api_docs/kbn_gen_ai_functional_testing.mdx +++ b/api_docs/kbn_gen_ai_functional_testing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-gen-ai-functional-testing title: "@kbn/gen-ai-functional-testing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/gen-ai-functional-testing plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/gen-ai-functional-testing'] --- import kbnGenAiFunctionalTestingObj from './kbn_gen_ai_functional_testing.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 399942d4e7ace..f9b1ce2a704b7 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx index 0c0fb24bd0016..538039b23bdbc 100644 --- a/api_docs/kbn_generate_console_definitions.mdx +++ b/api_docs/kbn_generate_console_definitions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions title: "@kbn/generate-console-definitions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-console-definitions plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions'] --- import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index f1c73a6aeaa88..95066cb2f2b40 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_grid_layout.mdx b/api_docs/kbn_grid_layout.mdx index f7d60d4e9841f..7866f1ebe7628 100644 --- a/api_docs/kbn_grid_layout.mdx +++ b/api_docs/kbn_grid_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grid-layout title: "@kbn/grid-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grid-layout plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grid-layout'] --- import kbnGridLayoutObj from './kbn_grid_layout.devdocs.json'; diff --git a/api_docs/kbn_grouping.mdx b/api_docs/kbn_grouping.mdx index 55efbf859b194..f5f605b00f684 100644 --- a/api_docs/kbn_grouping.mdx +++ b/api_docs/kbn_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grouping title: "@kbn/grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grouping plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grouping'] --- import kbnGroupingObj from './kbn_grouping.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index caa51ce83a79b..be5d07ab5d364 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 53bb6fef7edd4..7c1ab7c6d0498 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index 750623fcd661a..4a5bc5b34e2f8 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index 60955cf1d5764..82126b0b8e724 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index 8e0bae53e9c29..5e93dde656d9a 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index 8139a5f71bd3c..0ae38cb6cdc1f 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index 843426ebd1130..82ccf1d7b0194 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index 00bbeaafcce68..77709fe4be778 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index 3a06fb9d01630..62696dcde27e3 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_index_adapter.mdx b/api_docs/kbn_index_adapter.mdx index e9e304dbb539d..05420581ac39a 100644 --- a/api_docs/kbn_index_adapter.mdx +++ b/api_docs/kbn_index_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-adapter title: "@kbn/index-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-adapter plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-adapter'] --- import kbnIndexAdapterObj from './kbn_index_adapter.devdocs.json'; diff --git a/api_docs/kbn_index_lifecycle_management_common_shared.mdx b/api_docs/kbn_index_lifecycle_management_common_shared.mdx index caf2bd06431eb..21e6562c50d17 100644 --- a/api_docs/kbn_index_lifecycle_management_common_shared.mdx +++ b/api_docs/kbn_index_lifecycle_management_common_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-lifecycle-management-common-shared title: "@kbn/index-lifecycle-management-common-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-lifecycle-management-common-shared plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-lifecycle-management-common-shared'] --- import kbnIndexLifecycleManagementCommonSharedObj from './kbn_index_lifecycle_management_common_shared.devdocs.json'; diff --git a/api_docs/kbn_index_management_shared_types.mdx b/api_docs/kbn_index_management_shared_types.mdx index 597c9dd03e253..a13cf16c02560 100644 --- a/api_docs/kbn_index_management_shared_types.mdx +++ b/api_docs/kbn_index_management_shared_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-management-shared-types title: "@kbn/index-management-shared-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-management-shared-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-management-shared-types'] --- import kbnIndexManagementSharedTypesObj from './kbn_index_management_shared_types.devdocs.json'; diff --git a/api_docs/kbn_inference_common.mdx b/api_docs/kbn_inference_common.mdx index f24ba683c4cbd..3c61285183906 100644 --- a/api_docs/kbn_inference_common.mdx +++ b/api_docs/kbn_inference_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-common title: "@kbn/inference-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-common'] --- import kbnInferenceCommonObj from './kbn_inference_common.devdocs.json'; diff --git a/api_docs/kbn_inference_endpoint_ui_common.mdx b/api_docs/kbn_inference_endpoint_ui_common.mdx index 803e01bfed299..f4321bec3be4a 100644 --- a/api_docs/kbn_inference_endpoint_ui_common.mdx +++ b/api_docs/kbn_inference_endpoint_ui_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-endpoint-ui-common title: "@kbn/inference-endpoint-ui-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-endpoint-ui-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-endpoint-ui-common'] --- import kbnInferenceEndpointUiCommonObj from './kbn_inference_endpoint_ui_common.devdocs.json'; diff --git a/api_docs/kbn_inference_integration_flyout.mdx b/api_docs/kbn_inference_integration_flyout.mdx index 0d97192e9bf63..10b0d2b38838e 100644 --- a/api_docs/kbn_inference_integration_flyout.mdx +++ b/api_docs/kbn_inference_integration_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference_integration_flyout title: "@kbn/inference_integration_flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference_integration_flyout plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference_integration_flyout'] --- import kbnInferenceIntegrationFlyoutObj from './kbn_inference_integration_flyout.devdocs.json'; diff --git a/api_docs/kbn_inference_langchain.mdx b/api_docs/kbn_inference_langchain.mdx index e62e6fe864cb5..233394aa354d5 100644 --- a/api_docs/kbn_inference_langchain.mdx +++ b/api_docs/kbn_inference_langchain.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-langchain title: "@kbn/inference-langchain" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-langchain plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-langchain'] --- import kbnInferenceLangchainObj from './kbn_inference_langchain.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index 8662f0431d1ba..45b2877d9e22c 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge'] --- import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index 03083d6c73877..ca85f07fe32c0 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_investigation_shared.mdx b/api_docs/kbn_investigation_shared.mdx index 07b28b021c8ad..d32ad835aa03f 100644 --- a/api_docs/kbn_investigation_shared.mdx +++ b/api_docs/kbn_investigation_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-investigation-shared title: "@kbn/investigation-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/investigation-shared plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/investigation-shared'] --- import kbnInvestigationSharedObj from './kbn_investigation_shared.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index df31c636ce627..6fcf46e2c320f 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_ipynb.mdx b/api_docs/kbn_ipynb.mdx index 609617cd42254..cfd36cc431e7a 100644 --- a/api_docs/kbn_ipynb.mdx +++ b/api_docs/kbn_ipynb.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ipynb title: "@kbn/ipynb" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ipynb plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ipynb'] --- import kbnIpynbObj from './kbn_ipynb.devdocs.json'; diff --git a/api_docs/kbn_item_buffer.mdx b/api_docs/kbn_item_buffer.mdx index f706a63ce27e8..8356b7e5ee7b3 100644 --- a/api_docs/kbn_item_buffer.mdx +++ b/api_docs/kbn_item_buffer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-item-buffer title: "@kbn/item-buffer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/item-buffer plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/item-buffer'] --- import kbnItemBufferObj from './kbn_item_buffer.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 57bd4e82536c4..6040329c8d8c0 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index c8b67764401fe..8c0f1c201f2b4 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index 9c6acbfa50ce5..3b13619a2b1ba 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_json_schemas.mdx b/api_docs/kbn_json_schemas.mdx index 8b7c473480537..4cba2a41d49ef 100644 --- a/api_docs/kbn_json_schemas.mdx +++ b/api_docs/kbn_json_schemas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-schemas title: "@kbn/json-schemas" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-schemas plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-schemas'] --- import kbnJsonSchemasObj from './kbn_json_schemas.devdocs.json'; diff --git a/api_docs/kbn_key_value_metadata_table.mdx b/api_docs/kbn_key_value_metadata_table.mdx index f02a4423f6b93..927124daf73fe 100644 --- a/api_docs/kbn_key_value_metadata_table.mdx +++ b/api_docs/kbn_key_value_metadata_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-key-value-metadata-table title: "@kbn/key-value-metadata-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/key-value-metadata-table plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/key-value-metadata-table'] --- import kbnKeyValueMetadataTableObj from './kbn_key_value_metadata_table.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 9d1a47465285a..0e28ad89be3fd 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation.mdx b/api_docs/kbn_language_documentation.mdx index 7ac00fe5170d1..fa39d9bcd4ca3 100644 --- a/api_docs/kbn_language_documentation.mdx +++ b/api_docs/kbn_language_documentation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation title: "@kbn/language-documentation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation'] --- import kbnLanguageDocumentationObj from './kbn_language_documentation.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 8af4749ed9166..cbb2088dc1ba3 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx index 46f18331ec618..7799bff8a8a86 100644 --- a/api_docs/kbn_lens_formula_docs.mdx +++ b/api_docs/kbn_lens_formula_docs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-formula-docs title: "@kbn/lens-formula-docs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-formula-docs plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-formula-docs'] --- import kbnLensFormulaDocsObj from './kbn_lens_formula_docs.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 166cdd44f7617..2a8c5e6b3f0b7 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index b4a9d22d7fc92..7a45c5079a012 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_logs_overview.mdx b/api_docs/kbn_logs_overview.mdx index fa0bb057a0d6a..df010f9418088 100644 --- a/api_docs/kbn_logs_overview.mdx +++ b/api_docs/kbn_logs_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logs-overview title: "@kbn/logs-overview" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logs-overview plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logs-overview'] --- import kbnLogsOverviewObj from './kbn_logs_overview.devdocs.json'; diff --git a/api_docs/kbn_managed_content_badge.mdx b/api_docs/kbn_managed_content_badge.mdx index ad3a105085bff..d1dab57c9b006 100644 --- a/api_docs/kbn_managed_content_badge.mdx +++ b/api_docs/kbn_managed_content_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-content-badge title: "@kbn/managed-content-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-content-badge plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-content-badge'] --- import kbnManagedContentBadgeObj from './kbn_managed_content_badge.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index 53ba0ec5d6500..608c11ed4543d 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index 84c845805bb73..d9998d08256f2 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index a4930f5d5a759..98c709854116d 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index 9699763ed58b2..e5e381570cebe 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index f10d4b9507ee8..da9d0294c5ecf 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index d9d886ce512f9..73297d6d71c3a 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index bc201e8dbf12e..07472281755b4 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index b9837b2ad60c7..630fc12789fe3 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index 3bef41f7c38f3..6c775d2dbfaa7 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 19c2e5dafbe4f..02211caa5ea12 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index 94453cbff3599..11291aba5a9a5 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index 438ccee6a78f6..e1071b45722ed 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 49b097c76dd02..53058ce8fadc8 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_manifest.mdx b/api_docs/kbn_manifest.mdx index 54a7b54e2fe02..360b22c278f86 100644 --- a/api_docs/kbn_manifest.mdx +++ b/api_docs/kbn_manifest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-manifest title: "@kbn/manifest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/manifest plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/manifest'] --- import kbnManifestObj from './kbn_manifest.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index fffdeaeb9e1e1..ea83bd08d3a33 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx index 937d28078fdf7..99d19553cda1e 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index dc19468083180..a7e5aba2573d8 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index 15bf58a3b664d..37eb6633a6fe4 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_cancellable_search.mdx b/api_docs/kbn_ml_cancellable_search.mdx index c82e335cbf369..48363fdf3fbac 100644 --- a/api_docs/kbn_ml_cancellable_search.mdx +++ b/api_docs/kbn_ml_cancellable_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-cancellable-search title: "@kbn/ml-cancellable-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-cancellable-search plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-cancellable-search'] --- import kbnMlCancellableSearchObj from './kbn_ml_cancellable_search.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index c2b3e7f78a4ec..5cf588375977a 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index d49e2091a44f6..e0e65e0ea89bc 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index fa6a9e63ea1a8..1803df5e02f0d 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils'] --- import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx index 15ea09fd3ff99..e406aaec2a198 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid'] --- import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index ffd8af0b65bce..2867f369b7b18 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx index 1c5961c3c919c..dece8df174dea 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils'] --- import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx index 112111e2511a5..6bffcb4874fe9 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_field_stats_flyout.mdx b/api_docs/kbn_ml_field_stats_flyout.mdx index bd61f28a043f9..aff5d0028caa7 100644 --- a/api_docs/kbn_ml_field_stats_flyout.mdx +++ b/api_docs/kbn_ml_field_stats_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-field-stats-flyout title: "@kbn/ml-field-stats-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-field-stats-flyout plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-field-stats-flyout'] --- import kbnMlFieldStatsFlyoutObj from './kbn_ml_field_stats_flyout.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx index 66f72bfcb8cde..f2c2eb67d57eb 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] --- import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index 947c707201a9b..2d1019a868905 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined'] --- import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index e3c2d81f04240..092c1ad365a5a 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index a4abc1f65eee2..0fb291909f3ae 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage'] --- import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json'; diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx index ea11ee18d95b4..a86ffd699a18f 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property'] --- import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json'; diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx index 595fd95da7c62..f6e76ec29ca9f 100644 --- a/api_docs/kbn_ml_number_utils.mdx +++ b/api_docs/kbn_ml_number_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils title: "@kbn/ml-number-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-number-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_parse_interval.mdx b/api_docs/kbn_ml_parse_interval.mdx index 1b2c52f07fcf4..3ce1932a5d9ac 100644 --- a/api_docs/kbn_ml_parse_interval.mdx +++ b/api_docs/kbn_ml_parse_interval.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-parse-interval title: "@kbn/ml-parse-interval" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-parse-interval plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-parse-interval'] --- import kbnMlParseIntervalObj from './kbn_ml_parse_interval.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index 9b847cafee1af..c7987f3a34f04 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils'] --- import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx index f148d3a8da483..69c690ad761b5 100644 --- a/api_docs/kbn_ml_random_sampler_utils.mdx +++ b/api_docs/kbn_ml_random_sampler_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils title: "@kbn/ml-random-sampler-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-random-sampler-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils'] --- import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx index 8a36c9595f6f1..4e4e3f0ab0a78 100644 --- a/api_docs/kbn_ml_route_utils.mdx +++ b/api_docs/kbn_ml_route_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils title: "@kbn/ml-route-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-route-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils'] --- import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx index b603692673181..bf00da18042a3 100644 --- a/api_docs/kbn_ml_runtime_field_utils.mdx +++ b/api_docs/kbn_ml_runtime_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils title: "@kbn/ml-runtime-field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-runtime-field-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils'] --- import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index b010d39dde7c3..daf1764cbcf85 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_time_buckets.mdx b/api_docs/kbn_ml_time_buckets.mdx index f6dc2a64dc452..b01f45a6f6273 100644 --- a/api_docs/kbn_ml_time_buckets.mdx +++ b/api_docs/kbn_ml_time_buckets.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-time-buckets title: "@kbn/ml-time-buckets" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-time-buckets plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-time-buckets'] --- import kbnMlTimeBucketsObj from './kbn_ml_time_buckets.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index 2880ca883357c..587b3ae886b67 100644 --- a/api_docs/kbn_ml_trained_models_utils.mdx +++ b/api_docs/kbn_ml_trained_models_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils title: "@kbn/ml-trained-models-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-trained-models-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index e3f0094d83249..bf81f8ccf09d2 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index a09d9d49b9c8e..40fdd4a82300b 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_ml_validators.mdx b/api_docs/kbn_ml_validators.mdx index 6c4cd28d20b86..f3f0d62385c95 100644 --- a/api_docs/kbn_ml_validators.mdx +++ b/api_docs/kbn_ml_validators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-validators title: "@kbn/ml-validators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-validators plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-validators'] --- import kbnMlValidatorsObj from './kbn_ml_validators.devdocs.json'; diff --git a/api_docs/kbn_mock_idp_utils.mdx b/api_docs/kbn_mock_idp_utils.mdx index 6357b6f8d888d..4f4908fc8dd4b 100644 --- a/api_docs/kbn_mock_idp_utils.mdx +++ b/api_docs/kbn_mock_idp_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mock-idp-utils title: "@kbn/mock-idp-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mock-idp-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mock-idp-utils'] --- import kbnMockIdpUtilsObj from './kbn_mock_idp_utils.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index d14e09e75877d..b0c9cf19a4383 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_utils.mdx b/api_docs/kbn_object_utils.mdx index 9f8cca89bba6d..9a1854899ddf2 100644 --- a/api_docs/kbn_object_utils.mdx +++ b/api_docs/kbn_object_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-utils title: "@kbn/object-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-utils'] --- import kbnObjectUtilsObj from './kbn_object_utils.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index d96515f235859..6ffa103c6d612 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_object_versioning_utils.mdx b/api_docs/kbn_object_versioning_utils.mdx index e172959febe78..e1cc52d5fef02 100644 --- a/api_docs/kbn_object_versioning_utils.mdx +++ b/api_docs/kbn_object_versioning_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning-utils title: "@kbn/object-versioning-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning-utils'] --- import kbnObjectVersioningUtilsObj from './kbn_object_versioning_utils.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index 205b7a6c9764b..1e64934dc78c1 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index 3d84cef617c9b..4dca007affae4 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index f5fad4def0c70..b15ab49bbb1be 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_observability_synthetics_test_data.mdx b/api_docs/kbn_observability_synthetics_test_data.mdx index a6fb048aaa5d5..c8c6d133a5753 100644 --- a/api_docs/kbn_observability_synthetics_test_data.mdx +++ b/api_docs/kbn_observability_synthetics_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-synthetics-test-data title: "@kbn/observability-synthetics-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-synthetics-test-data plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-synthetics-test-data'] --- import kbnObservabilitySyntheticsTestDataObj from './kbn_observability_synthetics_test_data.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index 4fa5f8423e74a..5d988ac61263f 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index e919a4f9de8da..3f76c0ed5b43c 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index cbe33b02d6134..b3d2deffc8bf6 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index 7640c456f5cc4..280d3a878a2cf 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index e0991bd3169de..686c5327ee4fa 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_palettes.mdx b/api_docs/kbn_palettes.mdx index b47fbaf604b7d..969e428b7d7a9 100644 --- a/api_docs/kbn_palettes.mdx +++ b/api_docs/kbn_palettes.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-palettes title: "@kbn/palettes" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/palettes plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/palettes'] --- import kbnPalettesObj from './kbn_palettes.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index f33195d0d7386..2b53fb0f1641c 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index f13cdc2d18c81..146815c1ee2c7 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_check.mdx b/api_docs/kbn_plugin_check.mdx index b4923bfdc0557..029023355cd51 100644 --- a/api_docs/kbn_plugin_check.mdx +++ b/api_docs/kbn_plugin_check.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-check title: "@kbn/plugin-check" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-check plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-check'] --- import kbnPluginCheckObj from './kbn_plugin_check.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 108f1a7509d45..c234781db2d05 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index 9919b9e825331..307c92496b38d 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_presentation_containers.mdx b/api_docs/kbn_presentation_containers.mdx index 8ce376ef0a5c0..01d6c168c4f7e 100644 --- a/api_docs/kbn_presentation_containers.mdx +++ b/api_docs/kbn_presentation_containers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-containers title: "@kbn/presentation-containers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-containers plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-containers'] --- import kbnPresentationContainersObj from './kbn_presentation_containers.devdocs.json'; diff --git a/api_docs/kbn_presentation_publishing.mdx b/api_docs/kbn_presentation_publishing.mdx index 4c9d042648547..8549342fb72b7 100644 --- a/api_docs/kbn_presentation_publishing.mdx +++ b/api_docs/kbn_presentation_publishing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-publishing title: "@kbn/presentation-publishing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-publishing plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-publishing'] --- import kbnPresentationPublishingObj from './kbn_presentation_publishing.devdocs.json'; diff --git a/api_docs/kbn_product_doc_artifact_builder.mdx b/api_docs/kbn_product_doc_artifact_builder.mdx index eb4a81b4d6c71..1a03df3cca3f2 100644 --- a/api_docs/kbn_product_doc_artifact_builder.mdx +++ b/api_docs/kbn_product_doc_artifact_builder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-product-doc-artifact-builder title: "@kbn/product-doc-artifact-builder" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/product-doc-artifact-builder plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/product-doc-artifact-builder'] --- import kbnProductDocArtifactBuilderObj from './kbn_product_doc_artifact_builder.devdocs.json'; diff --git a/api_docs/kbn_product_doc_common.mdx b/api_docs/kbn_product_doc_common.mdx index d4c4976e71456..e6d11ef5b75a2 100644 --- a/api_docs/kbn_product_doc_common.mdx +++ b/api_docs/kbn_product_doc_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-product-doc-common title: "@kbn/product-doc-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/product-doc-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/product-doc-common'] --- import kbnProductDocCommonObj from './kbn_product_doc_common.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 18070d1283f68..9c0f0b52599d3 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index b9cc7c3d8c4b1..7edef4ae54d24 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling'] --- import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index ac2f599602a66..cc63ee878d1c2 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_hooks.mdx b/api_docs/kbn_react_hooks.mdx index a0eccf902fbf6..e599c6ff2deb9 100644 --- a/api_docs/kbn_react_hooks.mdx +++ b/api_docs/kbn_react_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-hooks title: "@kbn/react-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-hooks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-hooks'] --- import kbnReactHooksObj from './kbn_react_hooks.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index 428e2c956d8c3..1015aea583557 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index cdbe448af3df6..6463852f574b8 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index 5933f631f8405..7afae04e08e1e 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index c0c48b2fdf5c8..3d37d28437a30 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index e88b3f3670491..efaf636d1a8f5 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index 6c70016f7b21b..5e2b22e4fb80a 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_react_mute_legacy_root_warning.mdx b/api_docs/kbn_react_mute_legacy_root_warning.mdx index 7cb2e62e294b1..5fca11d8cc9ce 100644 --- a/api_docs/kbn_react_mute_legacy_root_warning.mdx +++ b/api_docs/kbn_react_mute_legacy_root_warning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-mute-legacy-root-warning title: "@kbn/react-mute-legacy-root-warning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-mute-legacy-root-warning plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-mute-legacy-root-warning'] --- import kbnReactMuteLegacyRootWarningObj from './kbn_react_mute_legacy_root_warning.devdocs.json'; diff --git a/api_docs/kbn_recently_accessed.mdx b/api_docs/kbn_recently_accessed.mdx index 4642b1e2f01da..223465a7029b5 100644 --- a/api_docs/kbn_recently_accessed.mdx +++ b/api_docs/kbn_recently_accessed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-recently-accessed title: "@kbn/recently-accessed" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/recently-accessed plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/recently-accessed'] --- import kbnRecentlyAccessedObj from './kbn_recently_accessed.devdocs.json'; diff --git a/api_docs/kbn_relocate.mdx b/api_docs/kbn_relocate.mdx index 0c8dfa5309cbc..0e4c15d74ed6f 100644 --- a/api_docs/kbn_relocate.mdx +++ b/api_docs/kbn_relocate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-relocate title: "@kbn/relocate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/relocate plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/relocate'] --- import kbnRelocateObj from './kbn_relocate.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index 9116d86463fe9..d9abd01b116a4 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index c0ddd453508a8..9803639f54af1 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index 2d18054c1095f..2f251b67ca4ad 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index bfcd94843d845..a38346a6b95ee 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx index e693b0a0e0d97..d9f0bf2e28136 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_csv_share_panel.mdx b/api_docs/kbn_reporting_csv_share_panel.mdx index 0656b78cba976..8815dafe7cd81 100644 --- a/api_docs/kbn_reporting_csv_share_panel.mdx +++ b/api_docs/kbn_reporting_csv_share_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-csv-share-panel title: "@kbn/reporting-csv-share-panel" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-csv-share-panel plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-csv-share-panel'] --- import kbnReportingCsvSharePanelObj from './kbn_reporting_csv_share_panel.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index 5069c118ae18e..958cafa3a40b2 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index ef1ef5bc50257..d3bc01ae487ec 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index c9efaa9676d9e..76d7ca9e47274 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index dd551a0de6dd2..8cf378ba11f4d 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index 40b0cc99cb925..712f3d70b1e4a 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index 83f336734c95a..272bba0eaca5e 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index 4a3af8e64b066..106329a469304 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index 4cfd44076dc6d..3059c674a81d3 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index b908965c03cf7..4292547b0f04c 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index b7260488e483a..5142debe24c2b 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_response_ops_alerts_fields_browser.mdx b/api_docs/kbn_response_ops_alerts_fields_browser.mdx index 72b9d7041adc8..12db52c0965bb 100644 --- a/api_docs/kbn_response_ops_alerts_fields_browser.mdx +++ b/api_docs/kbn_response_ops_alerts_fields_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-alerts-fields-browser title: "@kbn/response-ops-alerts-fields-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-alerts-fields-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-alerts-fields-browser'] --- import kbnResponseOpsAlertsFieldsBrowserObj from './kbn_response_ops_alerts_fields_browser.devdocs.json'; diff --git a/api_docs/kbn_response_ops_alerts_table.mdx b/api_docs/kbn_response_ops_alerts_table.mdx index 210d165db2456..28025b8721701 100644 --- a/api_docs/kbn_response_ops_alerts_table.mdx +++ b/api_docs/kbn_response_ops_alerts_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-alerts-table title: "@kbn/response-ops-alerts-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-alerts-table plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-alerts-table'] --- import kbnResponseOpsAlertsTableObj from './kbn_response_ops_alerts_table.devdocs.json'; diff --git a/api_docs/kbn_response_ops_rule_form.mdx b/api_docs/kbn_response_ops_rule_form.mdx index 009dcd010eb95..f41654781c1f3 100644 --- a/api_docs/kbn_response_ops_rule_form.mdx +++ b/api_docs/kbn_response_ops_rule_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-rule-form title: "@kbn/response-ops-rule-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-rule-form plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-rule-form'] --- import kbnResponseOpsRuleFormObj from './kbn_response_ops_rule_form.devdocs.json'; diff --git a/api_docs/kbn_response_ops_rule_params.mdx b/api_docs/kbn_response_ops_rule_params.mdx index edfa1e38184ab..379b17bdf57f5 100644 --- a/api_docs/kbn_response_ops_rule_params.mdx +++ b/api_docs/kbn_response_ops_rule_params.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-rule-params title: "@kbn/response-ops-rule-params" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-rule-params plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-rule-params'] --- import kbnResponseOpsRuleParamsObj from './kbn_response_ops_rule_params.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index ebbb9e16f65bd..3b9d60245f7f1 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rollup.mdx b/api_docs/kbn_rollup.mdx index 355eed1235b6e..d8a60619e94d4 100644 --- a/api_docs/kbn_rollup.mdx +++ b/api_docs/kbn_rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rollup title: "@kbn/rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rollup plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rollup'] --- import kbnRollupObj from './kbn_rollup.devdocs.json'; diff --git a/api_docs/kbn_router_to_openapispec.mdx b/api_docs/kbn_router_to_openapispec.mdx index 6d23729232c28..c4e0104af9672 100644 --- a/api_docs/kbn_router_to_openapispec.mdx +++ b/api_docs/kbn_router_to_openapispec.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-to-openapispec title: "@kbn/router-to-openapispec" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-to-openapispec plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-to-openapispec'] --- import kbnRouterToOpenapispecObj from './kbn_router_to_openapispec.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index a166c44e2952a..b488e76e33f88 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index 813d35d26c3cc..db2d846973a74 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index cdaa340ac175b..095ff108c05c8 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx index a122409f7aa2d..5eaaa59a52af7 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_saved_search_component.mdx b/api_docs/kbn_saved_search_component.mdx index 5fb071fc4cf26..0365acd8ad044 100644 --- a/api_docs/kbn_saved_search_component.mdx +++ b/api_docs/kbn_saved_search_component.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-search-component title: "@kbn/saved-search-component" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-search-component plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-search-component'] --- import kbnSavedSearchComponentObj from './kbn_saved_search_component.devdocs.json'; diff --git a/api_docs/kbn_scout.devdocs.json b/api_docs/kbn_scout.devdocs.json index aa7b5538197cf..d69a051caeca9 100644 --- a/api_docs/kbn_scout.devdocs.json +++ b/api_docs/kbn_scout.devdocs.json @@ -953,6 +953,57 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/scout", + "id": "def-common.ingestSynthtraceDataHook", + "type": "Function", + "tags": [], + "label": "ingestSynthtraceDataHook", + "description": [], + "signature": [ + "(config: ", + "FullConfig", + "<{}, {}>, data: SynthtraceIngestionData) => Promise" + ], + "path": "packages/kbn-scout/src/playwright/global_hooks/synthtrace_ingestion.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/scout", + "id": "def-common.ingestSynthtraceDataHook.$1", + "type": "Object", + "tags": [], + "label": "config", + "description": [], + "signature": [ + "FullConfig", + "<{}, {}>" + ], + "path": "packages/kbn-scout/src/playwright/global_hooks/synthtrace_ingestion.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/scout", + "id": "def-common.ingestSynthtraceDataHook.$2", + "type": "Object", + "tags": [], + "label": "data", + "description": [], + "signature": [ + "SynthtraceIngestionData" + ], + "path": "packages/kbn-scout/src/playwright/global_hooks/synthtrace_ingestion.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/scout", "id": "def-common.ingestTestDataHook", @@ -1359,7 +1410,9 @@ "EsArchiverFixture", "; } & { uiSettings: ", "UiSettingsFixture", - "; } & { fleetApi: ", + "; } & ", + "SynthtraceFixture", + " & { fleetApi: ", "FleetApiFixture", "; } & { kbnUrl: ", { @@ -6627,6 +6680,72 @@ "path": "packages/kbn-scout/src/playwright/fixtures/single_thread_fixtures.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/scout", + "id": "def-common.ScoutWorkerFixtures.apmSynthtraceEsClient", + "type": "Object", + "tags": [], + "label": "apmSynthtraceEsClient", + "description": [], + "signature": [ + "SynthtraceFixtureEsClient<", + { + "pluginId": "@kbn/apm-synthtrace-client", + "scope": "common", + "docId": "kibKbnApmSynthtraceClientPluginApi", + "section": "def-common.ApmFields", + "text": "ApmFields" + }, + ">" + ], + "path": "packages/kbn-scout/src/playwright/fixtures/single_thread_fixtures.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/scout", + "id": "def-common.ScoutWorkerFixtures.infraSynthtraceEsClient", + "type": "Object", + "tags": [], + "label": "infraSynthtraceEsClient", + "description": [], + "signature": [ + "SynthtraceFixtureEsClient<", + { + "pluginId": "@kbn/apm-synthtrace-client", + "scope": "common", + "docId": "kibKbnApmSynthtraceClientPluginApi", + "section": "def-common.InfraDocument", + "text": "InfraDocument" + }, + ">" + ], + "path": "packages/kbn-scout/src/playwright/fixtures/single_thread_fixtures.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/scout", + "id": "def-common.ScoutWorkerFixtures.otelSynthtraceEsClient", + "type": "Object", + "tags": [], + "label": "otelSynthtraceEsClient", + "description": [], + "signature": [ + "SynthtraceFixtureEsClient<", + { + "pluginId": "@kbn/apm-synthtrace-client", + "scope": "common", + "docId": "kibKbnApmSynthtraceClientPluginApi", + "section": "def-common.OtelDocument", + "text": "OtelDocument" + }, + ">" + ], + "path": "packages/kbn-scout/src/playwright/fixtures/single_thread_fixtures.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/kbn_scout.mdx b/api_docs/kbn_scout.mdx index 5cec7174ba1ba..985d7e1c17e6f 100644 --- a/api_docs/kbn_scout.mdx +++ b/api_docs/kbn_scout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout title: "@kbn/scout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout'] --- import kbnScoutObj from './kbn_scout.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) for | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 383 | 2 | 93 | 14 | +| 389 | 2 | 99 | 15 | ## Common diff --git a/api_docs/kbn_scout_info.mdx b/api_docs/kbn_scout_info.mdx index af0dcf9b67c74..69deed3974163 100644 --- a/api_docs/kbn_scout_info.mdx +++ b/api_docs/kbn_scout_info.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-info title: "@kbn/scout-info" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-info plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-info'] --- import kbnScoutInfoObj from './kbn_scout_info.devdocs.json'; diff --git a/api_docs/kbn_scout_oblt.devdocs.json b/api_docs/kbn_scout_oblt.devdocs.json index 8c47b38be6aaa..4307b062fabd7 100644 --- a/api_docs/kbn_scout_oblt.devdocs.json +++ b/api_docs/kbn_scout_oblt.devdocs.json @@ -1229,7 +1229,9 @@ "EsArchiverFixture", "; } & { uiSettings: ", "UiSettingsFixture", - "; } & { fleetApi: ", + "; } & ", + "SynthtraceFixture", + " & { fleetApi: ", "FleetApiFixture", "; } & { kbnUrl: ", { diff --git a/api_docs/kbn_scout_oblt.mdx b/api_docs/kbn_scout_oblt.mdx index 899b0521410e0..e5c9fe29eed65 100644 --- a/api_docs/kbn_scout_oblt.mdx +++ b/api_docs/kbn_scout_oblt.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-oblt title: "@kbn/scout-oblt" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-oblt plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-oblt'] --- import kbnScoutObltObj from './kbn_scout_oblt.devdocs.json'; diff --git a/api_docs/kbn_scout_reporting.mdx b/api_docs/kbn_scout_reporting.mdx index 710758682b756..e0f10b3213dde 100644 --- a/api_docs/kbn_scout_reporting.mdx +++ b/api_docs/kbn_scout_reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-reporting title: "@kbn/scout-reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-reporting plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-reporting'] --- import kbnScoutReportingObj from './kbn_scout_reporting.devdocs.json'; diff --git a/api_docs/kbn_screenshotting_server.mdx b/api_docs/kbn_screenshotting_server.mdx index 6a8aec50685c3..2cc4f5018e9ca 100644 --- a/api_docs/kbn_screenshotting_server.mdx +++ b/api_docs/kbn_screenshotting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-screenshotting-server title: "@kbn/screenshotting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/screenshotting-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/screenshotting-server'] --- import kbnScreenshottingServerObj from './kbn_screenshotting_server.devdocs.json'; diff --git a/api_docs/kbn_search_api_keys_components.mdx b/api_docs/kbn_search_api_keys_components.mdx index d20edf8eb39cf..6a29421207a6d 100644 --- a/api_docs/kbn_search_api_keys_components.mdx +++ b/api_docs/kbn_search_api_keys_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-keys-components title: "@kbn/search-api-keys-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-keys-components plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-keys-components'] --- import kbnSearchApiKeysComponentsObj from './kbn_search_api_keys_components.devdocs.json'; diff --git a/api_docs/kbn_search_api_keys_server.mdx b/api_docs/kbn_search_api_keys_server.mdx index d3829c21517aa..1ae491d5b5599 100644 --- a/api_docs/kbn_search_api_keys_server.mdx +++ b/api_docs/kbn_search_api_keys_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-keys-server title: "@kbn/search-api-keys-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-keys-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-keys-server'] --- import kbnSearchApiKeysServerObj from './kbn_search_api_keys_server.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 0ea67e72bdb51..56eb8a67c0534 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index 8136d74f9e561..fea32976a1731 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index 46658cc18034a..64f015a84d0b3 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index 15a5cd3f6d516..6bc65b5eea9fc 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index f769095d6c23e..4289242ba1696 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_search_shared_ui.mdx b/api_docs/kbn_search_shared_ui.mdx index ab47898a3a406..0204067a03279 100644 --- a/api_docs/kbn_search_shared_ui.mdx +++ b/api_docs/kbn_search_shared_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-shared-ui title: "@kbn/search-shared-ui" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-shared-ui plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-shared-ui'] --- import kbnSearchSharedUiObj from './kbn_search_shared_ui.devdocs.json'; diff --git a/api_docs/kbn_search_types.mdx b/api_docs/kbn_search_types.mdx index 337e57090d540..cf131295f5b2e 100644 --- a/api_docs/kbn_search_types.mdx +++ b/api_docs/kbn_search_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-types title: "@kbn/search-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-types'] --- import kbnSearchTypesObj from './kbn_search_types.devdocs.json'; diff --git a/api_docs/kbn_security_ai_prompts.mdx b/api_docs/kbn_security_ai_prompts.mdx index 133bad9a6f06c..b399e31960693 100644 --- a/api_docs/kbn_security_ai_prompts.mdx +++ b/api_docs/kbn_security_ai_prompts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-ai-prompts title: "@kbn/security-ai-prompts" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-ai-prompts plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-ai-prompts'] --- import kbnSecurityAiPromptsObj from './kbn_security_ai_prompts.devdocs.json'; diff --git a/api_docs/kbn_security_api_key_management.mdx b/api_docs/kbn_security_api_key_management.mdx index 754375cd13190..d79545ea9104b 100644 --- a/api_docs/kbn_security_api_key_management.mdx +++ b/api_docs/kbn_security_api_key_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-api-key-management title: "@kbn/security-api-key-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-api-key-management plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-api-key-management'] --- import kbnSecurityApiKeyManagementObj from './kbn_security_api_key_management.devdocs.json'; diff --git a/api_docs/kbn_security_authorization_core.mdx b/api_docs/kbn_security_authorization_core.mdx index 355fc2ce42dbc..4889dc7fa71e7 100644 --- a/api_docs/kbn_security_authorization_core.mdx +++ b/api_docs/kbn_security_authorization_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-authorization-core title: "@kbn/security-authorization-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-authorization-core plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-authorization-core'] --- import kbnSecurityAuthorizationCoreObj from './kbn_security_authorization_core.devdocs.json'; diff --git a/api_docs/kbn_security_authorization_core_common.mdx b/api_docs/kbn_security_authorization_core_common.mdx index a7e7de8465702..ebb3b49aefedd 100644 --- a/api_docs/kbn_security_authorization_core_common.mdx +++ b/api_docs/kbn_security_authorization_core_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-authorization-core-common title: "@kbn/security-authorization-core-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-authorization-core-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-authorization-core-common'] --- import kbnSecurityAuthorizationCoreCommonObj from './kbn_security_authorization_core_common.devdocs.json'; diff --git a/api_docs/kbn_security_form_components.mdx b/api_docs/kbn_security_form_components.mdx index 6b46919d5acdf..c55c9953463b1 100644 --- a/api_docs/kbn_security_form_components.mdx +++ b/api_docs/kbn_security_form_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-form-components title: "@kbn/security-form-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-form-components plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-form-components'] --- import kbnSecurityFormComponentsObj from './kbn_security_form_components.devdocs.json'; diff --git a/api_docs/kbn_security_hardening.mdx b/api_docs/kbn_security_hardening.mdx index fae8b4b5d3c00..7084e3633ea63 100644 --- a/api_docs/kbn_security_hardening.mdx +++ b/api_docs/kbn_security_hardening.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-hardening title: "@kbn/security-hardening" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-hardening plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-hardening'] --- import kbnSecurityHardeningObj from './kbn_security_hardening.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index ba957632402e8..e257be56e7b92 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index a70c44c074b4f..f9028dd871ebf 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index e1c788985aa32..4722e4003b6b0 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_role_management_model.mdx b/api_docs/kbn_security_role_management_model.mdx index 95b6ccb975db8..b5de2a2368895 100644 --- a/api_docs/kbn_security_role_management_model.mdx +++ b/api_docs/kbn_security_role_management_model.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-role-management-model title: "@kbn/security-role-management-model" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-role-management-model plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-role-management-model'] --- import kbnSecurityRoleManagementModelObj from './kbn_security_role_management_model.devdocs.json'; diff --git a/api_docs/kbn_security_solution_connectors.mdx b/api_docs/kbn_security_solution_connectors.mdx index 45b93dd17d6ca..fb5236a9cc3f0 100644 --- a/api_docs/kbn_security_solution_connectors.mdx +++ b/api_docs/kbn_security_solution_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-connectors title: "@kbn/security-solution-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-connectors plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-connectors'] --- import kbnSecuritySolutionConnectorsObj from './kbn_security_solution_connectors.devdocs.json'; diff --git a/api_docs/kbn_security_solution_distribution_bar.devdocs.json b/api_docs/kbn_security_solution_distribution_bar.devdocs.json index ac66b60a1f718..c91f0f800556b 100644 --- a/api_docs/kbn_security_solution_distribution_bar.devdocs.json +++ b/api_docs/kbn_security_solution_distribution_bar.devdocs.json @@ -23,7 +23,7 @@ }, ">" ], - "path": "x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx", + "path": "x-pack/solutions/security/packages/distribution-bar/src/distribution_bar.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -70,7 +70,7 @@ "description": [ "DistributionBar component props" ], - "path": "x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx", + "path": "x-pack/solutions/security/packages/distribution-bar/src/distribution_bar.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -86,7 +86,7 @@ "signature": [ "{ key: string; count: number; color: string; label?: React.ReactNode; isCurrentFilter?: boolean | undefined; filter?: (() => void) | undefined; reset?: ((event: React.MouseEvent) => void) | undefined; }[]" ], - "path": "x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx", + "path": "x-pack/solutions/security/packages/distribution-bar/src/distribution_bar.tsx", "deprecated": false, "trackAdoption": false }, @@ -102,7 +102,7 @@ "signature": [ "boolean | undefined" ], - "path": "x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx", + "path": "x-pack/solutions/security/packages/distribution-bar/src/distribution_bar.tsx", "deprecated": false, "trackAdoption": false }, @@ -118,7 +118,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/solutions/security/packages/distribution_bar/src/distribution_bar.tsx", + "path": "x-pack/solutions/security/packages/distribution-bar/src/distribution_bar.tsx", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_security_solution_distribution_bar.mdx b/api_docs/kbn_security_solution_distribution_bar.mdx index 29e57cc9fc6b2..9093f63daeab8 100644 --- a/api_docs/kbn_security_solution_distribution_bar.mdx +++ b/api_docs/kbn_security_solution_distribution_bar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-distribution-bar title: "@kbn/security-solution-distribution-bar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-distribution-bar plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-distribution-bar'] --- import kbnSecuritySolutionDistributionBarObj from './kbn_security_solution_distribution_bar.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index 106f4247af611..de20995c1f8a0 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 12379dfd7a5fb..cf3400ab99bb2 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index d7d1fe8d72caf..f8aac879da345 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index 84f104e27f3e9..3600a1c0e0d5d 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_security_ui_components.mdx b/api_docs/kbn_security_ui_components.mdx index cf06b0a2576e1..efadf550ddeb9 100644 --- a/api_docs/kbn_security_ui_components.mdx +++ b/api_docs/kbn_security_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-ui-components title: "@kbn/security-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-ui-components plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-ui-components'] --- import kbnSecurityUiComponentsObj from './kbn_security_ui_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 31b7f15318e66..3d90961e11dcf 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx index 2aa95aa15ed74..d2b5f9ec7e5ad 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 1470805aac30a..89619112fc7d1 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index e386d01d8852d..fa5cfcdfc16ac 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index f56ddd37e9998..dfda36be692d7 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 40aa097958345..80d8c15fb41ba 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index bbc226cc1051d..ac9b4aec59a06 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,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 description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.devdocs.json b/api_docs/kbn_securitysolution_io_ts_list_types.devdocs.json index a8510b652d939..1f67d004a1179 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.devdocs.json +++ b/api_docs/kbn_securitysolution_io_ts_list_types.devdocs.json @@ -11182,6 +11182,30 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/securitysolution-io-ts-list-types", + "id": "def-common.timestampFromEsResponse", + "type": "Object", + "tags": [], + "label": "timestampFromEsResponse", + "description": [ + "\ntimestamp field type as it can be returned form ES: string, number or undefined" + ], + "signature": [ + "UnionC", + "<[", + "Type", + ", ", + "NumberC", + ", ", + "UndefinedC", + "]>" + ], + "path": "x-pack/solutions/security/packages/kbn-securitysolution-io-ts-list-types/src/common/timestamp/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/securitysolution-io-ts-list-types", "id": "def-common.timestampOrUndefined", diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index f3c68d7807c0c..d3d4b0e560f7d 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,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 description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-detection-engine](https://github.com/orgs/elastic/tea | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 534 | 0 | 521 | 0 | +| 535 | 0 | 521 | 0 | ## Common diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 46b7b5950a1d3..518e40b038a26 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index 82d9760332788..29a6d6b1efa5b 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index 7ca502e4b8881..4e1dcd695afda 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index 26be5ac3d9de9..99908425df32b 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index 52a975ba12359..19ff5b1e250f4 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index 738f886ecda0b..58d06f5e64c86 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index dcef6cbef9644..6d642ae6f57ad 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index a5a3f0d1e3c87..032903dd352f8 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 4d42fe0b2e601..5ecf167fcf679 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index 4ed4e4fdb1d9e..f1cc83a7dd1e6 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index 9a606b8ecc9e2..67df9084a8dcc 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_client.mdx b/api_docs/kbn_server_route_repository_client.mdx index 46907c85c5d3f..e647c17dc3963 100644 --- a/api_docs/kbn_server_route_repository_client.mdx +++ b/api_docs/kbn_server_route_repository_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-client title: "@kbn/server-route-repository-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-client plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-client'] --- import kbnServerRouteRepositoryClientObj from './kbn_server_route_repository_client.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_utils.mdx b/api_docs/kbn_server_route_repository_utils.mdx index 05b5ded911d52..7ab4e197f3a6f 100644 --- a/api_docs/kbn_server_route_repository_utils.mdx +++ b/api_docs/kbn_server_route_repository_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-utils title: "@kbn/server-route-repository-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-utils'] --- import kbnServerRouteRepositoryUtilsObj from './kbn_server_route_repository_utils.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index c282dbcc943bd..0db45d7f2294a 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index af16ad452a43b..30d2b0f2bbecc 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index 964807a3b702a..17801d617e35d 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index b1638a4d2236e..b335178cef121 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 44f64294d1815..d20e13ca75312 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config'] --- import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index 7ac1fe791e096..589ed7792bf8b 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index 17bf518d137e2..7db1690bdda0b 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index 1dff700d3fd52..e769cf6e04687 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index b6a965609f29c..a9d844be46366 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index c929e797b006c..5f33fc6cf02f9 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,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 description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index 09fda9c48a966..e7c40ee18aa1c 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx index dc488f405b25d..ceb2fdf8dd459 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index 9e9ccb6a9b842..6283197a37eae 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index 9e51468253ea7..ca2aa6f25c6cf 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index ef3e601f6d519..1e15a3db90746 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index 4c86667307768..28fe638962a0b 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index 3bd430e349922..72627070d6b0f 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index fa170690ea14b..1c325a1cb5925 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index d4c98148931df..e004d104059a0 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types'] --- import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index df321b12f9b43..c613557720f9d 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index 92a2e229bccf1..bf4e432a0eb8e 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index e7be0d0feb556..864f5b2ad9ad2 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index 0cd15c226d735..fba237078b508 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index b03b2b2657825..f83de2ca347ec 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index 1ec16b82bb6f6..b928db8858d58 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json'; 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 8704922ccfa2b..ff90e2258b6f7 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,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 description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index 382bec1cacd68..ad57ac90f42ac 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; 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 e67e64310aeda..c82c130a9b298 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,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 description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index a4ffb86a224da..fbc3766a6296c 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index c1c0ccd5c6631..b1dfc596fda0f 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index 6ffc5efc34a73..807616c96dd92 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index 50dc1322531c6..46a616f6a1d53 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index 556abd0ae230c..9913e7a2a7566 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index 2528ac6713123..5e44544a6e5b0 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index d0a1175667893..0d0bb9c1b49d8 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index cd5eaff93c810..ca353460b4462 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; 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 9da18cbe072fe..4f7fbd9614686 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,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 description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index 7d2aa2dfb678e..da6ce4867b510 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index 51181c8a14f56..63024d16c6aff 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index 8c092e7a0a4f1..7f3af56b7aedf 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index 1af916ad37780..58d7fd0446aca 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index a08ed7a15e86a..213bb268390ed 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index b9f572dc922f1..22ed9535648ec 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_tabbed_modal.mdx b/api_docs/kbn_shared_ux_tabbed_modal.mdx index 99e7bc67a2ad9..e9b61f1b25bab 100644 --- a/api_docs/kbn_shared_ux_tabbed_modal.mdx +++ b/api_docs/kbn_shared_ux_tabbed_modal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-tabbed-modal title: "@kbn/shared-ux-tabbed-modal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-tabbed-modal plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-tabbed-modal'] --- import kbnSharedUxTabbedModalObj from './kbn_shared_ux_tabbed_modal.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_table_persist.mdx b/api_docs/kbn_shared_ux_table_persist.mdx index 11c68c8c896bf..72d70cd187169 100644 --- a/api_docs/kbn_shared_ux_table_persist.mdx +++ b/api_docs/kbn_shared_ux_table_persist.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-table-persist title: "@kbn/shared-ux-table-persist" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-table-persist plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-table-persist'] --- import kbnSharedUxTablePersistObj from './kbn_shared_ux_table_persist.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index f2925f21d1dfc..0d7a56eb0d47e 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index 6643db7498d51..f79fc9af6dc91 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index 64536017691bf..f1cd6abefab33 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_predicates.mdx b/api_docs/kbn_sort_predicates.mdx index 21e4fc4b5c797..91608b27b865f 100644 --- a/api_docs/kbn_sort_predicates.mdx +++ b/api_docs/kbn_sort_predicates.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-predicates title: "@kbn/sort-predicates" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sort-predicates plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-predicates'] --- import kbnSortPredicatesObj from './kbn_sort_predicates.devdocs.json'; diff --git a/api_docs/kbn_sse_utils.mdx b/api_docs/kbn_sse_utils.mdx index b2754ecaea7e6..dafa095994eb1 100644 --- a/api_docs/kbn_sse_utils.mdx +++ b/api_docs/kbn_sse_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils title: "@kbn/sse-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils'] --- import kbnSseUtilsObj from './kbn_sse_utils.devdocs.json'; diff --git a/api_docs/kbn_sse_utils_client.mdx b/api_docs/kbn_sse_utils_client.mdx index b07260b9bead0..c3afcac3dc477 100644 --- a/api_docs/kbn_sse_utils_client.mdx +++ b/api_docs/kbn_sse_utils_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils-client title: "@kbn/sse-utils-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils-client plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils-client'] --- import kbnSseUtilsClientObj from './kbn_sse_utils_client.devdocs.json'; diff --git a/api_docs/kbn_sse_utils_server.mdx b/api_docs/kbn_sse_utils_server.mdx index e5138052e5917..7cf2b2ad0b5cf 100644 --- a/api_docs/kbn_sse_utils_server.mdx +++ b/api_docs/kbn_sse_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils-server title: "@kbn/sse-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils-server plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils-server'] --- import kbnSseUtilsServerObj from './kbn_sse_utils_server.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index 8f45b1039506c..b142f49e79ff0 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 86c0e1a91aaa7..bc7fb7012c40d 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index f2663f500edc1..dade450c347a5 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_streams_schema.devdocs.json b/api_docs/kbn_streams_schema.devdocs.json index 0a40733f75f99..d850210029b3a 100644 --- a/api_docs/kbn_streams_schema.devdocs.json +++ b/api_docs/kbn_streams_schema.devdocs.json @@ -611,6 +611,96 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/streams-schema", + "id": "def-common.getAdvancedParameters", + "type": "Function", + "tags": [], + "label": "getAdvancedParameters", + "description": [], + "signature": [ + "(fieldName: string, fieldConfig: (", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; })) => Partial<(", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; })>" + ], + "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/field_definition.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/streams-schema", + "id": "def-common.getAdvancedParameters.$1", + "type": "string", + "tags": [], + "label": "fieldName", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/field_definition.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/streams-schema", + "id": "def-common.getAdvancedParameters.$2", + "type": "CompoundType", + "tags": [], + "label": "fieldConfig", + "description": [], + "signature": [ + "(", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; })" + ], + "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/field_definition.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/streams-schema", "id": "def-common.getAncestors", @@ -2416,59 +2506,24 @@ "id": "def-common.FieldDefinition.Unnamed", "type": "IndexSignature", "tags": [], - "label": "[x: string]: FieldDefinitionConfig", - "description": [], - "signature": [ - "[x: string]: ", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.FieldDefinitionConfig", - "text": "FieldDefinitionConfig" - } - ], - "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/streams-schema", - "id": "def-common.FieldDefinitionConfig", - "type": "Interface", - "tags": [], - "label": "FieldDefinitionConfig", - "description": [], - "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/streams-schema", - "id": "def-common.FieldDefinitionConfig.type", - "type": "CompoundType", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "\"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"" - ], - "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/streams-schema", - "id": "def-common.FieldDefinitionConfig.format", - "type": "string", - "tags": [], - "label": "format", + "label": "[x: string]: (MappingBooleanProperty & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (MappingKeywordProperty & { ...; }) | ... 4 more ... | (MappingLongNumberProperty & { ...; })", "description": [], "signature": [ - "string | undefined" + "[x: string]: (", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; })" ], "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts", "deprecated": false, @@ -2921,17 +2976,24 @@ "id": "def-common.InheritedFieldDefinition.Unnamed", "type": "IndexSignature", "tags": [], - "label": "[x: string]: InheritedFieldDefinitionConfig", + "label": "[x: string]: (MappingBooleanProperty & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { from: string; }) | ... 5 more ... | (MappingLongNumberProperty & ... 1 more ... & { ...; })", "description": [], "signature": [ - "[x: string]: ", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.InheritedFieldDefinitionConfig", - "text": "InheritedFieldDefinitionConfig" - } + "[x: string]: (", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { from: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { from: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { from: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { from: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { from: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { from: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { from: string; })" ], "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts", "deprecated": false, @@ -2940,90 +3002,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "@kbn/streams-schema", - "id": "def-common.InheritedFieldDefinitionConfig", - "type": "Interface", - "tags": [], - "label": "InheritedFieldDefinitionConfig", - "description": [], - "signature": [ - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.InheritedFieldDefinitionConfig", - "text": "InheritedFieldDefinitionConfig" - }, - " extends ", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.FieldDefinitionConfig", - "text": "FieldDefinitionConfig" - } - ], - "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/streams-schema", - "id": "def-common.InheritedFieldDefinitionConfig.from", - "type": "string", - "tags": [], - "label": "from", - "description": [], - "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/streams-schema", - "id": "def-common.NamedFieldDefinitionConfig", - "type": "Interface", - "tags": [], - "label": "NamedFieldDefinitionConfig", - "description": [], - "signature": [ - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.NamedFieldDefinitionConfig", - "text": "NamedFieldDefinitionConfig" - }, - " extends ", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.FieldDefinitionConfig", - "text": "FieldDefinitionConfig" - } - ], - "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/streams-schema", - "id": "def-common.NamedFieldDefinitionConfig.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/streams-schema", "id": "def-common.NeverCondition", @@ -3863,6 +3841,54 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/streams-schema", + "id": "def-common.FieldDefinitionConfig", + "type": "Type", + "tags": [], + "label": "FieldDefinitionConfig", + "description": [], + "signature": [ + "(", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; })" + ], + "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/streams-schema", + "id": "def-common.FieldDefinitionConfigAdvancedParameters", + "type": "Type", + "tags": [], + "label": "FieldDefinitionConfigAdvancedParameters", + "description": [], + "signature": [ + "{ meta?: Record | undefined; fields?: Record | undefined; copy_to?: ", + "Fields", + " | undefined; }" + ], + "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/streams-schema", "id": "def-common.FieldDefinitionType", @@ -4113,6 +4139,64 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/streams-schema", + "id": "def-common.InheritedFieldDefinitionConfig", + "type": "Type", + "tags": [], + "label": "InheritedFieldDefinitionConfig", + "description": [], + "signature": [ + "(", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { from: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { from: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { from: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { from: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { from: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { from: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { from: string; })" + ], + "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/streams-schema", + "id": "def-common.NamedFieldDefinitionConfig", + "type": "Type", + "tags": [], + "label": "NamedFieldDefinitionConfig", + "description": [], + "signature": [ + "(", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; })" + ], + "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/streams-schema", "id": "def-common.Primitive", @@ -4595,23 +4679,35 @@ "label": "fieldDefinitionConfigSchema", "description": [], "signature": [ - "Zod.ZodType<", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.FieldDefinitionConfig", - "text": "FieldDefinitionConfig" - }, - ", Zod.ZodTypeDef, ", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.FieldDefinitionConfig", - "text": "FieldDefinitionConfig" - }, - ">" + "Zod.ZodType<(", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }), Zod.ZodTypeDef, (", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; })>" ], "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts", "deprecated": false, @@ -5138,23 +5234,35 @@ "label": "namedFieldDefinitionConfigSchema", "description": [], "signature": [ - "Zod.ZodType<", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.NamedFieldDefinitionConfig", - "text": "NamedFieldDefinitionConfig" - }, - ", Zod.ZodTypeDef, ", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.NamedFieldDefinitionConfig", - "text": "NamedFieldDefinitionConfig" - }, - ">" + "Zod.ZodType<(", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }), Zod.ZodTypeDef, (", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; })>" ], "path": "x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts", "deprecated": false, diff --git a/api_docs/kbn_streams_schema.mdx b/api_docs/kbn_streams_schema.mdx index de7a7215d5db8..e13dfa171683e 100644 --- a/api_docs/kbn_streams_schema.mdx +++ b/api_docs/kbn_streams_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-streams-schema title: "@kbn/streams-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/streams-schema plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/streams-schema'] --- import kbnStreamsSchemaObj from './kbn_streams_schema.devdocs.json'; diff --git a/api_docs/kbn_synthetics_e2e.mdx b/api_docs/kbn_synthetics_e2e.mdx index 33a27922f5f1a..6a332d22791e8 100644 --- a/api_docs/kbn_synthetics_e2e.mdx +++ b/api_docs/kbn_synthetics_e2e.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-e2e title: "@kbn/synthetics-e2e" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-e2e plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-e2e'] --- import kbnSyntheticsE2eObj from './kbn_synthetics_e2e.devdocs.json'; diff --git a/api_docs/kbn_synthetics_private_location.mdx b/api_docs/kbn_synthetics_private_location.mdx index 939e0b066736e..b21fb43a24e32 100644 --- a/api_docs/kbn_synthetics_private_location.mdx +++ b/api_docs/kbn_synthetics_private_location.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-private-location title: "@kbn/synthetics-private-location" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-private-location plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-private-location'] --- import kbnSyntheticsPrivateLocationObj from './kbn_synthetics_private_location.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 3b041a2abf172..3a179647ac075 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index ff84ef7abe098..caeb7387e2e8c 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_eui_helpers.mdx b/api_docs/kbn_test_eui_helpers.mdx index 90aeabe009d0e..e5d4de9dcf18b 100644 --- a/api_docs/kbn_test_eui_helpers.mdx +++ b/api_docs/kbn_test_eui_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-eui-helpers title: "@kbn/test-eui-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-eui-helpers plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-eui-helpers'] --- import kbnTestEuiHelpersObj from './kbn_test_eui_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 02c76e5c8d958..0032e93c8a5d1 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index 5dec45a2bb0dc..f646c8a7cdc56 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_timerange.mdx b/api_docs/kbn_timerange.mdx index 13ba932e2c3bd..ecdb14e6cd1ea 100644 --- a/api_docs/kbn_timerange.mdx +++ b/api_docs/kbn_timerange.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-timerange title: "@kbn/timerange" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/timerange plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/timerange'] --- import kbnTimerangeObj from './kbn_timerange.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index e8ff80d972620..783f9cd189898 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_transpose_utils.mdx b/api_docs/kbn_transpose_utils.mdx index dfdd6b62e11fa..4ad7a55e89c2b 100644 --- a/api_docs/kbn_transpose_utils.mdx +++ b/api_docs/kbn_transpose_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-transpose-utils title: "@kbn/transpose-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/transpose-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/transpose-utils'] --- import kbnTransposeUtilsObj from './kbn_transpose_utils.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index de01c11145a74..f80d934de75f3 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_try_in_console.mdx b/api_docs/kbn_try_in_console.mdx index 091a4c71b0287..8caece85b0586 100644 --- a/api_docs/kbn_try_in_console.mdx +++ b/api_docs/kbn_try_in_console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-try-in-console title: "@kbn/try-in-console" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/try-in-console plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/try-in-console'] --- import kbnTryInConsoleObj from './kbn_try_in_console.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index a0faca02ec75b..03e8c41723382 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index 3b0615a3f5cb3..0c646d1b391e7 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index 3fc5e15097d59..88896124a1b19 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index 4df6b16892f72..e20bb014b5fb1 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index e27f544d0d86c..032c17d9b12af 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index daef1b218e26d..b5539201f8a8c 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 4b3f83fcde270..1f6451c0b0690 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index a378fe2c4defe..d32ba03b05078 100644 --- a/api_docs/kbn_unified_field_list.mdx +++ b/api_docs/kbn_unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list title: "@kbn/unified-field-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-field-list plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index 9b5662b47f61a..2480272f70516 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_prompt.mdx b/api_docs/kbn_unsaved_changes_prompt.mdx index 1de957b2d96e1..8a8213445f1c6 100644 --- a/api_docs/kbn_unsaved_changes_prompt.mdx +++ b/api_docs/kbn_unsaved_changes_prompt.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-prompt title: "@kbn/unsaved-changes-prompt" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-prompt plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-prompt'] --- import kbnUnsavedChangesPromptObj from './kbn_unsaved_changes_prompt.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 494b96173239c..305a707e7e679 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 065e8477e0d60..93f2a38b05256 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index ee5e37af9f279..8aad614ff31e2 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index 8ffd23eca5421..c9bd28cb0be8a 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 4f9698fb42c34..5b1940e64114a 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index 33862d68e8303..9583f8028288a 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index da2cc5b22d6fc..b8f5872d4ca43 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index a1ab745a8112a..dfc240aa59ec6 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 89e5e4eae13c0..28cff2381fb9b 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod.mdx b/api_docs/kbn_zod.mdx index c28bc85537229..459c14a06ef2e 100644 --- a/api_docs/kbn_zod.mdx +++ b/api_docs/kbn_zod.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod title: "@kbn/zod" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod'] --- import kbnZodObj from './kbn_zod.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index f9b9d515141d4..1888cca304afc 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index b75c77796fffd..8e988cd0ae264 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 2da928c4661eb..b3757d6e89312 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index 368291cca42b5..fc2b801bd35b5 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index faded95c7b6a9..35f95fc6fcb1c 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 92f59e35ef61b..0a8a077f5682f 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index fc973af482e42..e1016fb0ac04d 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 16d613958f5c7..1539029f1d1d7 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index 0e1b1d9926c3b..d1fbb897aa09e 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 817aa89702e40..c9aed02c80370 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/llm_tasks.mdx b/api_docs/llm_tasks.mdx index 0ed4e998ab14c..d72353b926701 100644 --- a/api_docs/llm_tasks.mdx +++ b/api_docs/llm_tasks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/llmTasks title: "llmTasks" image: https://source.unsplash.com/400x175/?github description: API docs for the llmTasks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'llmTasks'] --- import llmTasksObj from './llm_tasks.devdocs.json'; diff --git a/api_docs/logs_data_access.mdx b/api_docs/logs_data_access.mdx index 6bc05f6194b04..aaa916f612d9e 100644 --- a/api_docs/logs_data_access.mdx +++ b/api_docs/logs_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsDataAccess title: "logsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the logsDataAccess plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsDataAccess'] --- import logsDataAccessObj from './logs_data_access.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 1fb8275a505c9..3e668af2f9fa7 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 881b0350f796b..00aad697d2d20 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 870d799ca462c..027200cfb4a90 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index c07e2aaaa012a..311ef354a2f8e 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index 8462960ddcf08..cbe592389596e 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index bff968e53193b..6e2b475a9487e 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index ba06e91b7434b..ac8bf8b8c1290 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index c48e2c8625a2d..d347b63529bb5 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index 213f714df4e0f..cf2dbf0a03b0c 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 73ba513cac167..deeaab3c6807e 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index f62b86c6176de..69fc8fc620527 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index 3f70d4c0cee7b..fbed146a3d4ce 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 44106f482a155..27db178802c21 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 22893a1eb5cc3..41ee9af9e2ab0 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 16e3ee8d0e116..b865c7aa36dd4 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant_app.mdx b/api_docs/observability_a_i_assistant_app.mdx index 99e29de34a268..b10c48c6ca42d 100644 --- a/api_docs/observability_a_i_assistant_app.mdx +++ b/api_docs/observability_a_i_assistant_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistantApp title: "observabilityAIAssistantApp" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistantApp plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistantApp'] --- import observabilityAIAssistantAppObj from './observability_a_i_assistant_app.devdocs.json'; diff --git a/api_docs/observability_ai_assistant_management.mdx b/api_docs/observability_ai_assistant_management.mdx index e5a8c348f1476..35ec0e2babf16 100644 --- a/api_docs/observability_ai_assistant_management.mdx +++ b/api_docs/observability_ai_assistant_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAiAssistantManagement title: "observabilityAiAssistantManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAiAssistantManagement plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAiAssistantManagement'] --- import observabilityAiAssistantManagementObj from './observability_ai_assistant_management.devdocs.json'; diff --git a/api_docs/observability_logs_explorer.mdx b/api_docs/observability_logs_explorer.mdx index 379dca7b1a898..26a08b25c7a76 100644 --- a/api_docs/observability_logs_explorer.mdx +++ b/api_docs/observability_logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogsExplorer title: "observabilityLogsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogsExplorer plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogsExplorer'] --- import observabilityLogsExplorerObj from './observability_logs_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 10c0855f701f0..e30da80abd317 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index 45c51888e9835..072010ea1f1fb 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 7750347a5b0f5..4357508901a2d 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index efda942d28b86..2da1fb9bf7f14 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 2f66c0f1e9611..075f4e5461ca1 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 56236 | 243 | 41907 | 2733 | +| 56255 | 243 | 41926 | 2733 | ## Plugin Directory @@ -104,7 +104,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | 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. | 96 | 0 | 96 | 8 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | File upload, download, sharing, and serving over HTTP implementation in Kibana. | 240 | 0 | 24 | 9 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Simple UI for managing files in Kibana | 3 | 0 | 3 | 0 | -| | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1451 | 5 | 1324 | 85 | +| | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1454 | 5 | 1327 | 85 | | ftrApis | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 72 | 0 | 14 | 5 | | globalSearchBar | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 0 | 0 | 0 | 0 | @@ -515,8 +515,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 102 | 0 | 86 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 15 | 0 | 9 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 38 | 2 | 33 | 0 | -| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 39 | 0 | 36 | 2 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 280 | 0 | 230 | 4 | +| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 38 | 0 | 36 | 2 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 290 | 0 | 240 | 3 | | | [@elastic/docs](https://github.com/orgs/elastic/teams/docs) | - | 81 | 0 | 81 | 2 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 5 | 0 | 5 | 1 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 57 | 0 | 30 | 6 | @@ -697,7 +697,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-detections-response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 152 | 0 | 140 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 15 | 0 | 14 | 0 | -| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 383 | 2 | 93 | 14 | +| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 389 | 2 | 99 | 15 | | | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 11 | 0 | 11 | 0 | | | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 361 | 2 | 71 | 2 | | | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 109 | 0 | 87 | 4 | @@ -735,7 +735,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 107 | 0 | 96 | 1 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 15 | 0 | 7 | 0 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 147 | 0 | 125 | 0 | -| | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 534 | 0 | 521 | 0 | +| | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 535 | 0 | 521 | 0 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 68 | 0 | 38 | 0 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 28 | 0 | 21 | 0 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 103 | 0 | 99 | 0 | diff --git a/api_docs/presentation_panel.mdx b/api_docs/presentation_panel.mdx index 9403ef0241380..4b82e78348e28 100644 --- a/api_docs/presentation_panel.mdx +++ b/api_docs/presentation_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationPanel title: "presentationPanel" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationPanel plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationPanel'] --- import presentationPanelObj from './presentation_panel.devdocs.json'; diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 436bb0c791080..f5ef8d1507016 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/product_doc_base.mdx b/api_docs/product_doc_base.mdx index 0f4d1099fa6dc..2e5e099d47b22 100644 --- a/api_docs/product_doc_base.mdx +++ b/api_docs/product_doc_base.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/productDocBase title: "productDocBase" image: https://source.unsplash.com/400x175/?github description: API docs for the productDocBase plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'productDocBase'] --- import productDocBaseObj from './product_doc_base.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 919f297aec03e..7eea4b17ee47f 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index 1954d3944ab3c..5fe383b246828 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 8e959ce84b95e..ae34fd3352816 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 726d15adc3e7b..fbdfe8f4c8075 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index 6f90deabad79c..ec4a30fea1d3f 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index e371447a9280b..66601b69a55c7 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index 75b6636053bf3..e2d20784eb461 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 13fc9497d5971..0e298392fd4f3 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index 3692b0c8d2a92..f265833edd0c3 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 29b7a5e301c5d..710fb26d7958c 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 4c75d53c0b806..8227c69a9b856 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index 757e5d6044579..07c0a451b6c26 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index 9cc18334e247a..cb6f9cf097fbb 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index 156d2cdd81c81..627bb1c4a6d52 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index 35513eb10a9bd..175d0062edc2a 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/search_assistant.mdx b/api_docs/search_assistant.mdx index 0987160aa7fb3..2ada862734066 100644 --- a/api_docs/search_assistant.mdx +++ b/api_docs/search_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchAssistant title: "searchAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the searchAssistant plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchAssistant'] --- import searchAssistantObj from './search_assistant.devdocs.json'; diff --git a/api_docs/search_connectors.mdx b/api_docs/search_connectors.mdx index 48769b8d6c888..4512b68ce2a34 100644 --- a/api_docs/search_connectors.mdx +++ b/api_docs/search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchConnectors title: "searchConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the searchConnectors plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchConnectors'] --- import searchConnectorsObj from './search_connectors.devdocs.json'; diff --git a/api_docs/search_homepage.mdx b/api_docs/search_homepage.mdx index c8d9452e631a4..d1e3138df5e0f 100644 --- a/api_docs/search_homepage.mdx +++ b/api_docs/search_homepage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchHomepage title: "searchHomepage" image: https://source.unsplash.com/400x175/?github description: API docs for the searchHomepage plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchHomepage'] --- import searchHomepageObj from './search_homepage.devdocs.json'; diff --git a/api_docs/search_indices.mdx b/api_docs/search_indices.mdx index 9c4b3c50749c9..81cefa45e1e91 100644 --- a/api_docs/search_indices.mdx +++ b/api_docs/search_indices.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchIndices title: "searchIndices" image: https://source.unsplash.com/400x175/?github description: API docs for the searchIndices plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchIndices'] --- import searchIndicesObj from './search_indices.devdocs.json'; diff --git a/api_docs/search_inference_endpoints.mdx b/api_docs/search_inference_endpoints.mdx index c56869f461552..b7e8ae73cc8ee 100644 --- a/api_docs/search_inference_endpoints.mdx +++ b/api_docs/search_inference_endpoints.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchInferenceEndpoints title: "searchInferenceEndpoints" image: https://source.unsplash.com/400x175/?github description: API docs for the searchInferenceEndpoints plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchInferenceEndpoints'] --- import searchInferenceEndpointsObj from './search_inference_endpoints.devdocs.json'; diff --git a/api_docs/search_navigation.mdx b/api_docs/search_navigation.mdx index 0d12d35c34e93..49756c3f97938 100644 --- a/api_docs/search_navigation.mdx +++ b/api_docs/search_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNavigation title: "searchNavigation" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNavigation plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNavigation'] --- import searchNavigationObj from './search_navigation.devdocs.json'; diff --git a/api_docs/search_notebooks.mdx b/api_docs/search_notebooks.mdx index 1d106404cb589..a9df92061427c 100644 --- a/api_docs/search_notebooks.mdx +++ b/api_docs/search_notebooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNotebooks title: "searchNotebooks" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNotebooks plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNotebooks'] --- import searchNotebooksObj from './search_notebooks.devdocs.json'; diff --git a/api_docs/search_playground.mdx b/api_docs/search_playground.mdx index 1b563ec8d5126..d435e59539d25 100644 --- a/api_docs/search_playground.mdx +++ b/api_docs/search_playground.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchPlayground title: "searchPlayground" image: https://source.unsplash.com/400x175/?github description: API docs for the searchPlayground plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchPlayground'] --- import searchPlaygroundObj from './search_playground.devdocs.json'; diff --git a/api_docs/search_synonyms.mdx b/api_docs/search_synonyms.mdx index 3f09875bcd278..00d843092a139 100644 --- a/api_docs/search_synonyms.mdx +++ b/api_docs/search_synonyms.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchSynonyms title: "searchSynonyms" image: https://source.unsplash.com/400x175/?github description: API docs for the searchSynonyms plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchSynonyms'] --- import searchSynonymsObj from './search_synonyms.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 4f85a7d31637d..b02b9e2580e21 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 40d0007841067..08ba59cc5de6e 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index f9c1daa4b2307..061080b79e5e5 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index 0b9d74b49ba75..ff90f7892cd77 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index e58fd4601aa0e..e23852959f5b2 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless'] --- import serverlessObj from './serverless.devdocs.json'; diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx index 1338eb56566ea..d742278fa0910 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability'] --- import serverlessObservabilityObj from './serverless_observability.devdocs.json'; diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx index a37d2553fd825..d1c11820da072 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index c871f7b0e3518..58bcdeb1a1054 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 2efde83097a4a..8ad510f2e967c 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/slo.mdx b/api_docs/slo.mdx index a9d5b408f5fd3..7d271e468194c 100644 --- a/api_docs/slo.mdx +++ b/api_docs/slo.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/slo title: "slo" image: https://source.unsplash.com/400x175/?github description: API docs for the slo plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'slo'] --- import sloObj from './slo.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index b6ee9b090c09e..fe0eb98272362 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index 67114f1edb80c..1af8ae36d0918 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index ee4756776bd94..e8a0c4ebab8a7 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index 74d4e66f469ec..e6d62ed9da0cd 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/streams.devdocs.json b/api_docs/streams.devdocs.json index ca2c9a00f4b0a..a47d32d63caf6 100644 --- a/api_docs/streams.devdocs.json +++ b/api_docs/streams.devdocs.json @@ -165,23 +165,35 @@ "section": "def-common.RecursiveRecord", "text": "RecursiveRecord" }, - ">, \"many\">; detected_fields: Zod.ZodOptional, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { documents: ", + ">, \"many\">; detected_fields: Zod.ZodOptional, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { documents: ", { "pluginId": "@kbn/streams-schema", "scope": "common", @@ -197,15 +209,21 @@ "section": "def-common.ProcessorDefinition", "text": "ProcessorDefinition" }, - "[]; detected_fields?: ", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.NamedFieldDefinitionConfig", - "text": "NamedFieldDefinitionConfig" - }, - "[] | undefined; }, { documents: ", + "[]; detected_fields?: ((", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }))[] | undefined; }, { documents: ", { "pluginId": "@kbn/streams-schema", "scope": "common", @@ -221,15 +239,21 @@ "section": "def-common.ProcessorDefinition", "text": "ProcessorDefinition" }, - "[]; detected_fields?: ", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.NamedFieldDefinitionConfig", - "text": "NamedFieldDefinitionConfig" - }, - "[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { path: { name: string; }; body: { documents: ", + "[]; detected_fields?: ((", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }))[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { path: { name: string; }; body: { documents: ", { "pluginId": "@kbn/streams-schema", "scope": "common", @@ -245,15 +269,21 @@ "section": "def-common.ProcessorDefinition", "text": "ProcessorDefinition" }, - "[]; detected_fields?: ", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.NamedFieldDefinitionConfig", - "text": "NamedFieldDefinitionConfig" - }, - "[] | undefined; }; }, { path: { name: string; }; body: { documents: ", + "[]; detected_fields?: ((", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }))[] | undefined; }; }, { path: { name: string; }; body: { documents: ", { "pluginId": "@kbn/streams-schema", "scope": "common", @@ -269,15 +299,21 @@ "section": "def-common.ProcessorDefinition", "text": "ProcessorDefinition" }, - "[]; detected_fields?: ", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.NamedFieldDefinitionConfig", - "text": "NamedFieldDefinitionConfig" - }, - "[] | undefined; }; }>, ", + "[]; detected_fields?: ((", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }))[] | undefined; }; }>, ", "StreamsRouteHandlerResources", ", { documents: { isMatch: boolean; value: ", { @@ -295,55 +331,91 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"POST /api/streams/{name}/schema/fields_simulation\", Zod.ZodObject<{ path: Zod.ZodObject<{ name: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { name: string; }, { name: string; }>; body: Zod.ZodObject<{ field_definitions: Zod.ZodArray, Zod.ZodObject<{ name: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { name: string; }, { name: string; }>>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { field_definitions: (", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.FieldDefinitionConfig", - "text": "FieldDefinitionConfig" - }, - " & { name: string; })[]; }, { field_definitions: (", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.FieldDefinitionConfig", - "text": "FieldDefinitionConfig" - }, - " & { name: string; })[]; }>; }, \"strip\", Zod.ZodTypeAny, { path: { name: string; }; body: { field_definitions: (", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.FieldDefinitionConfig", - "text": "FieldDefinitionConfig" - }, - " & { name: string; })[]; }; }, { path: { name: string; }; body: { field_definitions: (", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.FieldDefinitionConfig", - "text": "FieldDefinitionConfig" - }, - " & { name: string; })[]; }; }>, ", + "<\"POST /api/streams/{name}/schema/fields_simulation\", Zod.ZodObject<{ path: Zod.ZodObject<{ name: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { name: string; }, { name: string; }>; body: Zod.ZodObject<{ field_definitions: Zod.ZodArray, Zod.ZodObject<{ name: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { name: string; }, { name: string; }>>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { field_definitions: ((", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }))[]; }, { field_definitions: ((", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }))[]; }>; }, \"strip\", Zod.ZodTypeAny, { path: { name: string; }; body: { field_definitions: ((", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }))[]; }; }, { path: { name: string; }; body: { field_definitions: ((", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }))[]; }; }>, ", "StreamsRouteHandlerResources", ", { status: \"unknown\" | \"success\" | \"failure\"; simulationError: string | null; documentsWithRuntimeFieldsApplied: ", { @@ -860,23 +932,35 @@ "section": "def-common.RecursiveRecord", "text": "RecursiveRecord" }, - ">, \"many\">; detected_fields: Zod.ZodOptional, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { documents: ", + ">, \"many\">; detected_fields: Zod.ZodOptional, \"many\">>; }, \"strip\", Zod.ZodTypeAny, { documents: ", { "pluginId": "@kbn/streams-schema", "scope": "common", @@ -892,15 +976,21 @@ "section": "def-common.ProcessorDefinition", "text": "ProcessorDefinition" }, - "[]; detected_fields?: ", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.NamedFieldDefinitionConfig", - "text": "NamedFieldDefinitionConfig" - }, - "[] | undefined; }, { documents: ", + "[]; detected_fields?: ((", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }))[] | undefined; }, { documents: ", { "pluginId": "@kbn/streams-schema", "scope": "common", @@ -916,15 +1006,21 @@ "section": "def-common.ProcessorDefinition", "text": "ProcessorDefinition" }, - "[]; detected_fields?: ", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.NamedFieldDefinitionConfig", - "text": "NamedFieldDefinitionConfig" - }, - "[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { path: { name: string; }; body: { documents: ", + "[]; detected_fields?: ((", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }))[] | undefined; }>; }, \"strip\", Zod.ZodTypeAny, { path: { name: string; }; body: { documents: ", { "pluginId": "@kbn/streams-schema", "scope": "common", @@ -940,15 +1036,21 @@ "section": "def-common.ProcessorDefinition", "text": "ProcessorDefinition" }, - "[]; detected_fields?: ", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.NamedFieldDefinitionConfig", - "text": "NamedFieldDefinitionConfig" - }, - "[] | undefined; }; }, { path: { name: string; }; body: { documents: ", + "[]; detected_fields?: ((", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }))[] | undefined; }; }, { path: { name: string; }; body: { documents: ", { "pluginId": "@kbn/streams-schema", "scope": "common", @@ -964,15 +1066,21 @@ "section": "def-common.ProcessorDefinition", "text": "ProcessorDefinition" }, - "[]; detected_fields?: ", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.NamedFieldDefinitionConfig", - "text": "NamedFieldDefinitionConfig" - }, - "[] | undefined; }; }>, ", + "[]; detected_fields?: ((", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }))[] | undefined; }; }>, ", "StreamsRouteHandlerResources", ", { documents: { isMatch: boolean; value: ", { @@ -990,55 +1098,91 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"POST /api/streams/{name}/schema/fields_simulation\", Zod.ZodObject<{ path: Zod.ZodObject<{ name: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { name: string; }, { name: string; }>; body: Zod.ZodObject<{ field_definitions: Zod.ZodArray, Zod.ZodObject<{ name: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { name: string; }, { name: string; }>>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { field_definitions: (", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.FieldDefinitionConfig", - "text": "FieldDefinitionConfig" - }, - " & { name: string; })[]; }, { field_definitions: (", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.FieldDefinitionConfig", - "text": "FieldDefinitionConfig" - }, - " & { name: string; })[]; }>; }, \"strip\", Zod.ZodTypeAny, { path: { name: string; }; body: { field_definitions: (", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.FieldDefinitionConfig", - "text": "FieldDefinitionConfig" - }, - " & { name: string; })[]; }; }, { path: { name: string; }; body: { field_definitions: (", - { - "pluginId": "@kbn/streams-schema", - "scope": "common", - "docId": "kibKbnStreamsSchemaPluginApi", - "section": "def-common.FieldDefinitionConfig", - "text": "FieldDefinitionConfig" - }, - " & { name: string; })[]; }; }>, ", + "<\"POST /api/streams/{name}/schema/fields_simulation\", Zod.ZodObject<{ path: Zod.ZodObject<{ name: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { name: string; }, { name: string; }>; body: Zod.ZodObject<{ field_definitions: Zod.ZodArray, Zod.ZodObject<{ name: Zod.ZodString; }, \"strip\", Zod.ZodTypeAny, { name: string; }, { name: string; }>>, \"many\">; }, \"strip\", Zod.ZodTypeAny, { field_definitions: ((", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }))[]; }, { field_definitions: ((", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }))[]; }>; }, \"strip\", Zod.ZodTypeAny, { path: { name: string; }; body: { field_definitions: ((", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }))[]; }; }, { path: { name: string; }; body: { field_definitions: ((", + "MappingBooleanProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingKeywordProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingMatchOnlyTextProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDateProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingIpProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingDoubleNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }) | (", + "MappingLongNumberProperty", + " & { type: \"boolean\" | \"ip\" | \"keyword\" | \"date\" | \"long\" | \"double\" | \"match_only_text\"; format?: string | undefined; } & { name: string; }))[]; }; }>, ", "StreamsRouteHandlerResources", ", { status: \"unknown\" | \"success\" | \"failure\"; simulationError: string | null; documentsWithRuntimeFieldsApplied: ", { diff --git a/api_docs/streams.mdx b/api_docs/streams.mdx index 9a07ec2fbd6f0..7e33621cee1b1 100644 --- a/api_docs/streams.mdx +++ b/api_docs/streams.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/streams title: "streams" image: https://source.unsplash.com/400x175/?github description: API docs for the streams plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'streams'] --- import streamsObj from './streams.devdocs.json'; diff --git a/api_docs/streams_app.mdx b/api_docs/streams_app.mdx index 5814c6e2d8424..962feae9d53a3 100644 --- a/api_docs/streams_app.mdx +++ b/api_docs/streams_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/streamsApp title: "streamsApp" image: https://source.unsplash.com/400x175/?github description: API docs for the streamsApp plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'streamsApp'] --- import streamsAppObj from './streams_app.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 4e6472bc1ed6d..718a0636d1dd8 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 88088ea9f046e..6e5cc7322b780 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index f2e1c5fb710e1..daf2a5d6e067b 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 15b13a9c8d63e..a4c123f68c4fe 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index da49cf9ff9b10..80fa406e421f7 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 0f2be3a74a00a..92bd01f240884 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 14720f50f66b6..7839e39ad05b6 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 0d32353916e74..55cf350db4fac 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 5d3518d5a85f9..bf5b8484f6024 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 681ce30ea510d..e1184ef69fd03 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index aa3b3e0b66c6c..a3771bc1f6fd2 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index e21676e770b7a..8592d758df3d5 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 2fb064c3c4ea2..cc06ebb41e5b0 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index 69ffaf5c31c8a..aba9e45ab19db 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index 959af5a03d27d..c06de6510ffaf 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index e063340dd379a..bc0a5d8d0ad44 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 1a1e9d963b347..a5aaa8869fe22 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 29aed8c3c0d35..c1050d7b28061 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index bfdabd3504a63..7f55bced64ebf 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index 8659501c89d79..afb1811c68810 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index f57834bbf1ed3..a1af0e597d3f4 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 6b1d062f3b461..9bcacd311d9c1 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index 180c175c20464..12cba0347b1e6 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index 5dd24a68d327a..d320851a636e4 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index f7627ee0cb087..493d0986e0b1d 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index d50c4153c2163..d4356db46906a 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index 4b6b65b789eab..e0d5627b0155b 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index a8d35ae531b7f..28a9ad0a7e770 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 3c6ebf9887e6d..83eead62cb6eb 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2025-02-14 +date: 2025-02-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 299a91c83db76f95ab8f9e0fda258a9356b3c4a6 Mon Sep 17 00:00:00 2001 From: Gerard Soldevila Date: Sun, 16 Feb 2025 07:54:16 +0100 Subject: [PATCH 06/78] SKA: Fix kebab-case issues in obs-ai-assistant packages (#211346) ## Summary This PR aims at relocating some of the Kibana modules (plugins and packages) into a new folder structure, according to the _Sustainable Kibana Architecture_ initiative. > [!IMPORTANT] > * We kindly ask you to: > * Manually fix the errors in the error section below (if there are any). > * Search for the `packages[\/\\]` and `plugins[\/\\]` patterns in the source code (Babel and Eslint config files), and update them appropriately. > * Manually review `.buildkite/scripts/pipelines/pull_request/pipeline.ts` to ensure that any CI pipeline customizations continue to be correctly applied after the changed path names > * Review all of the updated files, specially the `.ts` and `.js` files listed in the sections below, as some of them contain relative paths that have been updated. > * Think of potential impact of the move, including tooling and configuration files that can be pointing to the relocated modules. E.g.: > * customised eslint rules > * docs pointing to source code > [!NOTE] > * This PR has been auto-generated. > * Any manual contributions will be lost if the 'relocate' script is re-run. > * Try to obtain the missing reviews / approvals before applying manual fixes, and/or keep your changes in a .patch / git stash. > * Please use [#sustainable_kibana_architecture](https://elastic.slack.com/archives/C07TCKTA22E) Slack channel for feedback. Are you trying to rebase this PR to solve merge conflicts? Please follow the steps describe [here](https://elastic.slack.com/archives/C07TCKTA22E/p1734019532879269?thread_ts=1734019339.935419&cid=C07TCKTA22E). #### 2 packages(s) are going to be relocated: | Id | Target folder | | -- | ------------- | | `@kbn/observability-ai-common` | `x-pack/solutions/observability/packages/observability-ai/observability-ai-common` | | `@kbn/observability-ai-server` | `x-pack/solutions/observability/packages/observability-ai/observability-ai-server` |
Updated references ``` ./package.json ./packages/kbn-ts-projects/config-paths.json ./src/platform/packages/private/kbn-repo-packages/package-map.json ./tsconfig.base.json ./x-pack/solutions/observability/packages/observability-ai/observability-ai-common/jest.config.js ./x-pack/solutions/observability/packages/observability-ai/observability-ai-server/jest.config.js ./yarn.lock .github/CODEOWNERS ```
Updated relative paths ``` x-pack/solutions/observability/packages/observability-ai/observability-ai-common/jest.config.js:10 x-pack/solutions/observability/packages/observability-ai/observability-ai-common/tsconfig.json:2 x-pack/solutions/observability/packages/observability-ai/observability-ai-server/jest.config.js:10 x-pack/solutions/observability/packages/observability-ai/observability-ai-server/tsconfig.json:2 ```
--- .github/CODEOWNERS | 4 ++-- package.json | 4 ++-- tsconfig.base.json | 8 ++++---- .../observability-ai-common}/jest.config.js | 4 ++-- .../observability-ai-common}/kibana.jsonc | 0 .../observability-ai-common}/package.json | 0 .../observability-ai-common}/root_cause_analysis/index.ts | 0 .../root_cause_analysis/tool_names.ts | 0 .../observability-ai-common}/tsconfig.json | 0 .../observability-ai-server}/jest.config.js | 2 +- .../observability-ai-server}/kibana.jsonc | 0 .../observability-ai-server}/package.json | 0 .../root_cause_analysis/call_end_rca_process_tool.ts | 0 .../root_cause_analysis/call_investigate_entity_tool.ts | 0 .../root_cause_analysis/call_observe_tool.ts | 0 .../root_cause_analysis/empty_assistant_message.ts | 0 .../observability-ai-server}/root_cause_analysis/index.ts | 0 .../root_cause_analysis/prompts/index.ts | 0 .../root_cause_analysis/run_root_cause_analysis.ts | 0 .../tasks/analyze_log_patterns/index.ts | 0 .../root_cause_analysis/tasks/describe_entity/index.ts | 0 .../tasks/describe_log_patterns/index.ts | 0 .../analyze_fetched_related_entities.ts | 0 .../find_related_entities/extract_related_entities.ts | 0 .../tasks/find_related_entities/index.ts | 0 .../write_keyword_searches_for_related_entities.ts | 0 .../root_cause_analysis/tasks/generate_timeline/index.ts | 0 .../tasks/get_knowledge_base_entries/index.ts | 0 .../root_cause_analysis/tasks/investigate_entity/index.ts | 0 .../tasks/investigate_entity/prompts.ts | 0 .../root_cause_analysis/tasks/investigate_entity/types.ts | 0 .../tasks/observe_investigation_results/index.ts | 0 .../tasks/write_entity_investigation_report/index.ts | 0 .../root_cause_analysis/tasks/write_final_report/index.ts | 0 .../observability-ai-server}/root_cause_analysis/tools.ts | 0 .../observability-ai-server}/root_cause_analysis/types.ts | 0 .../root_cause_analysis/util/call_tools.ts | 0 .../root_cause_analysis/util/chunk_output_calls.ts | 0 .../root_cause_analysis/util/format_entity.ts | 0 .../util/get_previously_investigated_entities.ts | 0 .../util/serialize_knowledge_base_entries.ts | 0 .../root_cause_analysis/util/stringify_summaries.ts | 0 .../root_cause_analysis/util/to_blockquote.ts | 0 .../util/validate_investigate_entity_tool_call.ts | 0 .../observability-ai-server}/tsconfig.json | 0 yarn.lock | 4 ++-- 46 files changed, 13 insertions(+), 13 deletions(-) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_common => observability-ai/observability-ai-common}/jest.config.js (87%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_common => observability-ai/observability-ai-common}/kibana.jsonc (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_common => observability-ai/observability-ai-common}/package.json (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_common => observability-ai/observability-ai-common}/root_cause_analysis/index.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_common => observability-ai/observability-ai-common}/root_cause_analysis/tool_names.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_common => observability-ai/observability-ai-common}/tsconfig.json (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/jest.config.js (92%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/kibana.jsonc (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/package.json (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/call_end_rca_process_tool.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/call_investigate_entity_tool.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/call_observe_tool.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/empty_assistant_message.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/index.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/prompts/index.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/run_root_cause_analysis.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/tasks/analyze_log_patterns/index.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/tasks/describe_entity/index.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/tasks/describe_log_patterns/index.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/tasks/find_related_entities/analyze_fetched_related_entities.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/tasks/find_related_entities/extract_related_entities.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/tasks/find_related_entities/index.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/tasks/find_related_entities/write_keyword_searches_for_related_entities.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/tasks/generate_timeline/index.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/tasks/get_knowledge_base_entries/index.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/tasks/investigate_entity/index.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/tasks/investigate_entity/prompts.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/tasks/investigate_entity/types.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/tasks/observe_investigation_results/index.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/tasks/write_entity_investigation_report/index.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/tasks/write_final_report/index.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/tools.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/types.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/util/call_tools.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/util/chunk_output_calls.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/util/format_entity.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/util/get_previously_investigated_entities.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/util/serialize_knowledge_base_entries.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/util/stringify_summaries.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/util/to_blockquote.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/root_cause_analysis/util/validate_investigate_entity_tool_call.ts (100%) rename x-pack/solutions/observability/packages/{observability_ai/observability_ai_server => observability-ai/observability-ai-server}/tsconfig.json (100%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 3c93751aeecbd..888ac8c317434 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -925,8 +925,8 @@ x-pack/solutions/observability/packages/kbn-custom-integrations @elastic/obs-ux- x-pack/solutions/observability/packages/kbn-investigation-shared @elastic/obs-ux-management-team x-pack/solutions/observability/packages/kbn-scout-oblt @elastic/appex-qa x-pack/solutions/observability/packages/kbn-streams-schema @elastic/streams-program-team -x-pack/solutions/observability/packages/observability_ai/observability_ai_common @elastic/obs-ai-assistant -x-pack/solutions/observability/packages/observability_ai/observability_ai_server @elastic/obs-ai-assistant +x-pack/solutions/observability/packages/observability-ai/observability-ai-common @elastic/obs-ai-assistant +x-pack/solutions/observability/packages/observability-ai/observability-ai-server @elastic/obs-ai-assistant x-pack/solutions/observability/packages/synthetics_test_data @elastic/obs-ux-management-team x-pack/solutions/observability/packages/utils-browser @elastic/observability-ui x-pack/solutions/observability/packages/utils-common @elastic/observability-ui diff --git a/package.json b/package.json index e1a3291218ea9..26cc26b9fd0de 100644 --- a/package.json +++ b/package.json @@ -699,8 +699,8 @@ "@kbn/observability-ai-assistant-app-plugin": "link:x-pack/solutions/observability/plugins/observability_ai_assistant_app", "@kbn/observability-ai-assistant-management-plugin": "link:x-pack/solutions/observability/plugins/observability_ai_assistant_management", "@kbn/observability-ai-assistant-plugin": "link:x-pack/platform/plugins/shared/observability_ai_assistant", - "@kbn/observability-ai-common": "link:x-pack/solutions/observability/packages/observability_ai/observability_ai_common", - "@kbn/observability-ai-server": "link:x-pack/solutions/observability/packages/observability_ai/observability_ai_server", + "@kbn/observability-ai-common": "link:x-pack/solutions/observability/packages/observability-ai/observability-ai-common", + "@kbn/observability-ai-server": "link:x-pack/solutions/observability/packages/observability-ai/observability-ai-server", "@kbn/observability-alert-details": "link:x-pack/solutions/observability/packages/alert_details", "@kbn/observability-alerting-test-data": "link:x-pack/solutions/observability/packages/alerting_test_data", "@kbn/observability-fixtures-plugin": "link:x-pack/test/cases_api_integration/common/plugins/observability", diff --git a/tsconfig.base.json b/tsconfig.base.json index d5005c960cd70..e1bd83b5fad14 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1340,10 +1340,10 @@ "@kbn/observability-ai-assistant-management-plugin/*": ["x-pack/solutions/observability/plugins/observability_ai_assistant_management/*"], "@kbn/observability-ai-assistant-plugin": ["x-pack/platform/plugins/shared/observability_ai_assistant"], "@kbn/observability-ai-assistant-plugin/*": ["x-pack/platform/plugins/shared/observability_ai_assistant/*"], - "@kbn/observability-ai-common": ["x-pack/solutions/observability/packages/observability_ai/observability_ai_common"], - "@kbn/observability-ai-common/*": ["x-pack/solutions/observability/packages/observability_ai/observability_ai_common/*"], - "@kbn/observability-ai-server": ["x-pack/solutions/observability/packages/observability_ai/observability_ai_server"], - "@kbn/observability-ai-server/*": ["x-pack/solutions/observability/packages/observability_ai/observability_ai_server/*"], + "@kbn/observability-ai-common": ["x-pack/solutions/observability/packages/observability-ai/observability-ai-common"], + "@kbn/observability-ai-common/*": ["x-pack/solutions/observability/packages/observability-ai/observability-ai-common/*"], + "@kbn/observability-ai-server": ["x-pack/solutions/observability/packages/observability-ai/observability-ai-server"], + "@kbn/observability-ai-server/*": ["x-pack/solutions/observability/packages/observability-ai/observability-ai-server/*"], "@kbn/observability-alert-details": ["x-pack/solutions/observability/packages/alert_details"], "@kbn/observability-alert-details/*": ["x-pack/solutions/observability/packages/alert_details/*"], "@kbn/observability-alerting-test-data": ["x-pack/solutions/observability/packages/alerting_test_data"], diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/jest.config.js b/x-pack/solutions/observability/packages/observability-ai/observability-ai-common/jest.config.js similarity index 87% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_common/jest.config.js rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-common/jest.config.js index 3620ef5a1c254..fda41606e56b1 100644 --- a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/jest.config.js +++ b/x-pack/solutions/observability/packages/observability-ai/observability-ai-common/jest.config.js @@ -9,7 +9,7 @@ module.exports = { preset: '@kbn/test', rootDir: '../../../../../..', roots: [ - '/x-pack/solutions/observability/packages/observability_ai/observability_ai_common', - '/x-pack/solutions/observability/packages/observability_ai/observability_ai_server', + '/x-pack/solutions/observability/packages/observability-ai/observability-ai-common', + '/x-pack/solutions/observability/packages/observability-ai/observability-ai-server', ], }; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/kibana.jsonc b/x-pack/solutions/observability/packages/observability-ai/observability-ai-common/kibana.jsonc similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_common/kibana.jsonc rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-common/kibana.jsonc diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/package.json b/x-pack/solutions/observability/packages/observability-ai/observability-ai-common/package.json similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_common/package.json rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-common/package.json diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/root_cause_analysis/index.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-common/root_cause_analysis/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_common/root_cause_analysis/index.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-common/root_cause_analysis/index.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/root_cause_analysis/tool_names.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-common/root_cause_analysis/tool_names.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_common/root_cause_analysis/tool_names.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-common/root_cause_analysis/tool_names.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_common/tsconfig.json b/x-pack/solutions/observability/packages/observability-ai/observability-ai-common/tsconfig.json similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_common/tsconfig.json rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-common/tsconfig.json diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/jest.config.js b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/jest.config.js similarity index 92% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/jest.config.js rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/jest.config.js index 8aa1c2d673222..fff212e040dcc 100644 --- a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/jest.config.js +++ b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/jest.config.js @@ -9,6 +9,6 @@ module.exports = { preset: '@kbn/test', rootDir: '../../../../../..', roots: [ - '/x-pack/solutions/observability/packages/observability_ai/observability_ai_server', + '/x-pack/solutions/observability/packages/observability-ai/observability-ai-server', ], }; diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/kibana.jsonc b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/kibana.jsonc similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/kibana.jsonc rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/kibana.jsonc diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/package.json b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/package.json similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/package.json rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/package.json diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_end_rca_process_tool.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/call_end_rca_process_tool.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_end_rca_process_tool.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/call_end_rca_process_tool.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_investigate_entity_tool.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/call_investigate_entity_tool.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_investigate_entity_tool.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/call_investigate_entity_tool.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_observe_tool.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/call_observe_tool.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/call_observe_tool.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/call_observe_tool.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/empty_assistant_message.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/empty_assistant_message.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/empty_assistant_message.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/empty_assistant_message.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/index.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/index.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/index.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/prompts/index.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/prompts/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/prompts/index.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/prompts/index.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/run_root_cause_analysis.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/run_root_cause_analysis.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/run_root_cause_analysis.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/run_root_cause_analysis.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/analyze_log_patterns/index.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/analyze_log_patterns/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/analyze_log_patterns/index.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/analyze_log_patterns/index.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/describe_entity/index.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/describe_entity/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/describe_entity/index.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/describe_entity/index.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/describe_log_patterns/index.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/describe_log_patterns/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/describe_log_patterns/index.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/describe_log_patterns/index.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/analyze_fetched_related_entities.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/find_related_entities/analyze_fetched_related_entities.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/analyze_fetched_related_entities.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/find_related_entities/analyze_fetched_related_entities.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/extract_related_entities.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/find_related_entities/extract_related_entities.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/extract_related_entities.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/find_related_entities/extract_related_entities.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/index.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/find_related_entities/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/index.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/find_related_entities/index.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/write_keyword_searches_for_related_entities.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/find_related_entities/write_keyword_searches_for_related_entities.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/find_related_entities/write_keyword_searches_for_related_entities.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/find_related_entities/write_keyword_searches_for_related_entities.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/generate_timeline/index.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/generate_timeline/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/generate_timeline/index.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/generate_timeline/index.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/get_knowledge_base_entries/index.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/get_knowledge_base_entries/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/get_knowledge_base_entries/index.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/get_knowledge_base_entries/index.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/index.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/investigate_entity/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/index.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/investigate_entity/index.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/prompts.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/investigate_entity/prompts.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/prompts.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/investigate_entity/prompts.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/types.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/investigate_entity/types.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/investigate_entity/types.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/investigate_entity/types.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/observe_investigation_results/index.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/observe_investigation_results/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/observe_investigation_results/index.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/observe_investigation_results/index.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/write_entity_investigation_report/index.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/write_entity_investigation_report/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/write_entity_investigation_report/index.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/write_entity_investigation_report/index.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/write_final_report/index.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/write_final_report/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tasks/write_final_report/index.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tasks/write_final_report/index.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tools.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tools.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/tools.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/tools.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/types.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/types.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/types.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/types.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/call_tools.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/util/call_tools.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/call_tools.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/util/call_tools.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/chunk_output_calls.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/util/chunk_output_calls.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/chunk_output_calls.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/util/chunk_output_calls.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/format_entity.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/util/format_entity.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/format_entity.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/util/format_entity.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/get_previously_investigated_entities.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/util/get_previously_investigated_entities.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/get_previously_investigated_entities.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/util/get_previously_investigated_entities.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/serialize_knowledge_base_entries.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/util/serialize_knowledge_base_entries.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/serialize_knowledge_base_entries.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/util/serialize_knowledge_base_entries.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/stringify_summaries.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/util/stringify_summaries.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/stringify_summaries.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/util/stringify_summaries.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/to_blockquote.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/util/to_blockquote.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/to_blockquote.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/util/to_blockquote.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/validate_investigate_entity_tool_call.ts b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/util/validate_investigate_entity_tool_call.ts similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/root_cause_analysis/util/validate_investigate_entity_tool_call.ts rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/root_cause_analysis/util/validate_investigate_entity_tool_call.ts diff --git a/x-pack/solutions/observability/packages/observability_ai/observability_ai_server/tsconfig.json b/x-pack/solutions/observability/packages/observability-ai/observability-ai-server/tsconfig.json similarity index 100% rename from x-pack/solutions/observability/packages/observability_ai/observability_ai_server/tsconfig.json rename to x-pack/solutions/observability/packages/observability-ai/observability-ai-server/tsconfig.json diff --git a/yarn.lock b/yarn.lock index 441eeb4ebceac..75cb2fce29ed5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6549,11 +6549,11 @@ version "0.0.0" uid "" -"@kbn/observability-ai-common@link:x-pack/solutions/observability/packages/observability_ai/observability_ai_common": +"@kbn/observability-ai-common@link:x-pack/solutions/observability/packages/observability-ai/observability-ai-common": version "0.0.0" uid "" -"@kbn/observability-ai-server@link:x-pack/solutions/observability/packages/observability_ai/observability_ai_server": +"@kbn/observability-ai-server@link:x-pack/solutions/observability/packages/observability-ai/observability-ai-server": version "0.0.0" uid "" From 2438336758c1aa3a591fb06f8df37628db993567 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Sun, 16 Feb 2025 18:31:23 +1100 Subject: [PATCH 07/78] [api-docs] 2025-02-16 Daily api_docs build (#211353) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/985 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- api_docs/ai_assistant_management_selection.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/automatic_import.mdx | 2 +- api_docs/banners.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_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- 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_quality.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_usage.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/dataset_quality.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/discover_shared.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.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/entities_data_access.mdx | 2 +- api_docs/entity_manager.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/esql.mdx | 2 +- api_docs/esql_data_grid.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.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_legacy_metric_vis.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/fields_metadata.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/inference.mdx | 2 +- api_docs/inference_endpoint.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/ingest_pipelines.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/inventory.mdx | 2 +- api_docs/investigate.mdx | 2 +- api_docs/investigate_app.mdx | 2 +- api_docs/kbn_actions_types.mdx | 2 +- api_docs/kbn_ai_assistant.mdx | 2 +- api_docs/kbn_ai_assistant_common.mdx | 2 +- api_docs/kbn_ai_assistant_icon.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_log_pattern_analysis.mdx | 2 +- api_docs/kbn_aiops_log_rate_analysis.mdx | 2 +- api_docs/kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_comparators.mdx | 2 +- api_docs/kbn_alerting_rule_utils.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerting_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_grouping.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_collection_utils.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_data_view.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_types.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_avc_banner.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_calculate_auto.mdx | 2 +- api_docs/kbn_calculate_width_from_char_count.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cbor.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_charts_theme.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_cloud_security_posture.mdx | 2 +- api_docs/kbn_cloud_security_posture_common.mdx | 2 +- api_docs/kbn_cloud_security_posture_graph.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_editor_mock.mdx | 2 +- api_docs/kbn_code_owners.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_content_management_content_editor.mdx | 2 +- api_docs/kbn_content_management_content_insights_public.mdx | 2 +- api_docs/kbn_content_management_content_insights_server.mdx | 2 +- api_docs/kbn_content_management_favorites_common.mdx | 2 +- api_docs/kbn_content_management_favorites_public.mdx | 2 +- api_docs/kbn_content_management_favorites_server.mdx | 2 +- api_docs/kbn_content_management_tabbed_table_list_view.mdx | 2 +- api_docs/kbn_content_management_table_list_view.mdx | 2 +- api_docs/kbn_content_management_table_list_view_common.mdx | 2 +- api_docs/kbn_content_management_table_list_view_table.mdx | 2 +- api_docs/kbn_content_management_user_profiles.mdx | 2 +- api_docs/kbn_content_management_utils.mdx | 2 +- api_docs/kbn_core_analytics_browser.mdx | 2 +- api_docs/kbn_core_analytics_browser_internal.mdx | 2 +- api_docs/kbn_core_analytics_browser_mocks.mdx | 2 +- api_docs/kbn_core_analytics_server.mdx | 2 +- api_docs/kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- api_docs/kbn_core_application_browser_internal.mdx | 2 +- api_docs/kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.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_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- api_docs/kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- api_docs/kbn_core_custom_branding_browser_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- api_docs/kbn_core_custom_branding_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- api_docs/kbn_core_deprecations_browser_internal.mdx | 2 +- api_docs/kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- api_docs/kbn_core_deprecations_server_internal.mdx | 2 +- api_docs/kbn_core_deprecations_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 +- api_docs/kbn_core_elasticsearch_client_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_internal.mdx | 2 +- api_docs/kbn_core_elasticsearch_server_mocks.mdx | 2 +- api_docs/kbn_core_environment_server_internal.mdx | 2 +- api_docs/kbn_core_environment_server_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_browser.mdx | 2 +- api_docs/kbn_core_execution_context_browser_internal.mdx | 2 +- api_docs/kbn_core_execution_context_browser_mocks.mdx | 2 +- api_docs/kbn_core_execution_context_common.mdx | 2 +- api_docs/kbn_core_execution_context_server.mdx | 2 +- api_docs/kbn_core_execution_context_server_internal.mdx | 2 +- api_docs/kbn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_feature_flags_browser.mdx | 2 +- api_docs/kbn_core_feature_flags_browser_internal.mdx | 2 +- api_docs/kbn_core_feature_flags_browser_mocks.mdx | 2 +- api_docs/kbn_core_feature_flags_server.mdx | 2 +- api_docs/kbn_core_feature_flags_server_internal.mdx | 2 +- api_docs/kbn_core_feature_flags_server_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- api_docs/kbn_core_http_context_server_mocks.mdx | 2 +- api_docs/kbn_core_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- api_docs/kbn_core_http_resources_server_internal.mdx | 2 +- api_docs/kbn_core_http_resources_server_mocks.mdx | 2 +- api_docs/kbn_core_http_router_server_internal.mdx | 2 +- api_docs/kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server_utils.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- api_docs/kbn_core_injected_metadata_browser_mocks.mdx | 2 +- api_docs/kbn_core_integrations_browser_internal.mdx | 2 +- api_docs/kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.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_metrics_collectors_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- api_docs/kbn_core_notifications_browser_internal.mdx | 2 +- api_docs/kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- api_docs/kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_contracts_browser.mdx | 2 +- api_docs/kbn_core_plugins_contracts_server.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- api_docs/kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_api_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server.mdx | 2 +- api_docs/kbn_core_saved_objects_api_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- .../kbn_core_saved_objects_import_export_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- api_docs/kbn_core_saved_objects_server_internal.mdx | 2 +- api_docs/kbn_core_saved_objects_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_security_browser.mdx | 2 +- api_docs/kbn_core_security_browser_internal.mdx | 2 +- api_docs/kbn_core_security_browser_mocks.mdx | 2 +- api_docs/kbn_core_security_common.mdx | 2 +- api_docs/kbn_core_security_server.mdx | 2 +- api_docs/kbn_core_security_server_internal.mdx | 2 +- api_docs/kbn_core_security_server_mocks.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- api_docs/kbn_core_test_helpers_deprecations_getters.mdx | 2 +- api_docs/kbn_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- api_docs/kbn_core_test_helpers_model_versions.mdx | 2 +- api_docs/kbn_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_internal.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- api_docs/kbn_core_ui_settings_server_internal.mdx | 2 +- api_docs/kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- api_docs/kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_profile_browser.mdx | 2 +- api_docs/kbn_core_user_profile_browser_internal.mdx | 2 +- api_docs/kbn_core_user_profile_browser_mocks.mdx | 2 +- api_docs/kbn_core_user_profile_common.mdx | 2 +- api_docs/kbn_core_user_profile_server.mdx | 2 +- api_docs/kbn_core_user_profile_server_internal.mdx | 2 +- api_docs/kbn_core_user_profile_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- api_docs/kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_icons.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_forge.mdx | 2 +- api_docs/kbn_data_grid_in_table_search.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_data_stream_adapter.mdx | 2 +- api_docs/kbn_data_view_utils.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_fleet.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_deeplinks_security.mdx | 2 +- api_docs/kbn_deeplinks_shared.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_delete_managed_asset_callout.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_discover_contextual_components.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_agent_utils.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_elastic_assistant_common.mdx | 2 +- api_docs/kbn_entities_schema.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_esql_ast.mdx | 2 +- api_docs/kbn_esql_editor.mdx | 2 +- api_docs/kbn_esql_utils.mdx | 2 +- api_docs/kbn_esql_validation_autocomplete.mdx | 2 +- api_docs/kbn_esql_variables_types.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_event_stacktrace.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_file_upload_common.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- api_docs/kbn_ftr_common_functional_services.mdx | 2 +- api_docs/kbn_ftr_common_functional_ui_services.mdx | 2 +- api_docs/kbn_gen_ai_functional_testing.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_grid_layout.mdx | 2 +- api_docs/kbn_grouping.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_index_adapter.mdx | 2 +- api_docs/kbn_index_lifecycle_management_common_shared.mdx | 2 +- api_docs/kbn_index_management_shared_types.mdx | 2 +- api_docs/kbn_inference_common.mdx | 2 +- api_docs/kbn_inference_endpoint_ui_common.mdx | 2 +- api_docs/kbn_inference_integration_flyout.mdx | 2 +- api_docs/kbn_inference_langchain.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_investigation_shared.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_ipynb.mdx | 2 +- api_docs/kbn_item_buffer.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_json_schemas.mdx | 2 +- api_docs/kbn_key_value_metadata_table.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- api_docs/kbn_language_documentation.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_lens_formula_docs.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_logs_overview.mdx | 2 +- api_docs/kbn_managed_content_badge.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- api_docs/kbn_management_settings_application.mdx | 2 +- api_docs/kbn_management_settings_components_field_category.mdx | 2 +- api_docs/kbn_management_settings_components_field_input.mdx | 2 +- api_docs/kbn_management_settings_components_field_row.mdx | 2 +- api_docs/kbn_management_settings_components_form.mdx | 2 +- api_docs/kbn_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- api_docs/kbn_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- api_docs/kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_manifest.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_cancellable_search.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- api_docs/kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_field_stats_flyout.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_parse_interval.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_time_buckets.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_ui_actions.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_ml_validators.mdx | 2 +- api_docs/kbn_mock_idp_utils.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_utils.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_object_versioning_utils.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- api_docs/kbn_observability_alerting_test_data.mdx | 2 +- api_docs/kbn_observability_get_padded_alert_time_range_util.mdx | 2 +- api_docs/kbn_observability_synthetics_test_data.mdx | 2 +- api_docs/kbn_openapi_bundler.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_palettes.mdx | 2 +- api_docs/kbn_panel_loader.mdx | 2 +- api_docs/kbn_performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_check.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_presentation_containers.mdx | 2 +- api_docs/kbn_presentation_publishing.mdx | 2 +- api_docs/kbn_product_doc_artifact_builder.mdx | 2 +- api_docs/kbn_product_doc_common.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_hooks.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- api_docs/kbn_react_mute_legacy_root_warning.mdx | 2 +- api_docs/kbn_recently_accessed.mdx | 2 +- api_docs/kbn_relocate.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_reporting_csv_share_panel.mdx | 2 +- api_docs/kbn_reporting_export_types_csv.mdx | 2 +- api_docs/kbn_reporting_export_types_csv_common.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf_common.mdx | 2 +- api_docs/kbn_reporting_export_types_png.mdx | 2 +- api_docs/kbn_reporting_export_types_png_common.mdx | 2 +- api_docs/kbn_reporting_mocks_server.mdx | 2 +- api_docs/kbn_reporting_public.mdx | 2 +- api_docs/kbn_reporting_server.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- api_docs/kbn_response_ops_alerts_fields_browser.mdx | 2 +- api_docs/kbn_response_ops_alerts_table.mdx | 2 +- api_docs/kbn_response_ops_rule_form.mdx | 2 +- api_docs/kbn_response_ops_rule_params.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_rollup.mdx | 2 +- api_docs/kbn_router_to_openapispec.mdx | 2 +- api_docs/kbn_router_utils.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_saved_search_component.mdx | 2 +- api_docs/kbn_scout.mdx | 2 +- api_docs/kbn_scout_info.mdx | 2 +- api_docs/kbn_scout_oblt.mdx | 2 +- api_docs/kbn_scout_reporting.mdx | 2 +- api_docs/kbn_screenshotting_server.mdx | 2 +- api_docs/kbn_search_api_keys_components.mdx | 2 +- api_docs/kbn_search_api_keys_server.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_errors.mdx | 2 +- api_docs/kbn_search_index_documents.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_search_shared_ui.mdx | 2 +- api_docs/kbn_search_types.mdx | 2 +- api_docs/kbn_security_ai_prompts.mdx | 2 +- api_docs/kbn_security_api_key_management.mdx | 2 +- api_docs/kbn_security_authorization_core.mdx | 2 +- api_docs/kbn_security_authorization_core_common.mdx | 2 +- api_docs/kbn_security_form_components.mdx | 2 +- api_docs/kbn_security_hardening.mdx | 2 +- api_docs/kbn_security_plugin_types_common.mdx | 2 +- api_docs/kbn_security_plugin_types_public.mdx | 2 +- api_docs/kbn_security_plugin_types_server.mdx | 2 +- api_docs/kbn_security_role_management_model.mdx | 2 +- api_docs/kbn_security_solution_connectors.mdx | 2 +- api_docs/kbn_security_solution_distribution_bar.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- api_docs/kbn_security_solution_storybook_config.mdx | 2 +- api_docs/kbn_security_ui_components.mdx | 2 +- api_docs/kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- api_docs/kbn_securitysolution_exception_list_components.mdx | 2 +- api_docs/kbn_securitysolution_hook_utils.mdx | 2 +- api_docs/kbn_securitysolution_io_ts_alerting_types.mdx | 2 +- api_docs/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 +- api_docs/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_server_route_repository_client.mdx | 2 +- api_docs/kbn_server_route_repository_utils.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- api_docs/kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- api_docs/kbn_shared_ux_button_exit_full_screen.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_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_error_boundary.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template.mdx | 2 +- api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views.mdx | 2 +- api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_tabbed_modal.mdx | 2 +- api_docs/kbn_shared_ux_table_persist.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_sort_predicates.mdx | 2 +- api_docs/kbn_sse_utils.mdx | 2 +- api_docs/kbn_sse_utils_client.mdx | 2 +- api_docs/kbn_sse_utils_server.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_streams_schema.mdx | 2 +- api_docs/kbn_synthetics_e2e.mdx | 2 +- api_docs/kbn_synthetics_private_location.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_eui_helpers.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_timerange.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_transpose_utils.mdx | 2 +- api_docs/kbn_triggers_actions_ui_types.mdx | 2 +- api_docs/kbn_try_in_console.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_unsaved_changes_badge.mdx | 2 +- api_docs/kbn_unsaved_changes_prompt.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.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/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_visualization_utils.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kbn_zod.mdx | 2 +- api_docs/kbn_zod_helpers.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.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/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/llm_tasks.mdx | 2 +- api_docs/logs_data_access.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/mock_idp_plugin.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/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_a_i_assistant_app.mdx | 2 +- api_docs/observability_ai_assistant_management.mdx | 2 +- api_docs/observability_logs_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 2 +- api_docs/presentation_panel.mdx | 2 +- api_docs/presentation_util.mdx | 2 +- api_docs/product_doc_base.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.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_finder.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/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/search_assistant.mdx | 2 +- api_docs/search_connectors.mdx | 2 +- api_docs/search_homepage.mdx | 2 +- api_docs/search_indices.mdx | 2 +- api_docs/search_inference_endpoints.mdx | 2 +- api_docs/search_navigation.mdx | 2 +- api_docs/search_notebooks.mdx | 2 +- api_docs/search_playground.mdx | 2 +- api_docs/search_synonyms.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/slo.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/streams.mdx | 2 +- api_docs/streams_app.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/threat_intelligence.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_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.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 +- 787 files changed, 787 insertions(+), 787 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 69f7607ff3368..5b22de19034b9 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 68c9fa016dac5..5e55a55a71482 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index 7be54f1b794fb..d5ec5cb59b50b 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 1ed2ce2aa05a1..5924acd29ca78 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 05b124baead60..1af4414d6ad6d 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 82c8d27896c3d..3a92f5e28e291 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 442231e2e6df5..fe268a1a1092d 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/automatic_import.mdx b/api_docs/automatic_import.mdx index 6a9b57e9e8184..9d4970deb30e7 100644 --- a/api_docs/automatic_import.mdx +++ b/api_docs/automatic_import.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/automaticImport title: "automaticImport" image: https://source.unsplash.com/400x175/?github description: API docs for the automaticImport plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'automaticImport'] --- import automaticImportObj from './automatic_import.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 5f60cfc189806..ee65af6b2e83b 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 5f4423c7cd809..345b9dcc2c555 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index a459fa758f647..9210df2f1b9ee 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index af1ec818ed06f..927180308e64c 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 1c25ffa19ac56..970619bebba29 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 5671832d5c9ac..d0cc61cc3640c 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index 4c0bc377090c4..7ffabab5bad0e 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index c44c16feb0372..c629ec9a9aac5 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 48b060a2eaeaf..fae5c29fb0e19 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx index 9750a9fc07398..ee60c45de5cc1 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 6c02832bc802a..b75ca2a4ed155 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 1351515e1c842..120aa4230a3e7 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index 9b43fc4f1c569..318234e0972b7 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index 36abad047fb0a..83c96e270f72b 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 171578d018ad5..5ea8fc7441efe 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_quality.mdx b/api_docs/data_quality.mdx index 3df6a99c8c58f..e13bab13c208a 100644 --- a/api_docs/data_quality.mdx +++ b/api_docs/data_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataQuality title: "dataQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the dataQuality plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataQuality'] --- import dataQualityObj from './data_quality.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 518540767df5c..229a06f077c59 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 4c86f0686ec2d..20e97a64da295 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_usage.mdx b/api_docs/data_usage.mdx index 5021e8da2ae78..42bab58be8c8d 100644 --- a/api_docs/data_usage.mdx +++ b/api_docs/data_usage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataUsage title: "dataUsage" image: https://source.unsplash.com/400x175/?github description: API docs for the dataUsage plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataUsage'] --- import dataUsageObj from './data_usage.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index a45c77c0a9e22..d3a3df7b96bd4 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index a82a91dc04e64..b2a1a0dad5318 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index 6a0801c717043..36ff19db6826e 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 12a08306b56cb..0bfd5ed83471c 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index b805c730a1855..60de5d848cb41 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index c09659004f844..3a901a003d6c3 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 401512f1f9ad5..8d362d89e6e09 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 4399f2e052edf..d3213d714d367 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index a0b6459615812..0a34bd80656b4 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index aec799551f74a..c0346fc35ef9e 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 19c94bf2d1a36..b7f7b436c86cf 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index b6799bfa182d9..11e0fd4128745 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/discover_shared.mdx b/api_docs/discover_shared.mdx index 602fb7387f33e..d8527a8796e2c 100644 --- a/api_docs/discover_shared.mdx +++ b/api_docs/discover_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverShared title: "discoverShared" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverShared plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverShared'] --- import discoverSharedObj from './discover_shared.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index 357edbea620de..9e62d02f1406e 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index f5d04bcfb48c8..584b0494c5563 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index bf93c9753a478..73d45719c5c67 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 782df7777b60f..822a00668b14c 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index cea7413db8d9d..ead476079db94 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index dc77cd0ef5292..000421de54ec3 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/entities_data_access.mdx b/api_docs/entities_data_access.mdx index c524a0206b70c..9f1878237a900 100644 --- a/api_docs/entities_data_access.mdx +++ b/api_docs/entities_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entitiesDataAccess title: "entitiesDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the entitiesDataAccess plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entitiesDataAccess'] --- import entitiesDataAccessObj from './entities_data_access.devdocs.json'; diff --git a/api_docs/entity_manager.mdx b/api_docs/entity_manager.mdx index 9a045a7911d85..c27796f66d33f 100644 --- a/api_docs/entity_manager.mdx +++ b/api_docs/entity_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entityManager title: "entityManager" image: https://source.unsplash.com/400x175/?github description: API docs for the entityManager plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entityManager'] --- import entityManagerObj from './entity_manager.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 772e0c126016d..d5c920554410e 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/esql.mdx b/api_docs/esql.mdx index 85792e181d6a2..9558a043e7061 100644 --- a/api_docs/esql.mdx +++ b/api_docs/esql.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esql title: "esql" image: https://source.unsplash.com/400x175/?github description: API docs for the esql plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esql'] --- import esqlObj from './esql.devdocs.json'; diff --git a/api_docs/esql_data_grid.mdx b/api_docs/esql_data_grid.mdx index 6f0eec7404766..c38f4fef9f54e 100644 --- a/api_docs/esql_data_grid.mdx +++ b/api_docs/esql_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esqlDataGrid title: "esqlDataGrid" image: https://source.unsplash.com/400x175/?github description: API docs for the esqlDataGrid plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esqlDataGrid'] --- import esqlDataGridObj from './esql_data_grid.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 5fb17a1fac06a..50d921382e9b7 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 562516003f5be..7d898918455f0 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 9404d45f7b1fd..d1b94c4aa2085 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index b3e19b0ba9ad0..5bd561f3ef165 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView'] --- import exploratoryViewObj from './exploratory_view.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index 918918b9ac7fb..592c6de01d4f3 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index d6e1319232c8a..c3fd4845b1f0c 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index c4ccc536ccd86..735e5d2db4911 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 6866698f6eea0..22ddfe0938543 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index 52f75213c88b7..edf720d503a0c 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 915e247f3757b..c0c0caa525720 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index d95e5bc393b3e..ec7762ca64d4b 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index a1a02d3fd5349..86965582bb989 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index 8dab2ee71b91d..d88a6d0f595ff 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 223422fb82e68..af67cdef4e92c 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index ef9f896ae41dd..a2a31d9bc86fc 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index ef24210975704..738660d94d3ec 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index e9ce8665ba9ad..527b3fec92063 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 63878fed1c018..f0122381d51fc 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 3a5ee00de0f09..263b84edced93 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 460180b8d4b8b..3e7e1ad081194 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/fields_metadata.mdx b/api_docs/fields_metadata.mdx index 00a7954402167..8708337322d6a 100644 --- a/api_docs/fields_metadata.mdx +++ b/api_docs/fields_metadata.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldsMetadata title: "fieldsMetadata" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldsMetadata plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldsMetadata'] --- import fieldsMetadataObj from './fields_metadata.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 168033461eedf..4d88f7289bd93 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index f3000bb1482a3..06f16759b52c3 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index 02c43e84064b6..50051e6048990 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 852fd75ef3e62..77d0356e2c897 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 403bcc2fad0e3..d25d42b1728a5 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index 915c95191a4af..55a719f32687e 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index e3931ef5ceb2a..b3acfbc7759e1 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index dcad6f96321de..e2c8b74bc6491 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index dd29c45118aad..1112d8d6d1fb3 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/inference.mdx b/api_docs/inference.mdx index 7bff85767b769..5357bea5ffb65 100644 --- a/api_docs/inference.mdx +++ b/api_docs/inference.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inference title: "inference" image: https://source.unsplash.com/400x175/?github description: API docs for the inference plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inference'] --- import inferenceObj from './inference.devdocs.json'; diff --git a/api_docs/inference_endpoint.mdx b/api_docs/inference_endpoint.mdx index 139ca495fdcfc..c6b00eed4d471 100644 --- a/api_docs/inference_endpoint.mdx +++ b/api_docs/inference_endpoint.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inferenceEndpoint title: "inferenceEndpoint" image: https://source.unsplash.com/400x175/?github description: API docs for the inferenceEndpoint plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inferenceEndpoint'] --- import inferenceEndpointObj from './inference_endpoint.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 628e887bbda38..45cec01cbea2d 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/ingest_pipelines.mdx b/api_docs/ingest_pipelines.mdx index c1700fc975297..8ed7f2768aae7 100644 --- a/api_docs/ingest_pipelines.mdx +++ b/api_docs/ingest_pipelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ingestPipelines title: "ingestPipelines" image: https://source.unsplash.com/400x175/?github description: API docs for the ingestPipelines plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ingestPipelines'] --- import ingestPipelinesObj from './ingest_pipelines.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 1c1cb10891981..de5c401a2bf0c 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index faf5bb094da70..3882f870ee786 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/inventory.mdx b/api_docs/inventory.mdx index 25c4472a1f0c6..a58065187c174 100644 --- a/api_docs/inventory.mdx +++ b/api_docs/inventory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inventory title: "inventory" image: https://source.unsplash.com/400x175/?github description: API docs for the inventory plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inventory'] --- import inventoryObj from './inventory.devdocs.json'; diff --git a/api_docs/investigate.mdx b/api_docs/investigate.mdx index 187a898f0bbda..4eaf76016ff41 100644 --- a/api_docs/investigate.mdx +++ b/api_docs/investigate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigate title: "investigate" image: https://source.unsplash.com/400x175/?github description: API docs for the investigate plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigate'] --- import investigateObj from './investigate.devdocs.json'; diff --git a/api_docs/investigate_app.mdx b/api_docs/investigate_app.mdx index 0cd8a54b89a46..b4537537bb61d 100644 --- a/api_docs/investigate_app.mdx +++ b/api_docs/investigate_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigateApp title: "investigateApp" image: https://source.unsplash.com/400x175/?github description: API docs for the investigateApp plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigateApp'] --- import investigateAppObj from './investigate_app.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index dfc0b95a592a9..5a038d5a1820f 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant.mdx b/api_docs/kbn_ai_assistant.mdx index 8d6a5d89f7056..b285a8355d7d2 100644 --- a/api_docs/kbn_ai_assistant.mdx +++ b/api_docs/kbn_ai_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant title: "@kbn/ai-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant'] --- import kbnAiAssistantObj from './kbn_ai_assistant.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant_common.mdx b/api_docs/kbn_ai_assistant_common.mdx index ba1520c257139..64afa952af124 100644 --- a/api_docs/kbn_ai_assistant_common.mdx +++ b/api_docs/kbn_ai_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant-common title: "@kbn/ai-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant-common'] --- import kbnAiAssistantCommonObj from './kbn_ai_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant_icon.mdx b/api_docs/kbn_ai_assistant_icon.mdx index de9b7e9dbef8d..48af85dcd024a 100644 --- a/api_docs/kbn_ai_assistant_icon.mdx +++ b/api_docs/kbn_ai_assistant_icon.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant-icon title: "@kbn/ai-assistant-icon" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant-icon plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant-icon'] --- import kbnAiAssistantIconObj from './kbn_ai_assistant_icon.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 4f53a31b9b1c5..1a1e3e2d18c96 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_pattern_analysis.mdx b/api_docs/kbn_aiops_log_pattern_analysis.mdx index cc80b9af12e4a..52c491ed1c216 100644 --- a/api_docs/kbn_aiops_log_pattern_analysis.mdx +++ b/api_docs/kbn_aiops_log_pattern_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-pattern-analysis title: "@kbn/aiops-log-pattern-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-pattern-analysis plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-pattern-analysis'] --- import kbnAiopsLogPatternAnalysisObj from './kbn_aiops_log_pattern_analysis.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_rate_analysis.mdx b/api_docs/kbn_aiops_log_rate_analysis.mdx index f810ce272d7f0..db5aad9ec6cb0 100644 --- a/api_docs/kbn_aiops_log_rate_analysis.mdx +++ b/api_docs/kbn_aiops_log_rate_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-rate-analysis title: "@kbn/aiops-log-rate-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-rate-analysis plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-rate-analysis'] --- import kbnAiopsLogRateAnalysisObj from './kbn_aiops_log_rate_analysis.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index 6ede70556fc1f..fd9c93b2bc71b 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_comparators.mdx b/api_docs/kbn_alerting_comparators.mdx index 5594c2c23303f..6d09bd678bbf5 100644 --- a/api_docs/kbn_alerting_comparators.mdx +++ b/api_docs/kbn_alerting_comparators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-comparators title: "@kbn/alerting-comparators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-comparators plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-comparators'] --- import kbnAlertingComparatorsObj from './kbn_alerting_comparators.devdocs.json'; diff --git a/api_docs/kbn_alerting_rule_utils.mdx b/api_docs/kbn_alerting_rule_utils.mdx index be8b89120217a..6616e94452823 100644 --- a/api_docs/kbn_alerting_rule_utils.mdx +++ b/api_docs/kbn_alerting_rule_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-rule-utils title: "@kbn/alerting-rule-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-rule-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-rule-utils'] --- import kbnAlertingRuleUtilsObj from './kbn_alerting_rule_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 6cb668db8d741..3da8efec7a199 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index f0099d7c553bc..7d5e646819dd1 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 43ee438631fbd..70c0894d9208f 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_grouping.mdx b/api_docs/kbn_alerts_grouping.mdx index 52a459997366c..cd929df210ced 100644 --- a/api_docs/kbn_alerts_grouping.mdx +++ b/api_docs/kbn_alerts_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-grouping title: "@kbn/alerts-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-grouping plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-grouping'] --- import kbnAlertsGroupingObj from './kbn_alerts_grouping.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 93219ddadd795..2e713495cec9b 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared'] --- import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index 917e72cc66ef2..1cf3e3c019267 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index 4ae3bbf7cd48a..36976a9f0c5b4 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 08744e2e27c0c..ea8d099e22372 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_data_view.mdx b/api_docs/kbn_apm_data_view.mdx index 045540561637f..d7eaa2619bd78 100644 --- a/api_docs/kbn_apm_data_view.mdx +++ b/api_docs/kbn_apm_data_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-data-view title: "@kbn/apm-data-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-data-view plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-data-view'] --- import kbnApmDataViewObj from './kbn_apm_data_view.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 13802fbc6445b..5bb7a0bd1814f 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index a1a6ea40f2f40..1857f0486f453 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_types.mdx b/api_docs/kbn_apm_types.mdx index 74d9d70332749..bfb06388b9a4a 100644 --- a/api_docs/kbn_apm_types.mdx +++ b/api_docs/kbn_apm_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-types title: "@kbn/apm-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-types'] --- import kbnApmTypesObj from './kbn_apm_types.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 0fce696248a74..b88cf9296262c 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_avc_banner.mdx b/api_docs/kbn_avc_banner.mdx index 7f5d5ce0629d9..d642abee47403 100644 --- a/api_docs/kbn_avc_banner.mdx +++ b/api_docs/kbn_avc_banner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-avc-banner title: "@kbn/avc-banner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/avc-banner plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/avc-banner'] --- import kbnAvcBannerObj from './kbn_avc_banner.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index 9f1811e72e29c..b757a90671c09 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index f496209454c79..b9920d35ec76d 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index 938ff2ff3788d..22571e1a7e7ed 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 360c0b1d460dd..edfae22ca5b15 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cbor.mdx b/api_docs/kbn_cbor.mdx index c709fa46be21f..7e74457efe69b 100644 --- a/api_docs/kbn_cbor.mdx +++ b/api_docs/kbn_cbor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cbor title: "@kbn/cbor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cbor plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cbor'] --- import kbnCborObj from './kbn_cbor.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 633842e02f789..9c4017aae9732 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx index f31897aa56e79..d55b88f9c5621 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index 7bd97aba81135..2992018c12d16 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_charts_theme.mdx b/api_docs/kbn_charts_theme.mdx index 0874ecfe3398c..bb9cd8ab2f0d6 100644 --- a/api_docs/kbn_charts_theme.mdx +++ b/api_docs/kbn_charts_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-charts-theme title: "@kbn/charts-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/charts-theme plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/charts-theme'] --- import kbnChartsThemeObj from './kbn_charts_theme.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 8d7fba13ceb62..39148a025de9a 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index 9abe33c10f5fb..c0bcad6f6a065 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index 84167dac893f1..dececad14821b 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index a68454fe2600d..a0baea95fb3aa 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture.mdx b/api_docs/kbn_cloud_security_posture.mdx index f629917a601c6..6f0705d82c8ce 100644 --- a/api_docs/kbn_cloud_security_posture.mdx +++ b/api_docs/kbn_cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture title: "@kbn/cloud-security-posture" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture'] --- import kbnCloudSecurityPostureObj from './kbn_cloud_security_posture.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture_common.mdx b/api_docs/kbn_cloud_security_posture_common.mdx index 44086bb9fba0b..b38c2e95280ca 100644 --- a/api_docs/kbn_cloud_security_posture_common.mdx +++ b/api_docs/kbn_cloud_security_posture_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture-common title: "@kbn/cloud-security-posture-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture-common'] --- import kbnCloudSecurityPostureCommonObj from './kbn_cloud_security_posture_common.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture_graph.mdx b/api_docs/kbn_cloud_security_posture_graph.mdx index bc91115f4e9e2..9eabd4aece39b 100644 --- a/api_docs/kbn_cloud_security_posture_graph.mdx +++ b/api_docs/kbn_cloud_security_posture_graph.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture-graph title: "@kbn/cloud-security-posture-graph" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture-graph plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture-graph'] --- import kbnCloudSecurityPostureGraphObj from './kbn_cloud_security_posture_graph.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index b924672a7b74e..dfce2d78b8346 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mock.mdx b/api_docs/kbn_code_editor_mock.mdx index 39d33053b5b8f..9b89d19fe59d6 100644 --- a/api_docs/kbn_code_editor_mock.mdx +++ b/api_docs/kbn_code_editor_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mock title: "@kbn/code-editor-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mock plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mock'] --- import kbnCodeEditorMockObj from './kbn_code_editor_mock.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index e73985c6c26cd..392c102aec991 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 9d34219863d10..1cde05d922efb 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index 488deca0a22c1..cff88e6277ac0 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index 7ae1502927121..24a0800bcd42c 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 0e1061dff706a..9ca8620ef776a 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index 2d42a0e452354..43cb006d011e2 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_insights_public.mdx b/api_docs/kbn_content_management_content_insights_public.mdx index 12d48febbdbaa..f171e1e88731a 100644 --- a/api_docs/kbn_content_management_content_insights_public.mdx +++ b/api_docs/kbn_content_management_content_insights_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-insights-public title: "@kbn/content-management-content-insights-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-insights-public plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-insights-public'] --- import kbnContentManagementContentInsightsPublicObj from './kbn_content_management_content_insights_public.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_insights_server.mdx b/api_docs/kbn_content_management_content_insights_server.mdx index 681a5ac482334..28e498a6ba7a2 100644 --- a/api_docs/kbn_content_management_content_insights_server.mdx +++ b/api_docs/kbn_content_management_content_insights_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-insights-server title: "@kbn/content-management-content-insights-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-insights-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-insights-server'] --- import kbnContentManagementContentInsightsServerObj from './kbn_content_management_content_insights_server.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_common.mdx b/api_docs/kbn_content_management_favorites_common.mdx index 11e1e718b7e34..fba24abe6b390 100644 --- a/api_docs/kbn_content_management_favorites_common.mdx +++ b/api_docs/kbn_content_management_favorites_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-common title: "@kbn/content-management-favorites-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-common'] --- import kbnContentManagementFavoritesCommonObj from './kbn_content_management_favorites_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_public.mdx b/api_docs/kbn_content_management_favorites_public.mdx index 2e8944ee6bc2d..7158895be52c9 100644 --- a/api_docs/kbn_content_management_favorites_public.mdx +++ b/api_docs/kbn_content_management_favorites_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-public title: "@kbn/content-management-favorites-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-public plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-public'] --- import kbnContentManagementFavoritesPublicObj from './kbn_content_management_favorites_public.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_server.mdx b/api_docs/kbn_content_management_favorites_server.mdx index 8d69c035a25fe..eba8b145240cf 100644 --- a/api_docs/kbn_content_management_favorites_server.mdx +++ b/api_docs/kbn_content_management_favorites_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-server title: "@kbn/content-management-favorites-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-server'] --- import kbnContentManagementFavoritesServerObj from './kbn_content_management_favorites_server.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index 5f8591165c7a7..27fead217169f 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view'] --- import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx index b3351fcf4438c..3f43c31d9af30 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index 918a7306ab649..c883183598582 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 25146e77d896a..c88f02e071b87 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_user_profiles.mdx b/api_docs/kbn_content_management_user_profiles.mdx index b349850c2a79c..f96c95e8cebaa 100644 --- a/api_docs/kbn_content_management_user_profiles.mdx +++ b/api_docs/kbn_content_management_user_profiles.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-user-profiles title: "@kbn/content-management-user-profiles" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-user-profiles plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-user-profiles'] --- import kbnContentManagementUserProfilesObj from './kbn_content_management_user_profiles.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index 862ddc7f4099b..9e1565a50162c 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index f04ca46707446..4cffdec87954b 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index 043ab03f6b307..fbf8862b33003 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index 3ab0e5c01b698..9b3dcfd9cb301 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index b14b2d2e5cd05..e0639283a798c 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index 69e42a60ae0c7..4c16107be4162 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index 1a9247029d7fb..b460217ddd2f4 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index 152728cf55e68..8abfc47d065de 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index 6ce34f3b878d8..e0da16fee76ef 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index fb34c61f211e6..eca3f4fc36638 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index 9658dd0951e46..e6c4e714b0802 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index d67734f5bf6c2..b9d293777eeda 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 5a1bb02d4a22e..cedd27654f877 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index 282fc3add9a39..1f61340479afb 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 7488d89e736f0..2b2647ff1d162 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 09100da102b52..02c86ae329223 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index da6a6c74bed6d..01a5fe44f1233 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index 35710e031a140..96b721e880958 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index 28cf20c3a821f..98eda0d6393e6 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 2dae1e103b88a..41ecb121c337b 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index 965e077f012f2..29cfe82c78b9c 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index deb90cec1affb..31ff8b56e3308 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index a644c26e990c9..39b32b8e3ca56 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index f8e871f3f4dc1..1680566301ba1 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 04f4a21c8ed24..1fa6fe71cdcf7 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index 3d437709d7c61..5f5b5fe8037a9 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index 9adf9cd60b319..a5975f274f888 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index 23cce73b0f081..b895a0723809b 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index de9aac2f600e9..12cd65215ab5b 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index a46656fcbf305..547daf72fffe6 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index d66c3f726f985..2cb42b30e2bbf 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index d455aa9ae8d12..6bda12b266493 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 0a5e5741227fa..2d4f0df89781f 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index 1957e602c3e95..a7418230e1e2a 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index 86f7243ae7ec2..21592bf8f32e3 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index 7517baafc2bc8..6c630ecf18fe1 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index a1979203ea512..a333fe39fe201 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index fdf3f216e22bc..0c937b2cc221f 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index b66ebd5857f70..06053fb759bf7 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index e8528392aec52..5a48c839807eb 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index 2f4c6695e251f..a0a133c3d9068 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,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 description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index bf24bc587ca35..73223338cfdeb 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index bed7252be6d13..4ed5f84e85ef9 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,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 description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index d9b87b4ac2a99..d8d2b91269d99 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index 6feb5ea34a549..cdff7c0e164f4 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index 65c38d76ff24f..acd1b2b7d077e 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index 83c3f3daaf5f7..466544d8635af 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index 67c0bf340f12a..2ac94e2b2e8f0 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index 10133441f3396..b32bedcc1c4e1 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index 1d9d3a9c34318..b6e8f62b2cf3f 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index e8fdc0891052e..54b543948bb45 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index bb892f3ab9d30..36478447c2d7f 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index fc1e17b0b9d7f..c1bb0b5413b2b 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index e6e753fff2393..5dc7ae0931633 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index b75e74470b35d..90fc1f4d2f751 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index 0fcb9d700ffa7..58ca3c1a95dbe 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index c25bbecb10118..7b54670d8a634 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index dfafa950e054c..4dd401c4100ba 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index ded4d49c94711..9782a7d838490 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser.mdx b/api_docs/kbn_core_feature_flags_browser.mdx index 75cdfa4b7148f..ba3daa2e348c5 100644 --- a/api_docs/kbn_core_feature_flags_browser.mdx +++ b/api_docs/kbn_core_feature_flags_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser title: "@kbn/core-feature-flags-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser'] --- import kbnCoreFeatureFlagsBrowserObj from './kbn_core_feature_flags_browser.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser_internal.mdx b/api_docs/kbn_core_feature_flags_browser_internal.mdx index 690a242de47e0..5232b01069432 100644 --- a/api_docs/kbn_core_feature_flags_browser_internal.mdx +++ b/api_docs/kbn_core_feature_flags_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser-internal title: "@kbn/core-feature-flags-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser-internal'] --- import kbnCoreFeatureFlagsBrowserInternalObj from './kbn_core_feature_flags_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser_mocks.mdx b/api_docs/kbn_core_feature_flags_browser_mocks.mdx index e710566392e55..3ae4ca278c2d1 100644 --- a/api_docs/kbn_core_feature_flags_browser_mocks.mdx +++ b/api_docs/kbn_core_feature_flags_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser-mocks title: "@kbn/core-feature-flags-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser-mocks'] --- import kbnCoreFeatureFlagsBrowserMocksObj from './kbn_core_feature_flags_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server.mdx b/api_docs/kbn_core_feature_flags_server.mdx index d5c5c485feed4..7e2fe4f67f3cb 100644 --- a/api_docs/kbn_core_feature_flags_server.mdx +++ b/api_docs/kbn_core_feature_flags_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server title: "@kbn/core-feature-flags-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server'] --- import kbnCoreFeatureFlagsServerObj from './kbn_core_feature_flags_server.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server_internal.mdx b/api_docs/kbn_core_feature_flags_server_internal.mdx index 17e714c7c3aeb..5d604982588bb 100644 --- a/api_docs/kbn_core_feature_flags_server_internal.mdx +++ b/api_docs/kbn_core_feature_flags_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server-internal title: "@kbn/core-feature-flags-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server-internal'] --- import kbnCoreFeatureFlagsServerInternalObj from './kbn_core_feature_flags_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server_mocks.mdx b/api_docs/kbn_core_feature_flags_server_mocks.mdx index fe6c342de94ad..a6f55b44f952c 100644 --- a/api_docs/kbn_core_feature_flags_server_mocks.mdx +++ b/api_docs/kbn_core_feature_flags_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server-mocks title: "@kbn/core-feature-flags-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server-mocks'] --- import kbnCoreFeatureFlagsServerMocksObj from './kbn_core_feature_flags_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index d37ba77ccfdc3..e36e200420c89 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index 7c278a8a07f2e..e2f2fdb6b69ef 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 2d72d7274289e..8296c2d6aaa75 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index ff49f652b0427..5b08affc4a368 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index 4e3232edf60e9..b2f05cb4438ab 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index bc59cab32f331..bf80c5c365ff1 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index 385960e993cab..5724e2ed34db6 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index c78affb98c263..44493cb0ff6b0 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index 6fdbb7fae044f..6e793bfc731a8 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index e47245ef7ff6a..c116fb2dc0cc5 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index 907bd2c62c7b8..7f536674a3106 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 06ca969f289a4..53ec7c207b238 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index 647aef756620e..e5c4af19561a9 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index 0c3823cd6440f..b66ef3b568e43 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_utils.mdx b/api_docs/kbn_core_http_server_utils.mdx index 001a36cc5f099..a455b499307fe 100644 --- a/api_docs/kbn_core_http_server_utils.mdx +++ b/api_docs/kbn_core_http_server_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-utils title: "@kbn/core-http-server-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-utils'] --- import kbnCoreHttpServerUtilsObj from './kbn_core_http_server_utils.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 56158630d6c53..9df3bb2d74c01 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index 6ef356d5cd195..846062c4c70ce 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index f79d48f852ee6..8c6b9ed5d57a0 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index 038f314e3e23f..cd6a423a962e0 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index de12451d1adaa..4f49e9f47ec1b 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 7db0a9ad58128..7c55b72d7f058 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,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 description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index f99509538ba82..f3ad5eedd954a 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index 15eb929da18f7..a0899900ff153 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index 5f4617727c345..4112ac10a0f4d 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index f48beee303245..14d1979a4170a 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index 6dda9635c18b1..66b9c54953c3a 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index 80f9e1a2ea6e0..adb8e3c4b6694 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index 31f5f152d9ac3..025c8f43e321d 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index d8965ed71a964..b72b4a618f64b 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index ff7a830d21066..2b206e4293f10 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index c971b96b3bcf2..9cf28a17c2b93 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index a46ba29e5d04a..e15a0584eb09e 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index 2dd0720d1220b..f2f4816079c2a 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index ef68101a0e1f5..fe68c2f78d992 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index 588ee3a9b3009..bbd864047a8bc 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index 994804860cee7..8de111f97b26e 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index 9576285e2ef25..c3393ccdab92a 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index 41c19a951932c..afdc29e85d6c7 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index f16acf3114d59..40330a643118f 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index a6ab10f019c58..2dff727bb5f31 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index b93e9bc08e249..e863af0d43e66 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index 9336eceae76b6..d3380b4319184 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index f241e20c36f05..80afa2948dc80 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index 35bc16b4e9bb4..d795dce731e63 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index 863c72f1bf67d..43d5f9f830b1b 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index 4790273fb25a3..ab15e188e5934 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index 866fcb99f2bdb..edb3ae24baf33 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index 9e8823d1ed9e7..e4011420ac5ab 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index 846aaf6bd5613..2a782f48fddc0 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index 42cbe0317095c..ba80737e610a0 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index 317c53118b41e..aab9e1181022f 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 810e3c675436c..a9260f199844a 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index 1d82d2eb6d4b1..1a09dc6d7bc7b 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 7b67823f397da..a30c453756d81 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index f15b4c2ccfe13..aa7c233f84264 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser.mdx b/api_docs/kbn_core_rendering_browser.mdx index 8354803c971fb..e655844fd5808 100644 --- a/api_docs/kbn_core_rendering_browser.mdx +++ b/api_docs/kbn_core_rendering_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser title: "@kbn/core-rendering-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser'] --- import kbnCoreRenderingBrowserObj from './kbn_core_rendering_browser.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index b5cd7e84479d2..04bdc856a3cab 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index b457bf53db825..0a2109496ab13 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index bff57a940f694..550d4bccd6cf7 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index 454c884a51639..e8d074fddd8c2 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index a9f4994202806..4b49a75dc472a 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 46619402b307a..351dbdba21c27 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index 696e788c16912..55089ff9b996d 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index cb6fc73b60f6f..1e4a375366bdc 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index 52b52e37f5934..0786c928905cf 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index 959e7759c6e59..be81ee2043e2c 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 629153519a25c..9af7bdd125bef 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index 453e9d45f1359..1f0b1eaee1eab 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index 425df5b50415a..c472e9cdda61f 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index 0bf6985543342..b385037459ec7 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index 0834e0a4c4a3b..ff4ffac8edd82 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index 4b8d66c424874..b7e0a80bf2319 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index 96accc6d08825..942b696e7d708 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 2e56a877896b6..58a68f188e261 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index 635d272056692..20239b75d010b 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index 506fc23991842..01e04c53734e1 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index 3068d04af0a90..1a450a3ebbf7e 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser.mdx b/api_docs/kbn_core_security_browser.mdx index e2288d9f228f3..7e3701fd960d8 100644 --- a/api_docs/kbn_core_security_browser.mdx +++ b/api_docs/kbn_core_security_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser title: "@kbn/core-security-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser'] --- import kbnCoreSecurityBrowserObj from './kbn_core_security_browser.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_internal.mdx b/api_docs/kbn_core_security_browser_internal.mdx index a2229dd6d153f..668bea5a3d2d2 100644 --- a/api_docs/kbn_core_security_browser_internal.mdx +++ b/api_docs/kbn_core_security_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-internal title: "@kbn/core-security-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-internal'] --- import kbnCoreSecurityBrowserInternalObj from './kbn_core_security_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_mocks.mdx b/api_docs/kbn_core_security_browser_mocks.mdx index 34a35ac38e7f5..a3a99f45af619 100644 --- a/api_docs/kbn_core_security_browser_mocks.mdx +++ b/api_docs/kbn_core_security_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-mocks title: "@kbn/core-security-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-mocks'] --- import kbnCoreSecurityBrowserMocksObj from './kbn_core_security_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_security_common.mdx b/api_docs/kbn_core_security_common.mdx index 4bf742e608fc0..0bad4cc2a7e32 100644 --- a/api_docs/kbn_core_security_common.mdx +++ b/api_docs/kbn_core_security_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-common title: "@kbn/core-security-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-common'] --- import kbnCoreSecurityCommonObj from './kbn_core_security_common.devdocs.json'; diff --git a/api_docs/kbn_core_security_server.mdx b/api_docs/kbn_core_security_server.mdx index f1412785fda2d..ce726c5994ea7 100644 --- a/api_docs/kbn_core_security_server.mdx +++ b/api_docs/kbn_core_security_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server title: "@kbn/core-security-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server'] --- import kbnCoreSecurityServerObj from './kbn_core_security_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_internal.mdx b/api_docs/kbn_core_security_server_internal.mdx index c47c2382f8b64..65e3ece99a36f 100644 --- a/api_docs/kbn_core_security_server_internal.mdx +++ b/api_docs/kbn_core_security_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-internal title: "@kbn/core-security-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-internal'] --- import kbnCoreSecurityServerInternalObj from './kbn_core_security_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_mocks.mdx b/api_docs/kbn_core_security_server_mocks.mdx index 158ce4f0918c9..260ce8ddabbb9 100644 --- a/api_docs/kbn_core_security_server_mocks.mdx +++ b/api_docs/kbn_core_security_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-mocks title: "@kbn/core-security-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-mocks'] --- import kbnCoreSecurityServerMocksObj from './kbn_core_security_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 950a173f43af5..47a053ed7aebc 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index 11d2b9420d681..fa52553067c6f 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index f45b38b2e782f..69cc40c2b48b0 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index 721c4f92a0824..f93d78a473ff0 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index 963c5a3c1506a..8cab4fed030b6 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index 27ecd735b4655..b4c55fa3eaa91 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index a70cccb696f8a..1d88bb139100c 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index c2aad67d1730b..f00fcfb9de8c3 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 7a741fa5d1695..b31c20e615aa2 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index 5c449c724dca1..ee272b0dac970 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 8d27f544d0c63..1f626afb0a882 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_internal.mdx b/api_docs/kbn_core_theme_browser_internal.mdx index 3c8c6f36937f4..255b31b78fdff 100644 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ b/api_docs/kbn_core_theme_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-internal title: "@kbn/core-theme-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-internal'] --- import kbnCoreThemeBrowserInternalObj from './kbn_core_theme_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 2dc3d14e551d4..aa438d2b6d01b 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index 2d324601c342c..79173b14e7817 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index acb0d595dad18..17b2262535ebf 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index 34b9085db1a29..da9b6f823550f 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index 865d21aa18558..f313104f59dd9 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index b11eab2662662..9b28187c858ee 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index 2639006ddddfa..61c393b836334 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index aa45c32faeed2..d35ba5111002f 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index 50ff003034bc0..e2430b275c104 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index b33b5e2bd348d..e3d2c56d8be63 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index 8ab8f43f80bce..37d5217f16ac2 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser.mdx b/api_docs/kbn_core_user_profile_browser.mdx index 81f1ca40ac39c..25e38af7f6f1b 100644 --- a/api_docs/kbn_core_user_profile_browser.mdx +++ b/api_docs/kbn_core_user_profile_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser title: "@kbn/core-user-profile-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser'] --- import kbnCoreUserProfileBrowserObj from './kbn_core_user_profile_browser.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_internal.mdx b/api_docs/kbn_core_user_profile_browser_internal.mdx index 4432a80c89e28..adfe712bf9d36 100644 --- a/api_docs/kbn_core_user_profile_browser_internal.mdx +++ b/api_docs/kbn_core_user_profile_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-internal title: "@kbn/core-user-profile-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-internal'] --- import kbnCoreUserProfileBrowserInternalObj from './kbn_core_user_profile_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_mocks.mdx b/api_docs/kbn_core_user_profile_browser_mocks.mdx index a29aa9aeaf4e1..6acbda5084129 100644 --- a/api_docs/kbn_core_user_profile_browser_mocks.mdx +++ b/api_docs/kbn_core_user_profile_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-mocks title: "@kbn/core-user-profile-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-mocks'] --- import kbnCoreUserProfileBrowserMocksObj from './kbn_core_user_profile_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_common.mdx b/api_docs/kbn_core_user_profile_common.mdx index ac73d100cfdc9..245a1dd11e6de 100644 --- a/api_docs/kbn_core_user_profile_common.mdx +++ b/api_docs/kbn_core_user_profile_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-common title: "@kbn/core-user-profile-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-common'] --- import kbnCoreUserProfileCommonObj from './kbn_core_user_profile_common.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server.mdx b/api_docs/kbn_core_user_profile_server.mdx index cdcd21c2fcda5..58812ae61dca8 100644 --- a/api_docs/kbn_core_user_profile_server.mdx +++ b/api_docs/kbn_core_user_profile_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server title: "@kbn/core-user-profile-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server'] --- import kbnCoreUserProfileServerObj from './kbn_core_user_profile_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_internal.mdx b/api_docs/kbn_core_user_profile_server_internal.mdx index ec6273fbe16f5..27f7b66ab23cb 100644 --- a/api_docs/kbn_core_user_profile_server_internal.mdx +++ b/api_docs/kbn_core_user_profile_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-internal title: "@kbn/core-user-profile-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-internal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-internal'] --- import kbnCoreUserProfileServerInternalObj from './kbn_core_user_profile_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_mocks.mdx b/api_docs/kbn_core_user_profile_server_mocks.mdx index b9662abc1edef..5f11b85a216f7 100644 --- a/api_docs/kbn_core_user_profile_server_mocks.mdx +++ b/api_docs/kbn_core_user_profile_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-mocks title: "@kbn/core-user-profile-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-mocks'] --- import kbnCoreUserProfileServerMocksObj from './kbn_core_user_profile_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index e9a3b095e2dba..18195ab3687ca 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index e6d31d9a5aa48..e2cd9ddd93e86 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks'] --- import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index 17813de3d0139..b9a6f3f5e74bd 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index b8e639b51e334..c4d9215e12ebb 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index 65adb92ce9801..1d6442ba5c7e0 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index fbd1e91088e45..dd32df2e95f0d 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 6d62392c57d9d..1038a2c1caf04 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_forge.mdx b/api_docs/kbn_data_forge.mdx index cc6e9f04361f3..b19b4cd3f1e50 100644 --- a/api_docs/kbn_data_forge.mdx +++ b/api_docs/kbn_data_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-forge title: "@kbn/data-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-forge plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-forge'] --- import kbnDataForgeObj from './kbn_data_forge.devdocs.json'; diff --git a/api_docs/kbn_data_grid_in_table_search.mdx b/api_docs/kbn_data_grid_in_table_search.mdx index ec690f29ec718..1e48b012b9f33 100644 --- a/api_docs/kbn_data_grid_in_table_search.mdx +++ b/api_docs/kbn_data_grid_in_table_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-grid-in-table-search title: "@kbn/data-grid-in-table-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-grid-in-table-search plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-grid-in-table-search'] --- import kbnDataGridInTableSearchObj from './kbn_data_grid_in_table_search.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index a6e3e01db481a..57f58ffe5d279 100644 --- a/api_docs/kbn_data_service.mdx +++ b/api_docs/kbn_data_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service title: "@kbn/data-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-service plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_data_stream_adapter.mdx b/api_docs/kbn_data_stream_adapter.mdx index 0cb960bb53fff..3dbb6cc2ea198 100644 --- a/api_docs/kbn_data_stream_adapter.mdx +++ b/api_docs/kbn_data_stream_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-stream-adapter title: "@kbn/data-stream-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-stream-adapter plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-stream-adapter'] --- import kbnDataStreamAdapterObj from './kbn_data_stream_adapter.devdocs.json'; diff --git a/api_docs/kbn_data_view_utils.mdx b/api_docs/kbn_data_view_utils.mdx index 65b0040d4a084..211a80626f36c 100644 --- a/api_docs/kbn_data_view_utils.mdx +++ b/api_docs/kbn_data_view_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-view-utils title: "@kbn/data-view-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-view-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-view-utils'] --- import kbnDataViewUtilsObj from './kbn_data_view_utils.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 9d3e0c7515e6a..3eac3561bfc85 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx index 60637b3cc7914..652bbc39fe733 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics'] --- import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx index 191540b051271..9f7ef35ef37a0 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_fleet.mdx b/api_docs/kbn_deeplinks_fleet.mdx index a900a18a7dedf..4f246bfca62a1 100644 --- a/api_docs/kbn_deeplinks_fleet.mdx +++ b/api_docs/kbn_deeplinks_fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-fleet title: "@kbn/deeplinks-fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-fleet plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-fleet'] --- import kbnDeeplinksFleetObj from './kbn_deeplinks_fleet.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index b55a7faa39710..e53bb8da93052 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index 8912642275b82..3a8c23b841f4d 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index e5c62f9b4aa3c..a6b6404fa8f32 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index dec75342aaabd..e595e670beb28 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_security.mdx b/api_docs/kbn_deeplinks_security.mdx index 70d3ba716d18b..94d191d8465a4 100644 --- a/api_docs/kbn_deeplinks_security.mdx +++ b/api_docs/kbn_deeplinks_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-security title: "@kbn/deeplinks-security" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-security plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-security'] --- import kbnDeeplinksSecurityObj from './kbn_deeplinks_security.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_shared.mdx b/api_docs/kbn_deeplinks_shared.mdx index 6c6d01931798f..81456d0984103 100644 --- a/api_docs/kbn_deeplinks_shared.mdx +++ b/api_docs/kbn_deeplinks_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-shared title: "@kbn/deeplinks-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-shared plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-shared'] --- import kbnDeeplinksSharedObj from './kbn_deeplinks_shared.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index f1f3b17958e89..afa45ac9e4b0d 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics'] --- import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx index 1b41288bb593c..eae510d0b28b0 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools'] --- import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json'; diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index ff95d5a018294..b7151998125d8 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index 38f52427c2c77..f2b45af71d435 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml'] --- import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json'; diff --git a/api_docs/kbn_delete_managed_asset_callout.mdx b/api_docs/kbn_delete_managed_asset_callout.mdx index dd93889c2d9ca..8942d92ef83c0 100644 --- a/api_docs/kbn_delete_managed_asset_callout.mdx +++ b/api_docs/kbn_delete_managed_asset_callout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-delete-managed-asset-callout title: "@kbn/delete-managed-asset-callout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/delete-managed-asset-callout plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/delete-managed-asset-callout'] --- import kbnDeleteManagedAssetCalloutObj from './kbn_delete_managed_asset_callout.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 2dd29c68b5ace..2ece3eeafa49f 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index fc7515965e4e2..d9529009527b1 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index e8e26c0718054..c992c7af0f76c 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index 5a7b5b1d10ea3..b5d51d31b8de5 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_contextual_components.mdx b/api_docs/kbn_discover_contextual_components.mdx index 965b824a552d1..608edbc2993c5 100644 --- a/api_docs/kbn_discover_contextual_components.mdx +++ b/api_docs/kbn_discover_contextual_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-contextual-components title: "@kbn/discover-contextual-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-contextual-components plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-contextual-components'] --- import kbnDiscoverContextualComponentsObj from './kbn_discover_contextual_components.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index 0c10ba7dc4a09..2808d3d3e53c8 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 5b6e83d113738..ddc435285c604 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index ad8d5c817462e..137c319ff1130 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx index 43666fa0cfee6..aa3fa353a8a6d 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop'] --- import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index 203cfd85e102d..655d43564b579 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index d88ee761d1dca..ecf73fe7c1546 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index 325f38dc64471..58de6409519c3 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 3317ad0470ebe..1435f2b6f59a4 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index 1b52484139af7..ffd2e7759dbd1 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_entities_schema.mdx b/api_docs/kbn_entities_schema.mdx index 6430259153700..d4d464e6b83a4 100644 --- a/api_docs/kbn_entities_schema.mdx +++ b/api_docs/kbn_entities_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-entities-schema title: "@kbn/entities-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/entities-schema plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/entities-schema'] --- import kbnEntitiesSchemaObj from './kbn_entities_schema.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 720e589d57c96..d49df5d0ec289 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index ec82f4b2e7a28..821b13c5a3cf5 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index 17f294778ca38..8ac1314558650 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index dbf4cebc5dda7..af4ef78dd82fa 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index 3f6fc8d7042d3..760079cab3b00 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index 45b291b7ab113..5ec2911b811c3 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_esql_ast.mdx b/api_docs/kbn_esql_ast.mdx index ec34845e49c50..13c321886070f 100644 --- a/api_docs/kbn_esql_ast.mdx +++ b/api_docs/kbn_esql_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-ast title: "@kbn/esql-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-ast plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-ast'] --- import kbnEsqlAstObj from './kbn_esql_ast.devdocs.json'; diff --git a/api_docs/kbn_esql_editor.mdx b/api_docs/kbn_esql_editor.mdx index ce6df0c471f1a..6e6d055f6883a 100644 --- a/api_docs/kbn_esql_editor.mdx +++ b/api_docs/kbn_esql_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-editor title: "@kbn/esql-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-editor plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-editor'] --- import kbnEsqlEditorObj from './kbn_esql_editor.devdocs.json'; diff --git a/api_docs/kbn_esql_utils.mdx b/api_docs/kbn_esql_utils.mdx index 89c991f50196a..c647aec419db2 100644 --- a/api_docs/kbn_esql_utils.mdx +++ b/api_docs/kbn_esql_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-utils title: "@kbn/esql-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-utils'] --- import kbnEsqlUtilsObj from './kbn_esql_utils.devdocs.json'; diff --git a/api_docs/kbn_esql_validation_autocomplete.mdx b/api_docs/kbn_esql_validation_autocomplete.mdx index 95e3ffdd6f3de..898891a97c816 100644 --- a/api_docs/kbn_esql_validation_autocomplete.mdx +++ b/api_docs/kbn_esql_validation_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-validation-autocomplete title: "@kbn/esql-validation-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-validation-autocomplete plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-validation-autocomplete'] --- import kbnEsqlValidationAutocompleteObj from './kbn_esql_validation_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_esql_variables_types.mdx b/api_docs/kbn_esql_variables_types.mdx index 53cc9ef376a1a..00c36cab004a0 100644 --- a/api_docs/kbn_esql_variables_types.mdx +++ b/api_docs/kbn_esql_variables_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-variables-types title: "@kbn/esql-variables-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-variables-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-variables-types'] --- import kbnEsqlVariablesTypesObj from './kbn_esql_variables_types.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index aa93af9c02596..213eb6a7ec330 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index fb526048a07d6..e49fcc62df6c1 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_event_stacktrace.mdx b/api_docs/kbn_event_stacktrace.mdx index e6f8947f56f6c..e1ae5c3f16191 100644 --- a/api_docs/kbn_event_stacktrace.mdx +++ b/api_docs/kbn_event_stacktrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-stacktrace title: "@kbn/event-stacktrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-stacktrace plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-stacktrace'] --- import kbnEventStacktraceObj from './kbn_event_stacktrace.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index 82cc0b6090df6..dc2d1def1929c 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 11ddd545bb474..7aafc4a6bbfb5 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 260c171a40ffe..5cf1a987cece4 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_file_upload_common.mdx b/api_docs/kbn_file_upload_common.mdx index fcc082945dca1..66e61b929b78c 100644 --- a/api_docs/kbn_file_upload_common.mdx +++ b/api_docs/kbn_file_upload_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-file-upload-common title: "@kbn/file-upload-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/file-upload-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/file-upload-common'] --- import kbnFileUploadCommonObj from './kbn_file_upload_common.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 2b09778b07764..01f80ec370589 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index 64e09ac7c4542..756bb23cb3f7e 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index f74a2727f402a..64e2447fe8d6f 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_gen_ai_functional_testing.mdx b/api_docs/kbn_gen_ai_functional_testing.mdx index 9ab1510787e2f..53e03684187f0 100644 --- a/api_docs/kbn_gen_ai_functional_testing.mdx +++ b/api_docs/kbn_gen_ai_functional_testing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-gen-ai-functional-testing title: "@kbn/gen-ai-functional-testing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/gen-ai-functional-testing plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/gen-ai-functional-testing'] --- import kbnGenAiFunctionalTestingObj from './kbn_gen_ai_functional_testing.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index f9b1ce2a704b7..05c5840c2d13a 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx index 538039b23bdbc..03bc6a967747d 100644 --- a/api_docs/kbn_generate_console_definitions.mdx +++ b/api_docs/kbn_generate_console_definitions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions title: "@kbn/generate-console-definitions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-console-definitions plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions'] --- import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index 95066cb2f2b40..87e1343ca61f3 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_grid_layout.mdx b/api_docs/kbn_grid_layout.mdx index 7866f1ebe7628..11a9ec0abcf3a 100644 --- a/api_docs/kbn_grid_layout.mdx +++ b/api_docs/kbn_grid_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grid-layout title: "@kbn/grid-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grid-layout plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grid-layout'] --- import kbnGridLayoutObj from './kbn_grid_layout.devdocs.json'; diff --git a/api_docs/kbn_grouping.mdx b/api_docs/kbn_grouping.mdx index f5f605b00f684..6fcb3cc960e28 100644 --- a/api_docs/kbn_grouping.mdx +++ b/api_docs/kbn_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grouping title: "@kbn/grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grouping plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grouping'] --- import kbnGroupingObj from './kbn_grouping.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index be5d07ab5d364..42838a8319413 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 7c1ab7c6d0498..b1b5cbb207d8f 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index 4a5bc5b34e2f8..54c36f619c3f9 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index 82126b0b8e724..580c5c081d820 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index 5e93dde656d9a..66df63655aafc 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index 0ae38cb6cdc1f..846567793de5a 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index 82ccf1d7b0194..156bde0fbd14e 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index 77709fe4be778..6891af85d61d6 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index 62696dcde27e3..b685e2bc876da 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_index_adapter.mdx b/api_docs/kbn_index_adapter.mdx index 05420581ac39a..f52e5c75930ca 100644 --- a/api_docs/kbn_index_adapter.mdx +++ b/api_docs/kbn_index_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-adapter title: "@kbn/index-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-adapter plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-adapter'] --- import kbnIndexAdapterObj from './kbn_index_adapter.devdocs.json'; diff --git a/api_docs/kbn_index_lifecycle_management_common_shared.mdx b/api_docs/kbn_index_lifecycle_management_common_shared.mdx index 21e6562c50d17..753afad4f1186 100644 --- a/api_docs/kbn_index_lifecycle_management_common_shared.mdx +++ b/api_docs/kbn_index_lifecycle_management_common_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-lifecycle-management-common-shared title: "@kbn/index-lifecycle-management-common-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-lifecycle-management-common-shared plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-lifecycle-management-common-shared'] --- import kbnIndexLifecycleManagementCommonSharedObj from './kbn_index_lifecycle_management_common_shared.devdocs.json'; diff --git a/api_docs/kbn_index_management_shared_types.mdx b/api_docs/kbn_index_management_shared_types.mdx index a13cf16c02560..2c0d84b741de3 100644 --- a/api_docs/kbn_index_management_shared_types.mdx +++ b/api_docs/kbn_index_management_shared_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-management-shared-types title: "@kbn/index-management-shared-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-management-shared-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-management-shared-types'] --- import kbnIndexManagementSharedTypesObj from './kbn_index_management_shared_types.devdocs.json'; diff --git a/api_docs/kbn_inference_common.mdx b/api_docs/kbn_inference_common.mdx index 3c61285183906..76517a7838e7a 100644 --- a/api_docs/kbn_inference_common.mdx +++ b/api_docs/kbn_inference_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-common title: "@kbn/inference-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-common'] --- import kbnInferenceCommonObj from './kbn_inference_common.devdocs.json'; diff --git a/api_docs/kbn_inference_endpoint_ui_common.mdx b/api_docs/kbn_inference_endpoint_ui_common.mdx index f4321bec3be4a..442aac03d2a9e 100644 --- a/api_docs/kbn_inference_endpoint_ui_common.mdx +++ b/api_docs/kbn_inference_endpoint_ui_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-endpoint-ui-common title: "@kbn/inference-endpoint-ui-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-endpoint-ui-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-endpoint-ui-common'] --- import kbnInferenceEndpointUiCommonObj from './kbn_inference_endpoint_ui_common.devdocs.json'; diff --git a/api_docs/kbn_inference_integration_flyout.mdx b/api_docs/kbn_inference_integration_flyout.mdx index 10b0d2b38838e..a03d5a7c56c6f 100644 --- a/api_docs/kbn_inference_integration_flyout.mdx +++ b/api_docs/kbn_inference_integration_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference_integration_flyout title: "@kbn/inference_integration_flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference_integration_flyout plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference_integration_flyout'] --- import kbnInferenceIntegrationFlyoutObj from './kbn_inference_integration_flyout.devdocs.json'; diff --git a/api_docs/kbn_inference_langchain.mdx b/api_docs/kbn_inference_langchain.mdx index 233394aa354d5..ef69defc43fbb 100644 --- a/api_docs/kbn_inference_langchain.mdx +++ b/api_docs/kbn_inference_langchain.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-langchain title: "@kbn/inference-langchain" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-langchain plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-langchain'] --- import kbnInferenceLangchainObj from './kbn_inference_langchain.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index 45b2877d9e22c..ee950318ad958 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge'] --- import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index ca85f07fe32c0..4b6aedeb8e871 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_investigation_shared.mdx b/api_docs/kbn_investigation_shared.mdx index d32ad835aa03f..8f445df1d32e9 100644 --- a/api_docs/kbn_investigation_shared.mdx +++ b/api_docs/kbn_investigation_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-investigation-shared title: "@kbn/investigation-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/investigation-shared plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/investigation-shared'] --- import kbnInvestigationSharedObj from './kbn_investigation_shared.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 6fcf46e2c320f..2901284fa54e2 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_ipynb.mdx b/api_docs/kbn_ipynb.mdx index cfd36cc431e7a..2bac729c8f4fc 100644 --- a/api_docs/kbn_ipynb.mdx +++ b/api_docs/kbn_ipynb.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ipynb title: "@kbn/ipynb" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ipynb plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ipynb'] --- import kbnIpynbObj from './kbn_ipynb.devdocs.json'; diff --git a/api_docs/kbn_item_buffer.mdx b/api_docs/kbn_item_buffer.mdx index 8356b7e5ee7b3..fe0bd4bd3c7f0 100644 --- a/api_docs/kbn_item_buffer.mdx +++ b/api_docs/kbn_item_buffer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-item-buffer title: "@kbn/item-buffer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/item-buffer plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/item-buffer'] --- import kbnItemBufferObj from './kbn_item_buffer.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 6040329c8d8c0..d28bff2fdc658 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index 8c0f1c201f2b4..7635baa3c92a5 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index 3b13619a2b1ba..b9cc66f45ebf2 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_json_schemas.mdx b/api_docs/kbn_json_schemas.mdx index 4cba2a41d49ef..04375918de042 100644 --- a/api_docs/kbn_json_schemas.mdx +++ b/api_docs/kbn_json_schemas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-schemas title: "@kbn/json-schemas" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-schemas plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-schemas'] --- import kbnJsonSchemasObj from './kbn_json_schemas.devdocs.json'; diff --git a/api_docs/kbn_key_value_metadata_table.mdx b/api_docs/kbn_key_value_metadata_table.mdx index 927124daf73fe..b9a1999b231e4 100644 --- a/api_docs/kbn_key_value_metadata_table.mdx +++ b/api_docs/kbn_key_value_metadata_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-key-value-metadata-table title: "@kbn/key-value-metadata-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/key-value-metadata-table plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/key-value-metadata-table'] --- import kbnKeyValueMetadataTableObj from './kbn_key_value_metadata_table.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 0e28ad89be3fd..64d88cdb94f9f 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation.mdx b/api_docs/kbn_language_documentation.mdx index fa39d9bcd4ca3..32dac0586bbe9 100644 --- a/api_docs/kbn_language_documentation.mdx +++ b/api_docs/kbn_language_documentation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation title: "@kbn/language-documentation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation'] --- import kbnLanguageDocumentationObj from './kbn_language_documentation.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index cbb2088dc1ba3..00c83c50d2276 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx index 7799bff8a8a86..8ab5b2e626524 100644 --- a/api_docs/kbn_lens_formula_docs.mdx +++ b/api_docs/kbn_lens_formula_docs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-formula-docs title: "@kbn/lens-formula-docs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-formula-docs plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-formula-docs'] --- import kbnLensFormulaDocsObj from './kbn_lens_formula_docs.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 2a8c5e6b3f0b7..efc33e68c62b3 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index 7a45c5079a012..5d887c66f3cdf 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_logs_overview.mdx b/api_docs/kbn_logs_overview.mdx index df010f9418088..8df78788685b1 100644 --- a/api_docs/kbn_logs_overview.mdx +++ b/api_docs/kbn_logs_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logs-overview title: "@kbn/logs-overview" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logs-overview plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logs-overview'] --- import kbnLogsOverviewObj from './kbn_logs_overview.devdocs.json'; diff --git a/api_docs/kbn_managed_content_badge.mdx b/api_docs/kbn_managed_content_badge.mdx index d1dab57c9b006..2b60637228227 100644 --- a/api_docs/kbn_managed_content_badge.mdx +++ b/api_docs/kbn_managed_content_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-content-badge title: "@kbn/managed-content-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-content-badge plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-content-badge'] --- import kbnManagedContentBadgeObj from './kbn_managed_content_badge.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index 608c11ed4543d..9c14a467c26b0 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index d9998d08256f2..f6d014c546727 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 98c709854116d..63ae6837ca1c7 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index e5e381570cebe..c804560379d6a 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index da9d0294c5ecf..e627019c22444 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index 73297d6d71c3a..88f49d6187bdd 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index 07472281755b4..370e3d423a331 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index 630fc12789fe3..a2f267f757fc9 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index 6c775d2dbfaa7..e7c87edebfa3b 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 02211caa5ea12..cbda232c8c43b 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index 11291aba5a9a5..1e47ebac7281d 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index e1071b45722ed..e3f6f23914b5d 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 53058ce8fadc8..8aa1ac8cf5337 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_manifest.mdx b/api_docs/kbn_manifest.mdx index 360b22c278f86..d036fcef36168 100644 --- a/api_docs/kbn_manifest.mdx +++ b/api_docs/kbn_manifest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-manifest title: "@kbn/manifest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/manifest plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/manifest'] --- import kbnManifestObj from './kbn_manifest.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index ea83bd08d3a33..e81d5a4cfc1f7 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx index 99d19553cda1e..e12c0a89c4448 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index a7e5aba2573d8..a70dff6460a07 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index 37eb6633a6fe4..0d441b1196a03 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_cancellable_search.mdx b/api_docs/kbn_ml_cancellable_search.mdx index 48363fdf3fbac..f078c98b27b2b 100644 --- a/api_docs/kbn_ml_cancellable_search.mdx +++ b/api_docs/kbn_ml_cancellable_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-cancellable-search title: "@kbn/ml-cancellable-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-cancellable-search plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-cancellable-search'] --- import kbnMlCancellableSearchObj from './kbn_ml_cancellable_search.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 5cf588375977a..b217bfcae02b6 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index e0e65e0ea89bc..3b15e857ba7ce 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 1803df5e02f0d..16c0cb5c60a62 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils'] --- import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx index e406aaec2a198..c456b5233846d 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid'] --- import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index 2867f369b7b18..8271881f64d0d 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx index dece8df174dea..1f23cad7182b1 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils'] --- import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx index 6bffcb4874fe9..dcdf8d58a07fc 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_field_stats_flyout.mdx b/api_docs/kbn_ml_field_stats_flyout.mdx index aff5d0028caa7..36c075920f066 100644 --- a/api_docs/kbn_ml_field_stats_flyout.mdx +++ b/api_docs/kbn_ml_field_stats_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-field-stats-flyout title: "@kbn/ml-field-stats-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-field-stats-flyout plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-field-stats-flyout'] --- import kbnMlFieldStatsFlyoutObj from './kbn_ml_field_stats_flyout.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx index f2c2eb67d57eb..4b754498aa0e2 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] --- import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index 2d1019a868905..a3bd6d877be67 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined'] --- import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index 092c1ad365a5a..23ae9788308fb 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index 0fb291909f3ae..4ff09b7a764d8 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage'] --- import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json'; diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx index a86ffd699a18f..6316893fd9a17 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property'] --- import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json'; diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx index f6e76ec29ca9f..5061f77deb9a4 100644 --- a/api_docs/kbn_ml_number_utils.mdx +++ b/api_docs/kbn_ml_number_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils title: "@kbn/ml-number-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-number-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_parse_interval.mdx b/api_docs/kbn_ml_parse_interval.mdx index 3ce1932a5d9ac..d93dfdc4352e9 100644 --- a/api_docs/kbn_ml_parse_interval.mdx +++ b/api_docs/kbn_ml_parse_interval.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-parse-interval title: "@kbn/ml-parse-interval" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-parse-interval plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-parse-interval'] --- import kbnMlParseIntervalObj from './kbn_ml_parse_interval.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index c7987f3a34f04..de1007f97940c 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils'] --- import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx index 69c690ad761b5..4d455bec8ab21 100644 --- a/api_docs/kbn_ml_random_sampler_utils.mdx +++ b/api_docs/kbn_ml_random_sampler_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils title: "@kbn/ml-random-sampler-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-random-sampler-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils'] --- import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx index 4e4e3f0ab0a78..373d0ea917ae4 100644 --- a/api_docs/kbn_ml_route_utils.mdx +++ b/api_docs/kbn_ml_route_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils title: "@kbn/ml-route-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-route-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils'] --- import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx index bf00da18042a3..01560e15502d2 100644 --- a/api_docs/kbn_ml_runtime_field_utils.mdx +++ b/api_docs/kbn_ml_runtime_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils title: "@kbn/ml-runtime-field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-runtime-field-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils'] --- import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index daf1764cbcf85..9a501c4ff0eaa 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_time_buckets.mdx b/api_docs/kbn_ml_time_buckets.mdx index b01f45a6f6273..00f495efbc6e7 100644 --- a/api_docs/kbn_ml_time_buckets.mdx +++ b/api_docs/kbn_ml_time_buckets.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-time-buckets title: "@kbn/ml-time-buckets" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-time-buckets plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-time-buckets'] --- import kbnMlTimeBucketsObj from './kbn_ml_time_buckets.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index 587b3ae886b67..35b25919369c6 100644 --- a/api_docs/kbn_ml_trained_models_utils.mdx +++ b/api_docs/kbn_ml_trained_models_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils title: "@kbn/ml-trained-models-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-trained-models-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index bf81f8ccf09d2..42f111518aaa7 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 40fdd4a82300b..bd80285c0b308 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_ml_validators.mdx b/api_docs/kbn_ml_validators.mdx index f3f0d62385c95..4805e519d8299 100644 --- a/api_docs/kbn_ml_validators.mdx +++ b/api_docs/kbn_ml_validators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-validators title: "@kbn/ml-validators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-validators plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-validators'] --- import kbnMlValidatorsObj from './kbn_ml_validators.devdocs.json'; diff --git a/api_docs/kbn_mock_idp_utils.mdx b/api_docs/kbn_mock_idp_utils.mdx index 4f4908fc8dd4b..004cd41739cd8 100644 --- a/api_docs/kbn_mock_idp_utils.mdx +++ b/api_docs/kbn_mock_idp_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mock-idp-utils title: "@kbn/mock-idp-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mock-idp-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mock-idp-utils'] --- import kbnMockIdpUtilsObj from './kbn_mock_idp_utils.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index b0c9cf19a4383..03b85bcff30ed 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_utils.mdx b/api_docs/kbn_object_utils.mdx index 9a1854899ddf2..e434f4aa027cb 100644 --- a/api_docs/kbn_object_utils.mdx +++ b/api_docs/kbn_object_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-utils title: "@kbn/object-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-utils'] --- import kbnObjectUtilsObj from './kbn_object_utils.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 6ffa103c6d612..b817bdfa2c34c 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_object_versioning_utils.mdx b/api_docs/kbn_object_versioning_utils.mdx index e1cc52d5fef02..fd305514afa4a 100644 --- a/api_docs/kbn_object_versioning_utils.mdx +++ b/api_docs/kbn_object_versioning_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning-utils title: "@kbn/object-versioning-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning-utils'] --- import kbnObjectVersioningUtilsObj from './kbn_object_versioning_utils.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index 1e64934dc78c1..852f077176a83 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index 4dca007affae4..51d8739939f41 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index b15ab49bbb1be..5353f99352fba 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_observability_synthetics_test_data.mdx b/api_docs/kbn_observability_synthetics_test_data.mdx index c8c6d133a5753..7d990ad915123 100644 --- a/api_docs/kbn_observability_synthetics_test_data.mdx +++ b/api_docs/kbn_observability_synthetics_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-synthetics-test-data title: "@kbn/observability-synthetics-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-synthetics-test-data plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-synthetics-test-data'] --- import kbnObservabilitySyntheticsTestDataObj from './kbn_observability_synthetics_test_data.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index 5d988ac61263f..6e357027ee21b 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index 3f76c0ed5b43c..250c9820b8332 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index b3d2deffc8bf6..49151c92edeab 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index 280d3a878a2cf..b8a23eea99961 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index 686c5327ee4fa..fb5359479fcf8 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_palettes.mdx b/api_docs/kbn_palettes.mdx index 969e428b7d7a9..608e88db55f59 100644 --- a/api_docs/kbn_palettes.mdx +++ b/api_docs/kbn_palettes.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-palettes title: "@kbn/palettes" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/palettes plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/palettes'] --- import kbnPalettesObj from './kbn_palettes.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index 2b53fb0f1641c..c9a0875b9057d 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 146815c1ee2c7..dbe6440d5b941 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_check.mdx b/api_docs/kbn_plugin_check.mdx index 029023355cd51..dd951f8c6d856 100644 --- a/api_docs/kbn_plugin_check.mdx +++ b/api_docs/kbn_plugin_check.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-check title: "@kbn/plugin-check" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-check plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-check'] --- import kbnPluginCheckObj from './kbn_plugin_check.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index c234781db2d05..4296fdd73ac10 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index 307c92496b38d..a50281263cdc1 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_presentation_containers.mdx b/api_docs/kbn_presentation_containers.mdx index 01d6c168c4f7e..db9132c963fce 100644 --- a/api_docs/kbn_presentation_containers.mdx +++ b/api_docs/kbn_presentation_containers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-containers title: "@kbn/presentation-containers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-containers plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-containers'] --- import kbnPresentationContainersObj from './kbn_presentation_containers.devdocs.json'; diff --git a/api_docs/kbn_presentation_publishing.mdx b/api_docs/kbn_presentation_publishing.mdx index 8549342fb72b7..65a38d571327d 100644 --- a/api_docs/kbn_presentation_publishing.mdx +++ b/api_docs/kbn_presentation_publishing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-publishing title: "@kbn/presentation-publishing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-publishing plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-publishing'] --- import kbnPresentationPublishingObj from './kbn_presentation_publishing.devdocs.json'; diff --git a/api_docs/kbn_product_doc_artifact_builder.mdx b/api_docs/kbn_product_doc_artifact_builder.mdx index 1a03df3cca3f2..c86c5bd6d519c 100644 --- a/api_docs/kbn_product_doc_artifact_builder.mdx +++ b/api_docs/kbn_product_doc_artifact_builder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-product-doc-artifact-builder title: "@kbn/product-doc-artifact-builder" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/product-doc-artifact-builder plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/product-doc-artifact-builder'] --- import kbnProductDocArtifactBuilderObj from './kbn_product_doc_artifact_builder.devdocs.json'; diff --git a/api_docs/kbn_product_doc_common.mdx b/api_docs/kbn_product_doc_common.mdx index e6d11ef5b75a2..e63e501915a5e 100644 --- a/api_docs/kbn_product_doc_common.mdx +++ b/api_docs/kbn_product_doc_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-product-doc-common title: "@kbn/product-doc-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/product-doc-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/product-doc-common'] --- import kbnProductDocCommonObj from './kbn_product_doc_common.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 9c0f0b52599d3..8e1f3669a3a3c 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 7edef4ae54d24..8b6a35125a3a0 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling'] --- import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index cc63ee878d1c2..d03a7b53f8e65 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_hooks.mdx b/api_docs/kbn_react_hooks.mdx index e599c6ff2deb9..42879b6132198 100644 --- a/api_docs/kbn_react_hooks.mdx +++ b/api_docs/kbn_react_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-hooks title: "@kbn/react-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-hooks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-hooks'] --- import kbnReactHooksObj from './kbn_react_hooks.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index 1015aea583557..e2c12e66a4ce1 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index 6463852f574b8..edb71612ec3a8 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index 7afae04e08e1e..e22b87aaac79f 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index 3d37d28437a30..82d6cb83d87b3 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index efaf636d1a8f5..9e55007c14c9c 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index 5e2b22e4fb80a..7fc88b5a74fdc 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_react_mute_legacy_root_warning.mdx b/api_docs/kbn_react_mute_legacy_root_warning.mdx index 5fca11d8cc9ce..5f040e9efaead 100644 --- a/api_docs/kbn_react_mute_legacy_root_warning.mdx +++ b/api_docs/kbn_react_mute_legacy_root_warning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-mute-legacy-root-warning title: "@kbn/react-mute-legacy-root-warning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-mute-legacy-root-warning plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-mute-legacy-root-warning'] --- import kbnReactMuteLegacyRootWarningObj from './kbn_react_mute_legacy_root_warning.devdocs.json'; diff --git a/api_docs/kbn_recently_accessed.mdx b/api_docs/kbn_recently_accessed.mdx index 223465a7029b5..5d398cf9c1667 100644 --- a/api_docs/kbn_recently_accessed.mdx +++ b/api_docs/kbn_recently_accessed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-recently-accessed title: "@kbn/recently-accessed" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/recently-accessed plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/recently-accessed'] --- import kbnRecentlyAccessedObj from './kbn_recently_accessed.devdocs.json'; diff --git a/api_docs/kbn_relocate.mdx b/api_docs/kbn_relocate.mdx index 0e4c15d74ed6f..bf7a03207a782 100644 --- a/api_docs/kbn_relocate.mdx +++ b/api_docs/kbn_relocate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-relocate title: "@kbn/relocate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/relocate plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/relocate'] --- import kbnRelocateObj from './kbn_relocate.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index d9abd01b116a4..64ec82176a96f 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index 9803639f54af1..0affafd8702f8 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index 2f251b67ca4ad..0e8590a747bab 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index a38346a6b95ee..cf1a0dab837b2 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx index d9f0bf2e28136..c5f271be2449d 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_csv_share_panel.mdx b/api_docs/kbn_reporting_csv_share_panel.mdx index 8815dafe7cd81..02d7bce94165a 100644 --- a/api_docs/kbn_reporting_csv_share_panel.mdx +++ b/api_docs/kbn_reporting_csv_share_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-csv-share-panel title: "@kbn/reporting-csv-share-panel" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-csv-share-panel plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-csv-share-panel'] --- import kbnReportingCsvSharePanelObj from './kbn_reporting_csv_share_panel.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index 958cafa3a40b2..c2b19be9d2573 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index d3bc01ae487ec..7387e7821230c 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index 76d7ca9e47274..a8a5e328c468a 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index 8cf378ba11f4d..855ebd8392ebf 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index 712f3d70b1e4a..800504ec2f89a 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index 272bba0eaca5e..88363e967e7f9 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index 106329a469304..797b3566dc703 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index 3059c674a81d3..28e389e718512 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index 4292547b0f04c..66b798bc6817c 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index 5142debe24c2b..38553bfa8ab61 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_response_ops_alerts_fields_browser.mdx b/api_docs/kbn_response_ops_alerts_fields_browser.mdx index 12db52c0965bb..27f7b43caa4cb 100644 --- a/api_docs/kbn_response_ops_alerts_fields_browser.mdx +++ b/api_docs/kbn_response_ops_alerts_fields_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-alerts-fields-browser title: "@kbn/response-ops-alerts-fields-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-alerts-fields-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-alerts-fields-browser'] --- import kbnResponseOpsAlertsFieldsBrowserObj from './kbn_response_ops_alerts_fields_browser.devdocs.json'; diff --git a/api_docs/kbn_response_ops_alerts_table.mdx b/api_docs/kbn_response_ops_alerts_table.mdx index 28025b8721701..7d99af0f000e3 100644 --- a/api_docs/kbn_response_ops_alerts_table.mdx +++ b/api_docs/kbn_response_ops_alerts_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-alerts-table title: "@kbn/response-ops-alerts-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-alerts-table plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-alerts-table'] --- import kbnResponseOpsAlertsTableObj from './kbn_response_ops_alerts_table.devdocs.json'; diff --git a/api_docs/kbn_response_ops_rule_form.mdx b/api_docs/kbn_response_ops_rule_form.mdx index f41654781c1f3..5a6ac5ae8fd51 100644 --- a/api_docs/kbn_response_ops_rule_form.mdx +++ b/api_docs/kbn_response_ops_rule_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-rule-form title: "@kbn/response-ops-rule-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-rule-form plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-rule-form'] --- import kbnResponseOpsRuleFormObj from './kbn_response_ops_rule_form.devdocs.json'; diff --git a/api_docs/kbn_response_ops_rule_params.mdx b/api_docs/kbn_response_ops_rule_params.mdx index 379b17bdf57f5..1650b81fa669c 100644 --- a/api_docs/kbn_response_ops_rule_params.mdx +++ b/api_docs/kbn_response_ops_rule_params.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-rule-params title: "@kbn/response-ops-rule-params" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-rule-params plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-rule-params'] --- import kbnResponseOpsRuleParamsObj from './kbn_response_ops_rule_params.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 3b9d60245f7f1..487176bff6829 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rollup.mdx b/api_docs/kbn_rollup.mdx index d8a60619e94d4..2acb637e0b064 100644 --- a/api_docs/kbn_rollup.mdx +++ b/api_docs/kbn_rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rollup title: "@kbn/rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rollup plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rollup'] --- import kbnRollupObj from './kbn_rollup.devdocs.json'; diff --git a/api_docs/kbn_router_to_openapispec.mdx b/api_docs/kbn_router_to_openapispec.mdx index c4e0104af9672..057fb38c5b0aa 100644 --- a/api_docs/kbn_router_to_openapispec.mdx +++ b/api_docs/kbn_router_to_openapispec.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-to-openapispec title: "@kbn/router-to-openapispec" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-to-openapispec plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-to-openapispec'] --- import kbnRouterToOpenapispecObj from './kbn_router_to_openapispec.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index b488e76e33f88..810252e161c78 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index db2d846973a74..a2563fc1b715f 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 095ff108c05c8..5a95a8a7398fd 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx index 5eaaa59a52af7..99d663c53364f 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_saved_search_component.mdx b/api_docs/kbn_saved_search_component.mdx index 0365acd8ad044..5c55c97d05682 100644 --- a/api_docs/kbn_saved_search_component.mdx +++ b/api_docs/kbn_saved_search_component.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-search-component title: "@kbn/saved-search-component" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-search-component plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-search-component'] --- import kbnSavedSearchComponentObj from './kbn_saved_search_component.devdocs.json'; diff --git a/api_docs/kbn_scout.mdx b/api_docs/kbn_scout.mdx index 985d7e1c17e6f..0ae4186e0abf8 100644 --- a/api_docs/kbn_scout.mdx +++ b/api_docs/kbn_scout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout title: "@kbn/scout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout'] --- import kbnScoutObj from './kbn_scout.devdocs.json'; diff --git a/api_docs/kbn_scout_info.mdx b/api_docs/kbn_scout_info.mdx index 69deed3974163..2a2b4237ff928 100644 --- a/api_docs/kbn_scout_info.mdx +++ b/api_docs/kbn_scout_info.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-info title: "@kbn/scout-info" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-info plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-info'] --- import kbnScoutInfoObj from './kbn_scout_info.devdocs.json'; diff --git a/api_docs/kbn_scout_oblt.mdx b/api_docs/kbn_scout_oblt.mdx index e5c9fe29eed65..5dcf208c3c356 100644 --- a/api_docs/kbn_scout_oblt.mdx +++ b/api_docs/kbn_scout_oblt.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-oblt title: "@kbn/scout-oblt" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-oblt plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-oblt'] --- import kbnScoutObltObj from './kbn_scout_oblt.devdocs.json'; diff --git a/api_docs/kbn_scout_reporting.mdx b/api_docs/kbn_scout_reporting.mdx index e0f10b3213dde..51d0637d69825 100644 --- a/api_docs/kbn_scout_reporting.mdx +++ b/api_docs/kbn_scout_reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-reporting title: "@kbn/scout-reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-reporting plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-reporting'] --- import kbnScoutReportingObj from './kbn_scout_reporting.devdocs.json'; diff --git a/api_docs/kbn_screenshotting_server.mdx b/api_docs/kbn_screenshotting_server.mdx index 2cc4f5018e9ca..1d25f960f3d15 100644 --- a/api_docs/kbn_screenshotting_server.mdx +++ b/api_docs/kbn_screenshotting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-screenshotting-server title: "@kbn/screenshotting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/screenshotting-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/screenshotting-server'] --- import kbnScreenshottingServerObj from './kbn_screenshotting_server.devdocs.json'; diff --git a/api_docs/kbn_search_api_keys_components.mdx b/api_docs/kbn_search_api_keys_components.mdx index 6a29421207a6d..19b27e71ed273 100644 --- a/api_docs/kbn_search_api_keys_components.mdx +++ b/api_docs/kbn_search_api_keys_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-keys-components title: "@kbn/search-api-keys-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-keys-components plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-keys-components'] --- import kbnSearchApiKeysComponentsObj from './kbn_search_api_keys_components.devdocs.json'; diff --git a/api_docs/kbn_search_api_keys_server.mdx b/api_docs/kbn_search_api_keys_server.mdx index 1ae491d5b5599..dae83b17cf995 100644 --- a/api_docs/kbn_search_api_keys_server.mdx +++ b/api_docs/kbn_search_api_keys_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-keys-server title: "@kbn/search-api-keys-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-keys-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-keys-server'] --- import kbnSearchApiKeysServerObj from './kbn_search_api_keys_server.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 56eb8a67c0534..547f65f5445c7 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index fea32976a1731..bd40356af2a79 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index 64f015a84d0b3..0cbed3acb7e48 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index 6bc65b5eea9fc..39bda33d81015 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index 4289242ba1696..863f283459778 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_search_shared_ui.mdx b/api_docs/kbn_search_shared_ui.mdx index 0204067a03279..9b56b8f2155f5 100644 --- a/api_docs/kbn_search_shared_ui.mdx +++ b/api_docs/kbn_search_shared_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-shared-ui title: "@kbn/search-shared-ui" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-shared-ui plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-shared-ui'] --- import kbnSearchSharedUiObj from './kbn_search_shared_ui.devdocs.json'; diff --git a/api_docs/kbn_search_types.mdx b/api_docs/kbn_search_types.mdx index cf131295f5b2e..7e15d1315227a 100644 --- a/api_docs/kbn_search_types.mdx +++ b/api_docs/kbn_search_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-types title: "@kbn/search-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-types'] --- import kbnSearchTypesObj from './kbn_search_types.devdocs.json'; diff --git a/api_docs/kbn_security_ai_prompts.mdx b/api_docs/kbn_security_ai_prompts.mdx index b399e31960693..f6223f7da3db9 100644 --- a/api_docs/kbn_security_ai_prompts.mdx +++ b/api_docs/kbn_security_ai_prompts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-ai-prompts title: "@kbn/security-ai-prompts" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-ai-prompts plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-ai-prompts'] --- import kbnSecurityAiPromptsObj from './kbn_security_ai_prompts.devdocs.json'; diff --git a/api_docs/kbn_security_api_key_management.mdx b/api_docs/kbn_security_api_key_management.mdx index d79545ea9104b..be1f65e7acf3e 100644 --- a/api_docs/kbn_security_api_key_management.mdx +++ b/api_docs/kbn_security_api_key_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-api-key-management title: "@kbn/security-api-key-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-api-key-management plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-api-key-management'] --- import kbnSecurityApiKeyManagementObj from './kbn_security_api_key_management.devdocs.json'; diff --git a/api_docs/kbn_security_authorization_core.mdx b/api_docs/kbn_security_authorization_core.mdx index 4889dc7fa71e7..2ea7e6eb10eb1 100644 --- a/api_docs/kbn_security_authorization_core.mdx +++ b/api_docs/kbn_security_authorization_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-authorization-core title: "@kbn/security-authorization-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-authorization-core plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-authorization-core'] --- import kbnSecurityAuthorizationCoreObj from './kbn_security_authorization_core.devdocs.json'; diff --git a/api_docs/kbn_security_authorization_core_common.mdx b/api_docs/kbn_security_authorization_core_common.mdx index ebb3b49aefedd..114c3b02d7324 100644 --- a/api_docs/kbn_security_authorization_core_common.mdx +++ b/api_docs/kbn_security_authorization_core_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-authorization-core-common title: "@kbn/security-authorization-core-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-authorization-core-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-authorization-core-common'] --- import kbnSecurityAuthorizationCoreCommonObj from './kbn_security_authorization_core_common.devdocs.json'; diff --git a/api_docs/kbn_security_form_components.mdx b/api_docs/kbn_security_form_components.mdx index c55c9953463b1..ea58fc53d0252 100644 --- a/api_docs/kbn_security_form_components.mdx +++ b/api_docs/kbn_security_form_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-form-components title: "@kbn/security-form-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-form-components plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-form-components'] --- import kbnSecurityFormComponentsObj from './kbn_security_form_components.devdocs.json'; diff --git a/api_docs/kbn_security_hardening.mdx b/api_docs/kbn_security_hardening.mdx index 7084e3633ea63..70f908cf04324 100644 --- a/api_docs/kbn_security_hardening.mdx +++ b/api_docs/kbn_security_hardening.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-hardening title: "@kbn/security-hardening" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-hardening plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-hardening'] --- import kbnSecurityHardeningObj from './kbn_security_hardening.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index e257be56e7b92..84f8e637f4675 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index f9028dd871ebf..b6e0784c1b4a2 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index 4722e4003b6b0..5c42c9d1cbaa5 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_role_management_model.mdx b/api_docs/kbn_security_role_management_model.mdx index b5de2a2368895..2c6f35723dba7 100644 --- a/api_docs/kbn_security_role_management_model.mdx +++ b/api_docs/kbn_security_role_management_model.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-role-management-model title: "@kbn/security-role-management-model" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-role-management-model plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-role-management-model'] --- import kbnSecurityRoleManagementModelObj from './kbn_security_role_management_model.devdocs.json'; diff --git a/api_docs/kbn_security_solution_connectors.mdx b/api_docs/kbn_security_solution_connectors.mdx index fb5236a9cc3f0..f797567e2002b 100644 --- a/api_docs/kbn_security_solution_connectors.mdx +++ b/api_docs/kbn_security_solution_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-connectors title: "@kbn/security-solution-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-connectors plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-connectors'] --- import kbnSecuritySolutionConnectorsObj from './kbn_security_solution_connectors.devdocs.json'; diff --git a/api_docs/kbn_security_solution_distribution_bar.mdx b/api_docs/kbn_security_solution_distribution_bar.mdx index 9093f63daeab8..111ec887e388f 100644 --- a/api_docs/kbn_security_solution_distribution_bar.mdx +++ b/api_docs/kbn_security_solution_distribution_bar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-distribution-bar title: "@kbn/security-solution-distribution-bar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-distribution-bar plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-distribution-bar'] --- import kbnSecuritySolutionDistributionBarObj from './kbn_security_solution_distribution_bar.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index de20995c1f8a0..1cb84f3a6824f 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index cf3400ab99bb2..473c5c7431fa1 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index f8aac879da345..63668d562c2c9 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index 3600a1c0e0d5d..0f9108b57547e 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_security_ui_components.mdx b/api_docs/kbn_security_ui_components.mdx index efadf550ddeb9..df9358a13d011 100644 --- a/api_docs/kbn_security_ui_components.mdx +++ b/api_docs/kbn_security_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-ui-components title: "@kbn/security-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-ui-components plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-ui-components'] --- import kbnSecurityUiComponentsObj from './kbn_security_ui_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 3d90961e11dcf..e4b33e25d6dcf 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx index d2b5f9ec7e5ad..0c5c5fc2ec461 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 89619112fc7d1..24d57dfd2c4cf 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index fa5cfcdfc16ac..dbb03c850ca9f 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index dfda36be692d7..23645d0f148c9 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 80d8c15fb41ba..4a69e5c5cd8ee 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index ac9b4aec59a06..7b11fda3ee982 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,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 description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index d3d4b0e560f7d..f04f456d95732 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,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 description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 518e40b038a26..1bf19297896e2 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index 29a6d6b1efa5b..f11a87ba28fa0 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index 4e1dcd695afda..ce435eeba37b7 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index 99908425df32b..12b6846abfed8 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index 19ff5b1e250f4..e836543c5c0b7 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index 58d06f5e64c86..34a61ac35d155 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index 6d642ae6f57ad..e78da0d6dcb95 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 032903dd352f8..75144696b31f7 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 5ecf167fcf679..7e9b58a04f587 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index f1cc83a7dd1e6..8c8f72b20881f 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index 67df9084a8dcc..f96391e5227b9 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_client.mdx b/api_docs/kbn_server_route_repository_client.mdx index e647c17dc3963..ea37eeb753cf3 100644 --- a/api_docs/kbn_server_route_repository_client.mdx +++ b/api_docs/kbn_server_route_repository_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-client title: "@kbn/server-route-repository-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-client plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-client'] --- import kbnServerRouteRepositoryClientObj from './kbn_server_route_repository_client.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_utils.mdx b/api_docs/kbn_server_route_repository_utils.mdx index 7ab4e197f3a6f..10c405f695ca0 100644 --- a/api_docs/kbn_server_route_repository_utils.mdx +++ b/api_docs/kbn_server_route_repository_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-utils title: "@kbn/server-route-repository-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-utils'] --- import kbnServerRouteRepositoryUtilsObj from './kbn_server_route_repository_utils.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index 0db45d7f2294a..3dac714923edc 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index 30d2b0f2bbecc..81131ecdc686d 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index 17801d617e35d..660a99ddc90b2 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index b335178cef121..35d187a8e29cc 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index d20e13ca75312..c6c06f9ba4435 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config'] --- import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index 589ed7792bf8b..6127f34b71351 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index 7db1690bdda0b..ce63365fc8e8d 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index e769cf6e04687..fbd5de9c4c21c 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index a9d844be46366..cca9c2097bec1 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index 5f33fc6cf02f9..dfbc5aa22730f 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,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 description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index e7c40ee18aa1c..e3904480e9a3f 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx index ceb2fdf8dd459..cb6325b34eb78 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index 6283197a37eae..bbd826c6e018d 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index ca2aa6f25c6cf..0fafd862eaf53 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index 1e15a3db90746..42f1d1dc3d807 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index 28fe638962a0b..0988414e799eb 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index 72627070d6b0f..b6315cfa985dd 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index 1c325a1cb5925..d5b0b769f067e 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index e004d104059a0..26cc056c567d4 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types'] --- import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index c613557720f9d..16f4de8aca0fb 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index bf4e432a0eb8e..4e6c3cf1dbfbb 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index 864f5b2ad9ad2..522e72952796d 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index fba237078b508..384b7023ec569 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index f83de2ca347ec..cde96dc329f04 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index b928db8858d58..9ae91ecef4b6a 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json'; 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 ff90e2258b6f7..3d84b1cfe2c8b 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,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 description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index ad57ac90f42ac..21f30ab1f25ab 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; 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 c82c130a9b298..d7d1d7ee42575 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,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 description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index fbc3766a6296c..0acbfcfad2028 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index b1dfc596fda0f..6db203872ce0d 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index 807616c96dd92..ac1ee11581d7f 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index 46a616f6a1d53..a1fa531e22b18 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index 9913e7a2a7566..f0c8f38c39cf5 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index 5e44544a6e5b0..8f4560e0e70a7 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index 0d0bb9c1b49d8..4fa824855ad31 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index ca353460b4462..6a66d6416fda1 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; 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 4f7fbd9614686..d0e3702f7d370 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,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 description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index da6ce4867b510..61f61f4e91d17 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index 63024d16c6aff..cc1c183fcf7e9 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index 7f3af56b7aedf..8c1edc886e052 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index 58d7fd0446aca..6f1c11c4f9757 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index 213bb268390ed..e17990b9ff1a3 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 22ed9535648ec..43c86a004bb3d 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_tabbed_modal.mdx b/api_docs/kbn_shared_ux_tabbed_modal.mdx index e9b61f1b25bab..fd39ff613c053 100644 --- a/api_docs/kbn_shared_ux_tabbed_modal.mdx +++ b/api_docs/kbn_shared_ux_tabbed_modal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-tabbed-modal title: "@kbn/shared-ux-tabbed-modal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-tabbed-modal plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-tabbed-modal'] --- import kbnSharedUxTabbedModalObj from './kbn_shared_ux_tabbed_modal.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_table_persist.mdx b/api_docs/kbn_shared_ux_table_persist.mdx index 72d70cd187169..460125715e0a2 100644 --- a/api_docs/kbn_shared_ux_table_persist.mdx +++ b/api_docs/kbn_shared_ux_table_persist.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-table-persist title: "@kbn/shared-ux-table-persist" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-table-persist plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-table-persist'] --- import kbnSharedUxTablePersistObj from './kbn_shared_ux_table_persist.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 0d7a56eb0d47e..607a271b87488 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index f79fc9af6dc91..b2c710b164609 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index f1cd6abefab33..05aca15611f9a 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_predicates.mdx b/api_docs/kbn_sort_predicates.mdx index 91608b27b865f..c9a8c2838b50e 100644 --- a/api_docs/kbn_sort_predicates.mdx +++ b/api_docs/kbn_sort_predicates.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-predicates title: "@kbn/sort-predicates" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sort-predicates plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-predicates'] --- import kbnSortPredicatesObj from './kbn_sort_predicates.devdocs.json'; diff --git a/api_docs/kbn_sse_utils.mdx b/api_docs/kbn_sse_utils.mdx index dafa095994eb1..f91b189ab30c8 100644 --- a/api_docs/kbn_sse_utils.mdx +++ b/api_docs/kbn_sse_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils title: "@kbn/sse-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils'] --- import kbnSseUtilsObj from './kbn_sse_utils.devdocs.json'; diff --git a/api_docs/kbn_sse_utils_client.mdx b/api_docs/kbn_sse_utils_client.mdx index c3afcac3dc477..a0d1c6b41540e 100644 --- a/api_docs/kbn_sse_utils_client.mdx +++ b/api_docs/kbn_sse_utils_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils-client title: "@kbn/sse-utils-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils-client plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils-client'] --- import kbnSseUtilsClientObj from './kbn_sse_utils_client.devdocs.json'; diff --git a/api_docs/kbn_sse_utils_server.mdx b/api_docs/kbn_sse_utils_server.mdx index 7cf2b2ad0b5cf..58a2d28d5218b 100644 --- a/api_docs/kbn_sse_utils_server.mdx +++ b/api_docs/kbn_sse_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils-server title: "@kbn/sse-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils-server plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils-server'] --- import kbnSseUtilsServerObj from './kbn_sse_utils_server.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index b142f49e79ff0..7816f4f39aa91 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index bc7fb7012c40d..481c75f9c2671 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index dade450c347a5..291ff4ba62416 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_streams_schema.mdx b/api_docs/kbn_streams_schema.mdx index e13dfa171683e..26120aceed0b9 100644 --- a/api_docs/kbn_streams_schema.mdx +++ b/api_docs/kbn_streams_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-streams-schema title: "@kbn/streams-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/streams-schema plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/streams-schema'] --- import kbnStreamsSchemaObj from './kbn_streams_schema.devdocs.json'; diff --git a/api_docs/kbn_synthetics_e2e.mdx b/api_docs/kbn_synthetics_e2e.mdx index 6a332d22791e8..f697a6b9f5eb7 100644 --- a/api_docs/kbn_synthetics_e2e.mdx +++ b/api_docs/kbn_synthetics_e2e.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-e2e title: "@kbn/synthetics-e2e" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-e2e plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-e2e'] --- import kbnSyntheticsE2eObj from './kbn_synthetics_e2e.devdocs.json'; diff --git a/api_docs/kbn_synthetics_private_location.mdx b/api_docs/kbn_synthetics_private_location.mdx index b21fb43a24e32..ecf24f4a32c65 100644 --- a/api_docs/kbn_synthetics_private_location.mdx +++ b/api_docs/kbn_synthetics_private_location.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-private-location title: "@kbn/synthetics-private-location" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-private-location plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-private-location'] --- import kbnSyntheticsPrivateLocationObj from './kbn_synthetics_private_location.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 3a179647ac075..43743f1db4695 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index caeb7387e2e8c..9c504e5da1cec 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_eui_helpers.mdx b/api_docs/kbn_test_eui_helpers.mdx index e5d4de9dcf18b..1760ea9cc0fd4 100644 --- a/api_docs/kbn_test_eui_helpers.mdx +++ b/api_docs/kbn_test_eui_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-eui-helpers title: "@kbn/test-eui-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-eui-helpers plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-eui-helpers'] --- import kbnTestEuiHelpersObj from './kbn_test_eui_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 0032e93c8a5d1..0dae4b1574a0b 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index f646c8a7cdc56..5514c6d272a31 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_timerange.mdx b/api_docs/kbn_timerange.mdx index ecdb14e6cd1ea..d5c4833d82467 100644 --- a/api_docs/kbn_timerange.mdx +++ b/api_docs/kbn_timerange.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-timerange title: "@kbn/timerange" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/timerange plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/timerange'] --- import kbnTimerangeObj from './kbn_timerange.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 783f9cd189898..fece6a646694f 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_transpose_utils.mdx b/api_docs/kbn_transpose_utils.mdx index 4ad7a55e89c2b..ceb8fa7c29590 100644 --- a/api_docs/kbn_transpose_utils.mdx +++ b/api_docs/kbn_transpose_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-transpose-utils title: "@kbn/transpose-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/transpose-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/transpose-utils'] --- import kbnTransposeUtilsObj from './kbn_transpose_utils.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index f80d934de75f3..81803f267b2e6 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_try_in_console.mdx b/api_docs/kbn_try_in_console.mdx index 8caece85b0586..2c24cddca9b02 100644 --- a/api_docs/kbn_try_in_console.mdx +++ b/api_docs/kbn_try_in_console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-try-in-console title: "@kbn/try-in-console" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/try-in-console plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/try-in-console'] --- import kbnTryInConsoleObj from './kbn_try_in_console.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 03e8c41723382..85b4c4944bc2d 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index 0c646d1b391e7..a3a32adad69d2 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index 88896124a1b19..c8fb393e91fd1 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index e20bb014b5fb1..e7c2a03340b4e 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 032c17d9b12af..730b5dcde3413 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index b5539201f8a8c..02050fc884400 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 1f6451c0b0690..7a4657256803b 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index d32ba03b05078..1d46c83ee8c3a 100644 --- a/api_docs/kbn_unified_field_list.mdx +++ b/api_docs/kbn_unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list title: "@kbn/unified-field-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-field-list plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index 2480272f70516..d5503fc6fe950 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_prompt.mdx b/api_docs/kbn_unsaved_changes_prompt.mdx index 8a8213445f1c6..55850a781cb55 100644 --- a/api_docs/kbn_unsaved_changes_prompt.mdx +++ b/api_docs/kbn_unsaved_changes_prompt.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-prompt title: "@kbn/unsaved-changes-prompt" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-prompt plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-prompt'] --- import kbnUnsavedChangesPromptObj from './kbn_unsaved_changes_prompt.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 305a707e7e679..4228d9cda76e3 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 93f2a38b05256..f1d85fddd5eff 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index 8aad614ff31e2..212d95faebedb 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index c9bd28cb0be8a..0999c98b8423f 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 5b1940e64114a..511df0fbc6c77 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index 9583f8028288a..89152e0bba2bb 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index b8f5872d4ca43..7baacddaa9bc3 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index dfc240aa59ec6..06171f127e84e 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 28cff2381fb9b..f07d830fcd9e0 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod.mdx b/api_docs/kbn_zod.mdx index 459c14a06ef2e..03af381cef84b 100644 --- a/api_docs/kbn_zod.mdx +++ b/api_docs/kbn_zod.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod title: "@kbn/zod" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod'] --- import kbnZodObj from './kbn_zod.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index 1888cca304afc..df9f588c66246 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 8e988cd0ae264..c21c8dea2733e 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index b3757d6e89312..7d523b753a605 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index fc2b801bd35b5..60482dfb2d6e2 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 35f95fc6fcb1c..b232fafb91559 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 0a8a077f5682f..6726df9c9df63 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index e1016fb0ac04d..fecc73e17d513 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 1539029f1d1d7..3ce549543cfdd 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index d1fbb897aa09e..771a77ebf09d2 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index c9aed02c80370..fb1fe083fa5b9 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/llm_tasks.mdx b/api_docs/llm_tasks.mdx index d72353b926701..35074322b311f 100644 --- a/api_docs/llm_tasks.mdx +++ b/api_docs/llm_tasks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/llmTasks title: "llmTasks" image: https://source.unsplash.com/400x175/?github description: API docs for the llmTasks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'llmTasks'] --- import llmTasksObj from './llm_tasks.devdocs.json'; diff --git a/api_docs/logs_data_access.mdx b/api_docs/logs_data_access.mdx index aaa916f612d9e..435e46a25b24a 100644 --- a/api_docs/logs_data_access.mdx +++ b/api_docs/logs_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsDataAccess title: "logsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the logsDataAccess plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsDataAccess'] --- import logsDataAccessObj from './logs_data_access.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 3e668af2f9fa7..df938b58e715a 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 00aad697d2d20..017ea6eb87881 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 027200cfb4a90..e1b4e3ba47ba5 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index 311ef354a2f8e..48fef2dc0adf5 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index cbe592389596e..98640515426ac 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 6e2b475a9487e..1e45e632c05fd 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index ac8bf8b8c1290..abab10b785ea5 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index d347b63529bb5..65d6c93b88230 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index cf2dbf0a03b0c..24a9d70c03eca 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index deeaab3c6807e..5af5101059bf8 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 69fc8fc620527..136dcddac8072 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index fbed146a3d4ce..60b017366e7e5 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 27db178802c21..107b93fe3d61b 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 41ee9af9e2ab0..a7ed09638b649 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index b865c7aa36dd4..11db85c694c4f 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant_app.mdx b/api_docs/observability_a_i_assistant_app.mdx index b10c48c6ca42d..afc0a2614c74c 100644 --- a/api_docs/observability_a_i_assistant_app.mdx +++ b/api_docs/observability_a_i_assistant_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistantApp title: "observabilityAIAssistantApp" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistantApp plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistantApp'] --- import observabilityAIAssistantAppObj from './observability_a_i_assistant_app.devdocs.json'; diff --git a/api_docs/observability_ai_assistant_management.mdx b/api_docs/observability_ai_assistant_management.mdx index 35ec0e2babf16..070bf6bad5ed2 100644 --- a/api_docs/observability_ai_assistant_management.mdx +++ b/api_docs/observability_ai_assistant_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAiAssistantManagement title: "observabilityAiAssistantManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAiAssistantManagement plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAiAssistantManagement'] --- import observabilityAiAssistantManagementObj from './observability_ai_assistant_management.devdocs.json'; diff --git a/api_docs/observability_logs_explorer.mdx b/api_docs/observability_logs_explorer.mdx index 26a08b25c7a76..151040e221047 100644 --- a/api_docs/observability_logs_explorer.mdx +++ b/api_docs/observability_logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogsExplorer title: "observabilityLogsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogsExplorer plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogsExplorer'] --- import observabilityLogsExplorerObj from './observability_logs_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index e30da80abd317..e38519ca06c95 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index 072010ea1f1fb..98b6c770f9b3e 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 4357508901a2d..85f75da9c574e 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index 2da1fb9bf7f14..d5627a5282ac9 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 075f4e5461ca1..c43cae1bd8d6b 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/presentation_panel.mdx b/api_docs/presentation_panel.mdx index 4b82e78348e28..b7764b56e3a52 100644 --- a/api_docs/presentation_panel.mdx +++ b/api_docs/presentation_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationPanel title: "presentationPanel" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationPanel plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationPanel'] --- import presentationPanelObj from './presentation_panel.devdocs.json'; diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index f5ef8d1507016..990183cf36c60 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/product_doc_base.mdx b/api_docs/product_doc_base.mdx index 2e5e099d47b22..379841e2a87e0 100644 --- a/api_docs/product_doc_base.mdx +++ b/api_docs/product_doc_base.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/productDocBase title: "productDocBase" image: https://source.unsplash.com/400x175/?github description: API docs for the productDocBase plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'productDocBase'] --- import productDocBaseObj from './product_doc_base.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 7eea4b17ee47f..eb1796384d2d4 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index 5fe383b246828..f49fc7d0dc6cf 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index ae34fd3352816..88f2fe0ee41b6 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index fbdfe8f4c8075..c77eeca55944d 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index ec4a30fea1d3f..4a22ba23fee61 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 66601b69a55c7..431377aa0a5e1 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index e2d20784eb461..0c29b3df3b877 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 0e298392fd4f3..a0e1aab0bde79 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index f265833edd0c3..88cde38fe8357 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 710fb26d7958c..49bcf7d3e6bc8 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 8227c69a9b856..d181d4ecf7d4d 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index 07c0a451b6c26..fdc950cad09d2 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index cb6f9cf097fbb..7948d02c27359 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index 627bb1c4a6d52..2710eed237da0 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index 175d0062edc2a..4cd4c117713ff 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/search_assistant.mdx b/api_docs/search_assistant.mdx index 2ada862734066..d08dc44926af1 100644 --- a/api_docs/search_assistant.mdx +++ b/api_docs/search_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchAssistant title: "searchAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the searchAssistant plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchAssistant'] --- import searchAssistantObj from './search_assistant.devdocs.json'; diff --git a/api_docs/search_connectors.mdx b/api_docs/search_connectors.mdx index 4512b68ce2a34..a9844f545f566 100644 --- a/api_docs/search_connectors.mdx +++ b/api_docs/search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchConnectors title: "searchConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the searchConnectors plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchConnectors'] --- import searchConnectorsObj from './search_connectors.devdocs.json'; diff --git a/api_docs/search_homepage.mdx b/api_docs/search_homepage.mdx index d1e3138df5e0f..37f3b61364a70 100644 --- a/api_docs/search_homepage.mdx +++ b/api_docs/search_homepage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchHomepage title: "searchHomepage" image: https://source.unsplash.com/400x175/?github description: API docs for the searchHomepage plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchHomepage'] --- import searchHomepageObj from './search_homepage.devdocs.json'; diff --git a/api_docs/search_indices.mdx b/api_docs/search_indices.mdx index 81cefa45e1e91..e8ec4e0b7ba3b 100644 --- a/api_docs/search_indices.mdx +++ b/api_docs/search_indices.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchIndices title: "searchIndices" image: https://source.unsplash.com/400x175/?github description: API docs for the searchIndices plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchIndices'] --- import searchIndicesObj from './search_indices.devdocs.json'; diff --git a/api_docs/search_inference_endpoints.mdx b/api_docs/search_inference_endpoints.mdx index b7e8ae73cc8ee..923befd049444 100644 --- a/api_docs/search_inference_endpoints.mdx +++ b/api_docs/search_inference_endpoints.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchInferenceEndpoints title: "searchInferenceEndpoints" image: https://source.unsplash.com/400x175/?github description: API docs for the searchInferenceEndpoints plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchInferenceEndpoints'] --- import searchInferenceEndpointsObj from './search_inference_endpoints.devdocs.json'; diff --git a/api_docs/search_navigation.mdx b/api_docs/search_navigation.mdx index 49756c3f97938..a49c2f0d52d39 100644 --- a/api_docs/search_navigation.mdx +++ b/api_docs/search_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNavigation title: "searchNavigation" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNavigation plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNavigation'] --- import searchNavigationObj from './search_navigation.devdocs.json'; diff --git a/api_docs/search_notebooks.mdx b/api_docs/search_notebooks.mdx index a9df92061427c..2ea5d73d0af0e 100644 --- a/api_docs/search_notebooks.mdx +++ b/api_docs/search_notebooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNotebooks title: "searchNotebooks" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNotebooks plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNotebooks'] --- import searchNotebooksObj from './search_notebooks.devdocs.json'; diff --git a/api_docs/search_playground.mdx b/api_docs/search_playground.mdx index d435e59539d25..ba0fbf7b568c3 100644 --- a/api_docs/search_playground.mdx +++ b/api_docs/search_playground.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchPlayground title: "searchPlayground" image: https://source.unsplash.com/400x175/?github description: API docs for the searchPlayground plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchPlayground'] --- import searchPlaygroundObj from './search_playground.devdocs.json'; diff --git a/api_docs/search_synonyms.mdx b/api_docs/search_synonyms.mdx index 00d843092a139..94069ea87d908 100644 --- a/api_docs/search_synonyms.mdx +++ b/api_docs/search_synonyms.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchSynonyms title: "searchSynonyms" image: https://source.unsplash.com/400x175/?github description: API docs for the searchSynonyms plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchSynonyms'] --- import searchSynonymsObj from './search_synonyms.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index b02b9e2580e21..868d6975d8c15 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 08ba59cc5de6e..37b6cc8140ea0 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 061080b79e5e5..2b93287638643 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index ff90f7892cd77..57f2afafd8dcb 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index e23852959f5b2..ed8b63c84f642 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless'] --- import serverlessObj from './serverless.devdocs.json'; diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx index d742278fa0910..b92333b3a450b 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability'] --- import serverlessObservabilityObj from './serverless_observability.devdocs.json'; diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx index d1c11820da072..b69cd7f956c54 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 58bcdeb1a1054..7c9865ab68639 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 8ad510f2e967c..4375879b3a5f8 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/slo.mdx b/api_docs/slo.mdx index 7d271e468194c..6ce3f0612c4d5 100644 --- a/api_docs/slo.mdx +++ b/api_docs/slo.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/slo title: "slo" image: https://source.unsplash.com/400x175/?github description: API docs for the slo plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'slo'] --- import sloObj from './slo.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index fe0eb98272362..25928b23ccc79 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index 1af8ae36d0918..4c4d2eba2a00a 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index e8a0c4ebab8a7..19a39478ad265 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index e6d62ed9da0cd..f2b8d73f00d93 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/streams.mdx b/api_docs/streams.mdx index 7e33621cee1b1..d9c8857891b15 100644 --- a/api_docs/streams.mdx +++ b/api_docs/streams.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/streams title: "streams" image: https://source.unsplash.com/400x175/?github description: API docs for the streams plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'streams'] --- import streamsObj from './streams.devdocs.json'; diff --git a/api_docs/streams_app.mdx b/api_docs/streams_app.mdx index 962feae9d53a3..2cff8e5ecc5d7 100644 --- a/api_docs/streams_app.mdx +++ b/api_docs/streams_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/streamsApp title: "streamsApp" image: https://source.unsplash.com/400x175/?github description: API docs for the streamsApp plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'streamsApp'] --- import streamsAppObj from './streams_app.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 718a0636d1dd8..03d0a47c59e19 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 6e5cc7322b780..5ed1d632a7808 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index daf2a5d6e067b..c28eb2ad59b26 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index a4c123f68c4fe..5685f0f000a73 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 80fa406e421f7..a6a6675c682f3 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 92bd01f240884..af9090ab0740b 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 7839e39ad05b6..63c94ad3863c1 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 55cf350db4fac..c5ba886be676e 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index bf5b8484f6024..f05cbd9da9342 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index e1184ef69fd03..1ed5a87b4a2dc 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index a3771bc1f6fd2..e5ac59be2fb16 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 8592d758df3d5..46d72bdc48f27 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index cc06ebb41e5b0..3cea495ec49cd 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index aba9e45ab19db..b4683ddf6eec7 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index c06de6510ffaf..f1dae9dcd2567 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index bc0a5d8d0ad44..9956069cf5fa1 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index a5aaa8869fe22..b0d55317ffef3 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index c1050d7b28061..5aad5f0935f27 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 7f55bced64ebf..7e3e0105946d5 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index afb1811c68810..d04bcbd226b57 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index a1af0e597d3f4..8c13b8c8257ed 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 9bcacd311d9c1..6d8512ed08cc9 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index 12cba0347b1e6..e399b21df2495 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index d320851a636e4..13e576a586599 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index 493d0986e0b1d..687dd0ef58868 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index d4356db46906a..17ed6848cbb74 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index e0d5627b0155b..59b8a83cbb791 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 28a9ad0a7e770..756dfc7d8b6c9 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 83eead62cb6eb..46b0d6e17a6d6 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2025-02-15 +date: 2025-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 11cd98bfc14ddafc87bc84b6bbe407e9a3b44506 Mon Sep 17 00:00:00 2001 From: Gerard Soldevila Date: Sun, 16 Feb 2025 09:39:06 +0100 Subject: [PATCH 08/78] SKA: Fix kebab-case issues in search-kibana packages (#211348) ## Summary This PR aims at relocating some of the Kibana modules (plugins and packages) into a new folder structure, according to the _Sustainable Kibana Architecture_ initiative. > [!IMPORTANT] > * We kindly ask you to: > * Manually fix the errors in the error section below (if there are any). > * Search for the `packages[\/\\]` and `plugins[\/\\]` patterns in the source code (Babel and Eslint config files), and update them appropriately. > * Manually review `.buildkite/scripts/pipelines/pull_request/pipeline.ts` to ensure that any CI pipeline customizations continue to be correctly applied after the changed path names > * Review all of the updated files, specially the `.ts` and `.js` files listed in the sections below, as some of them contain relative paths that have been updated. > * Think of potential impact of the move, including tooling and configuration files that can be pointing to the relocated modules. E.g.: > * customised eslint rules > * docs pointing to source code > [!NOTE] > * This PR has been auto-generated. > * Any manual contributions will be lost if the 'relocate' script is re-run. > * Try to obtain the missing reviews / approvals before applying manual fixes, and/or keep your changes in a .patch / git stash. > * Please use [#sustainable_kibana_architecture](https://elastic.slack.com/archives/C07TCKTA22E) Slack channel for feedback. Are you trying to rebase this PR to solve merge conflicts? Please follow the steps describe [here](https://elastic.slack.com/archives/C07TCKTA22E/p1734019532879269?thread_ts=1734019339.935419&cid=C07TCKTA22E). #### 1 packages(s) are going to be relocated: | Id | Target folder | | -- | ------------- | | `@kbn/search-shared-ui` | `x-pack/solutions/search/packages/shared-ui` |
Updated references ``` ./package.json ./packages/kbn-relocate/utils/transforms.ts ./packages/kbn-ts-projects/config-paths.json ./src/platform/packages/private/kbn-repo-packages/package-map.json ./tsconfig.base.json ./x-pack/.i18nrc.json ./x-pack/solutions/search/packages/shared-ui/jest.config.js ./yarn.lock .github/CODEOWNERS ```
Updated relative paths ``` x-pack/solutions/search/packages/shared-ui/jest.config.js:14 x-pack/solutions/search/packages/shared-ui/tsconfig.json:2 ```
--- .github/CODEOWNERS | 2 +- package.json | 2 +- tsconfig.base.json | 4 ++-- x-pack/.i18nrc.json | 2 +- .../search/packages/{shared_ui => shared-ui}/README.md | 0 .../search/packages/{shared_ui => shared-ui}/index.ts | 0 .../search/packages/{shared_ui => shared-ui}/jest.config.js | 6 +++--- .../search/packages/{shared_ui => shared-ui}/kibana.jsonc | 0 .../search/packages/{shared_ui => shared-ui}/package.json | 0 .../src/connector_icon/connector_icon.tsx | 0 .../{shared_ui => shared-ui}/src/connector_icon/index.ts | 0 .../decorative_horizontal_stepper.tsx | 0 .../src/decorative_horizontal_stepper/index.ts | 0 .../src/form_info_field/form_info_field.tsx | 0 .../{shared_ui => shared-ui}/src/icons/EuiIconPlugs.tsx | 0 .../{shared_ui => shared-ui}/src/icons/EuiIconWeb.tsx | 0 .../packages/{shared_ui => shared-ui}/src/icons/index.ts | 0 .../src/search_empty_prompt/index.ts | 0 .../src/search_empty_prompt/search_empty_prompt.tsx | 0 .../search/packages/{shared_ui => shared-ui}/tsconfig.json | 0 yarn.lock | 2 +- 21 files changed, 9 insertions(+), 9 deletions(-) rename x-pack/solutions/search/packages/{shared_ui => shared-ui}/README.md (100%) rename x-pack/solutions/search/packages/{shared_ui => shared-ui}/index.ts (100%) rename x-pack/solutions/search/packages/{shared_ui => shared-ui}/jest.config.js (81%) rename x-pack/solutions/search/packages/{shared_ui => shared-ui}/kibana.jsonc (100%) rename x-pack/solutions/search/packages/{shared_ui => shared-ui}/package.json (100%) rename x-pack/solutions/search/packages/{shared_ui => shared-ui}/src/connector_icon/connector_icon.tsx (100%) rename x-pack/solutions/search/packages/{shared_ui => shared-ui}/src/connector_icon/index.ts (100%) rename x-pack/solutions/search/packages/{shared_ui => shared-ui}/src/decorative_horizontal_stepper/decorative_horizontal_stepper.tsx (100%) rename x-pack/solutions/search/packages/{shared_ui => shared-ui}/src/decorative_horizontal_stepper/index.ts (100%) rename x-pack/solutions/search/packages/{shared_ui => shared-ui}/src/form_info_field/form_info_field.tsx (100%) rename x-pack/solutions/search/packages/{shared_ui => shared-ui}/src/icons/EuiIconPlugs.tsx (100%) rename x-pack/solutions/search/packages/{shared_ui => shared-ui}/src/icons/EuiIconWeb.tsx (100%) rename x-pack/solutions/search/packages/{shared_ui => shared-ui}/src/icons/index.ts (100%) rename x-pack/solutions/search/packages/{shared_ui => shared-ui}/src/search_empty_prompt/index.ts (100%) rename x-pack/solutions/search/packages/{shared_ui => shared-ui}/src/search_empty_prompt/search_empty_prompt.tsx (100%) rename x-pack/solutions/search/packages/{shared_ui => shared-ui}/tsconfig.json (100%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 888ac8c317434..7611248d218ae 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -963,7 +963,7 @@ x-pack/solutions/search/packages/kbn-ipynb @elastic/search-kibana x-pack/solutions/search/packages/kbn-search-api-keys-components @elastic/search-kibana x-pack/solutions/search/packages/kbn-search-api-keys-server @elastic/search-kibana x-pack/solutions/search/packages/kbn-search-index-documents @elastic/search-kibana -x-pack/solutions/search/packages/shared_ui @elastic/search-kibana +x-pack/solutions/search/packages/shared-ui @elastic/search-kibana x-pack/solutions/search/plugins/enterprise_search @elastic/search-kibana x-pack/solutions/search/plugins/search_assistant @elastic/search-kibana x-pack/solutions/search/plugins/search_connectors @elastic/search-kibana diff --git a/package.json b/package.json index 26cc26b9fd0de..1f58759c4d7e6 100644 --- a/package.json +++ b/package.json @@ -815,7 +815,7 @@ "@kbn/search-notebooks": "link:x-pack/solutions/search/plugins/search_notebooks", "@kbn/search-playground": "link:x-pack/solutions/search/plugins/search_playground", "@kbn/search-response-warnings": "link:src/platform/packages/shared/kbn-search-response-warnings", - "@kbn/search-shared-ui": "link:x-pack/solutions/search/packages/shared_ui", + "@kbn/search-shared-ui": "link:x-pack/solutions/search/packages/shared-ui", "@kbn/search-synonyms": "link:x-pack/solutions/search/plugins/search_synonyms", "@kbn/search-types": "link:src/platform/packages/shared/kbn-search-types", "@kbn/searchprofiler-plugin": "link:x-pack/platform/plugins/shared/searchprofiler", diff --git a/tsconfig.base.json b/tsconfig.base.json index e1bd83b5fad14..94d99700e43e1 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1620,8 +1620,8 @@ "@kbn/search-playground/*": ["x-pack/solutions/search/plugins/search_playground/*"], "@kbn/search-response-warnings": ["src/platform/packages/shared/kbn-search-response-warnings"], "@kbn/search-response-warnings/*": ["src/platform/packages/shared/kbn-search-response-warnings/*"], - "@kbn/search-shared-ui": ["x-pack/solutions/search/packages/shared_ui"], - "@kbn/search-shared-ui/*": ["x-pack/solutions/search/packages/shared_ui/*"], + "@kbn/search-shared-ui": ["x-pack/solutions/search/packages/shared-ui"], + "@kbn/search-shared-ui/*": ["x-pack/solutions/search/packages/shared-ui/*"], "@kbn/search-synonyms": ["x-pack/solutions/search/plugins/search_synonyms"], "@kbn/search-synonyms/*": ["x-pack/solutions/search/plugins/search_synonyms/*"], "@kbn/search-types": ["src/platform/packages/shared/kbn-search-types"], diff --git a/x-pack/.i18nrc.json b/x-pack/.i18nrc.json index a2aa0e8885b05..3b94db415f983 100644 --- a/x-pack/.i18nrc.json +++ b/x-pack/.i18nrc.json @@ -129,7 +129,7 @@ ], "xpack.runtimeFields": "platform/plugins/private/runtime_fields", "xpack.screenshotting": "platform/plugins/shared/screenshotting", - "xpack.searchSharedUI": "solutions/search/packages/shared_ui", + "xpack.searchSharedUI": "solutions/search/packages/shared-ui", "xpack.searchHomepage": "solutions/search/plugins/search_homepage", "xpack.searchIndices": "solutions/search/plugins/search_indices", "xpack.searchNavigation": "solutions/search/plugins/search_solution/search_navigation", diff --git a/x-pack/solutions/search/packages/shared_ui/README.md b/x-pack/solutions/search/packages/shared-ui/README.md similarity index 100% rename from x-pack/solutions/search/packages/shared_ui/README.md rename to x-pack/solutions/search/packages/shared-ui/README.md diff --git a/x-pack/solutions/search/packages/shared_ui/index.ts b/x-pack/solutions/search/packages/shared-ui/index.ts similarity index 100% rename from x-pack/solutions/search/packages/shared_ui/index.ts rename to x-pack/solutions/search/packages/shared-ui/index.ts diff --git a/x-pack/solutions/search/packages/shared_ui/jest.config.js b/x-pack/solutions/search/packages/shared-ui/jest.config.js similarity index 81% rename from x-pack/solutions/search/packages/shared_ui/jest.config.js rename to x-pack/solutions/search/packages/shared-ui/jest.config.js index b18e5ba2e0965..9783c5c4d3937 100644 --- a/x-pack/solutions/search/packages/shared_ui/jest.config.js +++ b/x-pack/solutions/search/packages/shared-ui/jest.config.js @@ -7,10 +7,10 @@ module.exports = { coverageDirectory: - '/target/kibana-coverage/jest/x-pack/solutions/search/packages/shared_ui', + '/target/kibana-coverage/jest/x-pack/solutions/search/packages/shared-ui', coverageReporters: ['text', 'html'], - collectCoverageFrom: ['/x-pack/solutions/search/packages/shared_ui/**/*.{ts,tsx}'], + collectCoverageFrom: ['/x-pack/solutions/search/packages/shared-ui/**/*.{ts,tsx}'], preset: '@kbn/test', rootDir: '../../../../..', - roots: ['/x-pack/solutions/search/packages/shared_ui'], + roots: ['/x-pack/solutions/search/packages/shared-ui'], }; diff --git a/x-pack/solutions/search/packages/shared_ui/kibana.jsonc b/x-pack/solutions/search/packages/shared-ui/kibana.jsonc similarity index 100% rename from x-pack/solutions/search/packages/shared_ui/kibana.jsonc rename to x-pack/solutions/search/packages/shared-ui/kibana.jsonc diff --git a/x-pack/solutions/search/packages/shared_ui/package.json b/x-pack/solutions/search/packages/shared-ui/package.json similarity index 100% rename from x-pack/solutions/search/packages/shared_ui/package.json rename to x-pack/solutions/search/packages/shared-ui/package.json diff --git a/x-pack/solutions/search/packages/shared_ui/src/connector_icon/connector_icon.tsx b/x-pack/solutions/search/packages/shared-ui/src/connector_icon/connector_icon.tsx similarity index 100% rename from x-pack/solutions/search/packages/shared_ui/src/connector_icon/connector_icon.tsx rename to x-pack/solutions/search/packages/shared-ui/src/connector_icon/connector_icon.tsx diff --git a/x-pack/solutions/search/packages/shared_ui/src/connector_icon/index.ts b/x-pack/solutions/search/packages/shared-ui/src/connector_icon/index.ts similarity index 100% rename from x-pack/solutions/search/packages/shared_ui/src/connector_icon/index.ts rename to x-pack/solutions/search/packages/shared-ui/src/connector_icon/index.ts diff --git a/x-pack/solutions/search/packages/shared_ui/src/decorative_horizontal_stepper/decorative_horizontal_stepper.tsx b/x-pack/solutions/search/packages/shared-ui/src/decorative_horizontal_stepper/decorative_horizontal_stepper.tsx similarity index 100% rename from x-pack/solutions/search/packages/shared_ui/src/decorative_horizontal_stepper/decorative_horizontal_stepper.tsx rename to x-pack/solutions/search/packages/shared-ui/src/decorative_horizontal_stepper/decorative_horizontal_stepper.tsx diff --git a/x-pack/solutions/search/packages/shared_ui/src/decorative_horizontal_stepper/index.ts b/x-pack/solutions/search/packages/shared-ui/src/decorative_horizontal_stepper/index.ts similarity index 100% rename from x-pack/solutions/search/packages/shared_ui/src/decorative_horizontal_stepper/index.ts rename to x-pack/solutions/search/packages/shared-ui/src/decorative_horizontal_stepper/index.ts diff --git a/x-pack/solutions/search/packages/shared_ui/src/form_info_field/form_info_field.tsx b/x-pack/solutions/search/packages/shared-ui/src/form_info_field/form_info_field.tsx similarity index 100% rename from x-pack/solutions/search/packages/shared_ui/src/form_info_field/form_info_field.tsx rename to x-pack/solutions/search/packages/shared-ui/src/form_info_field/form_info_field.tsx diff --git a/x-pack/solutions/search/packages/shared_ui/src/icons/EuiIconPlugs.tsx b/x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconPlugs.tsx similarity index 100% rename from x-pack/solutions/search/packages/shared_ui/src/icons/EuiIconPlugs.tsx rename to x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconPlugs.tsx diff --git a/x-pack/solutions/search/packages/shared_ui/src/icons/EuiIconWeb.tsx b/x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconWeb.tsx similarity index 100% rename from x-pack/solutions/search/packages/shared_ui/src/icons/EuiIconWeb.tsx rename to x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconWeb.tsx diff --git a/x-pack/solutions/search/packages/shared_ui/src/icons/index.ts b/x-pack/solutions/search/packages/shared-ui/src/icons/index.ts similarity index 100% rename from x-pack/solutions/search/packages/shared_ui/src/icons/index.ts rename to x-pack/solutions/search/packages/shared-ui/src/icons/index.ts diff --git a/x-pack/solutions/search/packages/shared_ui/src/search_empty_prompt/index.ts b/x-pack/solutions/search/packages/shared-ui/src/search_empty_prompt/index.ts similarity index 100% rename from x-pack/solutions/search/packages/shared_ui/src/search_empty_prompt/index.ts rename to x-pack/solutions/search/packages/shared-ui/src/search_empty_prompt/index.ts diff --git a/x-pack/solutions/search/packages/shared_ui/src/search_empty_prompt/search_empty_prompt.tsx b/x-pack/solutions/search/packages/shared-ui/src/search_empty_prompt/search_empty_prompt.tsx similarity index 100% rename from x-pack/solutions/search/packages/shared_ui/src/search_empty_prompt/search_empty_prompt.tsx rename to x-pack/solutions/search/packages/shared-ui/src/search_empty_prompt/search_empty_prompt.tsx diff --git a/x-pack/solutions/search/packages/shared_ui/tsconfig.json b/x-pack/solutions/search/packages/shared-ui/tsconfig.json similarity index 100% rename from x-pack/solutions/search/packages/shared_ui/tsconfig.json rename to x-pack/solutions/search/packages/shared-ui/tsconfig.json diff --git a/yarn.lock b/yarn.lock index 75cb2fce29ed5..079822cf840ff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7109,7 +7109,7 @@ version "0.0.0" uid "" -"@kbn/search-shared-ui@link:x-pack/solutions/search/packages/shared_ui": +"@kbn/search-shared-ui@link:x-pack/solutions/search/packages/shared-ui": version "0.0.0" uid "" From 117802cbb2ba73df14f82a2ee1caee1bfe5b1ced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arturo=20Lidue=C3=B1a?= Date: Sun, 16 Feb 2025 09:43:50 +0100 Subject: [PATCH 09/78] Pass system message to inferenceCliente.chatComplete (#211263) Closes #211257 ## Summary Regression introduced in 8.18 (https://github.com/elastic/kibana/pull/199286) We no longer pass the `system` message to the inference plugin, and thereby the LLM. This means that we are only passing user messages to the LLM. The system message is important in steering the conversation, and providing guardrails to the LLM. --- .../server/service/client/index.test.ts | 3 +++ .../observability_ai_assistant/server/service/client/index.ts | 2 ++ 2 files changed, 5 insertions(+) diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.test.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.test.ts index 83cc9d9e60762..1d9a68ad02482 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.test.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.test.ts @@ -346,6 +346,7 @@ describe('Observability AI Assistant client', () => { { connectorId: 'foo', stream: true, + system: EXPECTED_STORED_SYSTEM_MESSAGE, messages: expect.arrayContaining([ { role: 'user', content: 'How many alerts do I have?' }, ]), @@ -916,6 +917,7 @@ describe('Observability AI Assistant client', () => { { connectorId: 'foo', stream: true, + system: EXPECTED_STORED_SYSTEM_MESSAGE, messages: expect.arrayContaining([ { role: 'user', content: 'How many alerts do I have?' }, ]), @@ -1077,6 +1079,7 @@ describe('Observability AI Assistant client', () => { { connectorId: 'foo', stream: true, + system: EXPECTED_STORED_SYSTEM_MESSAGE, messages: expect.arrayContaining([ { role: 'user', content: 'How many alerts do I have?' }, ]), diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts index 3885057fd28c5..054f9ced48485 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts @@ -508,6 +508,8 @@ export class ObservabilityAIAssistantClient { const options = { connectorId, + system: messages.find((message) => message.message.role === MessageRole.System)?.message + .content, messages: convertMessagesForInference( messages.filter((message) => message.message.role !== MessageRole.System) ), From 3a9bccc4fc02199b2097c640569a0cb82ae5f1d6 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Mon, 17 Feb 2025 18:27:54 +1100 Subject: [PATCH 10/78] [api-docs] 2025-02-17 Daily api_docs build (#211370) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/986 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- .../ai_assistant_management_selection.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/automatic_import.mdx | 2 +- api_docs/banners.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_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- 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_quality.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_usage.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/dataset_quality.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/discover_shared.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.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/entities_data_access.mdx | 2 +- api_docs/entity_manager.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/esql.mdx | 2 +- api_docs/esql_data_grid.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.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_legacy_metric_vis.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/fields_metadata.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/inference.mdx | 2 +- api_docs/inference_endpoint.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/ingest_pipelines.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/inventory.mdx | 2 +- api_docs/investigate.mdx | 2 +- api_docs/investigate_app.mdx | 2 +- api_docs/kbn_actions_types.mdx | 2 +- api_docs/kbn_ai_assistant.mdx | 2 +- api_docs/kbn_ai_assistant_common.mdx | 2 +- api_docs/kbn_ai_assistant_icon.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_log_pattern_analysis.mdx | 2 +- api_docs/kbn_aiops_log_rate_analysis.mdx | 2 +- .../kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_comparators.mdx | 2 +- api_docs/kbn_alerting_rule_utils.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerting_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_grouping.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_collection_utils.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_data_view.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_types.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_avc_banner.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_calculate_auto.mdx | 2 +- .../kbn_calculate_width_from_char_count.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cbor.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_charts_theme.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_cloud_security_posture.mdx | 2 +- .../kbn_cloud_security_posture_common.mdx | 2 +- api_docs/kbn_cloud_security_posture_graph.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_editor_mock.mdx | 2 +- api_docs/kbn_code_owners.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 +- .../kbn_content_management_content_editor.mdx | 2 +- ...ent_management_content_insights_public.mdx | 2 +- ...ent_management_content_insights_server.mdx | 2 +- ...bn_content_management_favorites_common.mdx | 2 +- ...bn_content_management_favorites_public.mdx | 2 +- ...bn_content_management_favorites_server.mdx | 2 +- ...tent_management_tabbed_table_list_view.mdx | 2 +- ...kbn_content_management_table_list_view.mdx | 2 +- ...tent_management_table_list_view_common.mdx | 2 +- ...ntent_management_table_list_view_table.mdx | 2 +- .../kbn_content_management_user_profiles.mdx | 2 +- api_docs/kbn_content_management_utils.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_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.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_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- .../kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- ..._core_custom_branding_browser_internal.mdx | 2 +- ...kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- ...n_core_custom_branding_server_internal.mdx | 2 +- .../kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_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 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_feature_flags_browser.mdx | 2 +- ...bn_core_feature_flags_browser_internal.mdx | 2 +- .../kbn_core_feature_flags_browser_mocks.mdx | 2 +- api_docs/kbn_core_feature_flags_server.mdx | 2 +- ...kbn_core_feature_flags_server_internal.mdx | 2 +- .../kbn_core_feature_flags_server_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- ...re_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- ...bn_core_http_resources_server_internal.mdx | 2 +- .../kbn_core_http_resources_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server_utils.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.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 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- .../kbn_core_plugins_contracts_browser.mdx | 2 +- .../kbn_core_plugins_contracts_server.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.mdx | 2 +- ...ore_saved_objects_base_server_internal.mdx | 2 +- ...n_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_security_browser.mdx | 2 +- .../kbn_core_security_browser_internal.mdx | 2 +- api_docs/kbn_core_security_browser_mocks.mdx | 2 +- api_docs/kbn_core_security_common.mdx | 2 +- api_docs/kbn_core_security_server.mdx | 2 +- .../kbn_core_security_server_internal.mdx | 2 +- api_docs/kbn_core_security_server_mocks.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- .../kbn_core_test_helpers_model_versions.mdx | 2 +- ...n_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_internal.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- .../kbn_core_ui_settings_browser_internal.mdx | 2 +- .../kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_profile_browser.mdx | 2 +- ...kbn_core_user_profile_browser_internal.mdx | 2 +- .../kbn_core_user_profile_browser_mocks.mdx | 2 +- api_docs/kbn_core_user_profile_common.mdx | 2 +- api_docs/kbn_core_user_profile_server.mdx | 2 +- .../kbn_core_user_profile_server_internal.mdx | 2 +- .../kbn_core_user_profile_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- .../kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_icons.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_forge.mdx | 2 +- api_docs/kbn_data_grid_in_table_search.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_data_stream_adapter.mdx | 2 +- api_docs/kbn_data_view_utils.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_fleet.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_deeplinks_security.mdx | 2 +- api_docs/kbn_deeplinks_shared.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_delete_managed_asset_callout.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 +- .../kbn_discover_contextual_components.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_agent_utils.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_elastic_assistant_common.mdx | 2 +- api_docs/kbn_entities_schema.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_esql_ast.mdx | 2 +- api_docs/kbn_esql_editor.mdx | 2 +- api_docs/kbn_esql_utils.mdx | 2 +- api_docs/kbn_esql_validation_autocomplete.mdx | 2 +- api_docs/kbn_esql_variables_types.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_event_stacktrace.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_file_upload_common.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- .../kbn_ftr_common_functional_services.mdx | 2 +- .../kbn_ftr_common_functional_ui_services.mdx | 2 +- api_docs/kbn_gen_ai_functional_testing.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_grid_layout.mdx | 2 +- api_docs/kbn_grouping.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_index_adapter.mdx | 2 +- ...dex_lifecycle_management_common_shared.mdx | 2 +- .../kbn_index_management_shared_types.mdx | 2 +- api_docs/kbn_inference_common.mdx | 2 +- api_docs/kbn_inference_endpoint_ui_common.mdx | 2 +- api_docs/kbn_inference_integration_flyout.mdx | 2 +- api_docs/kbn_inference_langchain.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_investigation_shared.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_ipynb.mdx | 2 +- api_docs/kbn_item_buffer.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_json_schemas.mdx | 2 +- api_docs/kbn_key_value_metadata_table.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- api_docs/kbn_language_documentation.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_lens_formula_docs.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_logs_overview.mdx | 2 +- api_docs/kbn_managed_content_badge.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- .../kbn_management_settings_application.mdx | 2 +- ...ent_settings_components_field_category.mdx | 2 +- ...gement_settings_components_field_input.mdx | 2 +- ...nagement_settings_components_field_row.mdx | 2 +- ...bn_management_settings_components_form.mdx | 2 +- ...n_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- ...n_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- .../kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_manifest.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_cancellable_search.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- .../kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_field_stats_flyout.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_parse_interval.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_time_buckets.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_ui_actions.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_ml_validators.mdx | 2 +- api_docs/kbn_mock_idp_utils.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_utils.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_object_versioning_utils.mdx | 2 +- api_docs/kbn_observability_alert_details.mdx | 2 +- .../kbn_observability_alerting_test_data.mdx | 2 +- ...ility_get_padded_alert_time_range_util.mdx | 2 +- ...kbn_observability_synthetics_test_data.mdx | 2 +- api_docs/kbn_openapi_bundler.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_palettes.mdx | 2 +- api_docs/kbn_panel_loader.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_check.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_presentation_containers.mdx | 2 +- api_docs/kbn_presentation_publishing.mdx | 2 +- api_docs/kbn_product_doc_artifact_builder.mdx | 2 +- api_docs/kbn_product_doc_common.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_hooks.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- .../kbn_react_mute_legacy_root_warning.mdx | 2 +- api_docs/kbn_recently_accessed.mdx | 2 +- api_docs/kbn_relocate.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_reporting_csv_share_panel.mdx | 2 +- api_docs/kbn_reporting_export_types_csv.mdx | 2 +- .../kbn_reporting_export_types_csv_common.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf.mdx | 2 +- .../kbn_reporting_export_types_pdf_common.mdx | 2 +- api_docs/kbn_reporting_export_types_png.mdx | 2 +- .../kbn_reporting_export_types_png_common.mdx | 2 +- api_docs/kbn_reporting_mocks_server.mdx | 2 +- api_docs/kbn_reporting_public.mdx | 2 +- api_docs/kbn_reporting_server.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- ...kbn_response_ops_alerts_fields_browser.mdx | 2 +- api_docs/kbn_response_ops_alerts_table.mdx | 2 +- api_docs/kbn_response_ops_rule_form.mdx | 2 +- api_docs/kbn_response_ops_rule_params.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_rollup.mdx | 2 +- api_docs/kbn_router_to_openapispec.mdx | 2 +- api_docs/kbn_router_utils.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_saved_search_component.mdx | 2 +- api_docs/kbn_scout.mdx | 2 +- api_docs/kbn_scout_info.mdx | 2 +- api_docs/kbn_scout_oblt.mdx | 2 +- api_docs/kbn_scout_reporting.mdx | 2 +- api_docs/kbn_screenshotting_server.mdx | 2 +- api_docs/kbn_search_api_keys_components.mdx | 2 +- api_docs/kbn_search_api_keys_server.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_errors.mdx | 2 +- api_docs/kbn_search_index_documents.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_search_shared_ui.devdocs.json | 24 +++++++++---------- api_docs/kbn_search_shared_ui.mdx | 2 +- api_docs/kbn_search_types.mdx | 2 +- api_docs/kbn_security_ai_prompts.mdx | 2 +- api_docs/kbn_security_api_key_management.mdx | 2 +- api_docs/kbn_security_authorization_core.mdx | 2 +- ...kbn_security_authorization_core_common.mdx | 2 +- api_docs/kbn_security_form_components.mdx | 2 +- api_docs/kbn_security_hardening.mdx | 2 +- api_docs/kbn_security_plugin_types_common.mdx | 2 +- api_docs/kbn_security_plugin_types_public.mdx | 2 +- api_docs/kbn_security_plugin_types_server.mdx | 2 +- .../kbn_security_role_management_model.mdx | 2 +- api_docs/kbn_security_solution_connectors.mdx | 2 +- ...kbn_security_solution_distribution_bar.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- ...kbn_security_solution_storybook_config.mdx | 2 +- api_docs/kbn_security_ui_components.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- ...ritysolution_exception_list_components.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_server_route_repository_client.mdx | 2 +- .../kbn_server_route_repository_utils.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- .../kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- .../kbn_shared_ux_button_exit_full_screen.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_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_error_boundary.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- .../kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_analytics_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- ...bn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_template.mdx | 2 +- ...n_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- .../kbn_shared_ux_page_no_data_config.mdx | 2 +- ...bn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- ...n_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_tabbed_modal.mdx | 2 +- api_docs/kbn_shared_ux_table_persist.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_sort_predicates.mdx | 2 +- api_docs/kbn_sse_utils.mdx | 2 +- api_docs/kbn_sse_utils_client.mdx | 2 +- api_docs/kbn_sse_utils_server.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_streams_schema.mdx | 2 +- api_docs/kbn_synthetics_e2e.mdx | 2 +- api_docs/kbn_synthetics_private_location.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_eui_helpers.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_timerange.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_transpose_utils.mdx | 2 +- api_docs/kbn_triggers_actions_ui_types.mdx | 2 +- api_docs/kbn_try_in_console.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_unsaved_changes_badge.mdx | 2 +- api_docs/kbn_unsaved_changes_prompt.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.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/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_visualization_utils.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kbn_zod.mdx | 2 +- api_docs/kbn_zod_helpers.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.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/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/llm_tasks.mdx | 2 +- api_docs/logs_data_access.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/mock_idp_plugin.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/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.mdx | 2 +- api_docs/observability_a_i_assistant.mdx | 2 +- api_docs/observability_a_i_assistant_app.mdx | 2 +- .../observability_ai_assistant_management.mdx | 2 +- api_docs/observability_logs_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 2 +- api_docs/presentation_panel.mdx | 2 +- api_docs/presentation_util.mdx | 2 +- api_docs/product_doc_base.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.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_finder.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/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/search_assistant.mdx | 2 +- api_docs/search_connectors.mdx | 2 +- api_docs/search_homepage.mdx | 2 +- api_docs/search_indices.mdx | 2 +- api_docs/search_inference_endpoints.mdx | 2 +- api_docs/search_navigation.mdx | 2 +- api_docs/search_notebooks.mdx | 2 +- api_docs/search_playground.mdx | 2 +- api_docs/search_synonyms.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/slo.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/streams.mdx | 2 +- api_docs/streams_app.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/threat_intelligence.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_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.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 +- 788 files changed, 799 insertions(+), 799 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 5b22de19034b9..3d239fdc8e642 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 5e55a55a71482..9738bab2dc838 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index d5ec5cb59b50b..02520bbfdb38b 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 5924acd29ca78..048ff863ae070 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 1af4414d6ad6d..f482f58582095 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 3a92f5e28e291..7e1be712f9aa1 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index fe268a1a1092d..0174d01c461eb 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/automatic_import.mdx b/api_docs/automatic_import.mdx index 9d4970deb30e7..d1e90f8924c95 100644 --- a/api_docs/automatic_import.mdx +++ b/api_docs/automatic_import.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/automaticImport title: "automaticImport" image: https://source.unsplash.com/400x175/?github description: API docs for the automaticImport plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'automaticImport'] --- import automaticImportObj from './automatic_import.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index ee65af6b2e83b..06e26fc94cefe 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 345b9dcc2c555..20b65c2f1852b 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 9210df2f1b9ee..4ddf30e4121ca 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 927180308e64c..92769fd466683 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 970619bebba29..9e88734300365 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index d0cc61cc3640c..85ac8d31c6279 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index 7ffabab5bad0e..f38850eb5e2be 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index c629ec9a9aac5..913160b509ac4 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index fae5c29fb0e19..e18ac4e2d69c3 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx index ee60c45de5cc1..3bfc19ccbfaf6 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index b75ca2a4ed155..f8f0aa231c739 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 120aa4230a3e7..f48e499121b3b 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index 318234e0972b7..220c0b12344be 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index 83c96e270f72b..86de087bce6f0 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 5ea8fc7441efe..ee597438bb8a8 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_quality.mdx b/api_docs/data_quality.mdx index e13bab13c208a..fc70a86822c42 100644 --- a/api_docs/data_quality.mdx +++ b/api_docs/data_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataQuality title: "dataQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the dataQuality plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataQuality'] --- import dataQualityObj from './data_quality.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 229a06f077c59..bcf1517040bfb 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 20e97a64da295..23ea692487303 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_usage.mdx b/api_docs/data_usage.mdx index 42bab58be8c8d..a6cf6660b6ddd 100644 --- a/api_docs/data_usage.mdx +++ b/api_docs/data_usage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataUsage title: "dataUsage" image: https://source.unsplash.com/400x175/?github description: API docs for the dataUsage plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataUsage'] --- import dataUsageObj from './data_usage.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index d3a3df7b96bd4..cd61ebea91ae3 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index b2a1a0dad5318..b581a51fbaa6e 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index 36ff19db6826e..d8681407ec3ab 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 0bfd5ed83471c..6da7775508b6a 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 60de5d848cb41..e9a9ab9f95e3b 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index 3a901a003d6c3..429b55c37df26 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 8d362d89e6e09..4ce5abf8d7960 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index d3213d714d367..b948eda901df1 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 0a34bd80656b4..9c53046fe0ad8 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index c0346fc35ef9e..637f80d77fedc 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index b7f7b436c86cf..518f6e50e707c 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 11e0fd4128745..2ebb640aaada5 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/discover_shared.mdx b/api_docs/discover_shared.mdx index d8527a8796e2c..a9e290a852821 100644 --- a/api_docs/discover_shared.mdx +++ b/api_docs/discover_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverShared title: "discoverShared" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverShared plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverShared'] --- import discoverSharedObj from './discover_shared.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index 9e62d02f1406e..98cdbbc3b4c37 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index 584b0494c5563..bbf918d37363d 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 73d45719c5c67..7c1c103a1d15b 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 822a00668b14c..13bb82e9dc46b 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index ead476079db94..b851ba4acbd68 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 000421de54ec3..7f436d4fe3892 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/entities_data_access.mdx b/api_docs/entities_data_access.mdx index 9f1878237a900..be5ba0124b1f1 100644 --- a/api_docs/entities_data_access.mdx +++ b/api_docs/entities_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entitiesDataAccess title: "entitiesDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the entitiesDataAccess plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entitiesDataAccess'] --- import entitiesDataAccessObj from './entities_data_access.devdocs.json'; diff --git a/api_docs/entity_manager.mdx b/api_docs/entity_manager.mdx index c27796f66d33f..6ab6a477c934c 100644 --- a/api_docs/entity_manager.mdx +++ b/api_docs/entity_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entityManager title: "entityManager" image: https://source.unsplash.com/400x175/?github description: API docs for the entityManager plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entityManager'] --- import entityManagerObj from './entity_manager.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index d5c920554410e..5f0434975d534 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/esql.mdx b/api_docs/esql.mdx index 9558a043e7061..2c0f9f8e550ab 100644 --- a/api_docs/esql.mdx +++ b/api_docs/esql.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esql title: "esql" image: https://source.unsplash.com/400x175/?github description: API docs for the esql plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esql'] --- import esqlObj from './esql.devdocs.json'; diff --git a/api_docs/esql_data_grid.mdx b/api_docs/esql_data_grid.mdx index c38f4fef9f54e..3274b9c32bf57 100644 --- a/api_docs/esql_data_grid.mdx +++ b/api_docs/esql_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esqlDataGrid title: "esqlDataGrid" image: https://source.unsplash.com/400x175/?github description: API docs for the esqlDataGrid plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esqlDataGrid'] --- import esqlDataGridObj from './esql_data_grid.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 50d921382e9b7..d85362dad2d41 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 7d898918455f0..d8924dbc7a15a 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index d1b94c4aa2085..6a7b9b650b080 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 5bd561f3ef165..62d0ef2eb3d1b 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView'] --- import exploratoryViewObj from './exploratory_view.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index 592c6de01d4f3..e97786f103be0 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index c3fd4845b1f0c..4f350e424a06e 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 735e5d2db4911..4e3e7a0f1253a 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 22ddfe0938543..8ad0b3147ed38 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index edf720d503a0c..bf36edf071422 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index c0c0caa525720..3e971b6eee103 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index ec7762ca64d4b..42649f33cabd6 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 86965582bb989..d419d4b30a7a8 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index d88a6d0f595ff..6466854cafd11 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index af67cdef4e92c..dcafb6a156c93 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index a2a31d9bc86fc..231817595a858 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index 738660d94d3ec..d37ed7c1fd781 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index 527b3fec92063..14f7bedcbcdd7 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index f0122381d51fc..6e0dc07a47c48 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 263b84edced93..8639dde16b380 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 3e7e1ad081194..6036ba9921901 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/fields_metadata.mdx b/api_docs/fields_metadata.mdx index 8708337322d6a..a0a570a36b6bf 100644 --- a/api_docs/fields_metadata.mdx +++ b/api_docs/fields_metadata.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldsMetadata title: "fieldsMetadata" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldsMetadata plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldsMetadata'] --- import fieldsMetadataObj from './fields_metadata.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 4d88f7289bd93..514f822618c81 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 06f16759b52c3..89b0882de4a27 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index 50051e6048990..8ca487c153477 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 77d0356e2c897..1c40c838a860b 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index d25d42b1728a5..fafaece8b7108 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index 55a719f32687e..66014386d66f7 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index b3acfbc7759e1..28a8e395e18ce 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index e2c8b74bc6491..dc6c44a7d7a71 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 1112d8d6d1fb3..1c6c10ad883b4 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/inference.mdx b/api_docs/inference.mdx index 5357bea5ffb65..3123e9576091b 100644 --- a/api_docs/inference.mdx +++ b/api_docs/inference.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inference title: "inference" image: https://source.unsplash.com/400x175/?github description: API docs for the inference plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inference'] --- import inferenceObj from './inference.devdocs.json'; diff --git a/api_docs/inference_endpoint.mdx b/api_docs/inference_endpoint.mdx index c6b00eed4d471..d481aeb485d29 100644 --- a/api_docs/inference_endpoint.mdx +++ b/api_docs/inference_endpoint.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inferenceEndpoint title: "inferenceEndpoint" image: https://source.unsplash.com/400x175/?github description: API docs for the inferenceEndpoint plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inferenceEndpoint'] --- import inferenceEndpointObj from './inference_endpoint.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 45cec01cbea2d..aec834dabce7e 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/ingest_pipelines.mdx b/api_docs/ingest_pipelines.mdx index 8ed7f2768aae7..5f9bb1a36d38f 100644 --- a/api_docs/ingest_pipelines.mdx +++ b/api_docs/ingest_pipelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ingestPipelines title: "ingestPipelines" image: https://source.unsplash.com/400x175/?github description: API docs for the ingestPipelines plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ingestPipelines'] --- import ingestPipelinesObj from './ingest_pipelines.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index de5c401a2bf0c..948f2d8f51c9b 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 3882f870ee786..433c561609b06 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/inventory.mdx b/api_docs/inventory.mdx index a58065187c174..882fd3392e003 100644 --- a/api_docs/inventory.mdx +++ b/api_docs/inventory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inventory title: "inventory" image: https://source.unsplash.com/400x175/?github description: API docs for the inventory plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inventory'] --- import inventoryObj from './inventory.devdocs.json'; diff --git a/api_docs/investigate.mdx b/api_docs/investigate.mdx index 4eaf76016ff41..f7d31342e04bf 100644 --- a/api_docs/investigate.mdx +++ b/api_docs/investigate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigate title: "investigate" image: https://source.unsplash.com/400x175/?github description: API docs for the investigate plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigate'] --- import investigateObj from './investigate.devdocs.json'; diff --git a/api_docs/investigate_app.mdx b/api_docs/investigate_app.mdx index b4537537bb61d..545ec2e89fc57 100644 --- a/api_docs/investigate_app.mdx +++ b/api_docs/investigate_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigateApp title: "investigateApp" image: https://source.unsplash.com/400x175/?github description: API docs for the investigateApp plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigateApp'] --- import investigateAppObj from './investigate_app.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index 5a038d5a1820f..d8281bb0a3602 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant.mdx b/api_docs/kbn_ai_assistant.mdx index b285a8355d7d2..9f127468216cf 100644 --- a/api_docs/kbn_ai_assistant.mdx +++ b/api_docs/kbn_ai_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant title: "@kbn/ai-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant'] --- import kbnAiAssistantObj from './kbn_ai_assistant.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant_common.mdx b/api_docs/kbn_ai_assistant_common.mdx index 64afa952af124..6254ffe05b60d 100644 --- a/api_docs/kbn_ai_assistant_common.mdx +++ b/api_docs/kbn_ai_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant-common title: "@kbn/ai-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant-common'] --- import kbnAiAssistantCommonObj from './kbn_ai_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant_icon.mdx b/api_docs/kbn_ai_assistant_icon.mdx index 48af85dcd024a..dd238276f4a0c 100644 --- a/api_docs/kbn_ai_assistant_icon.mdx +++ b/api_docs/kbn_ai_assistant_icon.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant-icon title: "@kbn/ai-assistant-icon" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant-icon plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant-icon'] --- import kbnAiAssistantIconObj from './kbn_ai_assistant_icon.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 1a1e3e2d18c96..84f2c42aaa58f 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_pattern_analysis.mdx b/api_docs/kbn_aiops_log_pattern_analysis.mdx index 52c491ed1c216..2d6763c836238 100644 --- a/api_docs/kbn_aiops_log_pattern_analysis.mdx +++ b/api_docs/kbn_aiops_log_pattern_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-pattern-analysis title: "@kbn/aiops-log-pattern-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-pattern-analysis plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-pattern-analysis'] --- import kbnAiopsLogPatternAnalysisObj from './kbn_aiops_log_pattern_analysis.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_rate_analysis.mdx b/api_docs/kbn_aiops_log_rate_analysis.mdx index db5aad9ec6cb0..15fdf62d3bcc6 100644 --- a/api_docs/kbn_aiops_log_rate_analysis.mdx +++ b/api_docs/kbn_aiops_log_rate_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-rate-analysis title: "@kbn/aiops-log-rate-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-rate-analysis plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-rate-analysis'] --- import kbnAiopsLogRateAnalysisObj from './kbn_aiops_log_rate_analysis.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index fd9c93b2bc71b..9145916df31b5 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_comparators.mdx b/api_docs/kbn_alerting_comparators.mdx index 6d09bd678bbf5..7207e68d52e17 100644 --- a/api_docs/kbn_alerting_comparators.mdx +++ b/api_docs/kbn_alerting_comparators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-comparators title: "@kbn/alerting-comparators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-comparators plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-comparators'] --- import kbnAlertingComparatorsObj from './kbn_alerting_comparators.devdocs.json'; diff --git a/api_docs/kbn_alerting_rule_utils.mdx b/api_docs/kbn_alerting_rule_utils.mdx index 6616e94452823..448d1e50699f6 100644 --- a/api_docs/kbn_alerting_rule_utils.mdx +++ b/api_docs/kbn_alerting_rule_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-rule-utils title: "@kbn/alerting-rule-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-rule-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-rule-utils'] --- import kbnAlertingRuleUtilsObj from './kbn_alerting_rule_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 3da8efec7a199..506bc1002e955 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index 7d5e646819dd1..beadaaa8f3ada 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 70c0894d9208f..47275cb2a5db9 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_grouping.mdx b/api_docs/kbn_alerts_grouping.mdx index cd929df210ced..bf139e3378a88 100644 --- a/api_docs/kbn_alerts_grouping.mdx +++ b/api_docs/kbn_alerts_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-grouping title: "@kbn/alerts-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-grouping plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-grouping'] --- import kbnAlertsGroupingObj from './kbn_alerts_grouping.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 2e713495cec9b..0d51b0b73aa8d 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared'] --- import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index 1cf3e3c019267..719012093e1cb 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index 36976a9f0c5b4..e93a358d73a91 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index ea8d099e22372..593b8bf13a308 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_data_view.mdx b/api_docs/kbn_apm_data_view.mdx index d7eaa2619bd78..611b52d3c39ba 100644 --- a/api_docs/kbn_apm_data_view.mdx +++ b/api_docs/kbn_apm_data_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-data-view title: "@kbn/apm-data-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-data-view plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-data-view'] --- import kbnApmDataViewObj from './kbn_apm_data_view.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 5bb7a0bd1814f..1b5ca5a625716 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 1857f0486f453..809cadfb35363 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_types.mdx b/api_docs/kbn_apm_types.mdx index bfb06388b9a4a..f0cafb856f34f 100644 --- a/api_docs/kbn_apm_types.mdx +++ b/api_docs/kbn_apm_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-types title: "@kbn/apm-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-types'] --- import kbnApmTypesObj from './kbn_apm_types.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index b88cf9296262c..81015b2807f52 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_avc_banner.mdx b/api_docs/kbn_avc_banner.mdx index d642abee47403..0a54d69ac3937 100644 --- a/api_docs/kbn_avc_banner.mdx +++ b/api_docs/kbn_avc_banner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-avc-banner title: "@kbn/avc-banner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/avc-banner plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/avc-banner'] --- import kbnAvcBannerObj from './kbn_avc_banner.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index b757a90671c09..8c00959722834 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index b9920d35ec76d..e6652a7daaddd 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index 22571e1a7e7ed..239902b588224 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index edfae22ca5b15..441d4a2dd3c8a 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cbor.mdx b/api_docs/kbn_cbor.mdx index 7e74457efe69b..7de344ed80a20 100644 --- a/api_docs/kbn_cbor.mdx +++ b/api_docs/kbn_cbor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cbor title: "@kbn/cbor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cbor plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cbor'] --- import kbnCborObj from './kbn_cbor.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 9c4017aae9732..9e4748a734626 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx index d55b88f9c5621..54fc0997b7ec1 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index 2992018c12d16..60233210491e1 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_charts_theme.mdx b/api_docs/kbn_charts_theme.mdx index bb9cd8ab2f0d6..7e7247e63e23c 100644 --- a/api_docs/kbn_charts_theme.mdx +++ b/api_docs/kbn_charts_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-charts-theme title: "@kbn/charts-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/charts-theme plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/charts-theme'] --- import kbnChartsThemeObj from './kbn_charts_theme.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 39148a025de9a..acf002d87c0b2 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index c0bcad6f6a065..ffdc87252c6ec 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index dececad14821b..b07e196f4b308 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index a0baea95fb3aa..c26ba2f520925 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture.mdx b/api_docs/kbn_cloud_security_posture.mdx index 6f0705d82c8ce..adb17d2db2fb8 100644 --- a/api_docs/kbn_cloud_security_posture.mdx +++ b/api_docs/kbn_cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture title: "@kbn/cloud-security-posture" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture'] --- import kbnCloudSecurityPostureObj from './kbn_cloud_security_posture.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture_common.mdx b/api_docs/kbn_cloud_security_posture_common.mdx index b38c2e95280ca..3c6fcc425825f 100644 --- a/api_docs/kbn_cloud_security_posture_common.mdx +++ b/api_docs/kbn_cloud_security_posture_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture-common title: "@kbn/cloud-security-posture-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture-common'] --- import kbnCloudSecurityPostureCommonObj from './kbn_cloud_security_posture_common.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture_graph.mdx b/api_docs/kbn_cloud_security_posture_graph.mdx index 9eabd4aece39b..f66c67b10fd56 100644 --- a/api_docs/kbn_cloud_security_posture_graph.mdx +++ b/api_docs/kbn_cloud_security_posture_graph.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture-graph title: "@kbn/cloud-security-posture-graph" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture-graph plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture-graph'] --- import kbnCloudSecurityPostureGraphObj from './kbn_cloud_security_posture_graph.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index dfce2d78b8346..0b397e1bddbb1 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mock.mdx b/api_docs/kbn_code_editor_mock.mdx index 9b89d19fe59d6..1635d383c4b66 100644 --- a/api_docs/kbn_code_editor_mock.mdx +++ b/api_docs/kbn_code_editor_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mock title: "@kbn/code-editor-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mock plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mock'] --- import kbnCodeEditorMockObj from './kbn_code_editor_mock.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index 392c102aec991..f7ccecd43750a 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 1cde05d922efb..b6d799086933e 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index cff88e6277ac0..d32403d6026be 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index 24a0800bcd42c..be503bc88a062 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 9ca8620ef776a..d17fec4eb2234 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index 43cb006d011e2..eabad9c1ce486 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_insights_public.mdx b/api_docs/kbn_content_management_content_insights_public.mdx index f171e1e88731a..ff08cf0c4b4fd 100644 --- a/api_docs/kbn_content_management_content_insights_public.mdx +++ b/api_docs/kbn_content_management_content_insights_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-insights-public title: "@kbn/content-management-content-insights-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-insights-public plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-insights-public'] --- import kbnContentManagementContentInsightsPublicObj from './kbn_content_management_content_insights_public.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_insights_server.mdx b/api_docs/kbn_content_management_content_insights_server.mdx index 28e498a6ba7a2..e63a26f5b511c 100644 --- a/api_docs/kbn_content_management_content_insights_server.mdx +++ b/api_docs/kbn_content_management_content_insights_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-insights-server title: "@kbn/content-management-content-insights-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-insights-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-insights-server'] --- import kbnContentManagementContentInsightsServerObj from './kbn_content_management_content_insights_server.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_common.mdx b/api_docs/kbn_content_management_favorites_common.mdx index fba24abe6b390..e95fda78f965b 100644 --- a/api_docs/kbn_content_management_favorites_common.mdx +++ b/api_docs/kbn_content_management_favorites_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-common title: "@kbn/content-management-favorites-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-common'] --- import kbnContentManagementFavoritesCommonObj from './kbn_content_management_favorites_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_public.mdx b/api_docs/kbn_content_management_favorites_public.mdx index 7158895be52c9..507cf98d4c0c5 100644 --- a/api_docs/kbn_content_management_favorites_public.mdx +++ b/api_docs/kbn_content_management_favorites_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-public title: "@kbn/content-management-favorites-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-public plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-public'] --- import kbnContentManagementFavoritesPublicObj from './kbn_content_management_favorites_public.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_server.mdx b/api_docs/kbn_content_management_favorites_server.mdx index eba8b145240cf..ef311e644c9fa 100644 --- a/api_docs/kbn_content_management_favorites_server.mdx +++ b/api_docs/kbn_content_management_favorites_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-server title: "@kbn/content-management-favorites-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-server'] --- import kbnContentManagementFavoritesServerObj from './kbn_content_management_favorites_server.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index 27fead217169f..8b0591540f17d 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view'] --- import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx index 3f43c31d9af30..1b13fc910166c 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index c883183598582..36af9d67fe5ac 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index c88f02e071b87..96574a42d2cd8 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_user_profiles.mdx b/api_docs/kbn_content_management_user_profiles.mdx index f96c95e8cebaa..011545e109ea9 100644 --- a/api_docs/kbn_content_management_user_profiles.mdx +++ b/api_docs/kbn_content_management_user_profiles.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-user-profiles title: "@kbn/content-management-user-profiles" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-user-profiles plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-user-profiles'] --- import kbnContentManagementUserProfilesObj from './kbn_content_management_user_profiles.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index 9e1565a50162c..e1664aa31c960 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 4cffdec87954b..23f1aff55d302 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index fbf8862b33003..6c2b5a0377ea9 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index 9b3dcfd9cb301..937ee3672393b 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index e0639283a798c..3ba26960ea7f2 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index 4c16107be4162..4d86b0357b650 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index b460217ddd2f4..67e3adfca2d9d 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index 8abfc47d065de..8e69b533cfb98 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index e0da16fee76ef..cca3be31bd1a9 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index eca3f4fc36638..346dd97d3ba2d 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index e6c4e714b0802..b973b29b0343b 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index b9d293777eeda..04fc646fd1e59 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index cedd27654f877..6d5f4eb491015 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index 1f61340479afb..fd1e1508423e4 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 2b2647ff1d162..e094bbd500c53 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 02c86ae329223..4c453bc113b94 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index 01a5fe44f1233..8bbe48d555173 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index 96b721e880958..3a2c00f98ef07 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index 98eda0d6393e6..0135c1530d9c3 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 41ecb121c337b..6891733cd744d 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index 29cfe82c78b9c..390c901f04c87 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index 31ff8b56e3308..e913dffb83203 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index 39b32b8e3ca56..9930529540764 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index 1680566301ba1..943ff4ce492b7 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 1fa6fe71cdcf7..5495b3ca851f1 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index 5f5b5fe8037a9..71d306236d943 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index a5975f274f888..57516bd08eeaf 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index b895a0723809b..3c1b783cf5dbb 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index 12cd65215ab5b..5741360cd5cd5 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index 547daf72fffe6..a0855a908d381 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index 2cb42b30e2bbf..5bf06683a8a8a 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index 6bda12b266493..4f9d567474588 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 2d4f0df89781f..802ced34adc0f 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index a7418230e1e2a..f40d9144ae6ff 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index 21592bf8f32e3..90948fe221b0e 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index 6c630ecf18fe1..9c30f2c642b91 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index a333fe39fe201..68eef7ede264a 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index 0c937b2cc221f..0e617414929c0 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index 06053fb759bf7..bc62105452e68 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 5a48c839807eb..1fd66edf8da3c 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index a0a133c3d9068..0ea97cf66da50 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,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 description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index 73223338cfdeb..4083ca891e818 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index 4ed5f84e85ef9..bb4771ce25086 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,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 description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index d8d2b91269d99..c66c7c88d1514 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index cdff7c0e164f4..fc3216a61c61f 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index acd1b2b7d077e..f6f84ada878f4 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index 466544d8635af..5d7aacfba251a 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index 2ac94e2b2e8f0..44cd040015930 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index b32bedcc1c4e1..aed4a2873a8ce 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index b6e8f62b2cf3f..f659026a7a036 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index 54b543948bb45..36626120d53bd 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index 36478447c2d7f..20b8b6249461d 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index c1bb0b5413b2b..eb50bb108593e 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index 5dc7ae0931633..56da024169454 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index 90fc1f4d2f751..e0c2a3f6b15ec 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index 58ca3c1a95dbe..42d7b5156e0eb 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index 7b54670d8a634..2a82575d08f38 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index 4dd401c4100ba..deadd14d08108 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index 9782a7d838490..8605c2b442fc4 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser.mdx b/api_docs/kbn_core_feature_flags_browser.mdx index ba3daa2e348c5..b2cced744632e 100644 --- a/api_docs/kbn_core_feature_flags_browser.mdx +++ b/api_docs/kbn_core_feature_flags_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser title: "@kbn/core-feature-flags-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser'] --- import kbnCoreFeatureFlagsBrowserObj from './kbn_core_feature_flags_browser.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser_internal.mdx b/api_docs/kbn_core_feature_flags_browser_internal.mdx index 5232b01069432..1c9dbb8ff5589 100644 --- a/api_docs/kbn_core_feature_flags_browser_internal.mdx +++ b/api_docs/kbn_core_feature_flags_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser-internal title: "@kbn/core-feature-flags-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser-internal'] --- import kbnCoreFeatureFlagsBrowserInternalObj from './kbn_core_feature_flags_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser_mocks.mdx b/api_docs/kbn_core_feature_flags_browser_mocks.mdx index 3ae4ca278c2d1..3535407985deb 100644 --- a/api_docs/kbn_core_feature_flags_browser_mocks.mdx +++ b/api_docs/kbn_core_feature_flags_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser-mocks title: "@kbn/core-feature-flags-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser-mocks'] --- import kbnCoreFeatureFlagsBrowserMocksObj from './kbn_core_feature_flags_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server.mdx b/api_docs/kbn_core_feature_flags_server.mdx index 7e2fe4f67f3cb..d02d2ed53a54a 100644 --- a/api_docs/kbn_core_feature_flags_server.mdx +++ b/api_docs/kbn_core_feature_flags_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server title: "@kbn/core-feature-flags-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server'] --- import kbnCoreFeatureFlagsServerObj from './kbn_core_feature_flags_server.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server_internal.mdx b/api_docs/kbn_core_feature_flags_server_internal.mdx index 5d604982588bb..812938291ef41 100644 --- a/api_docs/kbn_core_feature_flags_server_internal.mdx +++ b/api_docs/kbn_core_feature_flags_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server-internal title: "@kbn/core-feature-flags-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server-internal'] --- import kbnCoreFeatureFlagsServerInternalObj from './kbn_core_feature_flags_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server_mocks.mdx b/api_docs/kbn_core_feature_flags_server_mocks.mdx index a6f55b44f952c..799392609ac0b 100644 --- a/api_docs/kbn_core_feature_flags_server_mocks.mdx +++ b/api_docs/kbn_core_feature_flags_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server-mocks title: "@kbn/core-feature-flags-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server-mocks'] --- import kbnCoreFeatureFlagsServerMocksObj from './kbn_core_feature_flags_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index e36e200420c89..1500892ed8a5d 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index e2f2fdb6b69ef..b3a5970726af7 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 8296c2d6aaa75..e8e832ff5f05e 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index 5b08affc4a368..04c193eaaf04f 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index b2f05cb4438ab..a3fd71e174256 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index bf80c5c365ff1..00fb3b192b7ba 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index 5724e2ed34db6..d269714df3ff7 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index 44493cb0ff6b0..a93b795b71df2 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index 6e793bfc731a8..b136797b35868 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index c116fb2dc0cc5..fca89e2d5b346 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index 7f536674a3106..a42d7317a104b 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 53ec7c207b238..6c35efb7e30b3 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index e5c4af19561a9..df05d109279b2 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index b66ef3b568e43..c0f1eba348a59 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_utils.mdx b/api_docs/kbn_core_http_server_utils.mdx index a455b499307fe..f2931ecca302f 100644 --- a/api_docs/kbn_core_http_server_utils.mdx +++ b/api_docs/kbn_core_http_server_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-utils title: "@kbn/core-http-server-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-utils'] --- import kbnCoreHttpServerUtilsObj from './kbn_core_http_server_utils.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 9df3bb2d74c01..6408eff779c9f 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index 846062c4c70ce..8c10e7165133f 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index 8c6b9ed5d57a0..debdca587149b 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index cd6a423a962e0..d9ebde13a8710 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index 4f49e9f47ec1b..c3b9c5f7861c0 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 7c55b72d7f058..cfc9235da2b2b 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,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 description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index f3ad5eedd954a..0c0bd08fcdb4f 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index a0899900ff153..c14e5cdf6e9cd 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index 4112ac10a0f4d..51f1cd8c71419 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index 14d1979a4170a..f535995b737fe 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index 66b9c54953c3a..a3f3d8cdee1d9 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index adb8e3c4b6694..ae5736ccf624e 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index 025c8f43e321d..f560141222f0e 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index b72b4a618f64b..082e462e49cda 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 2b206e4293f10..581e52a3bf0c0 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index 9cf28a17c2b93..0c101f5bb9acd 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index e15a0584eb09e..457b35f0cf16d 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index f2f4816079c2a..ecca5d945a740 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index fe68c2f78d992..366afe4a5698d 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index bbd864047a8bc..1aa6891191473 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index 8de111f97b26e..67399d1560197 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index c3393ccdab92a..a4ab0354f1113 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index afdc29e85d6c7..08a7a5fce5394 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 40330a643118f..1b438335e4fc0 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index 2dff727bb5f31..8aa730ddbba31 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index e863af0d43e66..091ead6c0903e 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index d3380b4319184..86e72df78274e 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index 80afa2948dc80..58a0f50ed663c 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index d795dce731e63..227fb3775fe2d 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index 43d5f9f830b1b..e53703f1075d1 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index ab15e188e5934..9d74ad08edc5c 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index edb3ae24baf33..33b156874f0ba 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index e4011420ac5ab..56a519bd5c229 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index 2a782f48fddc0..da9ad585c8cf9 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index ba80737e610a0..484085a8b65c3 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index aab9e1181022f..e40c999cceee5 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index a9260f199844a..6861f7a3ae1d9 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index 1a09dc6d7bc7b..f7437de54f859 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index a30c453756d81..1d1b8611a0aa8 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index aa7c233f84264..6229b04b27a90 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser.mdx b/api_docs/kbn_core_rendering_browser.mdx index e655844fd5808..8a35893ca7d7e 100644 --- a/api_docs/kbn_core_rendering_browser.mdx +++ b/api_docs/kbn_core_rendering_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser title: "@kbn/core-rendering-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser'] --- import kbnCoreRenderingBrowserObj from './kbn_core_rendering_browser.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 04bdc856a3cab..93d5b0df4c1d7 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index 0a2109496ab13..a2e7ce9bd90c7 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index 550d4bccd6cf7..ace3fb5f899ac 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index e8d074fddd8c2..05119df59e4fd 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index 4b49a75dc472a..eb09bf8024c62 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 351dbdba21c27..b3a325b05e8c1 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index 55089ff9b996d..661d2cd9fa0ad 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 1e4a375366bdc..5ec76bb78fcee 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index 0786c928905cf..f409d31c0ee38 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index be81ee2043e2c..40713eb747b87 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 9af7bdd125bef..15d726e5448c2 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index 1f0b1eaee1eab..702400edffd16 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index c472e9cdda61f..6b584c33a994d 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index b385037459ec7..716c9dbca1878 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index ff4ffac8edd82..18e13db37f980 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index b7e0a80bf2319..1b104b8df1b27 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index 942b696e7d708..93e201b1177e8 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 58a68f188e261..079f3a22ac9c0 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index 20239b75d010b..5e3ffa1d66743 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index 01e04c53734e1..e53b9508e4b05 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index 1a450a3ebbf7e..74a33714eee16 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser.mdx b/api_docs/kbn_core_security_browser.mdx index 7e3701fd960d8..6357d1bac34f2 100644 --- a/api_docs/kbn_core_security_browser.mdx +++ b/api_docs/kbn_core_security_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser title: "@kbn/core-security-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser'] --- import kbnCoreSecurityBrowserObj from './kbn_core_security_browser.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_internal.mdx b/api_docs/kbn_core_security_browser_internal.mdx index 668bea5a3d2d2..f3bbe06ac7db9 100644 --- a/api_docs/kbn_core_security_browser_internal.mdx +++ b/api_docs/kbn_core_security_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-internal title: "@kbn/core-security-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-internal'] --- import kbnCoreSecurityBrowserInternalObj from './kbn_core_security_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_mocks.mdx b/api_docs/kbn_core_security_browser_mocks.mdx index a3a99f45af619..4a2b66a687789 100644 --- a/api_docs/kbn_core_security_browser_mocks.mdx +++ b/api_docs/kbn_core_security_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-mocks title: "@kbn/core-security-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-mocks'] --- import kbnCoreSecurityBrowserMocksObj from './kbn_core_security_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_security_common.mdx b/api_docs/kbn_core_security_common.mdx index 0bad4cc2a7e32..d043f157fa617 100644 --- a/api_docs/kbn_core_security_common.mdx +++ b/api_docs/kbn_core_security_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-common title: "@kbn/core-security-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-common'] --- import kbnCoreSecurityCommonObj from './kbn_core_security_common.devdocs.json'; diff --git a/api_docs/kbn_core_security_server.mdx b/api_docs/kbn_core_security_server.mdx index ce726c5994ea7..96d7cbf7fa485 100644 --- a/api_docs/kbn_core_security_server.mdx +++ b/api_docs/kbn_core_security_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server title: "@kbn/core-security-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server'] --- import kbnCoreSecurityServerObj from './kbn_core_security_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_internal.mdx b/api_docs/kbn_core_security_server_internal.mdx index 65e3ece99a36f..a66610a4e062a 100644 --- a/api_docs/kbn_core_security_server_internal.mdx +++ b/api_docs/kbn_core_security_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-internal title: "@kbn/core-security-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-internal'] --- import kbnCoreSecurityServerInternalObj from './kbn_core_security_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_mocks.mdx b/api_docs/kbn_core_security_server_mocks.mdx index 260ce8ddabbb9..5f0b7bb0a8635 100644 --- a/api_docs/kbn_core_security_server_mocks.mdx +++ b/api_docs/kbn_core_security_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-mocks title: "@kbn/core-security-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-mocks'] --- import kbnCoreSecurityServerMocksObj from './kbn_core_security_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 47a053ed7aebc..7c522f863ae45 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index fa52553067c6f..cef6c589c3f93 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index 69cc40c2b48b0..17315fff0ba66 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index f93d78a473ff0..c836c99dca231 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index 8cab4fed030b6..00e0413815a55 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index b4c55fa3eaa91..65f7cc2cc9603 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index 1d88bb139100c..d85dff2ddbd12 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index f00fcfb9de8c3..260faa085c381 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index b31c20e615aa2..d80b0b0ebe219 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index ee272b0dac970..e2d8eda6d3652 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 1f626afb0a882..39dfcdd3b23be 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_internal.mdx b/api_docs/kbn_core_theme_browser_internal.mdx index 255b31b78fdff..2b0a226b3a7b9 100644 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ b/api_docs/kbn_core_theme_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-internal title: "@kbn/core-theme-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-internal'] --- import kbnCoreThemeBrowserInternalObj from './kbn_core_theme_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index aa438d2b6d01b..338c70db39ea7 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index 79173b14e7817..d832a1ff09f78 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index 17b2262535ebf..29ff290916f2c 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index da9b6f823550f..ba6218e1c2214 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index f313104f59dd9..b2c7d82a31986 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index 9b28187c858ee..d358d14b1f766 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index 61c393b836334..395df08d938aa 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index d35ba5111002f..069c876a9a3f7 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index e2430b275c104..e92374faa60ce 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index e3d2c56d8be63..9f41164dddffa 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index 37d5217f16ac2..dbf471770a9ce 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser.mdx b/api_docs/kbn_core_user_profile_browser.mdx index 25e38af7f6f1b..782c925f5b248 100644 --- a/api_docs/kbn_core_user_profile_browser.mdx +++ b/api_docs/kbn_core_user_profile_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser title: "@kbn/core-user-profile-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser'] --- import kbnCoreUserProfileBrowserObj from './kbn_core_user_profile_browser.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_internal.mdx b/api_docs/kbn_core_user_profile_browser_internal.mdx index adfe712bf9d36..08a1672daa2bf 100644 --- a/api_docs/kbn_core_user_profile_browser_internal.mdx +++ b/api_docs/kbn_core_user_profile_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-internal title: "@kbn/core-user-profile-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-internal'] --- import kbnCoreUserProfileBrowserInternalObj from './kbn_core_user_profile_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_mocks.mdx b/api_docs/kbn_core_user_profile_browser_mocks.mdx index 6acbda5084129..6c87721841b34 100644 --- a/api_docs/kbn_core_user_profile_browser_mocks.mdx +++ b/api_docs/kbn_core_user_profile_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-mocks title: "@kbn/core-user-profile-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-mocks'] --- import kbnCoreUserProfileBrowserMocksObj from './kbn_core_user_profile_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_common.mdx b/api_docs/kbn_core_user_profile_common.mdx index 245a1dd11e6de..995158511a1b2 100644 --- a/api_docs/kbn_core_user_profile_common.mdx +++ b/api_docs/kbn_core_user_profile_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-common title: "@kbn/core-user-profile-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-common'] --- import kbnCoreUserProfileCommonObj from './kbn_core_user_profile_common.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server.mdx b/api_docs/kbn_core_user_profile_server.mdx index 58812ae61dca8..1ed61bee092e3 100644 --- a/api_docs/kbn_core_user_profile_server.mdx +++ b/api_docs/kbn_core_user_profile_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server title: "@kbn/core-user-profile-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server'] --- import kbnCoreUserProfileServerObj from './kbn_core_user_profile_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_internal.mdx b/api_docs/kbn_core_user_profile_server_internal.mdx index 27f7b66ab23cb..fb3a7599235de 100644 --- a/api_docs/kbn_core_user_profile_server_internal.mdx +++ b/api_docs/kbn_core_user_profile_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-internal title: "@kbn/core-user-profile-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-internal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-internal'] --- import kbnCoreUserProfileServerInternalObj from './kbn_core_user_profile_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_mocks.mdx b/api_docs/kbn_core_user_profile_server_mocks.mdx index 5f11b85a216f7..e2c18e8b7adab 100644 --- a/api_docs/kbn_core_user_profile_server_mocks.mdx +++ b/api_docs/kbn_core_user_profile_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-mocks title: "@kbn/core-user-profile-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-mocks'] --- import kbnCoreUserProfileServerMocksObj from './kbn_core_user_profile_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index 18195ab3687ca..2c6da3998ae5c 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index e2cd9ddd93e86..c29a6dcc223c9 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks'] --- import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index b9a6f3f5e74bd..62e672ccbbbb4 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index c4d9215e12ebb..3f0478a32387a 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index 1d6442ba5c7e0..a3b6bcaf4ddc5 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index dd32df2e95f0d..95f8eeea1cee9 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 1038a2c1caf04..1dbddb16e55f3 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_forge.mdx b/api_docs/kbn_data_forge.mdx index b19b4cd3f1e50..0aea48e3f4325 100644 --- a/api_docs/kbn_data_forge.mdx +++ b/api_docs/kbn_data_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-forge title: "@kbn/data-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-forge plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-forge'] --- import kbnDataForgeObj from './kbn_data_forge.devdocs.json'; diff --git a/api_docs/kbn_data_grid_in_table_search.mdx b/api_docs/kbn_data_grid_in_table_search.mdx index 1e48b012b9f33..fab44fa4df105 100644 --- a/api_docs/kbn_data_grid_in_table_search.mdx +++ b/api_docs/kbn_data_grid_in_table_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-grid-in-table-search title: "@kbn/data-grid-in-table-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-grid-in-table-search plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-grid-in-table-search'] --- import kbnDataGridInTableSearchObj from './kbn_data_grid_in_table_search.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index 57f58ffe5d279..d99febdca95e1 100644 --- a/api_docs/kbn_data_service.mdx +++ b/api_docs/kbn_data_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service title: "@kbn/data-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-service plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_data_stream_adapter.mdx b/api_docs/kbn_data_stream_adapter.mdx index 3dbb6cc2ea198..0779db2608f37 100644 --- a/api_docs/kbn_data_stream_adapter.mdx +++ b/api_docs/kbn_data_stream_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-stream-adapter title: "@kbn/data-stream-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-stream-adapter plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-stream-adapter'] --- import kbnDataStreamAdapterObj from './kbn_data_stream_adapter.devdocs.json'; diff --git a/api_docs/kbn_data_view_utils.mdx b/api_docs/kbn_data_view_utils.mdx index 211a80626f36c..ebf6aa9e80795 100644 --- a/api_docs/kbn_data_view_utils.mdx +++ b/api_docs/kbn_data_view_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-view-utils title: "@kbn/data-view-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-view-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-view-utils'] --- import kbnDataViewUtilsObj from './kbn_data_view_utils.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 3eac3561bfc85..95c17676a6597 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx index 652bbc39fe733..79fd6fd806aa1 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics'] --- import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx index 9f7ef35ef37a0..2d8493a31fc15 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_fleet.mdx b/api_docs/kbn_deeplinks_fleet.mdx index 4f246bfca62a1..b519abb2621bf 100644 --- a/api_docs/kbn_deeplinks_fleet.mdx +++ b/api_docs/kbn_deeplinks_fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-fleet title: "@kbn/deeplinks-fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-fleet plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-fleet'] --- import kbnDeeplinksFleetObj from './kbn_deeplinks_fleet.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index e53bb8da93052..ef043a51a72de 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index 3a8c23b841f4d..fd58438c29c05 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index a6b6404fa8f32..198831d1b56f7 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index e595e670beb28..d7a96710d7489 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_security.mdx b/api_docs/kbn_deeplinks_security.mdx index 94d191d8465a4..e49462b76b9e7 100644 --- a/api_docs/kbn_deeplinks_security.mdx +++ b/api_docs/kbn_deeplinks_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-security title: "@kbn/deeplinks-security" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-security plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-security'] --- import kbnDeeplinksSecurityObj from './kbn_deeplinks_security.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_shared.mdx b/api_docs/kbn_deeplinks_shared.mdx index 81456d0984103..a18f8094919b3 100644 --- a/api_docs/kbn_deeplinks_shared.mdx +++ b/api_docs/kbn_deeplinks_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-shared title: "@kbn/deeplinks-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-shared plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-shared'] --- import kbnDeeplinksSharedObj from './kbn_deeplinks_shared.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index afa45ac9e4b0d..bc21ac216e05a 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics'] --- import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx index eae510d0b28b0..d154ee3ef115e 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools'] --- import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json'; diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index b7151998125d8..f911b092d1c74 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index f2b45af71d435..2d98a568d9967 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml'] --- import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json'; diff --git a/api_docs/kbn_delete_managed_asset_callout.mdx b/api_docs/kbn_delete_managed_asset_callout.mdx index 8942d92ef83c0..7438c2a43b3db 100644 --- a/api_docs/kbn_delete_managed_asset_callout.mdx +++ b/api_docs/kbn_delete_managed_asset_callout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-delete-managed-asset-callout title: "@kbn/delete-managed-asset-callout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/delete-managed-asset-callout plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/delete-managed-asset-callout'] --- import kbnDeleteManagedAssetCalloutObj from './kbn_delete_managed_asset_callout.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 2ece3eeafa49f..695419077c775 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index d9529009527b1..39b1df436587e 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index c992c7af0f76c..db1e59a45dc74 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index b5d51d31b8de5..c8de214a5238c 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_contextual_components.mdx b/api_docs/kbn_discover_contextual_components.mdx index 608edbc2993c5..b0f89077b066a 100644 --- a/api_docs/kbn_discover_contextual_components.mdx +++ b/api_docs/kbn_discover_contextual_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-contextual-components title: "@kbn/discover-contextual-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-contextual-components plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-contextual-components'] --- import kbnDiscoverContextualComponentsObj from './kbn_discover_contextual_components.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index 2808d3d3e53c8..63ca5a13dd79f 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index ddc435285c604..b89e93425091a 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index 137c319ff1130..2cad883772494 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx index aa3fa353a8a6d..43d7519f11e35 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop'] --- import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index 655d43564b579..7ebe110e7ae1c 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index ecf73fe7c1546..aeda0d7e6ff4a 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index 58de6409519c3..7be85294989eb 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 1435f2b6f59a4..54152243644a1 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index ffd2e7759dbd1..c97a84f1135f8 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_entities_schema.mdx b/api_docs/kbn_entities_schema.mdx index d4d464e6b83a4..59dbe5b8fd63f 100644 --- a/api_docs/kbn_entities_schema.mdx +++ b/api_docs/kbn_entities_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-entities-schema title: "@kbn/entities-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/entities-schema plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/entities-schema'] --- import kbnEntitiesSchemaObj from './kbn_entities_schema.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index d49df5d0ec289..69f683c59b218 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 821b13c5a3cf5..bf8335c316fd3 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index 8ac1314558650..b06fa4da57dcb 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index af4ef78dd82fa..6dd8de3e54a02 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index 760079cab3b00..41eb7b01822a4 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index 5ec2911b811c3..f730d208022ed 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_esql_ast.mdx b/api_docs/kbn_esql_ast.mdx index 13c321886070f..c52d8468229af 100644 --- a/api_docs/kbn_esql_ast.mdx +++ b/api_docs/kbn_esql_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-ast title: "@kbn/esql-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-ast plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-ast'] --- import kbnEsqlAstObj from './kbn_esql_ast.devdocs.json'; diff --git a/api_docs/kbn_esql_editor.mdx b/api_docs/kbn_esql_editor.mdx index 6e6d055f6883a..1fa45e137b943 100644 --- a/api_docs/kbn_esql_editor.mdx +++ b/api_docs/kbn_esql_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-editor title: "@kbn/esql-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-editor plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-editor'] --- import kbnEsqlEditorObj from './kbn_esql_editor.devdocs.json'; diff --git a/api_docs/kbn_esql_utils.mdx b/api_docs/kbn_esql_utils.mdx index c647aec419db2..ba44481dd7f7b 100644 --- a/api_docs/kbn_esql_utils.mdx +++ b/api_docs/kbn_esql_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-utils title: "@kbn/esql-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-utils'] --- import kbnEsqlUtilsObj from './kbn_esql_utils.devdocs.json'; diff --git a/api_docs/kbn_esql_validation_autocomplete.mdx b/api_docs/kbn_esql_validation_autocomplete.mdx index 898891a97c816..ad86b91869792 100644 --- a/api_docs/kbn_esql_validation_autocomplete.mdx +++ b/api_docs/kbn_esql_validation_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-validation-autocomplete title: "@kbn/esql-validation-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-validation-autocomplete plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-validation-autocomplete'] --- import kbnEsqlValidationAutocompleteObj from './kbn_esql_validation_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_esql_variables_types.mdx b/api_docs/kbn_esql_variables_types.mdx index 00c36cab004a0..843a5a705a451 100644 --- a/api_docs/kbn_esql_variables_types.mdx +++ b/api_docs/kbn_esql_variables_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-variables-types title: "@kbn/esql-variables-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-variables-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-variables-types'] --- import kbnEsqlVariablesTypesObj from './kbn_esql_variables_types.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 213eb6a7ec330..efb021a7b8e79 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index e49fcc62df6c1..3273a037de60b 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_event_stacktrace.mdx b/api_docs/kbn_event_stacktrace.mdx index e1ae5c3f16191..3c50b473a8fd9 100644 --- a/api_docs/kbn_event_stacktrace.mdx +++ b/api_docs/kbn_event_stacktrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-stacktrace title: "@kbn/event-stacktrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-stacktrace plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-stacktrace'] --- import kbnEventStacktraceObj from './kbn_event_stacktrace.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index dc2d1def1929c..ba807f872e05c 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 7aafc4a6bbfb5..77e4660a4b192 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 5cf1a987cece4..200a1d38909bf 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_file_upload_common.mdx b/api_docs/kbn_file_upload_common.mdx index 66e61b929b78c..1762d439e12f4 100644 --- a/api_docs/kbn_file_upload_common.mdx +++ b/api_docs/kbn_file_upload_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-file-upload-common title: "@kbn/file-upload-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/file-upload-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/file-upload-common'] --- import kbnFileUploadCommonObj from './kbn_file_upload_common.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 01f80ec370589..8ffa9329da919 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index 756bb23cb3f7e..59c5be1a87576 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index 64e2447fe8d6f..255ffd9128954 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_gen_ai_functional_testing.mdx b/api_docs/kbn_gen_ai_functional_testing.mdx index 53e03684187f0..84a6f87c0007e 100644 --- a/api_docs/kbn_gen_ai_functional_testing.mdx +++ b/api_docs/kbn_gen_ai_functional_testing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-gen-ai-functional-testing title: "@kbn/gen-ai-functional-testing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/gen-ai-functional-testing plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/gen-ai-functional-testing'] --- import kbnGenAiFunctionalTestingObj from './kbn_gen_ai_functional_testing.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 05c5840c2d13a..35f0516671409 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx index 03bc6a967747d..f82a87013da0c 100644 --- a/api_docs/kbn_generate_console_definitions.mdx +++ b/api_docs/kbn_generate_console_definitions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions title: "@kbn/generate-console-definitions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-console-definitions plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions'] --- import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index 87e1343ca61f3..ca24fa8fd4652 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_grid_layout.mdx b/api_docs/kbn_grid_layout.mdx index 11a9ec0abcf3a..315bdd983c872 100644 --- a/api_docs/kbn_grid_layout.mdx +++ b/api_docs/kbn_grid_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grid-layout title: "@kbn/grid-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grid-layout plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grid-layout'] --- import kbnGridLayoutObj from './kbn_grid_layout.devdocs.json'; diff --git a/api_docs/kbn_grouping.mdx b/api_docs/kbn_grouping.mdx index 6fcb3cc960e28..239ad9384f9b0 100644 --- a/api_docs/kbn_grouping.mdx +++ b/api_docs/kbn_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grouping title: "@kbn/grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grouping plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grouping'] --- import kbnGroupingObj from './kbn_grouping.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index 42838a8319413..11d7e2140e1fb 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index b1b5cbb207d8f..f38329b60d073 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index 54c36f619c3f9..ae402bfb5e367 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index 580c5c081d820..fb327073c89bb 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index 66df63655aafc..7eb6da3718bb5 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index 846567793de5a..abbe60f9ef0e4 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index 156bde0fbd14e..48ede5fcbd7fb 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index 6891af85d61d6..a736419b9b34b 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index b685e2bc876da..fa14371ae6ea3 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_index_adapter.mdx b/api_docs/kbn_index_adapter.mdx index f52e5c75930ca..54736083a4559 100644 --- a/api_docs/kbn_index_adapter.mdx +++ b/api_docs/kbn_index_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-adapter title: "@kbn/index-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-adapter plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-adapter'] --- import kbnIndexAdapterObj from './kbn_index_adapter.devdocs.json'; diff --git a/api_docs/kbn_index_lifecycle_management_common_shared.mdx b/api_docs/kbn_index_lifecycle_management_common_shared.mdx index 753afad4f1186..d752d6a09abbc 100644 --- a/api_docs/kbn_index_lifecycle_management_common_shared.mdx +++ b/api_docs/kbn_index_lifecycle_management_common_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-lifecycle-management-common-shared title: "@kbn/index-lifecycle-management-common-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-lifecycle-management-common-shared plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-lifecycle-management-common-shared'] --- import kbnIndexLifecycleManagementCommonSharedObj from './kbn_index_lifecycle_management_common_shared.devdocs.json'; diff --git a/api_docs/kbn_index_management_shared_types.mdx b/api_docs/kbn_index_management_shared_types.mdx index 2c0d84b741de3..03c9fdef630ca 100644 --- a/api_docs/kbn_index_management_shared_types.mdx +++ b/api_docs/kbn_index_management_shared_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-management-shared-types title: "@kbn/index-management-shared-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-management-shared-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-management-shared-types'] --- import kbnIndexManagementSharedTypesObj from './kbn_index_management_shared_types.devdocs.json'; diff --git a/api_docs/kbn_inference_common.mdx b/api_docs/kbn_inference_common.mdx index 76517a7838e7a..d0f9aaeec95bc 100644 --- a/api_docs/kbn_inference_common.mdx +++ b/api_docs/kbn_inference_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-common title: "@kbn/inference-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-common'] --- import kbnInferenceCommonObj from './kbn_inference_common.devdocs.json'; diff --git a/api_docs/kbn_inference_endpoint_ui_common.mdx b/api_docs/kbn_inference_endpoint_ui_common.mdx index 442aac03d2a9e..72086fc5d0d7d 100644 --- a/api_docs/kbn_inference_endpoint_ui_common.mdx +++ b/api_docs/kbn_inference_endpoint_ui_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-endpoint-ui-common title: "@kbn/inference-endpoint-ui-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-endpoint-ui-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-endpoint-ui-common'] --- import kbnInferenceEndpointUiCommonObj from './kbn_inference_endpoint_ui_common.devdocs.json'; diff --git a/api_docs/kbn_inference_integration_flyout.mdx b/api_docs/kbn_inference_integration_flyout.mdx index a03d5a7c56c6f..9abb4c33464d8 100644 --- a/api_docs/kbn_inference_integration_flyout.mdx +++ b/api_docs/kbn_inference_integration_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference_integration_flyout title: "@kbn/inference_integration_flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference_integration_flyout plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference_integration_flyout'] --- import kbnInferenceIntegrationFlyoutObj from './kbn_inference_integration_flyout.devdocs.json'; diff --git a/api_docs/kbn_inference_langchain.mdx b/api_docs/kbn_inference_langchain.mdx index ef69defc43fbb..1e131dd959202 100644 --- a/api_docs/kbn_inference_langchain.mdx +++ b/api_docs/kbn_inference_langchain.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-langchain title: "@kbn/inference-langchain" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-langchain plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-langchain'] --- import kbnInferenceLangchainObj from './kbn_inference_langchain.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index ee950318ad958..49d2e40bb6fa3 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge'] --- import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index 4b6aedeb8e871..86a26faea4a2d 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_investigation_shared.mdx b/api_docs/kbn_investigation_shared.mdx index 8f445df1d32e9..36062f64529bb 100644 --- a/api_docs/kbn_investigation_shared.mdx +++ b/api_docs/kbn_investigation_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-investigation-shared title: "@kbn/investigation-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/investigation-shared plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/investigation-shared'] --- import kbnInvestigationSharedObj from './kbn_investigation_shared.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 2901284fa54e2..8c2be18c55881 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_ipynb.mdx b/api_docs/kbn_ipynb.mdx index 2bac729c8f4fc..7e5f0358f8434 100644 --- a/api_docs/kbn_ipynb.mdx +++ b/api_docs/kbn_ipynb.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ipynb title: "@kbn/ipynb" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ipynb plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ipynb'] --- import kbnIpynbObj from './kbn_ipynb.devdocs.json'; diff --git a/api_docs/kbn_item_buffer.mdx b/api_docs/kbn_item_buffer.mdx index fe0bd4bd3c7f0..4f35193637abb 100644 --- a/api_docs/kbn_item_buffer.mdx +++ b/api_docs/kbn_item_buffer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-item-buffer title: "@kbn/item-buffer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/item-buffer plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/item-buffer'] --- import kbnItemBufferObj from './kbn_item_buffer.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index d28bff2fdc658..5cff7a4c27ac9 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index 7635baa3c92a5..faa4a42a76845 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index b9cc66f45ebf2..9efb1190a03e5 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_json_schemas.mdx b/api_docs/kbn_json_schemas.mdx index 04375918de042..b874d97ecb452 100644 --- a/api_docs/kbn_json_schemas.mdx +++ b/api_docs/kbn_json_schemas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-schemas title: "@kbn/json-schemas" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-schemas plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-schemas'] --- import kbnJsonSchemasObj from './kbn_json_schemas.devdocs.json'; diff --git a/api_docs/kbn_key_value_metadata_table.mdx b/api_docs/kbn_key_value_metadata_table.mdx index b9a1999b231e4..5c765757613a3 100644 --- a/api_docs/kbn_key_value_metadata_table.mdx +++ b/api_docs/kbn_key_value_metadata_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-key-value-metadata-table title: "@kbn/key-value-metadata-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/key-value-metadata-table plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/key-value-metadata-table'] --- import kbnKeyValueMetadataTableObj from './kbn_key_value_metadata_table.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 64d88cdb94f9f..23d9cf6edf904 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation.mdx b/api_docs/kbn_language_documentation.mdx index 32dac0586bbe9..d78facb5312fa 100644 --- a/api_docs/kbn_language_documentation.mdx +++ b/api_docs/kbn_language_documentation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation title: "@kbn/language-documentation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation'] --- import kbnLanguageDocumentationObj from './kbn_language_documentation.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 00c83c50d2276..0b389c07ebeae 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx index 8ab5b2e626524..dda3558957069 100644 --- a/api_docs/kbn_lens_formula_docs.mdx +++ b/api_docs/kbn_lens_formula_docs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-formula-docs title: "@kbn/lens-formula-docs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-formula-docs plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-formula-docs'] --- import kbnLensFormulaDocsObj from './kbn_lens_formula_docs.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index efc33e68c62b3..f5523181b9dad 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index 5d887c66f3cdf..96d1c27ca91ff 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_logs_overview.mdx b/api_docs/kbn_logs_overview.mdx index 8df78788685b1..fca69e91b4589 100644 --- a/api_docs/kbn_logs_overview.mdx +++ b/api_docs/kbn_logs_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logs-overview title: "@kbn/logs-overview" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logs-overview plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logs-overview'] --- import kbnLogsOverviewObj from './kbn_logs_overview.devdocs.json'; diff --git a/api_docs/kbn_managed_content_badge.mdx b/api_docs/kbn_managed_content_badge.mdx index 2b60637228227..1f3b8c78d0c9d 100644 --- a/api_docs/kbn_managed_content_badge.mdx +++ b/api_docs/kbn_managed_content_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-content-badge title: "@kbn/managed-content-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-content-badge plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-content-badge'] --- import kbnManagedContentBadgeObj from './kbn_managed_content_badge.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index 9c14a467c26b0..95e6f5ac88cc7 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index f6d014c546727..7b11a0773b73d 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 63ae6837ca1c7..4b53ac7045fb8 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index c804560379d6a..bcb3887919068 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index e627019c22444..72aa540e911fe 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index 88f49d6187bdd..c6e4a00b1a850 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index 370e3d423a331..ac3d9b235d8bc 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index a2f267f757fc9..69add98f1f8f4 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index e7c87edebfa3b..1f3d0cdabf0de 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index cbda232c8c43b..3a683345a51d1 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index 1e47ebac7281d..6cef487f3ada2 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index e3f6f23914b5d..784bdb2333f13 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 8aa1ac8cf5337..5e5467b0cde9f 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_manifest.mdx b/api_docs/kbn_manifest.mdx index d036fcef36168..c031c2427d5e7 100644 --- a/api_docs/kbn_manifest.mdx +++ b/api_docs/kbn_manifest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-manifest title: "@kbn/manifest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/manifest plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/manifest'] --- import kbnManifestObj from './kbn_manifest.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index e81d5a4cfc1f7..42f6f0560b3e0 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx index e12c0a89c4448..a6640d2f93e63 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index a70dff6460a07..98343536bba55 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index 0d441b1196a03..a303d947744e8 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_cancellable_search.mdx b/api_docs/kbn_ml_cancellable_search.mdx index f078c98b27b2b..97bb672f4027f 100644 --- a/api_docs/kbn_ml_cancellable_search.mdx +++ b/api_docs/kbn_ml_cancellable_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-cancellable-search title: "@kbn/ml-cancellable-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-cancellable-search plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-cancellable-search'] --- import kbnMlCancellableSearchObj from './kbn_ml_cancellable_search.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index b217bfcae02b6..131ad54869de0 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index 3b15e857ba7ce..7c162c5f323a3 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 16c0cb5c60a62..bf8ac2475a65f 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils'] --- import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx index c456b5233846d..55b778e0fb06d 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid'] --- import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index 8271881f64d0d..6ecf05ffb5c8f 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx index 1f23cad7182b1..c2607a9270690 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils'] --- import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx index dcdf8d58a07fc..fb9b00a9bca9d 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_field_stats_flyout.mdx b/api_docs/kbn_ml_field_stats_flyout.mdx index 36c075920f066..8e08e68e24938 100644 --- a/api_docs/kbn_ml_field_stats_flyout.mdx +++ b/api_docs/kbn_ml_field_stats_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-field-stats-flyout title: "@kbn/ml-field-stats-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-field-stats-flyout plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-field-stats-flyout'] --- import kbnMlFieldStatsFlyoutObj from './kbn_ml_field_stats_flyout.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx index 4b754498aa0e2..fc1279263c8b9 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] --- import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index a3bd6d877be67..1518eb6575ad6 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined'] --- import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index 23ae9788308fb..868de594c40a2 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index 4ff09b7a764d8..747a87403900b 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage'] --- import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json'; diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx index 6316893fd9a17..e25b7211f9434 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property'] --- import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json'; diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx index 5061f77deb9a4..b7b2b5ef3049f 100644 --- a/api_docs/kbn_ml_number_utils.mdx +++ b/api_docs/kbn_ml_number_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils title: "@kbn/ml-number-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-number-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_parse_interval.mdx b/api_docs/kbn_ml_parse_interval.mdx index d93dfdc4352e9..505456abfe747 100644 --- a/api_docs/kbn_ml_parse_interval.mdx +++ b/api_docs/kbn_ml_parse_interval.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-parse-interval title: "@kbn/ml-parse-interval" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-parse-interval plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-parse-interval'] --- import kbnMlParseIntervalObj from './kbn_ml_parse_interval.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index de1007f97940c..d8385b4d663ad 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils'] --- import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx index 4d455bec8ab21..c808c2474beaa 100644 --- a/api_docs/kbn_ml_random_sampler_utils.mdx +++ b/api_docs/kbn_ml_random_sampler_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils title: "@kbn/ml-random-sampler-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-random-sampler-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils'] --- import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx index 373d0ea917ae4..8d328cc419db5 100644 --- a/api_docs/kbn_ml_route_utils.mdx +++ b/api_docs/kbn_ml_route_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils title: "@kbn/ml-route-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-route-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils'] --- import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx index 01560e15502d2..83b20e11d0f76 100644 --- a/api_docs/kbn_ml_runtime_field_utils.mdx +++ b/api_docs/kbn_ml_runtime_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils title: "@kbn/ml-runtime-field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-runtime-field-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils'] --- import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index 9a501c4ff0eaa..fe1d28f9c9495 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_time_buckets.mdx b/api_docs/kbn_ml_time_buckets.mdx index 00f495efbc6e7..6f87a577d7f25 100644 --- a/api_docs/kbn_ml_time_buckets.mdx +++ b/api_docs/kbn_ml_time_buckets.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-time-buckets title: "@kbn/ml-time-buckets" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-time-buckets plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-time-buckets'] --- import kbnMlTimeBucketsObj from './kbn_ml_time_buckets.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index 35b25919369c6..922af1b0f088c 100644 --- a/api_docs/kbn_ml_trained_models_utils.mdx +++ b/api_docs/kbn_ml_trained_models_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils title: "@kbn/ml-trained-models-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-trained-models-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index 42f111518aaa7..7abde393cfaa9 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index bd80285c0b308..1b74a79833209 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_ml_validators.mdx b/api_docs/kbn_ml_validators.mdx index 4805e519d8299..b746c47d31a1a 100644 --- a/api_docs/kbn_ml_validators.mdx +++ b/api_docs/kbn_ml_validators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-validators title: "@kbn/ml-validators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-validators plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-validators'] --- import kbnMlValidatorsObj from './kbn_ml_validators.devdocs.json'; diff --git a/api_docs/kbn_mock_idp_utils.mdx b/api_docs/kbn_mock_idp_utils.mdx index 004cd41739cd8..2789602a12ec1 100644 --- a/api_docs/kbn_mock_idp_utils.mdx +++ b/api_docs/kbn_mock_idp_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mock-idp-utils title: "@kbn/mock-idp-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mock-idp-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mock-idp-utils'] --- import kbnMockIdpUtilsObj from './kbn_mock_idp_utils.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 03b85bcff30ed..3c8ed37935458 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_utils.mdx b/api_docs/kbn_object_utils.mdx index e434f4aa027cb..e0d2694ba3109 100644 --- a/api_docs/kbn_object_utils.mdx +++ b/api_docs/kbn_object_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-utils title: "@kbn/object-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-utils'] --- import kbnObjectUtilsObj from './kbn_object_utils.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index b817bdfa2c34c..35c376fd20f81 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_object_versioning_utils.mdx b/api_docs/kbn_object_versioning_utils.mdx index fd305514afa4a..ee7fccc3def6e 100644 --- a/api_docs/kbn_object_versioning_utils.mdx +++ b/api_docs/kbn_object_versioning_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning-utils title: "@kbn/object-versioning-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning-utils'] --- import kbnObjectVersioningUtilsObj from './kbn_object_versioning_utils.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index 852f077176a83..38c57cdb4474e 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index 51d8739939f41..16d50a8ae88b7 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index 5353f99352fba..537de448e5e52 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_observability_synthetics_test_data.mdx b/api_docs/kbn_observability_synthetics_test_data.mdx index 7d990ad915123..5936dd1ece4cf 100644 --- a/api_docs/kbn_observability_synthetics_test_data.mdx +++ b/api_docs/kbn_observability_synthetics_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-synthetics-test-data title: "@kbn/observability-synthetics-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-synthetics-test-data plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-synthetics-test-data'] --- import kbnObservabilitySyntheticsTestDataObj from './kbn_observability_synthetics_test_data.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index 6e357027ee21b..8cc6c469dee34 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index 250c9820b8332..13afeace106ef 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 49151c92edeab..5c491855b5b57 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index b8a23eea99961..8b2d90bf1cb2f 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index fb5359479fcf8..efc506c882be6 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_palettes.mdx b/api_docs/kbn_palettes.mdx index 608e88db55f59..6efd41f13d88a 100644 --- a/api_docs/kbn_palettes.mdx +++ b/api_docs/kbn_palettes.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-palettes title: "@kbn/palettes" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/palettes plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/palettes'] --- import kbnPalettesObj from './kbn_palettes.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index c9a0875b9057d..f9f9d8b0e7cc8 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index dbe6440d5b941..63ffc2b6926d0 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_check.mdx b/api_docs/kbn_plugin_check.mdx index dd951f8c6d856..307e8dfb3be59 100644 --- a/api_docs/kbn_plugin_check.mdx +++ b/api_docs/kbn_plugin_check.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-check title: "@kbn/plugin-check" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-check plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-check'] --- import kbnPluginCheckObj from './kbn_plugin_check.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 4296fdd73ac10..7df77157b2e9f 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index a50281263cdc1..82331dc97aee1 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_presentation_containers.mdx b/api_docs/kbn_presentation_containers.mdx index db9132c963fce..011bd5c0ab3e6 100644 --- a/api_docs/kbn_presentation_containers.mdx +++ b/api_docs/kbn_presentation_containers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-containers title: "@kbn/presentation-containers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-containers plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-containers'] --- import kbnPresentationContainersObj from './kbn_presentation_containers.devdocs.json'; diff --git a/api_docs/kbn_presentation_publishing.mdx b/api_docs/kbn_presentation_publishing.mdx index 65a38d571327d..636b5d41eaea8 100644 --- a/api_docs/kbn_presentation_publishing.mdx +++ b/api_docs/kbn_presentation_publishing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-publishing title: "@kbn/presentation-publishing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-publishing plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-publishing'] --- import kbnPresentationPublishingObj from './kbn_presentation_publishing.devdocs.json'; diff --git a/api_docs/kbn_product_doc_artifact_builder.mdx b/api_docs/kbn_product_doc_artifact_builder.mdx index c86c5bd6d519c..44665ed91f341 100644 --- a/api_docs/kbn_product_doc_artifact_builder.mdx +++ b/api_docs/kbn_product_doc_artifact_builder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-product-doc-artifact-builder title: "@kbn/product-doc-artifact-builder" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/product-doc-artifact-builder plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/product-doc-artifact-builder'] --- import kbnProductDocArtifactBuilderObj from './kbn_product_doc_artifact_builder.devdocs.json'; diff --git a/api_docs/kbn_product_doc_common.mdx b/api_docs/kbn_product_doc_common.mdx index e63e501915a5e..7eeab19b13f90 100644 --- a/api_docs/kbn_product_doc_common.mdx +++ b/api_docs/kbn_product_doc_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-product-doc-common title: "@kbn/product-doc-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/product-doc-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/product-doc-common'] --- import kbnProductDocCommonObj from './kbn_product_doc_common.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 8e1f3669a3a3c..e383da109b5fd 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 8b6a35125a3a0..67489ff83ed9d 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling'] --- import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index d03a7b53f8e65..1edeecafc8444 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_hooks.mdx b/api_docs/kbn_react_hooks.mdx index 42879b6132198..0bd5564f2dac0 100644 --- a/api_docs/kbn_react_hooks.mdx +++ b/api_docs/kbn_react_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-hooks title: "@kbn/react-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-hooks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-hooks'] --- import kbnReactHooksObj from './kbn_react_hooks.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index e2c12e66a4ce1..3ad9e5c920843 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index edb71612ec3a8..745cdbb88d582 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index e22b87aaac79f..fbea1e4e5bc9a 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index 82d6cb83d87b3..b42985aec0074 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index 9e55007c14c9c..c33d50d934fe4 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index 7fc88b5a74fdc..05fe05bd095e3 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_react_mute_legacy_root_warning.mdx b/api_docs/kbn_react_mute_legacy_root_warning.mdx index 5f040e9efaead..b4fbbe300539d 100644 --- a/api_docs/kbn_react_mute_legacy_root_warning.mdx +++ b/api_docs/kbn_react_mute_legacy_root_warning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-mute-legacy-root-warning title: "@kbn/react-mute-legacy-root-warning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-mute-legacy-root-warning plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-mute-legacy-root-warning'] --- import kbnReactMuteLegacyRootWarningObj from './kbn_react_mute_legacy_root_warning.devdocs.json'; diff --git a/api_docs/kbn_recently_accessed.mdx b/api_docs/kbn_recently_accessed.mdx index 5d398cf9c1667..a76f2c04f4eea 100644 --- a/api_docs/kbn_recently_accessed.mdx +++ b/api_docs/kbn_recently_accessed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-recently-accessed title: "@kbn/recently-accessed" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/recently-accessed plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/recently-accessed'] --- import kbnRecentlyAccessedObj from './kbn_recently_accessed.devdocs.json'; diff --git a/api_docs/kbn_relocate.mdx b/api_docs/kbn_relocate.mdx index bf7a03207a782..2e99cc082e943 100644 --- a/api_docs/kbn_relocate.mdx +++ b/api_docs/kbn_relocate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-relocate title: "@kbn/relocate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/relocate plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/relocate'] --- import kbnRelocateObj from './kbn_relocate.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index 64ec82176a96f..d6abcd27520fa 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index 0affafd8702f8..dee79d6875406 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index 0e8590a747bab..06e81cdcd424f 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index cf1a0dab837b2..73b125e41b357 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx index c5f271be2449d..36d8002a6b377 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_csv_share_panel.mdx b/api_docs/kbn_reporting_csv_share_panel.mdx index 02d7bce94165a..0cd8891075e48 100644 --- a/api_docs/kbn_reporting_csv_share_panel.mdx +++ b/api_docs/kbn_reporting_csv_share_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-csv-share-panel title: "@kbn/reporting-csv-share-panel" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-csv-share-panel plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-csv-share-panel'] --- import kbnReportingCsvSharePanelObj from './kbn_reporting_csv_share_panel.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index c2b19be9d2573..acc11e5acfadb 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index 7387e7821230c..066b25454f5af 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index a8a5e328c468a..8b044cd1abd12 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index 855ebd8392ebf..8bbe89702570f 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index 800504ec2f89a..4e8b37d8c4586 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index 88363e967e7f9..88020a55c07fa 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index 797b3566dc703..3166af6f4f65f 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index 28e389e718512..1c2fcfbb2b2fd 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index 66b798bc6817c..a9b07afaae331 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index 38553bfa8ab61..e4c7bf02e9441 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_response_ops_alerts_fields_browser.mdx b/api_docs/kbn_response_ops_alerts_fields_browser.mdx index 27f7b43caa4cb..3e765ac683624 100644 --- a/api_docs/kbn_response_ops_alerts_fields_browser.mdx +++ b/api_docs/kbn_response_ops_alerts_fields_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-alerts-fields-browser title: "@kbn/response-ops-alerts-fields-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-alerts-fields-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-alerts-fields-browser'] --- import kbnResponseOpsAlertsFieldsBrowserObj from './kbn_response_ops_alerts_fields_browser.devdocs.json'; diff --git a/api_docs/kbn_response_ops_alerts_table.mdx b/api_docs/kbn_response_ops_alerts_table.mdx index 7d99af0f000e3..2bcba31844a43 100644 --- a/api_docs/kbn_response_ops_alerts_table.mdx +++ b/api_docs/kbn_response_ops_alerts_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-alerts-table title: "@kbn/response-ops-alerts-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-alerts-table plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-alerts-table'] --- import kbnResponseOpsAlertsTableObj from './kbn_response_ops_alerts_table.devdocs.json'; diff --git a/api_docs/kbn_response_ops_rule_form.mdx b/api_docs/kbn_response_ops_rule_form.mdx index 5a6ac5ae8fd51..b78ac1b0d5904 100644 --- a/api_docs/kbn_response_ops_rule_form.mdx +++ b/api_docs/kbn_response_ops_rule_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-rule-form title: "@kbn/response-ops-rule-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-rule-form plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-rule-form'] --- import kbnResponseOpsRuleFormObj from './kbn_response_ops_rule_form.devdocs.json'; diff --git a/api_docs/kbn_response_ops_rule_params.mdx b/api_docs/kbn_response_ops_rule_params.mdx index 1650b81fa669c..4ae28095fc3d0 100644 --- a/api_docs/kbn_response_ops_rule_params.mdx +++ b/api_docs/kbn_response_ops_rule_params.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-rule-params title: "@kbn/response-ops-rule-params" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-rule-params plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-rule-params'] --- import kbnResponseOpsRuleParamsObj from './kbn_response_ops_rule_params.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 487176bff6829..2e125c2adc987 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rollup.mdx b/api_docs/kbn_rollup.mdx index 2acb637e0b064..d2c7cdffafdf2 100644 --- a/api_docs/kbn_rollup.mdx +++ b/api_docs/kbn_rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rollup title: "@kbn/rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rollup plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rollup'] --- import kbnRollupObj from './kbn_rollup.devdocs.json'; diff --git a/api_docs/kbn_router_to_openapispec.mdx b/api_docs/kbn_router_to_openapispec.mdx index 057fb38c5b0aa..ffb3c41d06d3a 100644 --- a/api_docs/kbn_router_to_openapispec.mdx +++ b/api_docs/kbn_router_to_openapispec.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-to-openapispec title: "@kbn/router-to-openapispec" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-to-openapispec plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-to-openapispec'] --- import kbnRouterToOpenapispecObj from './kbn_router_to_openapispec.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 810252e161c78..868885c8e4c60 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index a2563fc1b715f..693eb3f6e473d 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 5a95a8a7398fd..918e9eb2b6a50 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx index 99d663c53364f..9c4c22adfe540 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_saved_search_component.mdx b/api_docs/kbn_saved_search_component.mdx index 5c55c97d05682..e144b932c0825 100644 --- a/api_docs/kbn_saved_search_component.mdx +++ b/api_docs/kbn_saved_search_component.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-search-component title: "@kbn/saved-search-component" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-search-component plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-search-component'] --- import kbnSavedSearchComponentObj from './kbn_saved_search_component.devdocs.json'; diff --git a/api_docs/kbn_scout.mdx b/api_docs/kbn_scout.mdx index 0ae4186e0abf8..5b3604afedb31 100644 --- a/api_docs/kbn_scout.mdx +++ b/api_docs/kbn_scout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout title: "@kbn/scout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout'] --- import kbnScoutObj from './kbn_scout.devdocs.json'; diff --git a/api_docs/kbn_scout_info.mdx b/api_docs/kbn_scout_info.mdx index 2a2b4237ff928..ba4e20f5d0fc3 100644 --- a/api_docs/kbn_scout_info.mdx +++ b/api_docs/kbn_scout_info.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-info title: "@kbn/scout-info" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-info plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-info'] --- import kbnScoutInfoObj from './kbn_scout_info.devdocs.json'; diff --git a/api_docs/kbn_scout_oblt.mdx b/api_docs/kbn_scout_oblt.mdx index 5dcf208c3c356..6c5dcdd75cd11 100644 --- a/api_docs/kbn_scout_oblt.mdx +++ b/api_docs/kbn_scout_oblt.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-oblt title: "@kbn/scout-oblt" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-oblt plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-oblt'] --- import kbnScoutObltObj from './kbn_scout_oblt.devdocs.json'; diff --git a/api_docs/kbn_scout_reporting.mdx b/api_docs/kbn_scout_reporting.mdx index 51d0637d69825..0cdee3fe7b62d 100644 --- a/api_docs/kbn_scout_reporting.mdx +++ b/api_docs/kbn_scout_reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-reporting title: "@kbn/scout-reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-reporting plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-reporting'] --- import kbnScoutReportingObj from './kbn_scout_reporting.devdocs.json'; diff --git a/api_docs/kbn_screenshotting_server.mdx b/api_docs/kbn_screenshotting_server.mdx index 1d25f960f3d15..60b0de4264278 100644 --- a/api_docs/kbn_screenshotting_server.mdx +++ b/api_docs/kbn_screenshotting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-screenshotting-server title: "@kbn/screenshotting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/screenshotting-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/screenshotting-server'] --- import kbnScreenshottingServerObj from './kbn_screenshotting_server.devdocs.json'; diff --git a/api_docs/kbn_search_api_keys_components.mdx b/api_docs/kbn_search_api_keys_components.mdx index 19b27e71ed273..fa5ebbccb66ba 100644 --- a/api_docs/kbn_search_api_keys_components.mdx +++ b/api_docs/kbn_search_api_keys_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-keys-components title: "@kbn/search-api-keys-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-keys-components plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-keys-components'] --- import kbnSearchApiKeysComponentsObj from './kbn_search_api_keys_components.devdocs.json'; diff --git a/api_docs/kbn_search_api_keys_server.mdx b/api_docs/kbn_search_api_keys_server.mdx index dae83b17cf995..3ecf4db6b49b8 100644 --- a/api_docs/kbn_search_api_keys_server.mdx +++ b/api_docs/kbn_search_api_keys_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-keys-server title: "@kbn/search-api-keys-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-keys-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-keys-server'] --- import kbnSearchApiKeysServerObj from './kbn_search_api_keys_server.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 547f65f5445c7..8814cb9f8d9e3 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index bd40356af2a79..8cf771fed69dc 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index 0cbed3acb7e48..1c74f5f585ba3 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index 39bda33d81015..9a34f1f092a31 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index 863f283459778..cae91b73eee7c 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_search_shared_ui.devdocs.json b/api_docs/kbn_search_shared_ui.devdocs.json index 3d9c1e561f10a..e7c17245e296a 100644 --- a/api_docs/kbn_search_shared_ui.devdocs.json +++ b/api_docs/kbn_search_shared_ui.devdocs.json @@ -13,7 +13,7 @@ "signature": [ "({ name, serviceType, iconPath, showTooltip, }: ConnectorIconProps) => React.JSX.Element" ], - "path": "x-pack/solutions/search/packages/shared_ui/src/connector_icon/connector_icon.tsx", + "path": "x-pack/solutions/search/packages/shared-ui/src/connector_icon/connector_icon.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -27,7 +27,7 @@ "signature": [ "ConnectorIconProps" ], - "path": "x-pack/solutions/search/packages/shared_ui/src/connector_icon/connector_icon.tsx", + "path": "x-pack/solutions/search/packages/shared-ui/src/connector_icon/connector_icon.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -46,7 +46,7 @@ "signature": [ "({ stepCount, }: DecorativeHorizontalStepperProps) => React.JSX.Element" ], - "path": "x-pack/solutions/search/packages/shared_ui/src/decorative_horizontal_stepper/decorative_horizontal_stepper.tsx", + "path": "x-pack/solutions/search/packages/shared-ui/src/decorative_horizontal_stepper/decorative_horizontal_stepper.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -60,7 +60,7 @@ "signature": [ "DecorativeHorizontalStepperProps" ], - "path": "x-pack/solutions/search/packages/shared_ui/src/decorative_horizontal_stepper/decorative_horizontal_stepper.tsx", + "path": "x-pack/solutions/search/packages/shared-ui/src/decorative_horizontal_stepper/decorative_horizontal_stepper.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -79,7 +79,7 @@ "signature": [ "({ title, titleId, ...props }: React.SVGProps & SVGRProps) => React.JSX.Element" ], - "path": "x-pack/solutions/search/packages/shared_ui/src/icons/EuiIconPlugs.tsx", + "path": "x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconPlugs.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -93,7 +93,7 @@ "signature": [ "React.SVGProps & SVGRProps" ], - "path": "x-pack/solutions/search/packages/shared_ui/src/icons/EuiIconPlugs.tsx", + "path": "x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconPlugs.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -112,7 +112,7 @@ "signature": [ "({ title, titleId, ...props }: React.SVGProps & SVGRProps) => React.JSX.Element" ], - "path": "x-pack/solutions/search/packages/shared_ui/src/icons/EuiIconWeb.tsx", + "path": "x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconWeb.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -126,7 +126,7 @@ "signature": [ "React.SVGProps & SVGRProps" ], - "path": "x-pack/solutions/search/packages/shared_ui/src/icons/EuiIconWeb.tsx", + "path": "x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconWeb.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -145,7 +145,7 @@ "signature": [ "({ actions, label, value, copyValue, dataTestSubj, copyValueDataTestSubj, }: FormInfoFieldProps) => React.JSX.Element" ], - "path": "x-pack/solutions/search/packages/shared_ui/src/form_info_field/form_info_field.tsx", + "path": "x-pack/solutions/search/packages/shared-ui/src/form_info_field/form_info_field.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -159,7 +159,7 @@ "signature": [ "FormInfoFieldProps" ], - "path": "x-pack/solutions/search/packages/shared_ui/src/form_info_field/form_info_field.tsx", + "path": "x-pack/solutions/search/packages/shared-ui/src/form_info_field/form_info_field.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -178,7 +178,7 @@ "signature": [ "({ actions, backButton, body, description, icon, isComingSoon, comingSoonLabel, title, }: SearchEmptyPromptProps) => React.JSX.Element" ], - "path": "x-pack/solutions/search/packages/shared_ui/src/search_empty_prompt/search_empty_prompt.tsx", + "path": "x-pack/solutions/search/packages/shared-ui/src/search_empty_prompt/search_empty_prompt.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -192,7 +192,7 @@ "signature": [ "SearchEmptyPromptProps" ], - "path": "x-pack/solutions/search/packages/shared_ui/src/search_empty_prompt/search_empty_prompt.tsx", + "path": "x-pack/solutions/search/packages/shared-ui/src/search_empty_prompt/search_empty_prompt.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true diff --git a/api_docs/kbn_search_shared_ui.mdx b/api_docs/kbn_search_shared_ui.mdx index 9b56b8f2155f5..3da6136e012f3 100644 --- a/api_docs/kbn_search_shared_ui.mdx +++ b/api_docs/kbn_search_shared_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-shared-ui title: "@kbn/search-shared-ui" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-shared-ui plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-shared-ui'] --- import kbnSearchSharedUiObj from './kbn_search_shared_ui.devdocs.json'; diff --git a/api_docs/kbn_search_types.mdx b/api_docs/kbn_search_types.mdx index 7e15d1315227a..37cbc865cf3d7 100644 --- a/api_docs/kbn_search_types.mdx +++ b/api_docs/kbn_search_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-types title: "@kbn/search-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-types'] --- import kbnSearchTypesObj from './kbn_search_types.devdocs.json'; diff --git a/api_docs/kbn_security_ai_prompts.mdx b/api_docs/kbn_security_ai_prompts.mdx index f6223f7da3db9..a78f16f12bb82 100644 --- a/api_docs/kbn_security_ai_prompts.mdx +++ b/api_docs/kbn_security_ai_prompts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-ai-prompts title: "@kbn/security-ai-prompts" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-ai-prompts plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-ai-prompts'] --- import kbnSecurityAiPromptsObj from './kbn_security_ai_prompts.devdocs.json'; diff --git a/api_docs/kbn_security_api_key_management.mdx b/api_docs/kbn_security_api_key_management.mdx index be1f65e7acf3e..32b0602f813ee 100644 --- a/api_docs/kbn_security_api_key_management.mdx +++ b/api_docs/kbn_security_api_key_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-api-key-management title: "@kbn/security-api-key-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-api-key-management plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-api-key-management'] --- import kbnSecurityApiKeyManagementObj from './kbn_security_api_key_management.devdocs.json'; diff --git a/api_docs/kbn_security_authorization_core.mdx b/api_docs/kbn_security_authorization_core.mdx index 2ea7e6eb10eb1..872e7e156c823 100644 --- a/api_docs/kbn_security_authorization_core.mdx +++ b/api_docs/kbn_security_authorization_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-authorization-core title: "@kbn/security-authorization-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-authorization-core plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-authorization-core'] --- import kbnSecurityAuthorizationCoreObj from './kbn_security_authorization_core.devdocs.json'; diff --git a/api_docs/kbn_security_authorization_core_common.mdx b/api_docs/kbn_security_authorization_core_common.mdx index 114c3b02d7324..16099c4c136cf 100644 --- a/api_docs/kbn_security_authorization_core_common.mdx +++ b/api_docs/kbn_security_authorization_core_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-authorization-core-common title: "@kbn/security-authorization-core-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-authorization-core-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-authorization-core-common'] --- import kbnSecurityAuthorizationCoreCommonObj from './kbn_security_authorization_core_common.devdocs.json'; diff --git a/api_docs/kbn_security_form_components.mdx b/api_docs/kbn_security_form_components.mdx index ea58fc53d0252..b280f481b0b92 100644 --- a/api_docs/kbn_security_form_components.mdx +++ b/api_docs/kbn_security_form_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-form-components title: "@kbn/security-form-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-form-components plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-form-components'] --- import kbnSecurityFormComponentsObj from './kbn_security_form_components.devdocs.json'; diff --git a/api_docs/kbn_security_hardening.mdx b/api_docs/kbn_security_hardening.mdx index 70f908cf04324..04fb2fbd65200 100644 --- a/api_docs/kbn_security_hardening.mdx +++ b/api_docs/kbn_security_hardening.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-hardening title: "@kbn/security-hardening" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-hardening plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-hardening'] --- import kbnSecurityHardeningObj from './kbn_security_hardening.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index 84f8e637f4675..989fcca329817 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index b6e0784c1b4a2..00f394b27d04e 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index 5c42c9d1cbaa5..b9ec96b9dcd13 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_role_management_model.mdx b/api_docs/kbn_security_role_management_model.mdx index 2c6f35723dba7..abcebfe3aca41 100644 --- a/api_docs/kbn_security_role_management_model.mdx +++ b/api_docs/kbn_security_role_management_model.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-role-management-model title: "@kbn/security-role-management-model" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-role-management-model plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-role-management-model'] --- import kbnSecurityRoleManagementModelObj from './kbn_security_role_management_model.devdocs.json'; diff --git a/api_docs/kbn_security_solution_connectors.mdx b/api_docs/kbn_security_solution_connectors.mdx index f797567e2002b..32ba1fccc2463 100644 --- a/api_docs/kbn_security_solution_connectors.mdx +++ b/api_docs/kbn_security_solution_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-connectors title: "@kbn/security-solution-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-connectors plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-connectors'] --- import kbnSecuritySolutionConnectorsObj from './kbn_security_solution_connectors.devdocs.json'; diff --git a/api_docs/kbn_security_solution_distribution_bar.mdx b/api_docs/kbn_security_solution_distribution_bar.mdx index 111ec887e388f..f37a7ed997e8e 100644 --- a/api_docs/kbn_security_solution_distribution_bar.mdx +++ b/api_docs/kbn_security_solution_distribution_bar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-distribution-bar title: "@kbn/security-solution-distribution-bar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-distribution-bar plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-distribution-bar'] --- import kbnSecuritySolutionDistributionBarObj from './kbn_security_solution_distribution_bar.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index 1cb84f3a6824f..ec1e8f3b318ee 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 473c5c7431fa1..955e90e9b7356 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index 63668d562c2c9..9c30257a60515 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index 0f9108b57547e..b638ebd8670a4 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_security_ui_components.mdx b/api_docs/kbn_security_ui_components.mdx index df9358a13d011..394779575c385 100644 --- a/api_docs/kbn_security_ui_components.mdx +++ b/api_docs/kbn_security_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-ui-components title: "@kbn/security-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-ui-components plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-ui-components'] --- import kbnSecurityUiComponentsObj from './kbn_security_ui_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index e4b33e25d6dcf..2f46b4c453d4f 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx index 0c5c5fc2ec461..dbee910f62565 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 24d57dfd2c4cf..564127ef41666 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index dbb03c850ca9f..e5c303f81b34d 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index 23645d0f148c9..a33e142a32afd 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 4a69e5c5cd8ee..3d1a36c7a4c0d 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index 7b11fda3ee982..6e85a5f82ce1a 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,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 description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index f04f456d95732..81e1003ed08f9 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,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 description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 1bf19297896e2..3e1b38407dc15 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index f11a87ba28fa0..9d6413b2baeec 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index ce435eeba37b7..3f635bf5a3437 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index 12b6846abfed8..de015c15ac96b 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index e836543c5c0b7..900f082f8ce59 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index 34a61ac35d155..53e0e5fe2505a 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index e78da0d6dcb95..e4b96ab8a26d7 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 75144696b31f7..95af49824a623 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 7e9b58a04f587..dedcbbbcaed21 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index 8c8f72b20881f..c335f1c1f542c 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index f96391e5227b9..e0f5936964006 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_client.mdx b/api_docs/kbn_server_route_repository_client.mdx index ea37eeb753cf3..a8455d116d781 100644 --- a/api_docs/kbn_server_route_repository_client.mdx +++ b/api_docs/kbn_server_route_repository_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-client title: "@kbn/server-route-repository-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-client plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-client'] --- import kbnServerRouteRepositoryClientObj from './kbn_server_route_repository_client.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_utils.mdx b/api_docs/kbn_server_route_repository_utils.mdx index 10c405f695ca0..e2f0af1bd06fa 100644 --- a/api_docs/kbn_server_route_repository_utils.mdx +++ b/api_docs/kbn_server_route_repository_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-utils title: "@kbn/server-route-repository-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-utils'] --- import kbnServerRouteRepositoryUtilsObj from './kbn_server_route_repository_utils.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index 3dac714923edc..72faad1243f19 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index 81131ecdc686d..27ec9723385eb 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index 660a99ddc90b2..7cfc871454bf4 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index 35d187a8e29cc..2e362d6f89a74 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index c6c06f9ba4435..52f55319d3fc5 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config'] --- import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index 6127f34b71351..8049b54f7455d 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index ce63365fc8e8d..408645a1ad92b 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index fbd5de9c4c21c..def96769c7f03 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index cca9c2097bec1..acffa67e2bdaa 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index dfbc5aa22730f..25e9ed0736ae5 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,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 description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index e3904480e9a3f..0e81e34c2f30e 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx index cb6325b34eb78..c61af036e12ff 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index bbd826c6e018d..b3231cef0ae3e 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index 0fafd862eaf53..d033f9f8e5b63 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index 42f1d1dc3d807..7c4759ffd6dd2 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index 0988414e799eb..ed19274ee041a 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index b6315cfa985dd..46842446d6b2c 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index d5b0b769f067e..c19bc0da9038a 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index 26cc056c567d4..4a43fb3fd4f70 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types'] --- import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index 16f4de8aca0fb..9a2674fd02091 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index 4e6c3cf1dbfbb..529b5c0e700ab 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index 522e72952796d..bdeeeda14b9e5 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index 384b7023ec569..118731d7f30b7 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index cde96dc329f04..6505072303723 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index 9ae91ecef4b6a..ecbe6fd768a97 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json'; 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 3d84b1cfe2c8b..b57f36b01b492 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,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 description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index 21f30ab1f25ab..1d37707610763 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; 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 d7d1d7ee42575..1abf9450f36ef 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,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 description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index 0acbfcfad2028..bae2c9b2cd6b4 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index 6db203872ce0d..1feb6b4765b00 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index ac1ee11581d7f..f6cae664f7d20 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index a1fa531e22b18..7410d5394e9c9 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index f0c8f38c39cf5..e02fc76647072 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index 8f4560e0e70a7..d4bee1cb69744 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index 4fa824855ad31..b93a0cad2c937 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index 6a66d6416fda1..793910b621951 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; 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 d0e3702f7d370..577e1d927c22b 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,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 description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index 61f61f4e91d17..8f1166d2f1c2a 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index cc1c183fcf7e9..0f3d0f3ce91db 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index 8c1edc886e052..09293f29e8d70 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index 6f1c11c4f9757..3cbc6074ed711 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index e17990b9ff1a3..550cff552494e 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 43c86a004bb3d..0cb4ac2e7bc54 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_tabbed_modal.mdx b/api_docs/kbn_shared_ux_tabbed_modal.mdx index fd39ff613c053..d5b65077b7285 100644 --- a/api_docs/kbn_shared_ux_tabbed_modal.mdx +++ b/api_docs/kbn_shared_ux_tabbed_modal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-tabbed-modal title: "@kbn/shared-ux-tabbed-modal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-tabbed-modal plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-tabbed-modal'] --- import kbnSharedUxTabbedModalObj from './kbn_shared_ux_tabbed_modal.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_table_persist.mdx b/api_docs/kbn_shared_ux_table_persist.mdx index 460125715e0a2..84fb606812f04 100644 --- a/api_docs/kbn_shared_ux_table_persist.mdx +++ b/api_docs/kbn_shared_ux_table_persist.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-table-persist title: "@kbn/shared-ux-table-persist" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-table-persist plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-table-persist'] --- import kbnSharedUxTablePersistObj from './kbn_shared_ux_table_persist.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 607a271b87488..f0d8eeabb2554 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index b2c710b164609..007d860052956 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index 05aca15611f9a..ce97833428e2d 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_predicates.mdx b/api_docs/kbn_sort_predicates.mdx index c9a8c2838b50e..e4173d94e3d0f 100644 --- a/api_docs/kbn_sort_predicates.mdx +++ b/api_docs/kbn_sort_predicates.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-predicates title: "@kbn/sort-predicates" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sort-predicates plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-predicates'] --- import kbnSortPredicatesObj from './kbn_sort_predicates.devdocs.json'; diff --git a/api_docs/kbn_sse_utils.mdx b/api_docs/kbn_sse_utils.mdx index f91b189ab30c8..1199d1a5e95ad 100644 --- a/api_docs/kbn_sse_utils.mdx +++ b/api_docs/kbn_sse_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils title: "@kbn/sse-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils'] --- import kbnSseUtilsObj from './kbn_sse_utils.devdocs.json'; diff --git a/api_docs/kbn_sse_utils_client.mdx b/api_docs/kbn_sse_utils_client.mdx index a0d1c6b41540e..f28438c2e628c 100644 --- a/api_docs/kbn_sse_utils_client.mdx +++ b/api_docs/kbn_sse_utils_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils-client title: "@kbn/sse-utils-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils-client plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils-client'] --- import kbnSseUtilsClientObj from './kbn_sse_utils_client.devdocs.json'; diff --git a/api_docs/kbn_sse_utils_server.mdx b/api_docs/kbn_sse_utils_server.mdx index 58a2d28d5218b..c7f8bc8870f51 100644 --- a/api_docs/kbn_sse_utils_server.mdx +++ b/api_docs/kbn_sse_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils-server title: "@kbn/sse-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils-server plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils-server'] --- import kbnSseUtilsServerObj from './kbn_sse_utils_server.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index 7816f4f39aa91..b77e8320e963c 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 481c75f9c2671..02cd998580522 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 291ff4ba62416..0066a0e3b3964 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_streams_schema.mdx b/api_docs/kbn_streams_schema.mdx index 26120aceed0b9..83d2da9d93040 100644 --- a/api_docs/kbn_streams_schema.mdx +++ b/api_docs/kbn_streams_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-streams-schema title: "@kbn/streams-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/streams-schema plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/streams-schema'] --- import kbnStreamsSchemaObj from './kbn_streams_schema.devdocs.json'; diff --git a/api_docs/kbn_synthetics_e2e.mdx b/api_docs/kbn_synthetics_e2e.mdx index f697a6b9f5eb7..431da6d06b64c 100644 --- a/api_docs/kbn_synthetics_e2e.mdx +++ b/api_docs/kbn_synthetics_e2e.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-e2e title: "@kbn/synthetics-e2e" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-e2e plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-e2e'] --- import kbnSyntheticsE2eObj from './kbn_synthetics_e2e.devdocs.json'; diff --git a/api_docs/kbn_synthetics_private_location.mdx b/api_docs/kbn_synthetics_private_location.mdx index ecf24f4a32c65..3159dfba622b8 100644 --- a/api_docs/kbn_synthetics_private_location.mdx +++ b/api_docs/kbn_synthetics_private_location.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-private-location title: "@kbn/synthetics-private-location" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-private-location plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-private-location'] --- import kbnSyntheticsPrivateLocationObj from './kbn_synthetics_private_location.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 43743f1db4695..fe67449f1ce28 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index 9c504e5da1cec..95cc240123267 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_eui_helpers.mdx b/api_docs/kbn_test_eui_helpers.mdx index 1760ea9cc0fd4..e7062ae4adb94 100644 --- a/api_docs/kbn_test_eui_helpers.mdx +++ b/api_docs/kbn_test_eui_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-eui-helpers title: "@kbn/test-eui-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-eui-helpers plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-eui-helpers'] --- import kbnTestEuiHelpersObj from './kbn_test_eui_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 0dae4b1574a0b..e9196d7137916 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index 5514c6d272a31..93aaecbcc6bd8 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_timerange.mdx b/api_docs/kbn_timerange.mdx index d5c4833d82467..ee4bc7cd85ddf 100644 --- a/api_docs/kbn_timerange.mdx +++ b/api_docs/kbn_timerange.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-timerange title: "@kbn/timerange" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/timerange plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/timerange'] --- import kbnTimerangeObj from './kbn_timerange.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index fece6a646694f..965202c84772d 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_transpose_utils.mdx b/api_docs/kbn_transpose_utils.mdx index ceb8fa7c29590..5b76654be4180 100644 --- a/api_docs/kbn_transpose_utils.mdx +++ b/api_docs/kbn_transpose_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-transpose-utils title: "@kbn/transpose-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/transpose-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/transpose-utils'] --- import kbnTransposeUtilsObj from './kbn_transpose_utils.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index 81803f267b2e6..360d5f9cbd854 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_try_in_console.mdx b/api_docs/kbn_try_in_console.mdx index 2c24cddca9b02..91521849c6d35 100644 --- a/api_docs/kbn_try_in_console.mdx +++ b/api_docs/kbn_try_in_console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-try-in-console title: "@kbn/try-in-console" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/try-in-console plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/try-in-console'] --- import kbnTryInConsoleObj from './kbn_try_in_console.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 85b4c4944bc2d..303cd6cef9de7 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index a3a32adad69d2..65c4168b19485 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index c8fb393e91fd1..a5553f2bf71d1 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index e7c2a03340b4e..20218daea3d32 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 730b5dcde3413..455f426bd0942 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index 02050fc884400..0f47657d9705b 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 7a4657256803b..a269b3d1e561c 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index 1d46c83ee8c3a..d6ae46cae2701 100644 --- a/api_docs/kbn_unified_field_list.mdx +++ b/api_docs/kbn_unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list title: "@kbn/unified-field-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-field-list plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index d5503fc6fe950..b59411c7d887d 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_prompt.mdx b/api_docs/kbn_unsaved_changes_prompt.mdx index 55850a781cb55..ac95bf5b550c4 100644 --- a/api_docs/kbn_unsaved_changes_prompt.mdx +++ b/api_docs/kbn_unsaved_changes_prompt.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-prompt title: "@kbn/unsaved-changes-prompt" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-prompt plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-prompt'] --- import kbnUnsavedChangesPromptObj from './kbn_unsaved_changes_prompt.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 4228d9cda76e3..18107aac6b43b 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index f1d85fddd5eff..29b12f27f3b74 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index 212d95faebedb..f23be5524da46 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index 0999c98b8423f..1ebbef739609a 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 511df0fbc6c77..1022e78e8c4d1 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index 89152e0bba2bb..758f23b5be2a4 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index 7baacddaa9bc3..c60cdf22ea454 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index 06171f127e84e..eb3eb72716d88 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index f07d830fcd9e0..46677c22c3b99 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod.mdx b/api_docs/kbn_zod.mdx index 03af381cef84b..c33c8f31fcd6a 100644 --- a/api_docs/kbn_zod.mdx +++ b/api_docs/kbn_zod.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod title: "@kbn/zod" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod'] --- import kbnZodObj from './kbn_zod.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index df9f588c66246..c80de69a563da 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index c21c8dea2733e..6b866b04230ee 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 7d523b753a605..97aac1d72d10a 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index 60482dfb2d6e2..c4f4fbc60827d 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index b232fafb91559..f411b16b4f87e 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 6726df9c9df63..44fcee236eb38 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index fecc73e17d513..263bbd712d202 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 3ce549543cfdd..e570c148f532e 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index 771a77ebf09d2..ae32f9e8cb31a 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index fb1fe083fa5b9..20a8058b70573 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/llm_tasks.mdx b/api_docs/llm_tasks.mdx index 35074322b311f..9c43d16acb7df 100644 --- a/api_docs/llm_tasks.mdx +++ b/api_docs/llm_tasks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/llmTasks title: "llmTasks" image: https://source.unsplash.com/400x175/?github description: API docs for the llmTasks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'llmTasks'] --- import llmTasksObj from './llm_tasks.devdocs.json'; diff --git a/api_docs/logs_data_access.mdx b/api_docs/logs_data_access.mdx index 435e46a25b24a..5b7f787eb4048 100644 --- a/api_docs/logs_data_access.mdx +++ b/api_docs/logs_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsDataAccess title: "logsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the logsDataAccess plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsDataAccess'] --- import logsDataAccessObj from './logs_data_access.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index df938b58e715a..1311c846fa880 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 017ea6eb87881..2b8cd1f2a9957 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index e1b4e3ba47ba5..658660320fd50 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index 48fef2dc0adf5..2be45be8ff772 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index 98640515426ac..d2ca65ff72c03 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 1e45e632c05fd..28a861d17295c 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index abab10b785ea5..dd040cb87bbf5 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 65d6c93b88230..2b2b102e4c176 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index 24a9d70c03eca..c204d2e6c9bd9 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 5af5101059bf8..7f5bbf9d19d74 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index 136dcddac8072..acf810e0b462f 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index 60b017366e7e5..6aec1abb031e8 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 107b93fe3d61b..cfb69bf853a3b 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index a7ed09638b649..49ff18f675eff 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 11db85c694c4f..777f3d8bd45b3 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant_app.mdx b/api_docs/observability_a_i_assistant_app.mdx index afc0a2614c74c..44ea4a69b806c 100644 --- a/api_docs/observability_a_i_assistant_app.mdx +++ b/api_docs/observability_a_i_assistant_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistantApp title: "observabilityAIAssistantApp" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistantApp plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistantApp'] --- import observabilityAIAssistantAppObj from './observability_a_i_assistant_app.devdocs.json'; diff --git a/api_docs/observability_ai_assistant_management.mdx b/api_docs/observability_ai_assistant_management.mdx index 070bf6bad5ed2..9a89028a727f8 100644 --- a/api_docs/observability_ai_assistant_management.mdx +++ b/api_docs/observability_ai_assistant_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAiAssistantManagement title: "observabilityAiAssistantManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAiAssistantManagement plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAiAssistantManagement'] --- import observabilityAiAssistantManagementObj from './observability_ai_assistant_management.devdocs.json'; diff --git a/api_docs/observability_logs_explorer.mdx b/api_docs/observability_logs_explorer.mdx index 151040e221047..11a5beac36867 100644 --- a/api_docs/observability_logs_explorer.mdx +++ b/api_docs/observability_logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogsExplorer title: "observabilityLogsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogsExplorer plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogsExplorer'] --- import observabilityLogsExplorerObj from './observability_logs_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index e38519ca06c95..a617b7d9627bd 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index 98b6c770f9b3e..86fd65b000bbf 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 85f75da9c574e..98000ecb386d6 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index d5627a5282ac9..d7626644cf3a3 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index c43cae1bd8d6b..32e36292a62e9 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/presentation_panel.mdx b/api_docs/presentation_panel.mdx index b7764b56e3a52..d3a4c6a40ad4c 100644 --- a/api_docs/presentation_panel.mdx +++ b/api_docs/presentation_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationPanel title: "presentationPanel" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationPanel plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationPanel'] --- import presentationPanelObj from './presentation_panel.devdocs.json'; diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 990183cf36c60..ddcd4fcddb7ea 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/product_doc_base.mdx b/api_docs/product_doc_base.mdx index 379841e2a87e0..3b301da8e0018 100644 --- a/api_docs/product_doc_base.mdx +++ b/api_docs/product_doc_base.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/productDocBase title: "productDocBase" image: https://source.unsplash.com/400x175/?github description: API docs for the productDocBase plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'productDocBase'] --- import productDocBaseObj from './product_doc_base.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index eb1796384d2d4..3ab22798762df 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index f49fc7d0dc6cf..79fc353538c65 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 88f2fe0ee41b6..dc4b8cfb22d67 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index c77eeca55944d..3a7bca30a2258 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index 4a22ba23fee61..11fe75bd010f6 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 431377aa0a5e1..b36e4bf15cd31 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index 0c29b3df3b877..b3dc67f34256b 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index a0e1aab0bde79..840f7eab7f64e 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index 88cde38fe8357..0dbd483fd9569 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 49bcf7d3e6bc8..d1154d7d853e7 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index d181d4ecf7d4d..690e22747e31e 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index fdc950cad09d2..20b157ddc8db9 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index 7948d02c27359..e3ce229b7ad71 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index 2710eed237da0..4cb1bc6beee15 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index 4cd4c117713ff..1889e3133d573 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/search_assistant.mdx b/api_docs/search_assistant.mdx index d08dc44926af1..ba74a7ea47198 100644 --- a/api_docs/search_assistant.mdx +++ b/api_docs/search_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchAssistant title: "searchAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the searchAssistant plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchAssistant'] --- import searchAssistantObj from './search_assistant.devdocs.json'; diff --git a/api_docs/search_connectors.mdx b/api_docs/search_connectors.mdx index a9844f545f566..90695fb3794ce 100644 --- a/api_docs/search_connectors.mdx +++ b/api_docs/search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchConnectors title: "searchConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the searchConnectors plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchConnectors'] --- import searchConnectorsObj from './search_connectors.devdocs.json'; diff --git a/api_docs/search_homepage.mdx b/api_docs/search_homepage.mdx index 37f3b61364a70..88a47bd1a7c5c 100644 --- a/api_docs/search_homepage.mdx +++ b/api_docs/search_homepage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchHomepage title: "searchHomepage" image: https://source.unsplash.com/400x175/?github description: API docs for the searchHomepage plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchHomepage'] --- import searchHomepageObj from './search_homepage.devdocs.json'; diff --git a/api_docs/search_indices.mdx b/api_docs/search_indices.mdx index e8ec4e0b7ba3b..2b6aad59f09bf 100644 --- a/api_docs/search_indices.mdx +++ b/api_docs/search_indices.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchIndices title: "searchIndices" image: https://source.unsplash.com/400x175/?github description: API docs for the searchIndices plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchIndices'] --- import searchIndicesObj from './search_indices.devdocs.json'; diff --git a/api_docs/search_inference_endpoints.mdx b/api_docs/search_inference_endpoints.mdx index 923befd049444..555f7d52e166d 100644 --- a/api_docs/search_inference_endpoints.mdx +++ b/api_docs/search_inference_endpoints.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchInferenceEndpoints title: "searchInferenceEndpoints" image: https://source.unsplash.com/400x175/?github description: API docs for the searchInferenceEndpoints plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchInferenceEndpoints'] --- import searchInferenceEndpointsObj from './search_inference_endpoints.devdocs.json'; diff --git a/api_docs/search_navigation.mdx b/api_docs/search_navigation.mdx index a49c2f0d52d39..be620b2cbe678 100644 --- a/api_docs/search_navigation.mdx +++ b/api_docs/search_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNavigation title: "searchNavigation" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNavigation plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNavigation'] --- import searchNavigationObj from './search_navigation.devdocs.json'; diff --git a/api_docs/search_notebooks.mdx b/api_docs/search_notebooks.mdx index 2ea5d73d0af0e..c08d02bf5000e 100644 --- a/api_docs/search_notebooks.mdx +++ b/api_docs/search_notebooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNotebooks title: "searchNotebooks" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNotebooks plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNotebooks'] --- import searchNotebooksObj from './search_notebooks.devdocs.json'; diff --git a/api_docs/search_playground.mdx b/api_docs/search_playground.mdx index ba0fbf7b568c3..c09be8f4b1c3c 100644 --- a/api_docs/search_playground.mdx +++ b/api_docs/search_playground.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchPlayground title: "searchPlayground" image: https://source.unsplash.com/400x175/?github description: API docs for the searchPlayground plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchPlayground'] --- import searchPlaygroundObj from './search_playground.devdocs.json'; diff --git a/api_docs/search_synonyms.mdx b/api_docs/search_synonyms.mdx index 94069ea87d908..5beae3d78328d 100644 --- a/api_docs/search_synonyms.mdx +++ b/api_docs/search_synonyms.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchSynonyms title: "searchSynonyms" image: https://source.unsplash.com/400x175/?github description: API docs for the searchSynonyms plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchSynonyms'] --- import searchSynonymsObj from './search_synonyms.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 868d6975d8c15..ca1b99f1ae950 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 37b6cc8140ea0..3a2de1196850e 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 2b93287638643..6e2ebaea99f56 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index 57f2afafd8dcb..6d4a854ae3066 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index ed8b63c84f642..2581b17ed0506 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless'] --- import serverlessObj from './serverless.devdocs.json'; diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx index b92333b3a450b..04dc2654653db 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability'] --- import serverlessObservabilityObj from './serverless_observability.devdocs.json'; diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx index b69cd7f956c54..612b8c41d3e06 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 7c9865ab68639..2f6dd56e81d32 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index 4375879b3a5f8..e554908d8fdad 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/slo.mdx b/api_docs/slo.mdx index 6ce3f0612c4d5..aaea5d453a343 100644 --- a/api_docs/slo.mdx +++ b/api_docs/slo.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/slo title: "slo" image: https://source.unsplash.com/400x175/?github description: API docs for the slo plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'slo'] --- import sloObj from './slo.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 25928b23ccc79..401c62a6095fa 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index 4c4d2eba2a00a..2034dc65ba033 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 19a39478ad265..4c761c7a46a1e 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index f2b8d73f00d93..d8e4df5ffbc74 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/streams.mdx b/api_docs/streams.mdx index d9c8857891b15..8f056e90bb51f 100644 --- a/api_docs/streams.mdx +++ b/api_docs/streams.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/streams title: "streams" image: https://source.unsplash.com/400x175/?github description: API docs for the streams plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'streams'] --- import streamsObj from './streams.devdocs.json'; diff --git a/api_docs/streams_app.mdx b/api_docs/streams_app.mdx index 2cff8e5ecc5d7..c819b6e9b13d0 100644 --- a/api_docs/streams_app.mdx +++ b/api_docs/streams_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/streamsApp title: "streamsApp" image: https://source.unsplash.com/400x175/?github description: API docs for the streamsApp plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'streamsApp'] --- import streamsAppObj from './streams_app.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 03d0a47c59e19..138bddd88132b 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 5ed1d632a7808..b61aefb6cb812 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index c28eb2ad59b26..afa9a065edc9e 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 5685f0f000a73..51fb6ce8649a5 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index a6a6675c682f3..e2d35a929fdfc 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index af9090ab0740b..a82dfdee8b585 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 63c94ad3863c1..e7735008fc230 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index c5ba886be676e..76ed67897d522 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index f05cbd9da9342..43367c7e99382 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 1ed5a87b4a2dc..340158ce83a0a 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index e5ac59be2fb16..0e10e2eecf2c9 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 46d72bdc48f27..7ceb518ea62a3 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 3cea495ec49cd..0d392f0d898b5 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index b4683ddf6eec7..7c924f4e69cc3 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index f1dae9dcd2567..f02322a977f10 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 9956069cf5fa1..883cd9e0dc7f0 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index b0d55317ffef3..81ff4ef6b964b 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 5aad5f0935f27..3e0231254562e 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 7e3e0105946d5..3d53261b5f99e 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index d04bcbd226b57..26eee83cfd41e 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 8c13b8c8257ed..5dd1ba64bcdbf 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 6d8512ed08cc9..59a3b2d220831 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index e399b21df2495..1bb5bf825fff1 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index 13e576a586599..958eaf0b954e4 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index 687dd0ef58868..65250db720a05 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index 17ed6848cbb74..b033cbec21d81 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index 59b8a83cbb791..c9d275df442ba 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 756dfc7d8b6c9..4d05af0bbba78 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 46b0d6e17a6d6..db339dd1bcdaf 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2025-02-16 +date: 2025-02-17 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 0ecbbd52becb2d48150c837149d54125ddd5c6e3 Mon Sep 17 00:00:00 2001 From: Gerard Soldevila Date: Mon, 17 Feb 2025 09:08:38 +0100 Subject: [PATCH 11/78] SKA: Fix kebab-case issues in obs-ux-logs packages (#211347) ## Summary This PR aims at relocating some of the Kibana modules (plugins and packages) into a new folder structure, according to the _Sustainable Kibana Architecture_ initiative. > [!IMPORTANT] > * We kindly ask you to: > * Manually fix the errors in the error section below (if there are any). > * Search for the `packages[\/\\]` and `plugins[\/\\]` patterns in the source code (Babel and Eslint config files), and update them appropriately. > * Manually review `.buildkite/scripts/pipelines/pull_request/pipeline.ts` to ensure that any CI pipeline customizations continue to be correctly applied after the changed path names > * Review all of the updated files, specially the `.ts` and `.js` files listed in the sections below, as some of them contain relative paths that have been updated. > * Think of potential impact of the move, including tooling and configuration files that can be pointing to the relocated modules. E.g.: > * customised eslint rules > * docs pointing to source code > [!NOTE] > * This PR has been auto-generated. > * Any manual contributions will be lost if the 'relocate' script is re-run. > * Try to obtain the missing reviews / approvals before applying manual fixes, and/or keep your changes in a .patch / git stash. > * Please use [#sustainable_kibana_architecture](https://elastic.slack.com/archives/C07TCKTA22E) Slack channel for feedback. Are you trying to rebase this PR to solve merge conflicts? Please follow the steps describe [here](https://elastic.slack.com/archives/C07TCKTA22E/p1734019532879269?thread_ts=1734019339.935419&cid=C07TCKTA22E). #### 1 packages(s) are going to be relocated: | Id | Target folder | | -- | ------------- | | `@kbn/logs-overview` | `x-pack/platform/packages/shared/logs-overview` |
Updated references ``` ./package.json ./packages/kbn-ts-projects/config-paths.json ./src/platform/packages/private/kbn-repo-packages/package-map.json ./tsconfig.base.json ./x-pack/.i18nrc.json ./x-pack/platform/packages/shared/logs-overview/jest.config.js ./yarn.lock .github/CODEOWNERS ```
Updated relative paths ``` x-pack/platform/packages/shared/logs-overview/jest.config.js:10 x-pack/platform/packages/shared/logs-overview/tsconfig.json:2 ```
--- .github/CODEOWNERS | 2 +- package.json | 2 +- tsconfig.base.json | 4 ++-- x-pack/.i18nrc.json | 2 +- .../shared/{logs_overview => logs-overview}/README.md | 0 .../packages/shared/{logs_overview => logs-overview}/index.ts | 0 .../shared/{logs_overview => logs-overview}/jest.config.js | 2 +- .../shared/{logs_overview => logs-overview}/kibana.jsonc | 0 .../shared/{logs_overview => logs-overview}/package.json | 0 .../src/components/discover_link/discover_link.tsx | 0 .../src/components/discover_link/index.ts | 0 .../src/components/log_categories/index.ts | 0 .../src/components/log_categories/log_categories.tsx | 0 .../components/log_categories/log_categories_control_bar.tsx | 0 .../log_categories/log_categories_error_content.tsx | 0 .../src/components/log_categories/log_categories_grid.tsx | 0 .../components/log_categories/log_categories_grid_cell.tsx | 0 .../log_categories/log_categories_grid_change_time_cell.tsx | 0 .../log_categories/log_categories_grid_change_type_cell.tsx | 0 .../log_categories/log_categories_grid_control_columns.tsx | 0 .../log_categories/log_categories_grid_count_cell.tsx | 0 .../log_categories/log_categories_grid_expand_button.tsx | 0 .../log_categories/log_categories_grid_histogram_cell.tsx | 0 .../log_categories/log_categories_grid_pattern_cell.tsx | 0 .../log_categories/log_categories_loading_content.tsx | 0 .../log_categories/log_categories_result_content.tsx | 0 .../log_category_details_error_content.tsx | 0 .../log_category_details/log_category_details_flyout.tsx | 0 .../log_category_details_loading_content.tsx | 0 .../log_category_document_examples_table.tsx | 0 .../src/components/logs_overview/index.ts | 0 .../src/components/logs_overview/logs_overview.tsx | 0 .../components/logs_overview/logs_overview_error_content.tsx | 0 .../logs_overview/logs_overview_loading_content.tsx | 0 .../src/components/shared/log_category_pattern.tsx | 0 .../services/categorize_logs_service/categorize_documents.ts | 0 .../categorize_logs_service/categorize_logs_service.ts | 0 .../src/services/categorize_logs_service/count_documents.ts | 0 .../src/services/categorize_logs_service/index.ts | 0 .../src/services/categorize_logs_service/queries.ts | 0 .../src/services/categorize_logs_service/types.ts | 0 .../category_details_service/category_details_service.ts | 0 .../src/services/category_details_service/index.ts | 0 .../src/services/category_details_service/types.ts | 0 .../shared/{logs_overview => logs-overview}/src/types.ts | 0 .../src/utils/log_category.ts | 0 .../{logs_overview => logs-overview}/src/utils/logs_source.ts | 0 .../src/utils/xstate5_utils.ts | 0 .../shared/{logs_overview => logs-overview}/tsconfig.json | 0 yarn.lock | 2 +- 50 files changed, 7 insertions(+), 7 deletions(-) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/README.md (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/index.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/jest.config.js (83%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/kibana.jsonc (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/package.json (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/discover_link/discover_link.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/discover_link/index.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_categories/index.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_categories/log_categories.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_categories/log_categories_control_bar.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_categories/log_categories_error_content.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_categories/log_categories_grid.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_categories/log_categories_grid_cell.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_categories/log_categories_grid_change_time_cell.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_categories/log_categories_grid_change_type_cell.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_categories/log_categories_grid_control_columns.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_categories/log_categories_grid_count_cell.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_categories/log_categories_grid_expand_button.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_categories/log_categories_grid_histogram_cell.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_categories/log_categories_grid_pattern_cell.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_categories/log_categories_loading_content.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_categories/log_categories_result_content.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_category_details/log_category_details_error_content.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_category_details/log_category_details_flyout.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_category_details/log_category_details_loading_content.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/log_category_details/log_category_document_examples_table.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/logs_overview/index.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/logs_overview/logs_overview.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/logs_overview/logs_overview_error_content.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/logs_overview/logs_overview_loading_content.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/components/shared/log_category_pattern.tsx (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/services/categorize_logs_service/categorize_documents.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/services/categorize_logs_service/categorize_logs_service.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/services/categorize_logs_service/count_documents.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/services/categorize_logs_service/index.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/services/categorize_logs_service/queries.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/services/categorize_logs_service/types.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/services/category_details_service/category_details_service.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/services/category_details_service/index.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/services/category_details_service/types.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/types.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/utils/log_category.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/utils/logs_source.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/src/utils/xstate5_utils.ts (100%) rename x-pack/platform/packages/shared/{logs_overview => logs-overview}/tsconfig.json (100%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 7611248d218ae..3bea5a24e5d12 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -822,7 +822,7 @@ x-pack/platform/packages/shared/kbn-inference-endpoint-ui-common @elastic/respon x-pack/platform/packages/shared/kbn-key-value-metadata-table @elastic/obs-ux-infra_services-team @elastic/obs-ux-logs-team x-pack/platform/packages/shared/kbn-langchain @elastic/security-generative-ai x-pack/platform/packages/shared/kbn-slo-schema @elastic/obs-ux-management-team -x-pack/platform/packages/shared/logs_overview @elastic/obs-ux-logs-team +x-pack/platform/packages/shared/logs-overview @elastic/obs-ux-logs-team x-pack/platform/packages/shared/ml/aiops_common @elastic/ml-ui x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis @elastic/ml-ui x-pack/platform/packages/shared/ml/aiops_log_rate_analysis @elastic/ml-ui diff --git a/package.json b/package.json index 1f58759c4d7e6..9263af211db9d 100644 --- a/package.json +++ b/package.json @@ -629,7 +629,7 @@ "@kbn/logging": "link:src/platform/packages/shared/kbn-logging", "@kbn/logging-mocks": "link:src/platform/packages/shared/kbn-logging-mocks", "@kbn/logs-data-access-plugin": "link:x-pack/platform/plugins/shared/logs_data_access", - "@kbn/logs-overview": "link:x-pack/platform/packages/shared/logs_overview", + "@kbn/logs-overview": "link:x-pack/platform/packages/shared/logs-overview", "@kbn/logs-shared-plugin": "link:x-pack/platform/plugins/shared/logs_shared", "@kbn/logstash-plugin": "link:x-pack/platform/plugins/private/logstash", "@kbn/managed-content-badge": "link:src/platform/packages/private/kbn-managed-content-badge", diff --git a/tsconfig.base.json b/tsconfig.base.json index 94d99700e43e1..d9353c3a2d082 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1188,8 +1188,8 @@ "@kbn/logging-mocks/*": ["src/platform/packages/shared/kbn-logging-mocks/*"], "@kbn/logs-data-access-plugin": ["x-pack/platform/plugins/shared/logs_data_access"], "@kbn/logs-data-access-plugin/*": ["x-pack/platform/plugins/shared/logs_data_access/*"], - "@kbn/logs-overview": ["x-pack/platform/packages/shared/logs_overview"], - "@kbn/logs-overview/*": ["x-pack/platform/packages/shared/logs_overview/*"], + "@kbn/logs-overview": ["x-pack/platform/packages/shared/logs-overview"], + "@kbn/logs-overview/*": ["x-pack/platform/packages/shared/logs-overview/*"], "@kbn/logs-shared-plugin": ["x-pack/platform/plugins/shared/logs_shared"], "@kbn/logs-shared-plugin/*": ["x-pack/platform/plugins/shared/logs_shared/*"], "@kbn/logstash-plugin": ["x-pack/platform/plugins/private/logstash"], diff --git a/x-pack/.i18nrc.json b/x-pack/.i18nrc.json index 3b94db415f983..78a55e81a50b2 100644 --- a/x-pack/.i18nrc.json +++ b/x-pack/.i18nrc.json @@ -110,7 +110,7 @@ "xpack.observability_onboarding": "solutions/observability/plugins/observability_onboarding", "xpack.observabilityShared": "solutions/observability/plugins/observability_shared", "xpack.observabilityLogsOverview": [ - "platform/packages/shared/logs_overview/src/components" + "platform/packages/shared/logs-overview/src/components" ], "xpack.osquery": [ "platform/plugins/shared/osquery" diff --git a/x-pack/platform/packages/shared/logs_overview/README.md b/x-pack/platform/packages/shared/logs-overview/README.md similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/README.md rename to x-pack/platform/packages/shared/logs-overview/README.md diff --git a/x-pack/platform/packages/shared/logs_overview/index.ts b/x-pack/platform/packages/shared/logs-overview/index.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/index.ts rename to x-pack/platform/packages/shared/logs-overview/index.ts diff --git a/x-pack/platform/packages/shared/logs_overview/jest.config.js b/x-pack/platform/packages/shared/logs-overview/jest.config.js similarity index 83% rename from x-pack/platform/packages/shared/logs_overview/jest.config.js rename to x-pack/platform/packages/shared/logs-overview/jest.config.js index 7c887427d6855..d305599f131e8 100644 --- a/x-pack/platform/packages/shared/logs_overview/jest.config.js +++ b/x-pack/platform/packages/shared/logs-overview/jest.config.js @@ -8,5 +8,5 @@ module.exports = { preset: '@kbn/test', rootDir: '../../../../..', - roots: ['/x-pack/platform/packages/shared/logs_overview'], + roots: ['/x-pack/platform/packages/shared/logs-overview'], }; diff --git a/x-pack/platform/packages/shared/logs_overview/kibana.jsonc b/x-pack/platform/packages/shared/logs-overview/kibana.jsonc similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/kibana.jsonc rename to x-pack/platform/packages/shared/logs-overview/kibana.jsonc diff --git a/x-pack/platform/packages/shared/logs_overview/package.json b/x-pack/platform/packages/shared/logs-overview/package.json similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/package.json rename to x-pack/platform/packages/shared/logs-overview/package.json diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/discover_link/discover_link.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/discover_link/discover_link.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/discover_link/discover_link.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/discover_link/discover_link.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/discover_link/index.ts b/x-pack/platform/packages/shared/logs-overview/src/components/discover_link/index.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/discover_link/index.ts rename to x-pack/platform/packages/shared/logs-overview/src/components/discover_link/index.ts diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_categories/index.ts b/x-pack/platform/packages/shared/logs-overview/src/components/log_categories/index.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_categories/index.ts rename to x-pack/platform/packages/shared/logs-overview/src/components/log_categories/index.ts diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_control_bar.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_control_bar.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_control_bar.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_control_bar.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_error_content.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_error_content.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_error_content.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_error_content.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid_cell.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid_cell.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid_cell.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid_cell.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid_change_time_cell.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid_change_time_cell.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid_change_time_cell.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid_change_time_cell.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid_change_type_cell.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid_change_type_cell.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid_change_type_cell.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid_change_type_cell.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid_control_columns.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid_control_columns.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid_control_columns.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid_control_columns.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid_count_cell.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid_count_cell.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid_count_cell.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid_count_cell.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid_expand_button.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid_expand_button.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid_expand_button.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid_expand_button.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid_histogram_cell.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid_histogram_cell.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid_histogram_cell.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid_histogram_cell.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid_pattern_cell.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid_pattern_cell.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_grid_pattern_cell.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_grid_pattern_cell.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_loading_content.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_loading_content.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_loading_content.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_loading_content.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_result_content.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_result_content.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_categories/log_categories_result_content.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_categories/log_categories_result_content.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_category_details/log_category_details_error_content.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_category_details/log_category_details_error_content.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_category_details/log_category_details_error_content.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_category_details/log_category_details_error_content.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_category_details/log_category_details_flyout.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_category_details/log_category_details_flyout.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_category_details/log_category_details_flyout.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_category_details/log_category_details_flyout.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_category_details/log_category_details_loading_content.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_category_details/log_category_details_loading_content.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_category_details/log_category_details_loading_content.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_category_details/log_category_details_loading_content.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/log_category_details/log_category_document_examples_table.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/log_category_details/log_category_document_examples_table.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/log_category_details/log_category_document_examples_table.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/log_category_details/log_category_document_examples_table.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/index.ts b/x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/index.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/index.ts rename to x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/index.ts diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview_error_content.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview_error_content.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview_error_content.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview_error_content.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview_loading_content.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview_loading_content.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview_loading_content.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview_loading_content.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/components/shared/log_category_pattern.tsx b/x-pack/platform/packages/shared/logs-overview/src/components/shared/log_category_pattern.tsx similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/components/shared/log_category_pattern.tsx rename to x-pack/platform/packages/shared/logs-overview/src/components/shared/log_category_pattern.tsx diff --git a/x-pack/platform/packages/shared/logs_overview/src/services/categorize_logs_service/categorize_documents.ts b/x-pack/platform/packages/shared/logs-overview/src/services/categorize_logs_service/categorize_documents.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/services/categorize_logs_service/categorize_documents.ts rename to x-pack/platform/packages/shared/logs-overview/src/services/categorize_logs_service/categorize_documents.ts diff --git a/x-pack/platform/packages/shared/logs_overview/src/services/categorize_logs_service/categorize_logs_service.ts b/x-pack/platform/packages/shared/logs-overview/src/services/categorize_logs_service/categorize_logs_service.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/services/categorize_logs_service/categorize_logs_service.ts rename to x-pack/platform/packages/shared/logs-overview/src/services/categorize_logs_service/categorize_logs_service.ts diff --git a/x-pack/platform/packages/shared/logs_overview/src/services/categorize_logs_service/count_documents.ts b/x-pack/platform/packages/shared/logs-overview/src/services/categorize_logs_service/count_documents.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/services/categorize_logs_service/count_documents.ts rename to x-pack/platform/packages/shared/logs-overview/src/services/categorize_logs_service/count_documents.ts diff --git a/x-pack/platform/packages/shared/logs_overview/src/services/categorize_logs_service/index.ts b/x-pack/platform/packages/shared/logs-overview/src/services/categorize_logs_service/index.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/services/categorize_logs_service/index.ts rename to x-pack/platform/packages/shared/logs-overview/src/services/categorize_logs_service/index.ts diff --git a/x-pack/platform/packages/shared/logs_overview/src/services/categorize_logs_service/queries.ts b/x-pack/platform/packages/shared/logs-overview/src/services/categorize_logs_service/queries.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/services/categorize_logs_service/queries.ts rename to x-pack/platform/packages/shared/logs-overview/src/services/categorize_logs_service/queries.ts diff --git a/x-pack/platform/packages/shared/logs_overview/src/services/categorize_logs_service/types.ts b/x-pack/platform/packages/shared/logs-overview/src/services/categorize_logs_service/types.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/services/categorize_logs_service/types.ts rename to x-pack/platform/packages/shared/logs-overview/src/services/categorize_logs_service/types.ts diff --git a/x-pack/platform/packages/shared/logs_overview/src/services/category_details_service/category_details_service.ts b/x-pack/platform/packages/shared/logs-overview/src/services/category_details_service/category_details_service.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/services/category_details_service/category_details_service.ts rename to x-pack/platform/packages/shared/logs-overview/src/services/category_details_service/category_details_service.ts diff --git a/x-pack/platform/packages/shared/logs_overview/src/services/category_details_service/index.ts b/x-pack/platform/packages/shared/logs-overview/src/services/category_details_service/index.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/services/category_details_service/index.ts rename to x-pack/platform/packages/shared/logs-overview/src/services/category_details_service/index.ts diff --git a/x-pack/platform/packages/shared/logs_overview/src/services/category_details_service/types.ts b/x-pack/platform/packages/shared/logs-overview/src/services/category_details_service/types.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/services/category_details_service/types.ts rename to x-pack/platform/packages/shared/logs-overview/src/services/category_details_service/types.ts diff --git a/x-pack/platform/packages/shared/logs_overview/src/types.ts b/x-pack/platform/packages/shared/logs-overview/src/types.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/types.ts rename to x-pack/platform/packages/shared/logs-overview/src/types.ts diff --git a/x-pack/platform/packages/shared/logs_overview/src/utils/log_category.ts b/x-pack/platform/packages/shared/logs-overview/src/utils/log_category.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/utils/log_category.ts rename to x-pack/platform/packages/shared/logs-overview/src/utils/log_category.ts diff --git a/x-pack/platform/packages/shared/logs_overview/src/utils/logs_source.ts b/x-pack/platform/packages/shared/logs-overview/src/utils/logs_source.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/utils/logs_source.ts rename to x-pack/platform/packages/shared/logs-overview/src/utils/logs_source.ts diff --git a/x-pack/platform/packages/shared/logs_overview/src/utils/xstate5_utils.ts b/x-pack/platform/packages/shared/logs-overview/src/utils/xstate5_utils.ts similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/src/utils/xstate5_utils.ts rename to x-pack/platform/packages/shared/logs-overview/src/utils/xstate5_utils.ts diff --git a/x-pack/platform/packages/shared/logs_overview/tsconfig.json b/x-pack/platform/packages/shared/logs-overview/tsconfig.json similarity index 100% rename from x-pack/platform/packages/shared/logs_overview/tsconfig.json rename to x-pack/platform/packages/shared/logs-overview/tsconfig.json diff --git a/yarn.lock b/yarn.lock index 079822cf840ff..090c3d7025ca2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6245,7 +6245,7 @@ version "0.0.0" uid "" -"@kbn/logs-overview@link:x-pack/platform/packages/shared/logs_overview": +"@kbn/logs-overview@link:x-pack/platform/packages/shared/logs-overview": version "0.0.0" uid "" From 54b6e65a2047cdcc727032e1734170e7c8307aff Mon Sep 17 00:00:00 2001 From: Bharat Pasupula <123897612+bhapas@users.noreply.github.com> Date: Mon, 17 Feb 2025 10:28:57 +0100 Subject: [PATCH 12/78] [Automatic Import] Remove pipeline tests from the package (#211223) ## Summary This PR removes unused pipeline tests from the packaging of integration. The pipeline tests are not run today when the integration is built. Hence removing them for now. --- .../automatic_import/common/constants.ts | 1 + .../steps/data_stream_step/translations.ts | 6 ++ .../server/graphs/ecs/graph.test.ts | 2 +- .../integration_builder/build_integration.ts | 73 +++++++++++-------- .../integration_builder/data_stream.test.ts | 11 --- .../server/integration_builder/data_stream.ts | 26 ------- .../lib/errors/build_integration_error.ts | 20 +++++ .../pipeline_tests/test_common_config.yml | 3 - .../system_tests/docker_compose.yml.njk | 3 - .../system_tests/service_filestream.njk | 6 -- .../templates/system_tests/service_gcs.njk | 7 -- .../system_tests/service_logfile.njk | 6 -- .../templates/system_tests/service_tcp.njk | 6 -- .../templates/system_tests/service_udp.njk | 6 -- .../test_filestream_config.yml.njk | 13 ---- .../system_tests/test_gcs_config.yml.njk | 10 --- .../system_tests/test_logfile_config.yml.njk | 13 ---- .../system_tests/test_tcp_config.yml.njk | 7 -- .../system_tests/test_udp_config.yml.njk | 7 -- .../automatic_import/server/util/samples.ts | 68 +++++++++-------- 20 files changed, 103 insertions(+), 191 deletions(-) create mode 100644 x-pack/platform/plugins/shared/automatic_import/server/lib/errors/build_integration_error.ts delete mode 100644 x-pack/platform/plugins/shared/automatic_import/server/templates/pipeline_tests/test_common_config.yml delete mode 100644 x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/docker_compose.yml.njk delete mode 100644 x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_filestream.njk delete mode 100644 x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_gcs.njk delete mode 100644 x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_logfile.njk delete mode 100644 x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_tcp.njk delete mode 100644 x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_udp.njk delete mode 100644 x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_filestream_config.yml.njk delete mode 100644 x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_gcs_config.yml.njk delete mode 100644 x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_logfile_config.yml.njk delete mode 100644 x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_tcp_config.yml.njk delete mode 100644 x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_udp_config.yml.njk diff --git a/x-pack/platform/plugins/shared/automatic_import/common/constants.ts b/x-pack/platform/plugins/shared/automatic_import/common/constants.ts index 109de8faf9e1a..15fb68b7d01f4 100644 --- a/x-pack/platform/plugins/shared/automatic_import/common/constants.ts +++ b/x-pack/platform/plugins/shared/automatic_import/common/constants.ts @@ -37,6 +37,7 @@ export enum GenerationErrorCode { UNSUPPORTED_LOG_SAMPLES_FORMAT = 'unsupported-log-samples-format', UNPARSEABLE_CSV_DATA = 'unparseable-csv-data', CEF_ERROR = 'cef-not-supported', + BUILD_INTEGRATION_ERROR = 'build-integration-error', } // Size limits diff --git a/x-pack/platform/plugins/shared/automatic_import/public/components/create_integration/create_automatic_import/steps/data_stream_step/translations.ts b/x-pack/platform/plugins/shared/automatic_import/public/components/create_integration/create_automatic_import/steps/data_stream_step/translations.ts index c0f337d381e15..ba5555607c0e2 100644 --- a/x-pack/platform/plugins/shared/automatic_import/public/components/create_integration/create_automatic_import/steps/data_stream_step/translations.ts +++ b/x-pack/platform/plugins/shared/automatic_import/public/components/create_integration/create_automatic_import/steps/data_stream_step/translations.ts @@ -271,6 +271,12 @@ export const GENERATION_ERROR_TRANSLATION: Record< defaultMessage: 'CEF format detected. Please decode the CEF logs into JSON format using filebeat decode_cef processor.', }), + [GenerationErrorCode.BUILD_INTEGRATION_ERROR]: i18n.translate( + 'xpack.automaticImport.errors.buildIntegrationError', + { + defaultMessage: 'An error occurred while building the integration package. Please try again.', + } + ), [GenerationErrorCode.UNPARSEABLE_CSV_DATA]: (attributes) => { if ( attributes.underlyingMessages !== undefined && diff --git a/x-pack/platform/plugins/shared/automatic_import/server/graphs/ecs/graph.test.ts b/x-pack/platform/plugins/shared/automatic_import/server/graphs/ecs/graph.test.ts index 322d71ef4c792..23e6c1e6a8bbf 100644 --- a/x-pack/platform/plugins/shared/automatic_import/server/graphs/ecs/graph.test.ts +++ b/x-pack/platform/plugins/shared/automatic_import/server/graphs/ecs/graph.test.ts @@ -85,7 +85,7 @@ describe('EcsGraph', () => { throw Error(`getEcsGraph threw an error: ${error}`); } - expect(response.results).toStrictEqual(ecsMappingExpectedResults); + expect(response.results).toEqual(ecsMappingExpectedResults); // Check if the functions were called expect(handleEcsMapping).toHaveBeenCalled(); diff --git a/x-pack/platform/plugins/shared/automatic_import/server/integration_builder/build_integration.ts b/x-pack/platform/plugins/shared/automatic_import/server/integration_builder/build_integration.ts index 30ef7d997a6bc..8eaf00960a3c5 100644 --- a/x-pack/platform/plugins/shared/automatic_import/server/integration_builder/build_integration.ts +++ b/x-pack/platform/plugins/shared/automatic_import/server/integration_builder/build_integration.ts @@ -20,6 +20,7 @@ import { createDataStream } from './data_stream'; import { createFieldMapping } from './fields'; import { createPipeline } from './pipeline'; import { createReadme } from './readme_files'; +import { BuildIntegrationError } from '../lib/errors/build_integration_error'; const initialVersion = '1.0.0'; @@ -37,46 +38,56 @@ export async function buildPackage(integration: Integration): Promise { configureNunjucks(); if (!isValidName(integration.name)) { - throw new Error( + throw new BuildIntegrationError( `Invalid integration name: ${integration.name}, Should only contain letters, numbers and underscores` ); } - const workingDir = joinPath(getDataPath(), `automatic-import-${generateUniqueId()}`); - const packageDirectoryName = `${integration.name}-${initialVersion}`; - const packageDir = createDirectories(workingDir, integration, packageDirectoryName); - const dataStreamsDir = joinPath(packageDir, 'data_stream'); - const fieldsPerDatastream = integration.dataStreams.map((dataStream) => { - const dataStreamName = dataStream.name; - if (!isValidDatastreamName(dataStreamName)) { - throw new Error( - `Invalid datastream name: ${dataStreamName}, Name must be at least 2 characters long and can only contain lowercase letters, numbers, and underscores` - ); - } - const specificDataStreamDir = joinPath(dataStreamsDir, dataStreamName); + try { + const packageDirectoryName = `${integration.name}-${initialVersion}`; + const packageDir = createDirectories(workingDir, integration, packageDirectoryName); - const dataStreamFields = createDataStream(integration.name, specificDataStreamDir, dataStream); - createAgentInput(specificDataStreamDir, dataStream.inputTypes, dataStream.celInput); - createPipeline(specificDataStreamDir, dataStream.pipeline); - const fields = createFieldMapping( - integration.name, - dataStreamName, - specificDataStreamDir, - dataStream.docs - ); + const dataStreamsDir = joinPath(packageDir, 'data_stream'); + const fieldsPerDatastream = integration.dataStreams.map((dataStream) => { + const dataStreamName = dataStream.name; + if (!isValidDatastreamName(dataStreamName)) { + throw new Error( + `Invalid datastream name: ${dataStreamName}, Name must be at least 2 characters long and can only contain lowercase letters, numbers, and underscores` + ); + } + const specificDataStreamDir = joinPath(dataStreamsDir, dataStreamName); - return { - datastream: dataStreamName, - fields: mergeAndSortFields(fields, dataStreamFields), - }; - }); + const dataStreamFields = createDataStream( + integration.name, + specificDataStreamDir, + dataStream + ); + createAgentInput(specificDataStreamDir, dataStream.inputTypes, dataStream.celInput); + createPipeline(specificDataStreamDir, dataStream.pipeline); + const fields = createFieldMapping( + integration.name, + dataStreamName, + specificDataStreamDir, + dataStream.docs + ); - createReadme(packageDir, integration.name, integration.dataStreams, fieldsPerDatastream); - const zipBuffer = await createZipArchive(integration, workingDir, packageDirectoryName); + return { + datastream: dataStreamName, + fields: mergeAndSortFields(fields, dataStreamFields), + }; + }); - removeDirSync(workingDir); - return zipBuffer; + createReadme(packageDir, integration.name, integration.dataStreams, fieldsPerDatastream); + const zipBuffer = await createZipArchive(integration, workingDir, packageDirectoryName); + + removeDirSync(workingDir); + return zipBuffer; + } catch (error) { + throw new BuildIntegrationError('Building the Integration failed'); + } finally { + removeDirSync(workingDir); + } } export function isValidName(input: string): boolean { diff --git a/x-pack/platform/plugins/shared/automatic_import/server/integration_builder/data_stream.test.ts b/x-pack/platform/plugins/shared/automatic_import/server/integration_builder/data_stream.test.ts index 01e8b0d384dfe..dd6bc0c19ff5c 100644 --- a/x-pack/platform/plugins/shared/automatic_import/server/integration_builder/data_stream.test.ts +++ b/x-pack/platform/plugins/shared/automatic_import/server/integration_builder/data_stream.test.ts @@ -89,17 +89,6 @@ describe('createDataStream', () => { // dataStream files expect(copySync).toHaveBeenCalledWith(expect.any(String), `${dataStreamPath}/fields`); - // test files - expect(ensureDirSync).toHaveBeenCalledWith(`${dataStreamPath}/_dev/test/pipeline`); - expect(copySync).toHaveBeenCalledWith( - expect.any(String), - `${dataStreamPath}/_dev/test/pipeline/test-common-config.yml` - ); - expect(createSync).toHaveBeenCalledWith( - `${dataStreamPath}/_dev/test/pipeline/test-${packageName}-datastream-1.log`, - samples - ); - // // Manifest files expect(createSync).toHaveBeenCalledWith(`${dataStreamPath}/manifest.yml`, undefined); expect(render).toHaveBeenCalledWith(`filestream_manifest.yml.njk`, expect.anything()); diff --git a/x-pack/platform/plugins/shared/automatic_import/server/integration_builder/data_stream.ts b/x-pack/platform/plugins/shared/automatic_import/server/integration_builder/data_stream.ts index c6fa4e07a6dba..c44d8c9424636 100644 --- a/x-pack/platform/plugins/shared/automatic_import/server/integration_builder/data_stream.ts +++ b/x-pack/platform/plugins/shared/automatic_import/server/integration_builder/data_stream.ts @@ -27,8 +27,6 @@ export function createDataStream( ensureDirSync(specificDataStreamDir); const fields = createDataStreamFolders(specificDataStreamDir, pipelineDir); - createPipelineTests(specificDataStreamDir, dataStream.rawSamples, packageName, dataStreamName); - const dataStreams: string[] = []; for (const inputType of dataStream.inputTypes) { let mappedValues = { @@ -89,30 +87,6 @@ function loadFieldsFromFiles(sourcePath: string, files: string[]): Field[] { }); } -function createPipelineTests( - specificDataStreamDir: string, - rawSamples: string[], - packageName: string, - dataStreamName: string -): void { - const pipelineTestTemplatesDir = joinPath(__dirname, '../templates/pipeline_tests'); - const pipelineTestsDir = joinPath(specificDataStreamDir, '_dev/test/pipeline'); - ensureDirSync(pipelineTestsDir); - const items = listDirSync(pipelineTestTemplatesDir); - for (const item of items) { - const s = joinPath(pipelineTestTemplatesDir, item); - const d = joinPath(pipelineTestsDir, item.replaceAll('_', '-')); - copySync(s, d); - } - const formattedPackageName = packageName.replace(/_/g, '-'); - const formattedDataStreamName = dataStreamName.replace(/_/g, '-'); - const testFileName = joinPath( - pipelineTestsDir, - `test-${formattedPackageName}-${formattedDataStreamName}.log` - ); - createSync(testFileName, rawSamples.join('\n')); -} - function prepareCelValues(mappedValues: object, celInput: CelInput | undefined) { if (celInput != null) { // Ready the program for printing with correct indentation diff --git a/x-pack/platform/plugins/shared/automatic_import/server/lib/errors/build_integration_error.ts b/x-pack/platform/plugins/shared/automatic_import/server/lib/errors/build_integration_error.ts new file mode 100644 index 0000000000000..6c04f974817bc --- /dev/null +++ b/x-pack/platform/plugins/shared/automatic_import/server/lib/errors/build_integration_error.ts @@ -0,0 +1,20 @@ +/* + * 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 { KibanaResponseFactory } from '@kbn/core/server'; +import { ErrorThatHandlesItsOwnResponse } from './types'; +import { GenerationErrorCode } from '../../../common/constants'; + +export class BuildIntegrationError extends Error implements ErrorThatHandlesItsOwnResponse { + private readonly errorCode: GenerationErrorCode = GenerationErrorCode.BUILD_INTEGRATION_ERROR; + + public sendResponse(res: KibanaResponseFactory) { + return res.badRequest({ + body: { message: this.message, attributes: { errorCode: this.errorCode } }, + }); + } +} diff --git a/x-pack/platform/plugins/shared/automatic_import/server/templates/pipeline_tests/test_common_config.yml b/x-pack/platform/plugins/shared/automatic_import/server/templates/pipeline_tests/test_common_config.yml deleted file mode 100644 index 772cb40587804..0000000000000 --- a/x-pack/platform/plugins/shared/automatic_import/server/templates/pipeline_tests/test_common_config.yml +++ /dev/null @@ -1,3 +0,0 @@ -fields: - tags: - - preserve_original_event \ No newline at end of file diff --git a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/docker_compose.yml.njk b/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/docker_compose.yml.njk deleted file mode 100644 index 74ebed9dd0a75..0000000000000 --- a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/docker_compose.yml.njk +++ /dev/null @@ -1,3 +0,0 @@ -version: "{{ docker_compose_version }}" -services: {% for service in services %} - {{ service }}{% endfor %} \ No newline at end of file diff --git a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_filestream.njk b/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_filestream.njk deleted file mode 100644 index 642897a0fbfea..0000000000000 --- a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_filestream.njk +++ /dev/null @@ -1,6 +0,0 @@ -{{package_name}}-{{data_stream_name}}-filestream: - image: alpine - volumes: - - ./sample_logs:/sample_logs:ro - - ${SERVICE_LOGS_DIR}:/var/log - command: /bin/sh -c "cp /sample_logs/* /var/log/" \ No newline at end of file diff --git a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_gcs.njk b/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_gcs.njk deleted file mode 100644 index 3a1010d0b0bfb..0000000000000 --- a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_gcs.njk +++ /dev/null @@ -1,7 +0,0 @@ -{{package_name}}-{{data_stream_name}}-gcs: - image: fsouza/fake-gcs-server:latest - command: -host=0.0.0.0 -public-host=elastic-package-service_{{package_name}}-{{data_stream_name}}-gcs_1 -port=4443 -scheme=http - volumes: - - ./sample_logs:/data - ports: - - 4443/tcp \ No newline at end of file diff --git a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_logfile.njk b/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_logfile.njk deleted file mode 100644 index 1393ef7cc1098..0000000000000 --- a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_logfile.njk +++ /dev/null @@ -1,6 +0,0 @@ -{{package_name}}-{{data_stream_name}}-logfile: - image: alpine - volumes: - - ./sample_logs:/sample_logs:ro - - ${SERVICE_LOGS_DIR}:/var/log - command: /bin/sh -c "cp /sample_logs/* /var/log/" \ No newline at end of file diff --git a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_tcp.njk b/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_tcp.njk deleted file mode 100644 index 0267c60d00d4d..0000000000000 --- a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_tcp.njk +++ /dev/null @@ -1,6 +0,0 @@ -{{package_name}}-{{data_stream_name}}-tcp: - image: docker.elastic.co/observability/stream:{{stream_version}} - volumes: - - ./sample_logs:/sample_logs:ro - entrypoint: /bin/bash - command: -c "/stream log --start-signal=SIGHUP --delay=5s --addr elastic-agent:9025 -p=tcp /sample_logs/{{package_name}}.log" \ No newline at end of file diff --git a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_udp.njk b/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_udp.njk deleted file mode 100644 index bdb8b5b91b8ff..0000000000000 --- a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/service_udp.njk +++ /dev/null @@ -1,6 +0,0 @@ -{{package_name}}-{{data_stream_name}}-udp: - image: docker.elastic.co/observability/stream:{{stream_version}} - volumes: - - ./sample_logs:/sample_logs:ro - entrypoint: /bin/bash - command: -c "/stream log --start-signal=SIGHUP --delay=5s --addr elastic-agent:9025 -p=udp /sample_logs/{{package_name}}.log" \ No newline at end of file diff --git a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_filestream_config.yml.njk b/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_filestream_config.yml.njk deleted file mode 100644 index 3a861dfe3b7d1..0000000000000 --- a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_filestream_config.yml.njk +++ /dev/null @@ -1,13 +0,0 @@ -service: {{package_name}}-{{data_stream_name}}-filestream -input: filestream -data_stream: - vars: - preserve_original_event: true - paths: - - '{% raw %}{{SERVICE_LOGS_DIR}}{% endraw %}/test-{{package_name}}-{{data_stream_name}}.log' -numeric_keyword_fields: - - log.file.device_id - - log.file.inode - - log.file.idxhi - - log.file.idxlo - - log.file.vol \ No newline at end of file diff --git a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_gcs_config.yml.njk b/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_gcs_config.yml.njk deleted file mode 100644 index 3bdf39c42fac7..0000000000000 --- a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_gcs_config.yml.njk +++ /dev/null @@ -1,10 +0,0 @@ -service: {{package_name}}-{{data_stream_name}}-gcs -input: gcs -data_stream: - vars: - project_id: testproject - alternative_host: "http://{% raw %}{{Hostname}}:{{Port}}{% endraw %}" - buckets: | - - name: testbucket - poll: true - poll_interval: 15s diff --git a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_logfile_config.yml.njk b/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_logfile_config.yml.njk deleted file mode 100644 index d6d891cd7038b..0000000000000 --- a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_logfile_config.yml.njk +++ /dev/null @@ -1,13 +0,0 @@ -service: {{package_name}}-{{data_stream_name}}-logfile -input: logfile -data_stream: - vars: - preserve_original_event: true - paths: - - '{% raw %}{{SERVICE_LOGS_DIR}}{% endraw %}/{{package_name}}-{{data_stream_name}}.log' -numeric_keyword_fields: - - log.file.device_id - - log.file.inode - - log.file.idxhi - - log.file.idxlo - - log.file.vol \ No newline at end of file diff --git a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_tcp_config.yml.njk b/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_tcp_config.yml.njk deleted file mode 100644 index 1c5377a87e213..0000000000000 --- a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_tcp_config.yml.njk +++ /dev/null @@ -1,7 +0,0 @@ -service: {{package_name}}-{{data_stream_name}}-tcp -input: tcp -data_stream: - vars: - preserve_original_event: true - listen_address: 0.0.0.0 - listen_port: 9025 diff --git a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_udp_config.yml.njk b/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_udp_config.yml.njk deleted file mode 100644 index 634f151b97198..0000000000000 --- a/x-pack/platform/plugins/shared/automatic_import/server/templates/system_tests/test_udp_config.yml.njk +++ /dev/null @@ -1,7 +0,0 @@ -service: {{package_name}}-{{data_stream_name}}-udp -input: udp -data_stream: - vars: - preserve_original_event: true - listen_address: 0.0.0.0 - listen_port: 9025 diff --git a/x-pack/platform/plugins/shared/automatic_import/server/util/samples.ts b/x-pack/platform/plugins/shared/automatic_import/server/util/samples.ts index 9f14f20816415..9eb051855ec0d 100644 --- a/x-pack/platform/plugins/shared/automatic_import/server/util/samples.ts +++ b/x-pack/platform/plugins/shared/automatic_import/server/util/samples.ts @@ -153,20 +153,46 @@ export function generateFields(mergedDocs: string): string { return dump(fieldsStructure, { sortKeys: false }); } +export function isObject(value: any): boolean { + return typeof value === 'object' && value !== null; +} + +export function isEmptyValue(value: unknown): boolean { + if (value == null) return true; + if (isObject(value)) { + if (Array.isArray(value)) return value.length === 0; + return value && Object.keys(value).length === 0; + } + return false; +} + +export function isUnsafeProperty(key: string, obj: Record): boolean { + return ( + key === '__proto__' || key === 'constructor' || key === 'prototype' || !Object.hasOwn(obj, key) + ); +} + export function merge( target: Record, source: Record ): Record { - const filteredTarget = filterOwnProperties(target); + const filteredTarget = Object.create(null); + + for (const [key, targetValue] of Object.entries(target)) { + if (!isUnsafeProperty(key, target)) { + filteredTarget[key] = targetValue; + } + } + for (const [key, sourceValue] of Object.entries(source)) { - if (!isBuiltInProperties(key, source)) { + if (!isUnsafeProperty(key, source)) { const targetValue = filteredTarget[key]; + if (Array.isArray(sourceValue)) { - // Directly assign arrays - filteredTarget[key] = sourceValue; - } else if (isObject(sourceValue) && !Array.isArray(targetValue)) { + filteredTarget[key] = [...sourceValue]; + } else if (isObject(sourceValue) && !Array.isArray(sourceValue)) { if (!isObject(targetValue) || isEmptyValue(targetValue)) { - filteredTarget[key] = merge({}, sourceValue); + filteredTarget[key] = merge(Object.create(null), sourceValue); } else { filteredTarget[key] = merge(targetValue, sourceValue); } @@ -178,36 +204,8 @@ export function merge( } } } - return filteredTarget; -} - -function isEmptyValue(value: unknown): boolean { - if (value == null) return true; - if (isObject(value)) { - if (Array.isArray(value)) return value.length === 0; - return value && Object.keys(value).length === 0; - } - return false; -} -function isObject(value: any): boolean { - return typeof value === 'object' && value !== null; -} - -function isBuiltInProperties(key: string, obj: Record): boolean { - return key === 'constructor' || !Object.prototype.hasOwnProperty.call(obj, key); -} - -function filterOwnProperties(obj: Record): Record { - const ownProps: Record = {}; - - for (const key of Object.getOwnPropertyNames(obj)) { - if (!isBuiltInProperties(key, obj)) { - ownProps[key] = (obj as any)[key]; - } - } - - return ownProps; + return filteredTarget; } export function mergeSamples(objects: any[]): string { From c14d52a12a870dac58b5ba79ca82e6512b07c8c9 Mon Sep 17 00:00:00 2001 From: Gerard Soldevila Date: Mon, 17 Feb 2025 10:53:04 +0100 Subject: [PATCH 13/78] [main] [UA] Handle frozen indices deprecations (#208156) (#211355) # Backport This will backport the following commits from `8.x` to `main`: - [[UA] Handle frozen indices deprecations (#208156)](https://github.com/elastic/kibana/pull/208156) ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sorenlouv/backport) \n\n### Questions ?\nPlease refer to the [Backport tool\ndocumentation](https://github.com/sqren/backport)\n\n\n\nCo-authored-by: Gerard Soldevila "}},{"branch":"8.19","label":"v8.19.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"}]}] BACKPORT--> --- .../shared/kbn-doc-links/src/get_doc_links.ts | 1 + .../shared/kbn-doc-links/src/types.ts | 1 + .../private/upgrade_assistant/common/types.ts | 1 + .../checklist_step.test.tsx.snap | 113 ++++++++++++++++++ .../reindex/flyout/checklist_step.test.tsx | 7 ++ .../reindex/flyout/checklist_step.tsx | 34 +++++- .../reindex/flyout/container.tsx | 1 + .../lib/__fixtures__/fake_deprecations.json | 19 +++ .../__snapshots__/index.test.ts.snap | 16 ++- .../lib/es_deprecations_status/index.test.ts | 46 +++++++ .../lib/es_deprecations_status/migrations.ts | 41 ++++++- 11 files changed, 272 insertions(+), 8 deletions(-) diff --git a/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts b/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts index e69d612f2d1f2..e30a6200e07c4 100644 --- a/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts +++ b/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts @@ -299,6 +299,7 @@ export const getDocLinks = ({ kibanaBranch, buildFlavor }: GetDocLinkOptions): D overview: `${KIBANA_DOCS}upgrade-assistant.html`, batchReindex: `${KIBANA_DOCS}batch-start-resume-reindex.html`, remoteReindex: `${ELASTICSEARCH_DOCS}docs-reindex.html#reindex-from-remote`, + unfreezeApi: `${ELASTICSEARCH_DOCS}unfreeze-index-api.html`, reindexWithPipeline: `${ELASTICSEARCH_DOCS}docs-reindex.html#reindex-with-an-ingest-pipeline`, }, rollupJobs: `${KIBANA_DOCS}data-rollups.html`, diff --git a/src/platform/packages/shared/kbn-doc-links/src/types.ts b/src/platform/packages/shared/kbn-doc-links/src/types.ts index 230d3c3c930bb..0fff5c2a92125 100644 --- a/src/platform/packages/shared/kbn-doc-links/src/types.ts +++ b/src/platform/packages/shared/kbn-doc-links/src/types.ts @@ -260,6 +260,7 @@ export interface DocLinks { readonly overview: string; readonly batchReindex: string; readonly remoteReindex: string; + readonly unfreezeApi: string; readonly reindexWithPipeline: string; }; readonly rollupJobs: string; diff --git a/x-pack/platform/plugins/private/upgrade_assistant/common/types.ts b/x-pack/platform/plugins/private/upgrade_assistant/common/types.ts index 03820b7668088..7d614463f4977 100644 --- a/x-pack/platform/plugins/private/upgrade_assistant/common/types.ts +++ b/x-pack/platform/plugins/private/upgrade_assistant/common/types.ts @@ -237,6 +237,7 @@ export interface EnrichedDeprecationInfo | 'ilm_policies' | 'templates'; isCritical: boolean; + frozen?: boolean; status?: estypes.HealthReportIndicatorHealthStatus; index?: string; correctiveAction?: diff --git a/x-pack/platform/plugins/private/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap b/x-pack/platform/plugins/private/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap index 753d8bd7db5da..f790b5173ce61 100644 --- a/x-pack/platform/plugins/private/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap +++ b/x-pack/platform/plugins/private/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/__snapshots__/checklist_step.test.tsx.snap @@ -87,3 +87,116 @@ exports[`ChecklistFlyout renders 1`] = ` `; + +exports[`ChecklistFlyout renders for frozen indices 1`] = ` + + + +

+ + Learn more + , + } + } + /> +

+ + } + > + + Learn more + , + } + } + /> + + +

+ +

+
+ + +
+ + + + + + + + + + + + + + +
+`; diff --git a/x-pack/platform/plugins/private/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/checklist_step.test.tsx b/x-pack/platform/plugins/private/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/checklist_step.test.tsx index fff7a05e0b70a..a895f5fad815d 100644 --- a/x-pack/platform/plugins/private/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/checklist_step.test.tsx +++ b/x-pack/platform/plugins/private/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/checklist_step.test.tsx @@ -36,6 +36,7 @@ jest.mock('../../../../../app_context', () => { describe('ChecklistFlyout', () => { const defaultProps = { indexName: 'myIndex', + frozen: false, closeFlyout: jest.fn(), confirmInputValue: 'CONFIRM', onConfirmInputChange: jest.fn(), @@ -67,6 +68,12 @@ describe('ChecklistFlyout', () => { expect(shallow()).toMatchSnapshot(); }); + it('renders for frozen indices', () => { + const props = cloneDeep(defaultProps); + props.frozen = true; + expect(shallow()).toMatchSnapshot(); + }); + it('disables button while reindexing', () => { const props = cloneDeep(defaultProps); props.reindexState.status = ReindexStatus.inProgress; diff --git a/x-pack/platform/plugins/private/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/checklist_step.tsx b/x-pack/platform/plugins/private/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/checklist_step.tsx index c6ba5ecff25d4..0710d560d7d93 100644 --- a/x-pack/platform/plugins/private/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/checklist_step.tsx +++ b/x-pack/platform/plugins/private/upgrade_assistant/public/application/components/es_deprecations/deprecation_types/reindex/flyout/checklist_step.tsx @@ -72,11 +72,12 @@ const buttonLabel = (status?: ReindexStatus) => { * Displays a flyout that shows the current reindexing status for a given index. */ export const ChecklistFlyoutStep: React.FunctionComponent<{ + frozen?: boolean; closeFlyout: () => void; reindexState: ReindexState; startReindex: () => void; cancelReindex: () => void; -}> = ({ closeFlyout, reindexState, startReindex, cancelReindex }) => { +}> = ({ frozen, closeFlyout, reindexState, startReindex, cancelReindex }) => { const { services: { api, @@ -197,6 +198,37 @@ export const ChecklistFlyoutStep: React.FunctionComponent<{ }} />

+ {frozen && ( + <> + + } + iconType="iInCircle" + > + + {i18n.translate( + 'xpack.upgradeAssistant.checkupTab.reindexing.flyout.learnMoreLinkLabel', + { + defaultMessage: 'Learn more', + } + )} + + ), + }} + /> + + + + )}

= ({ /> ) : ( { expect(upgradeStatus.totalCriticalDeprecations).toBe(0); }); + it('filters out frozen indices if old index deprecations exist for the same indices', async () => { + esClient.asCurrentUser.migration.deprecations.mockResponse({ + cluster_settings: [], + node_settings: [], + ml_settings: [], + index_settings: { + frozen_index: [ + { + level: 'critical', + message: 'Old index with a compatibility version < 8.0', + url: 'https://www.elastic.co/guide/en/elasticsearch/reference/current/migrating-8.0.html#breaking-changes-8.0', + details: 'This index has version: 7.17.28-8.0.0', + resolve_during_rolling_upgrade: false, + _meta: { reindex_required: true }, + }, + { + level: 'critical', + message: + 'Index [frozen_index] is a frozen index. The frozen indices feature is deprecated and will be removed in version 9.0.', + url: 'https://www.elastic.co/guide/en/elasticsearch/reference/master/frozen-indices.html', + details: + 'Frozen indices must be unfrozen before upgrading to version 9.0. (The legacy frozen indices feature no longer offers any advantages. You may consider cold or frozen tiers in place of frozen indices.)', + resolve_during_rolling_upgrade: false, + }, + ], + }, + data_streams: {}, + // @ts-expect-error not in types yet + ilm_policies: {}, + templates: {}, + }); + + // @ts-expect-error not full interface of response + esClient.asCurrentUser.indices.resolveIndex.mockResponse(resolvedIndices); + + const upgradeStatus = await getESUpgradeStatus(esClient, { + ...featureSet, + }); + + expect([ + ...upgradeStatus.migrationsDeprecations, + ...upgradeStatus.enrichedHealthIndicators, + ]).toHaveLength(1); + expect(upgradeStatus.totalCriticalDeprecations).toBe(1); + }); + it('returns health indicators', async () => { esClient.asCurrentUser.migration.deprecations.mockResponse({ cluster_settings: [], diff --git a/x-pack/platform/plugins/private/upgrade_assistant/server/lib/es_deprecations_status/migrations.ts b/x-pack/platform/plugins/private/upgrade_assistant/server/lib/es_deprecations_status/migrations.ts index b3e5c0fbdb8d6..d5f3c3d46ca6b 100644 --- a/x-pack/platform/plugins/private/upgrade_assistant/server/lib/es_deprecations_status/migrations.ts +++ b/x-pack/platform/plugins/private/upgrade_assistant/server/lib/es_deprecations_status/migrations.ts @@ -127,13 +127,13 @@ export const getEnrichedDeprecations = async ( const systemIndicesList = convertFeaturesToIndicesArray(systemIndices.features); - const indexSettingsIndexNames = Object.keys(deprecations.index_settings).map( - (indexName) => indexName! - ); + const indexSettingsIndexNames = Object.keys(deprecations.index_settings); const indexSettingsIndexStates = indexSettingsIndexNames.length ? await esIndicesStateCheck(dataClient.asCurrentUser, indexSettingsIndexNames) : {}; + const deprecationsByIndex = new Map(); + return normalizeEsResponse(deprecations) .filter((deprecation) => { switch (deprecation.type) { @@ -174,10 +174,39 @@ export const getEnrichedDeprecations = async ( indexSettingsIndexStates[deprecation.index!] === 'closed' ? 'index-closed' : undefined; } - const enrichedDeprecation = _.omit(deprecation, 'metadata'); - return { - ...enrichedDeprecation, + const enrichedDeprecation = { + ..._.omit(deprecation, 'metadata'), correctiveAction, }; + + if (deprecation.index) { + const indexDeprecations = deprecationsByIndex.get(deprecation.index) || []; + indexDeprecations.push(enrichedDeprecation); + deprecationsByIndex.set(deprecation.index, indexDeprecations); + } + + return enrichedDeprecation; + }) + .filter((deprecation) => { + if ( + deprecation.index && + deprecation.message.includes(`Index [${deprecation.index}] is a frozen index`) + ) { + // frozen indices are created in 7.x, so they are old / incompatible as well + // reindexing + deleting is required, so no need to bubble up this deprecation in the UI + const indexDeprecations = deprecationsByIndex.get(deprecation.index)!; + const oldIndexDeprecation: EnrichedDeprecationInfo | undefined = indexDeprecations.find( + (elem) => + elem.type === 'index_settings' && + elem.index === deprecation.index && + elem.correctiveAction?.type === 'reindex' + ); + if (oldIndexDeprecation) { + oldIndexDeprecation.frozen = true; + return false; + } + } + + return true; }); }; From e527f2b79a02d9f4b3eea00dad149c8b05ea85de Mon Sep 17 00:00:00 2001 From: Gerard Soldevila Date: Mon, 17 Feb 2025 10:57:15 +0100 Subject: [PATCH 14/78] SKA: Relocate new response-ops packages (#211241) ## Summary This PR aims at relocating some of the Kibana modules (plugins and packages) into a new folder structure, according to the _Sustainable Kibana Architecture_ initiative. > [!IMPORTANT] > * We kindly ask you to: > * Manually fix the errors in the error section below (if there are any). > * Search for the `packages[\/\\]` and `plugins[\/\\]` patterns in the source code (Babel and Eslint config files), and update them appropriately. > * Manually review `.buildkite/scripts/pipelines/pull_request/pipeline.ts` to ensure that any CI pipeline customizations continue to be correctly applied after the changed path names > * Review all of the updated files, specially the `.ts` and `.js` files listed in the sections below, as some of them contain relative paths that have been updated. > * Think of potential impact of the move, including tooling and configuration files that can be pointing to the relocated modules. E.g.: > * customised eslint rules > * docs pointing to source code > [!NOTE] > * This PR has been auto-generated. > * Any manual contributions will be lost if the 'relocate' script is re-run. > * Try to obtain the missing reviews / approvals before applying manual fixes, and/or keep your changes in a .patch / git stash. > * Please use [#sustainable_kibana_architecture](https://elastic.slack.com/archives/C07TCKTA22E) Slack channel for feedback. Are you trying to rebase this PR to solve merge conflicts? Please follow the steps describe [here](https://elastic.slack.com/archives/C07TCKTA22E/p1734019532879269?thread_ts=1734019339.935419&cid=C07TCKTA22E). #### 3 packages(s) are going to be relocated: | Id | Target folder | | -- | ------------- | | `@kbn/response-ops-alerts-apis` | `src/platform/packages/shared/response-ops/alerts-apis` | | `@kbn/response-ops-alerts-fields-browser` | `src/platform/packages/shared/response-ops/alerts-fields-browser` | | `@kbn/response-ops-alerts-table` | `src/platform/packages/shared/response-ops/alerts-table` |

Updated references ``` ./package.json ./packages/kbn-ts-projects/config-paths.json ./src/platform/packages/private/kbn-repo-packages/package-map.json ./src/platform/packages/shared/response-ops/alerts-apis/jest.config.js ./src/platform/packages/shared/response-ops/alerts-fields-browser/jest.config.js ./src/platform/packages/shared/response-ops/alerts-table/jest.config.js ./tsconfig.base.json ./yarn.lock .github/CODEOWNERS ```
Updated relative paths ``` src/platform/packages/shared/response-ops/alerts-apis/jest.config.js:12 src/platform/packages/shared/response-ops/alerts-apis/tsconfig.json:2 src/platform/packages/shared/response-ops/alerts-fields-browser/jest.config.js:12 src/platform/packages/shared/response-ops/alerts-fields-browser/tsconfig.json:2 src/platform/packages/shared/response-ops/alerts-table/jest.config.js:12 src/platform/packages/shared/response-ops/alerts-table/tsconfig.json:2 ```
--------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Umberto Pepato --- .github/CODEOWNERS | 6 +++--- package.json | 6 +++--- .../shared/response-ops/alerts-apis}/README.md | 0 .../apis/get_muted_alerts_instances_by_rule.test.ts | 0 .../apis/get_muted_alerts_instances_by_rule.ts | 0 .../alerts-apis}/apis/mute_alert_instance.test.ts | 0 .../alerts-apis}/apis/mute_alert_instance.ts | 0 .../alerts-apis}/apis/unmute_alert_instance.test.ts | 0 .../alerts-apis}/apis/unmute_alert_instance.ts | 0 .../shared/response-ops/alerts-apis}/constants.ts | 0 .../hooks/use_get_muted_alerts_query.test.tsx | 0 .../hooks/use_get_muted_alerts_query.tsx | 0 .../hooks/use_mute_alert_instance.test.tsx | 0 .../alerts-apis}/hooks/use_mute_alert_instance.ts | 0 .../hooks/use_unmute_alert_instance.test.tsx | 0 .../alerts-apis}/hooks/use_unmute_alert_instance.ts | 0 .../shared/response-ops/alerts-apis}/jest.config.js | 8 +++++--- .../shared/response-ops/alerts-apis}/kibana.jsonc | 0 .../shared/response-ops/alerts-apis}/package.json | 0 .../shared/response-ops/alerts-apis}/setup_tests.ts | 0 .../shared/response-ops/alerts-apis}/tsconfig.json | 2 +- .../shared/response-ops/alerts-apis}/types.ts | 0 .../response-ops/alerts-fields-browser}/README.md | 0 .../categories_badges/categories_badges.styles.ts | 0 .../categories_badges/categories_badges.test.tsx | 0 .../categories_badges/categories_badges.tsx | 0 .../components/categories_badges/index.ts | 0 .../categories_selector.styles.ts | 0 .../categories_selector/categories_selector.test.tsx | 0 .../categories_selector/categories_selector.tsx | 0 .../components/categories_selector/index.ts | 0 .../components/field_browser/field_browser.styles.ts | 0 .../components/field_browser/field_browser.test.tsx | 0 .../components/field_browser/field_browser.tsx | 0 .../field_browser_modal/field_browser_modal.test.tsx | 0 .../field_browser_modal/field_browser_modal.tsx | 0 .../components/field_items/field_items.style.ts | 0 .../components/field_items/field_items.test.tsx | 0 .../components/field_items/field_items.tsx | 0 .../components/field_items/index.ts | 0 .../components/field_name/field_name.test.tsx | 0 .../components/field_name/field_name.tsx | 0 .../components/field_name/index.ts | 0 .../components/field_table/field_table.styles.ts | 0 .../components/field_table/field_table.test.tsx | 0 .../components/field_table/field_table.tsx | 0 .../field_table/field_table_header.styles.ts | 0 .../field_table/field_table_header.test.tsx | 0 .../components/field_table/field_table_header.tsx | 0 .../components/field_table/index.ts | 0 .../components/search/index.ts | 0 .../components/search/search.test.tsx | 0 .../components/search/search.tsx | 0 .../alerts-fields-browser}/helpers.test.ts | 0 .../response-ops/alerts-fields-browser}/helpers.ts | 0 .../response-ops/alerts-fields-browser}/index.ts | 0 .../alerts-fields-browser}/jest.config.js | 8 +++++--- .../response-ops/alerts-fields-browser}/kibana.jsonc | 0 .../response-ops/alerts-fields-browser}/mock.ts | 0 .../response-ops/alerts-fields-browser}/package.json | 0 .../alerts-fields-browser}/setup_tests.ts | 0 .../alerts-fields-browser}/translations.ts | 0 .../alerts-fields-browser}/tsconfig.json | 2 +- .../response-ops/alerts-fields-browser}/types.ts | 0 .../shared/response-ops/alerts-table}/README.md | 0 .../alerts-table}/apis/bulk_get_cases.test.ts | 0 .../alerts-table}/apis/bulk_get_cases.ts | 0 .../apis/bulk_get_maintenance_windows.test.ts | 0 .../apis/bulk_get_maintenance_windows.ts | 0 ...ustration_product_no_results_magnifying_glass.svg | 0 .../components/actions_cell_host.test.tsx | 0 .../alerts-table}/components/actions_cell_host.tsx | 0 .../components/alert_lifecycle_status_cell.test.tsx | 0 .../components/alert_lifecycle_status_cell.tsx | 0 .../alerts-table}/components/alerts_count.tsx | 0 .../components/alerts_data_grid.test.tsx | 0 .../alerts-table}/components/alerts_data_grid.tsx | 0 .../alerts-table}/components/alerts_flyout.test.tsx | 0 .../alerts-table}/components/alerts_flyout.tsx | 0 .../components/alerts_query_inspector.test.tsx | 0 .../components/alerts_query_inspector.tsx | 0 .../components/alerts_query_inspector_modal.test.tsx | 0 .../components/alerts_query_inspector_modal.tsx | 0 .../alerts-table}/components/alerts_table.test.tsx | 0 .../alerts-table}/components/alerts_table.tsx | 0 .../alerts-table}/components/bulk_actions_cell.tsx | 0 .../components/bulk_actions_header_cell.tsx | 0 .../components/bulk_actions_toolbar_control.tsx | 0 .../alerts-table}/components/cases_cell.test.tsx | 0 .../alerts-table}/components/cases_cell.tsx | 0 .../components/cell_popover_host.test.tsx | 0 .../alerts-table}/components/cell_popover_host.tsx | 0 .../components/cell_value_host.test.tsx | 0 .../alerts-table}/components/cell_value_host.tsx | 0 .../components/control_column_header_cell.tsx | 0 .../components/default_alert_actions.test.tsx | 0 .../components/default_alert_actions.tsx | 0 .../components/default_alerts_flyout.test.tsx | 0 .../components/default_alerts_flyout.tsx | 0 .../alerts-table}/components/default_cell.test.tsx | 0 .../alerts-table}/components/default_cell.tsx | 0 .../components/default_cell_value.test.tsx | 0 .../alerts-table}/components/default_cell_value.tsx | 0 .../alerts-table}/components/empty_state.stories.tsx | 0 .../alerts-table}/components/empty_state.tsx | 0 .../alerts-table}/components/error_boundary.test.tsx | 0 .../alerts-table}/components/error_boundary.tsx | 0 .../alerts-table}/components/error_cell.test.tsx | 0 .../alerts-table}/components/error_cell.tsx | 0 .../alerts-table}/components/error_fallback.test.tsx | 0 .../alerts-table}/components/error_fallback.tsx | 0 .../components/hover_visibility_container.test.tsx | 0 .../components/hover_visibility_container.tsx | 0 .../alerts-table}/components/last_updated_at.tsx | 0 .../components/maintenance_windows_cell.test.tsx | 0 .../components/maintenance_windows_cell.tsx | 0 .../maintenance_windows_tooltip_content.tsx | 0 .../components/mark_as_untracked_alert_action.tsx | 0 .../alerts-table}/components/mute_alert_action.tsx | 0 .../components/non_virtualized_grid_body.test.tsx | 0 .../components/non_virtualized_grid_body.tsx | 0 .../alerts-table}/components/system_cell.test.tsx | 0 .../alerts-table}/components/system_cell.tsx | 0 .../components/view_alert_details_alert_action.tsx | 0 .../components/view_rule_details_alert_action.tsx | 0 .../response-ops/alerts-table}/configuration.ts | 0 .../shared/response-ops/alerts-table}/constants.ts | 0 .../alerts-table}/contexts/alerts_table_context.tsx | 0 .../alerts-table}/hooks/toggle_column.test.tsx | 0 .../alerts-table}/hooks/toggle_column.ts | 0 .../alerts-table}/hooks/use_alert_muted_state.ts | 0 .../alerts-table}/hooks/use_bulk_actions.test.tsx | 0 .../alerts-table}/hooks/use_bulk_actions.ts | 0 .../alerts-table}/hooks/use_bulk_get_cases.test.tsx | 0 .../alerts-table}/hooks/use_bulk_get_cases.tsx | 0 .../hooks/use_bulk_get_maintenance_windows.test.tsx | 0 .../hooks/use_bulk_get_maintenance_windows.tsx | 0 .../alerts-table}/hooks/use_bulk_untrack_alerts.tsx | 0 .../hooks/use_bulk_untrack_alerts_by_query.tsx | 0 .../hooks/use_case_view_navigation.test.tsx | 0 .../alerts-table}/hooks/use_case_view_navigation.ts | 0 .../alerts-table}/hooks/use_columns.test.tsx | 0 .../response-ops/alerts-table}/hooks/use_columns.ts | 0 .../alerts-table}/hooks/use_field_formatter.ts | 0 .../alerts-table}/hooks/use_license.test.ts | 0 .../response-ops/alerts-table}/hooks/use_license.ts | 0 .../alerts-table}/hooks/use_pagination.test.ts | 0 .../alerts-table}/hooks/use_pagination.ts | 0 .../alerts-table}/hooks/use_sorting.test.ts | 0 .../response-ops/alerts-table}/hooks/use_sorting.ts | 0 .../alerts-table}/hooks/use_toolbar_visibility.tsx | 0 .../shared/response-ops/alerts-table}/index.ts | 0 .../shared/response-ops/alerts-table}/jest.config.js | 8 +++++--- .../shared/response-ops/alerts-table}/kibana.jsonc | 0 .../response-ops/alerts-table}/mocks/cases.mock.tsx | 0 .../alerts-table}/mocks/context.mock.tsx | 0 .../alerts-table}/mocks/maintenance_windows.mock.ts | 0 .../shared/response-ops/alerts-table}/package.json | 0 .../response-ops/alerts-table}/query_client.ts | 0 .../reducers/bulk_actions_reducer.test.tsx | 0 .../alerts-table}/reducers/bulk_actions_reducer.ts | 0 .../shared/response-ops/alerts-table}/setup_tests.ts | 0 .../response-ops/alerts-table}/translations.ts | 0 .../shared/response-ops/alerts-table}/tsconfig.json | 2 +- .../shared/response-ops/alerts-table}/types.ts | 0 .../shared/response-ops/alerts-table}/utils/react.ts | 0 .../response-ops/alerts-table}/utils/storage.test.ts | 0 .../response-ops/alerts-table}/utils/storage.ts | 0 .../shared/response-ops/alerts-table}/utils/test.ts | 0 tsconfig.base.json | 12 ++++++------ yarn.lock | 6 +++--- 171 files changed, 33 insertions(+), 27 deletions(-) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/README.md (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/apis/get_muted_alerts_instances_by_rule.test.ts (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/apis/get_muted_alerts_instances_by_rule.ts (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/apis/mute_alert_instance.test.ts (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/apis/mute_alert_instance.ts (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/apis/unmute_alert_instance.test.ts (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/apis/unmute_alert_instance.ts (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/constants.ts (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/hooks/use_get_muted_alerts_query.test.tsx (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/hooks/use_get_muted_alerts_query.tsx (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/hooks/use_mute_alert_instance.test.tsx (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/hooks/use_mute_alert_instance.ts (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/hooks/use_unmute_alert_instance.test.tsx (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/hooks/use_unmute_alert_instance.ts (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/jest.config.js (69%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/kibana.jsonc (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/package.json (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/setup_tests.ts (100%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/tsconfig.json (89%) rename {packages/response-ops/alerts_apis => src/platform/packages/shared/response-ops/alerts-apis}/types.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/README.md (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/categories_badges/categories_badges.styles.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/categories_badges/categories_badges.test.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/categories_badges/categories_badges.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/categories_badges/index.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/categories_selector/categories_selector.styles.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/categories_selector/categories_selector.test.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/categories_selector/categories_selector.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/categories_selector/index.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_browser/field_browser.styles.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_browser/field_browser.test.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_browser/field_browser.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_browser_modal/field_browser_modal.test.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_browser_modal/field_browser_modal.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_items/field_items.style.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_items/field_items.test.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_items/field_items.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_items/index.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_name/field_name.test.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_name/field_name.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_name/index.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_table/field_table.styles.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_table/field_table.test.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_table/field_table.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_table/field_table_header.styles.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_table/field_table_header.test.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_table/field_table_header.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/field_table/index.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/search/index.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/search/search.test.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/components/search/search.tsx (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/helpers.test.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/helpers.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/index.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/jest.config.js (67%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/kibana.jsonc (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/mock.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/package.json (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/setup_tests.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/translations.ts (100%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/tsconfig.json (87%) rename {packages/response-ops/alerts_fields_browser => src/platform/packages/shared/response-ops/alerts-fields-browser}/types.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/README.md (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/apis/bulk_get_cases.test.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/apis/bulk_get_cases.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/apis/bulk_get_maintenance_windows.test.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/apis/bulk_get_maintenance_windows.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/assets/illustration_product_no_results_magnifying_glass.svg (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/actions_cell_host.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/actions_cell_host.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/alert_lifecycle_status_cell.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/alert_lifecycle_status_cell.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/alerts_count.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/alerts_data_grid.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/alerts_data_grid.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/alerts_flyout.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/alerts_flyout.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/alerts_query_inspector.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/alerts_query_inspector.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/alerts_query_inspector_modal.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/alerts_query_inspector_modal.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/alerts_table.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/alerts_table.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/bulk_actions_cell.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/bulk_actions_header_cell.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/bulk_actions_toolbar_control.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/cases_cell.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/cases_cell.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/cell_popover_host.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/cell_popover_host.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/cell_value_host.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/cell_value_host.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/control_column_header_cell.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/default_alert_actions.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/default_alert_actions.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/default_alerts_flyout.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/default_alerts_flyout.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/default_cell.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/default_cell.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/default_cell_value.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/default_cell_value.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/empty_state.stories.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/empty_state.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/error_boundary.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/error_boundary.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/error_cell.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/error_cell.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/error_fallback.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/error_fallback.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/hover_visibility_container.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/hover_visibility_container.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/last_updated_at.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/maintenance_windows_cell.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/maintenance_windows_cell.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/maintenance_windows_tooltip_content.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/mark_as_untracked_alert_action.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/mute_alert_action.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/non_virtualized_grid_body.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/non_virtualized_grid_body.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/system_cell.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/system_cell.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/view_alert_details_alert_action.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/components/view_rule_details_alert_action.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/configuration.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/constants.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/contexts/alerts_table_context.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/toggle_column.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/toggle_column.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_alert_muted_state.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_bulk_actions.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_bulk_actions.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_bulk_get_cases.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_bulk_get_cases.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_bulk_get_maintenance_windows.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_bulk_get_maintenance_windows.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_bulk_untrack_alerts.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_bulk_untrack_alerts_by_query.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_case_view_navigation.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_case_view_navigation.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_columns.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_columns.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_field_formatter.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_license.test.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_license.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_pagination.test.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_pagination.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_sorting.test.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_sorting.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/hooks/use_toolbar_visibility.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/index.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/jest.config.js (69%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/kibana.jsonc (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/mocks/cases.mock.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/mocks/context.mock.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/mocks/maintenance_windows.mock.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/package.json (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/query_client.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/reducers/bulk_actions_reducer.test.tsx (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/reducers/bulk_actions_reducer.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/setup_tests.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/translations.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/tsconfig.json (95%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/types.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/utils/react.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/utils/storage.test.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/utils/storage.ts (100%) rename {packages/response-ops/alerts_table => src/platform/packages/shared/response-ops/alerts-table}/utils/test.ts (100%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 3bea5a24e5d12..07fc3d445e5c2 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -141,9 +141,6 @@ packages/kbn-validate-next-docs-cli @elastic/kibana-operations packages/kbn-web-worker-stub @elastic/kibana-operations packages/kbn-whereis-pkg-cli @elastic/kibana-operations packages/kbn-yarn-lock-validator @elastic/kibana-operations -packages/response-ops/alerts_apis @elastic/response-ops -packages/response-ops/alerts_fields_browser @elastic/response-ops -packages/response-ops/alerts_table @elastic/response-ops packages/serverless/storybook/config @elastic/appex-sharedux src/core @elastic/kibana-core src/core/packages/analytics/browser @elastic/kibana-core @@ -562,6 +559,9 @@ src/platform/packages/shared/react/kibana_context/root @elastic/appex-sharedux src/platform/packages/shared/react/kibana_context/styled @elastic/appex-sharedux src/platform/packages/shared/react/kibana_context/theme @elastic/appex-sharedux src/platform/packages/shared/react/kibana_mount @elastic/appex-sharedux +src/platform/packages/shared/response-ops/alerts-apis @elastic/response-ops +src/platform/packages/shared/response-ops/alerts-fields-browser @elastic/response-ops +src/platform/packages/shared/response-ops/alerts-table @elastic/response-ops src/platform/packages/shared/response-ops/rule_form @elastic/response-ops src/platform/packages/shared/response-ops/rule_params @elastic/response-ops src/platform/packages/shared/serverless/settings/observability_project @elastic/appex-sharedux @elastic/kibana-management @elastic/obs-ux-management-team diff --git a/package.json b/package.json index 9263af211db9d..5e69dfd7cb554 100644 --- a/package.json +++ b/package.json @@ -761,9 +761,9 @@ "@kbn/resizable-layout": "link:src/platform/packages/shared/kbn-resizable-layout", "@kbn/resizable-layout-examples-plugin": "link:examples/resizable_layout_examples", "@kbn/resolver-test-plugin": "link:x-pack/test/plugin_functional/plugins/resolver_test", - "@kbn/response-ops-alerts-apis": "link:packages/response-ops/alerts_apis", - "@kbn/response-ops-alerts-fields-browser": "link:packages/response-ops/alerts_fields_browser", - "@kbn/response-ops-alerts-table": "link:packages/response-ops/alerts_table", + "@kbn/response-ops-alerts-apis": "link:src/platform/packages/shared/response-ops/alerts-apis", + "@kbn/response-ops-alerts-fields-browser": "link:src/platform/packages/shared/response-ops/alerts-fields-browser", + "@kbn/response-ops-alerts-table": "link:src/platform/packages/shared/response-ops/alerts-table", "@kbn/response-ops-rule-form": "link:src/platform/packages/shared/response-ops/rule_form", "@kbn/response-ops-rule-params": "link:src/platform/packages/shared/response-ops/rule_params", "@kbn/response-stream-plugin": "link:examples/response_stream", diff --git a/packages/response-ops/alerts_apis/README.md b/src/platform/packages/shared/response-ops/alerts-apis/README.md similarity index 100% rename from packages/response-ops/alerts_apis/README.md rename to src/platform/packages/shared/response-ops/alerts-apis/README.md diff --git a/packages/response-ops/alerts_apis/apis/get_muted_alerts_instances_by_rule.test.ts b/src/platform/packages/shared/response-ops/alerts-apis/apis/get_muted_alerts_instances_by_rule.test.ts similarity index 100% rename from packages/response-ops/alerts_apis/apis/get_muted_alerts_instances_by_rule.test.ts rename to src/platform/packages/shared/response-ops/alerts-apis/apis/get_muted_alerts_instances_by_rule.test.ts diff --git a/packages/response-ops/alerts_apis/apis/get_muted_alerts_instances_by_rule.ts b/src/platform/packages/shared/response-ops/alerts-apis/apis/get_muted_alerts_instances_by_rule.ts similarity index 100% rename from packages/response-ops/alerts_apis/apis/get_muted_alerts_instances_by_rule.ts rename to src/platform/packages/shared/response-ops/alerts-apis/apis/get_muted_alerts_instances_by_rule.ts diff --git a/packages/response-ops/alerts_apis/apis/mute_alert_instance.test.ts b/src/platform/packages/shared/response-ops/alerts-apis/apis/mute_alert_instance.test.ts similarity index 100% rename from packages/response-ops/alerts_apis/apis/mute_alert_instance.test.ts rename to src/platform/packages/shared/response-ops/alerts-apis/apis/mute_alert_instance.test.ts diff --git a/packages/response-ops/alerts_apis/apis/mute_alert_instance.ts b/src/platform/packages/shared/response-ops/alerts-apis/apis/mute_alert_instance.ts similarity index 100% rename from packages/response-ops/alerts_apis/apis/mute_alert_instance.ts rename to src/platform/packages/shared/response-ops/alerts-apis/apis/mute_alert_instance.ts diff --git a/packages/response-ops/alerts_apis/apis/unmute_alert_instance.test.ts b/src/platform/packages/shared/response-ops/alerts-apis/apis/unmute_alert_instance.test.ts similarity index 100% rename from packages/response-ops/alerts_apis/apis/unmute_alert_instance.test.ts rename to src/platform/packages/shared/response-ops/alerts-apis/apis/unmute_alert_instance.test.ts diff --git a/packages/response-ops/alerts_apis/apis/unmute_alert_instance.ts b/src/platform/packages/shared/response-ops/alerts-apis/apis/unmute_alert_instance.ts similarity index 100% rename from packages/response-ops/alerts_apis/apis/unmute_alert_instance.ts rename to src/platform/packages/shared/response-ops/alerts-apis/apis/unmute_alert_instance.ts diff --git a/packages/response-ops/alerts_apis/constants.ts b/src/platform/packages/shared/response-ops/alerts-apis/constants.ts similarity index 100% rename from packages/response-ops/alerts_apis/constants.ts rename to src/platform/packages/shared/response-ops/alerts-apis/constants.ts diff --git a/packages/response-ops/alerts_apis/hooks/use_get_muted_alerts_query.test.tsx b/src/platform/packages/shared/response-ops/alerts-apis/hooks/use_get_muted_alerts_query.test.tsx similarity index 100% rename from packages/response-ops/alerts_apis/hooks/use_get_muted_alerts_query.test.tsx rename to src/platform/packages/shared/response-ops/alerts-apis/hooks/use_get_muted_alerts_query.test.tsx diff --git a/packages/response-ops/alerts_apis/hooks/use_get_muted_alerts_query.tsx b/src/platform/packages/shared/response-ops/alerts-apis/hooks/use_get_muted_alerts_query.tsx similarity index 100% rename from packages/response-ops/alerts_apis/hooks/use_get_muted_alerts_query.tsx rename to src/platform/packages/shared/response-ops/alerts-apis/hooks/use_get_muted_alerts_query.tsx diff --git a/packages/response-ops/alerts_apis/hooks/use_mute_alert_instance.test.tsx b/src/platform/packages/shared/response-ops/alerts-apis/hooks/use_mute_alert_instance.test.tsx similarity index 100% rename from packages/response-ops/alerts_apis/hooks/use_mute_alert_instance.test.tsx rename to src/platform/packages/shared/response-ops/alerts-apis/hooks/use_mute_alert_instance.test.tsx diff --git a/packages/response-ops/alerts_apis/hooks/use_mute_alert_instance.ts b/src/platform/packages/shared/response-ops/alerts-apis/hooks/use_mute_alert_instance.ts similarity index 100% rename from packages/response-ops/alerts_apis/hooks/use_mute_alert_instance.ts rename to src/platform/packages/shared/response-ops/alerts-apis/hooks/use_mute_alert_instance.ts diff --git a/packages/response-ops/alerts_apis/hooks/use_unmute_alert_instance.test.tsx b/src/platform/packages/shared/response-ops/alerts-apis/hooks/use_unmute_alert_instance.test.tsx similarity index 100% rename from packages/response-ops/alerts_apis/hooks/use_unmute_alert_instance.test.tsx rename to src/platform/packages/shared/response-ops/alerts-apis/hooks/use_unmute_alert_instance.test.tsx diff --git a/packages/response-ops/alerts_apis/hooks/use_unmute_alert_instance.ts b/src/platform/packages/shared/response-ops/alerts-apis/hooks/use_unmute_alert_instance.ts similarity index 100% rename from packages/response-ops/alerts_apis/hooks/use_unmute_alert_instance.ts rename to src/platform/packages/shared/response-ops/alerts-apis/hooks/use_unmute_alert_instance.ts diff --git a/packages/response-ops/alerts_apis/jest.config.js b/src/platform/packages/shared/response-ops/alerts-apis/jest.config.js similarity index 69% rename from packages/response-ops/alerts_apis/jest.config.js rename to src/platform/packages/shared/response-ops/alerts-apis/jest.config.js index 4e584d40c5bc7..0a5dbf1fd7a59 100644 --- a/packages/response-ops/alerts_apis/jest.config.js +++ b/src/platform/packages/shared/response-ops/alerts-apis/jest.config.js @@ -9,7 +9,9 @@ module.exports = { preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/response-ops/alerts_apis'], - setupFilesAfterEnv: ['/packages/response-ops/alerts_apis/setup_tests.ts'], + rootDir: '../../../../../..', + roots: ['/src/platform/packages/shared/response-ops/alerts-apis'], + setupFilesAfterEnv: [ + '/src/platform/packages/shared/response-ops/alerts-apis/setup_tests.ts', + ], }; diff --git a/packages/response-ops/alerts_apis/kibana.jsonc b/src/platform/packages/shared/response-ops/alerts-apis/kibana.jsonc similarity index 100% rename from packages/response-ops/alerts_apis/kibana.jsonc rename to src/platform/packages/shared/response-ops/alerts-apis/kibana.jsonc diff --git a/packages/response-ops/alerts_apis/package.json b/src/platform/packages/shared/response-ops/alerts-apis/package.json similarity index 100% rename from packages/response-ops/alerts_apis/package.json rename to src/platform/packages/shared/response-ops/alerts-apis/package.json diff --git a/packages/response-ops/alerts_apis/setup_tests.ts b/src/platform/packages/shared/response-ops/alerts-apis/setup_tests.ts similarity index 100% rename from packages/response-ops/alerts_apis/setup_tests.ts rename to src/platform/packages/shared/response-ops/alerts-apis/setup_tests.ts diff --git a/packages/response-ops/alerts_apis/tsconfig.json b/src/platform/packages/shared/response-ops/alerts-apis/tsconfig.json similarity index 89% rename from packages/response-ops/alerts_apis/tsconfig.json rename to src/platform/packages/shared/response-ops/alerts-apis/tsconfig.json index 0ea4e7a36c6f2..db08d5bbe5754 100644 --- a/packages/response-ops/alerts_apis/tsconfig.json +++ b/src/platform/packages/shared/response-ops/alerts-apis/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../../tsconfig.base.json", + "extends": "../../../../../../tsconfig.base.json", "compilerOptions": { "outDir": "target/types", "types": [ diff --git a/packages/response-ops/alerts_apis/types.ts b/src/platform/packages/shared/response-ops/alerts-apis/types.ts similarity index 100% rename from packages/response-ops/alerts_apis/types.ts rename to src/platform/packages/shared/response-ops/alerts-apis/types.ts diff --git a/packages/response-ops/alerts_fields_browser/README.md b/src/platform/packages/shared/response-ops/alerts-fields-browser/README.md similarity index 100% rename from packages/response-ops/alerts_fields_browser/README.md rename to src/platform/packages/shared/response-ops/alerts-fields-browser/README.md diff --git a/packages/response-ops/alerts_fields_browser/components/categories_badges/categories_badges.styles.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/categories_badges/categories_badges.styles.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/categories_badges/categories_badges.styles.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/categories_badges/categories_badges.styles.ts diff --git a/packages/response-ops/alerts_fields_browser/components/categories_badges/categories_badges.test.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/categories_badges/categories_badges.test.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/categories_badges/categories_badges.test.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/categories_badges/categories_badges.test.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/categories_badges/categories_badges.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/categories_badges/categories_badges.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/categories_badges/categories_badges.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/categories_badges/categories_badges.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/categories_badges/index.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/categories_badges/index.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/categories_badges/index.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/categories_badges/index.ts diff --git a/packages/response-ops/alerts_fields_browser/components/categories_selector/categories_selector.styles.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/categories_selector/categories_selector.styles.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/categories_selector/categories_selector.styles.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/categories_selector/categories_selector.styles.ts diff --git a/packages/response-ops/alerts_fields_browser/components/categories_selector/categories_selector.test.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/categories_selector/categories_selector.test.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/categories_selector/categories_selector.test.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/categories_selector/categories_selector.test.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/categories_selector/categories_selector.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/categories_selector/categories_selector.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/categories_selector/categories_selector.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/categories_selector/categories_selector.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/categories_selector/index.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/categories_selector/index.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/categories_selector/index.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/categories_selector/index.ts diff --git a/packages/response-ops/alerts_fields_browser/components/field_browser/field_browser.styles.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_browser/field_browser.styles.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_browser/field_browser.styles.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_browser/field_browser.styles.ts diff --git a/packages/response-ops/alerts_fields_browser/components/field_browser/field_browser.test.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_browser/field_browser.test.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_browser/field_browser.test.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_browser/field_browser.test.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/field_browser/field_browser.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_browser/field_browser.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_browser/field_browser.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_browser/field_browser.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/field_browser_modal/field_browser_modal.test.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_browser_modal/field_browser_modal.test.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_browser_modal/field_browser_modal.test.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_browser_modal/field_browser_modal.test.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/field_browser_modal/field_browser_modal.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_browser_modal/field_browser_modal.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_browser_modal/field_browser_modal.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_browser_modal/field_browser_modal.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/field_items/field_items.style.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_items/field_items.style.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_items/field_items.style.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_items/field_items.style.ts diff --git a/packages/response-ops/alerts_fields_browser/components/field_items/field_items.test.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_items/field_items.test.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_items/field_items.test.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_items/field_items.test.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/field_items/field_items.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_items/field_items.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_items/field_items.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_items/field_items.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/field_items/index.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_items/index.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_items/index.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_items/index.ts diff --git a/packages/response-ops/alerts_fields_browser/components/field_name/field_name.test.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_name/field_name.test.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_name/field_name.test.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_name/field_name.test.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/field_name/field_name.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_name/field_name.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_name/field_name.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_name/field_name.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/field_name/index.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_name/index.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_name/index.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_name/index.ts diff --git a/packages/response-ops/alerts_fields_browser/components/field_table/field_table.styles.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_table/field_table.styles.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_table/field_table.styles.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_table/field_table.styles.ts diff --git a/packages/response-ops/alerts_fields_browser/components/field_table/field_table.test.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_table/field_table.test.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_table/field_table.test.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_table/field_table.test.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/field_table/field_table.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_table/field_table.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_table/field_table.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_table/field_table.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/field_table/field_table_header.styles.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_table/field_table_header.styles.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_table/field_table_header.styles.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_table/field_table_header.styles.ts diff --git a/packages/response-ops/alerts_fields_browser/components/field_table/field_table_header.test.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_table/field_table_header.test.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_table/field_table_header.test.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_table/field_table_header.test.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/field_table/field_table_header.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_table/field_table_header.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_table/field_table_header.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_table/field_table_header.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/field_table/index.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_table/index.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/field_table/index.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_table/index.ts diff --git a/packages/response-ops/alerts_fields_browser/components/search/index.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/search/index.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/search/index.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/search/index.ts diff --git a/packages/response-ops/alerts_fields_browser/components/search/search.test.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/search/search.test.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/search/search.test.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/search/search.test.tsx diff --git a/packages/response-ops/alerts_fields_browser/components/search/search.tsx b/src/platform/packages/shared/response-ops/alerts-fields-browser/components/search/search.tsx similarity index 100% rename from packages/response-ops/alerts_fields_browser/components/search/search.tsx rename to src/platform/packages/shared/response-ops/alerts-fields-browser/components/search/search.tsx diff --git a/packages/response-ops/alerts_fields_browser/helpers.test.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/helpers.test.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/helpers.test.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/helpers.test.ts diff --git a/packages/response-ops/alerts_fields_browser/helpers.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/helpers.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/helpers.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/helpers.ts diff --git a/packages/response-ops/alerts_fields_browser/index.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/index.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/index.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/index.ts diff --git a/packages/response-ops/alerts_fields_browser/jest.config.js b/src/platform/packages/shared/response-ops/alerts-fields-browser/jest.config.js similarity index 67% rename from packages/response-ops/alerts_fields_browser/jest.config.js rename to src/platform/packages/shared/response-ops/alerts-fields-browser/jest.config.js index b3517ca061fca..2bfa9bcfe0c51 100644 --- a/packages/response-ops/alerts_fields_browser/jest.config.js +++ b/src/platform/packages/shared/response-ops/alerts-fields-browser/jest.config.js @@ -9,7 +9,9 @@ module.exports = { preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/response-ops/alerts_fields_browser'], - setupFilesAfterEnv: ['/packages/response-ops/alerts_fields_browser/setup_tests.ts'], + rootDir: '../../../../../..', + roots: ['/src/platform/packages/shared/response-ops/alerts-fields-browser'], + setupFilesAfterEnv: [ + '/src/platform/packages/shared/response-ops/alerts-fields-browser/setup_tests.ts', + ], }; diff --git a/packages/response-ops/alerts_fields_browser/kibana.jsonc b/src/platform/packages/shared/response-ops/alerts-fields-browser/kibana.jsonc similarity index 100% rename from packages/response-ops/alerts_fields_browser/kibana.jsonc rename to src/platform/packages/shared/response-ops/alerts-fields-browser/kibana.jsonc diff --git a/packages/response-ops/alerts_fields_browser/mock.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/mock.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/mock.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/mock.ts diff --git a/packages/response-ops/alerts_fields_browser/package.json b/src/platform/packages/shared/response-ops/alerts-fields-browser/package.json similarity index 100% rename from packages/response-ops/alerts_fields_browser/package.json rename to src/platform/packages/shared/response-ops/alerts-fields-browser/package.json diff --git a/packages/response-ops/alerts_fields_browser/setup_tests.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/setup_tests.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/setup_tests.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/setup_tests.ts diff --git a/packages/response-ops/alerts_fields_browser/translations.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/translations.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/translations.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/translations.ts diff --git a/packages/response-ops/alerts_fields_browser/tsconfig.json b/src/platform/packages/shared/response-ops/alerts-fields-browser/tsconfig.json similarity index 87% rename from packages/response-ops/alerts_fields_browser/tsconfig.json rename to src/platform/packages/shared/response-ops/alerts-fields-browser/tsconfig.json index 8036e7dede0a5..a83437d2aeb53 100644 --- a/packages/response-ops/alerts_fields_browser/tsconfig.json +++ b/src/platform/packages/shared/response-ops/alerts-fields-browser/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../../tsconfig.base.json", + "extends": "../../../../../../tsconfig.base.json", "compilerOptions": { "outDir": "target/types", "types": [ diff --git a/packages/response-ops/alerts_fields_browser/types.ts b/src/platform/packages/shared/response-ops/alerts-fields-browser/types.ts similarity index 100% rename from packages/response-ops/alerts_fields_browser/types.ts rename to src/platform/packages/shared/response-ops/alerts-fields-browser/types.ts diff --git a/packages/response-ops/alerts_table/README.md b/src/platform/packages/shared/response-ops/alerts-table/README.md similarity index 100% rename from packages/response-ops/alerts_table/README.md rename to src/platform/packages/shared/response-ops/alerts-table/README.md diff --git a/packages/response-ops/alerts_table/apis/bulk_get_cases.test.ts b/src/platform/packages/shared/response-ops/alerts-table/apis/bulk_get_cases.test.ts similarity index 100% rename from packages/response-ops/alerts_table/apis/bulk_get_cases.test.ts rename to src/platform/packages/shared/response-ops/alerts-table/apis/bulk_get_cases.test.ts diff --git a/packages/response-ops/alerts_table/apis/bulk_get_cases.ts b/src/platform/packages/shared/response-ops/alerts-table/apis/bulk_get_cases.ts similarity index 100% rename from packages/response-ops/alerts_table/apis/bulk_get_cases.ts rename to src/platform/packages/shared/response-ops/alerts-table/apis/bulk_get_cases.ts diff --git a/packages/response-ops/alerts_table/apis/bulk_get_maintenance_windows.test.ts b/src/platform/packages/shared/response-ops/alerts-table/apis/bulk_get_maintenance_windows.test.ts similarity index 100% rename from packages/response-ops/alerts_table/apis/bulk_get_maintenance_windows.test.ts rename to src/platform/packages/shared/response-ops/alerts-table/apis/bulk_get_maintenance_windows.test.ts diff --git a/packages/response-ops/alerts_table/apis/bulk_get_maintenance_windows.ts b/src/platform/packages/shared/response-ops/alerts-table/apis/bulk_get_maintenance_windows.ts similarity index 100% rename from packages/response-ops/alerts_table/apis/bulk_get_maintenance_windows.ts rename to src/platform/packages/shared/response-ops/alerts-table/apis/bulk_get_maintenance_windows.ts diff --git a/packages/response-ops/alerts_table/assets/illustration_product_no_results_magnifying_glass.svg b/src/platform/packages/shared/response-ops/alerts-table/assets/illustration_product_no_results_magnifying_glass.svg similarity index 100% rename from packages/response-ops/alerts_table/assets/illustration_product_no_results_magnifying_glass.svg rename to src/platform/packages/shared/response-ops/alerts-table/assets/illustration_product_no_results_magnifying_glass.svg diff --git a/packages/response-ops/alerts_table/components/actions_cell_host.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/actions_cell_host.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/actions_cell_host.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/actions_cell_host.test.tsx diff --git a/packages/response-ops/alerts_table/components/actions_cell_host.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/actions_cell_host.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/actions_cell_host.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/actions_cell_host.tsx diff --git a/packages/response-ops/alerts_table/components/alert_lifecycle_status_cell.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/alert_lifecycle_status_cell.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/alert_lifecycle_status_cell.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/alert_lifecycle_status_cell.test.tsx diff --git a/packages/response-ops/alerts_table/components/alert_lifecycle_status_cell.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/alert_lifecycle_status_cell.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/alert_lifecycle_status_cell.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/alert_lifecycle_status_cell.tsx diff --git a/packages/response-ops/alerts_table/components/alerts_count.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/alerts_count.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/alerts_count.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/alerts_count.tsx diff --git a/packages/response-ops/alerts_table/components/alerts_data_grid.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/alerts_data_grid.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/alerts_data_grid.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/alerts_data_grid.test.tsx diff --git a/packages/response-ops/alerts_table/components/alerts_data_grid.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/alerts_data_grid.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/alerts_data_grid.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/alerts_data_grid.tsx diff --git a/packages/response-ops/alerts_table/components/alerts_flyout.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/alerts_flyout.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/alerts_flyout.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/alerts_flyout.test.tsx diff --git a/packages/response-ops/alerts_table/components/alerts_flyout.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/alerts_flyout.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/alerts_flyout.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/alerts_flyout.tsx diff --git a/packages/response-ops/alerts_table/components/alerts_query_inspector.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/alerts_query_inspector.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/alerts_query_inspector.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/alerts_query_inspector.test.tsx diff --git a/packages/response-ops/alerts_table/components/alerts_query_inspector.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/alerts_query_inspector.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/alerts_query_inspector.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/alerts_query_inspector.tsx diff --git a/packages/response-ops/alerts_table/components/alerts_query_inspector_modal.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/alerts_query_inspector_modal.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/alerts_query_inspector_modal.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/alerts_query_inspector_modal.test.tsx diff --git a/packages/response-ops/alerts_table/components/alerts_query_inspector_modal.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/alerts_query_inspector_modal.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/alerts_query_inspector_modal.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/alerts_query_inspector_modal.tsx diff --git a/packages/response-ops/alerts_table/components/alerts_table.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/alerts_table.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/alerts_table.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/alerts_table.test.tsx diff --git a/packages/response-ops/alerts_table/components/alerts_table.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/alerts_table.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/alerts_table.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/alerts_table.tsx diff --git a/packages/response-ops/alerts_table/components/bulk_actions_cell.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/bulk_actions_cell.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/bulk_actions_cell.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/bulk_actions_cell.tsx diff --git a/packages/response-ops/alerts_table/components/bulk_actions_header_cell.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/bulk_actions_header_cell.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/bulk_actions_header_cell.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/bulk_actions_header_cell.tsx diff --git a/packages/response-ops/alerts_table/components/bulk_actions_toolbar_control.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/bulk_actions_toolbar_control.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/bulk_actions_toolbar_control.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/bulk_actions_toolbar_control.tsx diff --git a/packages/response-ops/alerts_table/components/cases_cell.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/cases_cell.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/cases_cell.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/cases_cell.test.tsx diff --git a/packages/response-ops/alerts_table/components/cases_cell.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/cases_cell.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/cases_cell.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/cases_cell.tsx diff --git a/packages/response-ops/alerts_table/components/cell_popover_host.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/cell_popover_host.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/cell_popover_host.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/cell_popover_host.test.tsx diff --git a/packages/response-ops/alerts_table/components/cell_popover_host.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/cell_popover_host.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/cell_popover_host.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/cell_popover_host.tsx diff --git a/packages/response-ops/alerts_table/components/cell_value_host.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/cell_value_host.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/cell_value_host.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/cell_value_host.test.tsx diff --git a/packages/response-ops/alerts_table/components/cell_value_host.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/cell_value_host.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/cell_value_host.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/cell_value_host.tsx diff --git a/packages/response-ops/alerts_table/components/control_column_header_cell.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/control_column_header_cell.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/control_column_header_cell.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/control_column_header_cell.tsx diff --git a/packages/response-ops/alerts_table/components/default_alert_actions.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/default_alert_actions.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/default_alert_actions.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/default_alert_actions.test.tsx diff --git a/packages/response-ops/alerts_table/components/default_alert_actions.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/default_alert_actions.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/default_alert_actions.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/default_alert_actions.tsx diff --git a/packages/response-ops/alerts_table/components/default_alerts_flyout.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/default_alerts_flyout.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/default_alerts_flyout.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/default_alerts_flyout.test.tsx diff --git a/packages/response-ops/alerts_table/components/default_alerts_flyout.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/default_alerts_flyout.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/default_alerts_flyout.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/default_alerts_flyout.tsx diff --git a/packages/response-ops/alerts_table/components/default_cell.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/default_cell.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/default_cell.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/default_cell.test.tsx diff --git a/packages/response-ops/alerts_table/components/default_cell.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/default_cell.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/default_cell.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/default_cell.tsx diff --git a/packages/response-ops/alerts_table/components/default_cell_value.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/default_cell_value.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/default_cell_value.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/default_cell_value.test.tsx diff --git a/packages/response-ops/alerts_table/components/default_cell_value.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/default_cell_value.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/default_cell_value.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/default_cell_value.tsx diff --git a/packages/response-ops/alerts_table/components/empty_state.stories.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/empty_state.stories.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/empty_state.stories.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/empty_state.stories.tsx diff --git a/packages/response-ops/alerts_table/components/empty_state.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/empty_state.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/empty_state.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/empty_state.tsx diff --git a/packages/response-ops/alerts_table/components/error_boundary.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/error_boundary.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/error_boundary.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/error_boundary.test.tsx diff --git a/packages/response-ops/alerts_table/components/error_boundary.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/error_boundary.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/error_boundary.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/error_boundary.tsx diff --git a/packages/response-ops/alerts_table/components/error_cell.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/error_cell.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/error_cell.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/error_cell.test.tsx diff --git a/packages/response-ops/alerts_table/components/error_cell.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/error_cell.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/error_cell.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/error_cell.tsx diff --git a/packages/response-ops/alerts_table/components/error_fallback.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/error_fallback.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/error_fallback.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/error_fallback.test.tsx diff --git a/packages/response-ops/alerts_table/components/error_fallback.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/error_fallback.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/error_fallback.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/error_fallback.tsx diff --git a/packages/response-ops/alerts_table/components/hover_visibility_container.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/hover_visibility_container.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/hover_visibility_container.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/hover_visibility_container.test.tsx diff --git a/packages/response-ops/alerts_table/components/hover_visibility_container.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/hover_visibility_container.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/hover_visibility_container.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/hover_visibility_container.tsx diff --git a/packages/response-ops/alerts_table/components/last_updated_at.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/last_updated_at.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/last_updated_at.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/last_updated_at.tsx diff --git a/packages/response-ops/alerts_table/components/maintenance_windows_cell.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_cell.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/maintenance_windows_cell.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_cell.test.tsx diff --git a/packages/response-ops/alerts_table/components/maintenance_windows_cell.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_cell.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/maintenance_windows_cell.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_cell.tsx diff --git a/packages/response-ops/alerts_table/components/maintenance_windows_tooltip_content.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_tooltip_content.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/maintenance_windows_tooltip_content.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_tooltip_content.tsx diff --git a/packages/response-ops/alerts_table/components/mark_as_untracked_alert_action.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/mark_as_untracked_alert_action.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/mark_as_untracked_alert_action.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/mark_as_untracked_alert_action.tsx diff --git a/packages/response-ops/alerts_table/components/mute_alert_action.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/mute_alert_action.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/mute_alert_action.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/mute_alert_action.tsx diff --git a/packages/response-ops/alerts_table/components/non_virtualized_grid_body.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/non_virtualized_grid_body.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/non_virtualized_grid_body.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/non_virtualized_grid_body.test.tsx diff --git a/packages/response-ops/alerts_table/components/non_virtualized_grid_body.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/non_virtualized_grid_body.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/non_virtualized_grid_body.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/non_virtualized_grid_body.tsx diff --git a/packages/response-ops/alerts_table/components/system_cell.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/system_cell.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/system_cell.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/system_cell.test.tsx diff --git a/packages/response-ops/alerts_table/components/system_cell.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/system_cell.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/system_cell.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/system_cell.tsx diff --git a/packages/response-ops/alerts_table/components/view_alert_details_alert_action.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/view_alert_details_alert_action.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/view_alert_details_alert_action.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/view_alert_details_alert_action.tsx diff --git a/packages/response-ops/alerts_table/components/view_rule_details_alert_action.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/view_rule_details_alert_action.tsx similarity index 100% rename from packages/response-ops/alerts_table/components/view_rule_details_alert_action.tsx rename to src/platform/packages/shared/response-ops/alerts-table/components/view_rule_details_alert_action.tsx diff --git a/packages/response-ops/alerts_table/configuration.ts b/src/platform/packages/shared/response-ops/alerts-table/configuration.ts similarity index 100% rename from packages/response-ops/alerts_table/configuration.ts rename to src/platform/packages/shared/response-ops/alerts-table/configuration.ts diff --git a/packages/response-ops/alerts_table/constants.ts b/src/platform/packages/shared/response-ops/alerts-table/constants.ts similarity index 100% rename from packages/response-ops/alerts_table/constants.ts rename to src/platform/packages/shared/response-ops/alerts-table/constants.ts diff --git a/packages/response-ops/alerts_table/contexts/alerts_table_context.tsx b/src/platform/packages/shared/response-ops/alerts-table/contexts/alerts_table_context.tsx similarity index 100% rename from packages/response-ops/alerts_table/contexts/alerts_table_context.tsx rename to src/platform/packages/shared/response-ops/alerts-table/contexts/alerts_table_context.tsx diff --git a/packages/response-ops/alerts_table/hooks/toggle_column.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/hooks/toggle_column.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/hooks/toggle_column.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/hooks/toggle_column.test.tsx diff --git a/packages/response-ops/alerts_table/hooks/toggle_column.ts b/src/platform/packages/shared/response-ops/alerts-table/hooks/toggle_column.ts similarity index 100% rename from packages/response-ops/alerts_table/hooks/toggle_column.ts rename to src/platform/packages/shared/response-ops/alerts-table/hooks/toggle_column.ts diff --git a/packages/response-ops/alerts_table/hooks/use_alert_muted_state.ts b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_alert_muted_state.ts similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_alert_muted_state.ts rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_alert_muted_state.ts diff --git a/packages/response-ops/alerts_table/hooks/use_bulk_actions.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_actions.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_bulk_actions.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_actions.test.tsx diff --git a/packages/response-ops/alerts_table/hooks/use_bulk_actions.ts b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_actions.ts similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_bulk_actions.ts rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_actions.ts diff --git a/packages/response-ops/alerts_table/hooks/use_bulk_get_cases.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_get_cases.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_bulk_get_cases.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_get_cases.test.tsx diff --git a/packages/response-ops/alerts_table/hooks/use_bulk_get_cases.tsx b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_get_cases.tsx similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_bulk_get_cases.tsx rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_get_cases.tsx diff --git a/packages/response-ops/alerts_table/hooks/use_bulk_get_maintenance_windows.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_get_maintenance_windows.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_bulk_get_maintenance_windows.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_get_maintenance_windows.test.tsx diff --git a/packages/response-ops/alerts_table/hooks/use_bulk_get_maintenance_windows.tsx b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_get_maintenance_windows.tsx similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_bulk_get_maintenance_windows.tsx rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_get_maintenance_windows.tsx diff --git a/packages/response-ops/alerts_table/hooks/use_bulk_untrack_alerts.tsx b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_untrack_alerts.tsx similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_bulk_untrack_alerts.tsx rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_untrack_alerts.tsx diff --git a/packages/response-ops/alerts_table/hooks/use_bulk_untrack_alerts_by_query.tsx b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_untrack_alerts_by_query.tsx similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_bulk_untrack_alerts_by_query.tsx rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_untrack_alerts_by_query.tsx diff --git a/packages/response-ops/alerts_table/hooks/use_case_view_navigation.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_case_view_navigation.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_case_view_navigation.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_case_view_navigation.test.tsx diff --git a/packages/response-ops/alerts_table/hooks/use_case_view_navigation.ts b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_case_view_navigation.ts similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_case_view_navigation.ts rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_case_view_navigation.ts diff --git a/packages/response-ops/alerts_table/hooks/use_columns.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_columns.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_columns.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_columns.test.tsx diff --git a/packages/response-ops/alerts_table/hooks/use_columns.ts b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_columns.ts similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_columns.ts rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_columns.ts diff --git a/packages/response-ops/alerts_table/hooks/use_field_formatter.ts b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_field_formatter.ts similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_field_formatter.ts rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_field_formatter.ts diff --git a/packages/response-ops/alerts_table/hooks/use_license.test.ts b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_license.test.ts similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_license.test.ts rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_license.test.ts diff --git a/packages/response-ops/alerts_table/hooks/use_license.ts b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_license.ts similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_license.ts rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_license.ts diff --git a/packages/response-ops/alerts_table/hooks/use_pagination.test.ts b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_pagination.test.ts similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_pagination.test.ts rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_pagination.test.ts diff --git a/packages/response-ops/alerts_table/hooks/use_pagination.ts b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_pagination.ts similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_pagination.ts rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_pagination.ts diff --git a/packages/response-ops/alerts_table/hooks/use_sorting.test.ts b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_sorting.test.ts similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_sorting.test.ts rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_sorting.test.ts diff --git a/packages/response-ops/alerts_table/hooks/use_sorting.ts b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_sorting.ts similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_sorting.ts rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_sorting.ts diff --git a/packages/response-ops/alerts_table/hooks/use_toolbar_visibility.tsx b/src/platform/packages/shared/response-ops/alerts-table/hooks/use_toolbar_visibility.tsx similarity index 100% rename from packages/response-ops/alerts_table/hooks/use_toolbar_visibility.tsx rename to src/platform/packages/shared/response-ops/alerts-table/hooks/use_toolbar_visibility.tsx diff --git a/packages/response-ops/alerts_table/index.ts b/src/platform/packages/shared/response-ops/alerts-table/index.ts similarity index 100% rename from packages/response-ops/alerts_table/index.ts rename to src/platform/packages/shared/response-ops/alerts-table/index.ts diff --git a/packages/response-ops/alerts_table/jest.config.js b/src/platform/packages/shared/response-ops/alerts-table/jest.config.js similarity index 69% rename from packages/response-ops/alerts_table/jest.config.js rename to src/platform/packages/shared/response-ops/alerts-table/jest.config.js index 5f08271830cec..d019e2c06116a 100644 --- a/packages/response-ops/alerts_table/jest.config.js +++ b/src/platform/packages/shared/response-ops/alerts-table/jest.config.js @@ -9,7 +9,9 @@ module.exports = { preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/response-ops/alerts_table'], - setupFilesAfterEnv: ['/packages/response-ops/alerts_table/setup_tests.ts'], + rootDir: '../../../../../..', + roots: ['/src/platform/packages/shared/response-ops/alerts-table'], + setupFilesAfterEnv: [ + '/src/platform/packages/shared/response-ops/alerts-table/setup_tests.ts', + ], }; diff --git a/packages/response-ops/alerts_table/kibana.jsonc b/src/platform/packages/shared/response-ops/alerts-table/kibana.jsonc similarity index 100% rename from packages/response-ops/alerts_table/kibana.jsonc rename to src/platform/packages/shared/response-ops/alerts-table/kibana.jsonc diff --git a/packages/response-ops/alerts_table/mocks/cases.mock.tsx b/src/platform/packages/shared/response-ops/alerts-table/mocks/cases.mock.tsx similarity index 100% rename from packages/response-ops/alerts_table/mocks/cases.mock.tsx rename to src/platform/packages/shared/response-ops/alerts-table/mocks/cases.mock.tsx diff --git a/packages/response-ops/alerts_table/mocks/context.mock.tsx b/src/platform/packages/shared/response-ops/alerts-table/mocks/context.mock.tsx similarity index 100% rename from packages/response-ops/alerts_table/mocks/context.mock.tsx rename to src/platform/packages/shared/response-ops/alerts-table/mocks/context.mock.tsx diff --git a/packages/response-ops/alerts_table/mocks/maintenance_windows.mock.ts b/src/platform/packages/shared/response-ops/alerts-table/mocks/maintenance_windows.mock.ts similarity index 100% rename from packages/response-ops/alerts_table/mocks/maintenance_windows.mock.ts rename to src/platform/packages/shared/response-ops/alerts-table/mocks/maintenance_windows.mock.ts diff --git a/packages/response-ops/alerts_table/package.json b/src/platform/packages/shared/response-ops/alerts-table/package.json similarity index 100% rename from packages/response-ops/alerts_table/package.json rename to src/platform/packages/shared/response-ops/alerts-table/package.json diff --git a/packages/response-ops/alerts_table/query_client.ts b/src/platform/packages/shared/response-ops/alerts-table/query_client.ts similarity index 100% rename from packages/response-ops/alerts_table/query_client.ts rename to src/platform/packages/shared/response-ops/alerts-table/query_client.ts diff --git a/packages/response-ops/alerts_table/reducers/bulk_actions_reducer.test.tsx b/src/platform/packages/shared/response-ops/alerts-table/reducers/bulk_actions_reducer.test.tsx similarity index 100% rename from packages/response-ops/alerts_table/reducers/bulk_actions_reducer.test.tsx rename to src/platform/packages/shared/response-ops/alerts-table/reducers/bulk_actions_reducer.test.tsx diff --git a/packages/response-ops/alerts_table/reducers/bulk_actions_reducer.ts b/src/platform/packages/shared/response-ops/alerts-table/reducers/bulk_actions_reducer.ts similarity index 100% rename from packages/response-ops/alerts_table/reducers/bulk_actions_reducer.ts rename to src/platform/packages/shared/response-ops/alerts-table/reducers/bulk_actions_reducer.ts diff --git a/packages/response-ops/alerts_table/setup_tests.ts b/src/platform/packages/shared/response-ops/alerts-table/setup_tests.ts similarity index 100% rename from packages/response-ops/alerts_table/setup_tests.ts rename to src/platform/packages/shared/response-ops/alerts-table/setup_tests.ts diff --git a/packages/response-ops/alerts_table/translations.ts b/src/platform/packages/shared/response-ops/alerts-table/translations.ts similarity index 100% rename from packages/response-ops/alerts_table/translations.ts rename to src/platform/packages/shared/response-ops/alerts-table/translations.ts diff --git a/packages/response-ops/alerts_table/tsconfig.json b/src/platform/packages/shared/response-ops/alerts-table/tsconfig.json similarity index 95% rename from packages/response-ops/alerts_table/tsconfig.json rename to src/platform/packages/shared/response-ops/alerts-table/tsconfig.json index 0d167685f0d04..77c3f4bb50423 100644 --- a/packages/response-ops/alerts_table/tsconfig.json +++ b/src/platform/packages/shared/response-ops/alerts-table/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../../tsconfig.base.json", + "extends": "../../../../../../tsconfig.base.json", "compilerOptions": { "outDir": "target/types", "types": [ diff --git a/packages/response-ops/alerts_table/types.ts b/src/platform/packages/shared/response-ops/alerts-table/types.ts similarity index 100% rename from packages/response-ops/alerts_table/types.ts rename to src/platform/packages/shared/response-ops/alerts-table/types.ts diff --git a/packages/response-ops/alerts_table/utils/react.ts b/src/platform/packages/shared/response-ops/alerts-table/utils/react.ts similarity index 100% rename from packages/response-ops/alerts_table/utils/react.ts rename to src/platform/packages/shared/response-ops/alerts-table/utils/react.ts diff --git a/packages/response-ops/alerts_table/utils/storage.test.ts b/src/platform/packages/shared/response-ops/alerts-table/utils/storage.test.ts similarity index 100% rename from packages/response-ops/alerts_table/utils/storage.test.ts rename to src/platform/packages/shared/response-ops/alerts-table/utils/storage.test.ts diff --git a/packages/response-ops/alerts_table/utils/storage.ts b/src/platform/packages/shared/response-ops/alerts-table/utils/storage.ts similarity index 100% rename from packages/response-ops/alerts_table/utils/storage.ts rename to src/platform/packages/shared/response-ops/alerts-table/utils/storage.ts diff --git a/packages/response-ops/alerts_table/utils/test.ts b/src/platform/packages/shared/response-ops/alerts-table/utils/test.ts similarity index 100% rename from packages/response-ops/alerts_table/utils/test.ts rename to src/platform/packages/shared/response-ops/alerts-table/utils/test.ts diff --git a/tsconfig.base.json b/tsconfig.base.json index d9353c3a2d082..e70ed8130396e 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1504,12 +1504,12 @@ "@kbn/resizable-layout-examples-plugin/*": ["examples/resizable_layout_examples/*"], "@kbn/resolver-test-plugin": ["x-pack/test/plugin_functional/plugins/resolver_test"], "@kbn/resolver-test-plugin/*": ["x-pack/test/plugin_functional/plugins/resolver_test/*"], - "@kbn/response-ops-alerts-apis": ["packages/response-ops/alerts_apis"], - "@kbn/response-ops-alerts-apis/*": ["packages/response-ops/alerts_apis/*"], - "@kbn/response-ops-alerts-fields-browser": ["packages/response-ops/alerts_fields_browser"], - "@kbn/response-ops-alerts-fields-browser/*": ["packages/response-ops/alerts_fields_browser/*"], - "@kbn/response-ops-alerts-table": ["packages/response-ops/alerts_table"], - "@kbn/response-ops-alerts-table/*": ["packages/response-ops/alerts_table/*"], + "@kbn/response-ops-alerts-apis": ["src/platform/packages/shared/response-ops/alerts-apis"], + "@kbn/response-ops-alerts-apis/*": ["src/platform/packages/shared/response-ops/alerts-apis/*"], + "@kbn/response-ops-alerts-fields-browser": ["src/platform/packages/shared/response-ops/alerts-fields-browser"], + "@kbn/response-ops-alerts-fields-browser/*": ["src/platform/packages/shared/response-ops/alerts-fields-browser/*"], + "@kbn/response-ops-alerts-table": ["src/platform/packages/shared/response-ops/alerts-table"], + "@kbn/response-ops-alerts-table/*": ["src/platform/packages/shared/response-ops/alerts-table/*"], "@kbn/response-ops-rule-form": ["src/platform/packages/shared/response-ops/rule_form"], "@kbn/response-ops-rule-form/*": ["src/platform/packages/shared/response-ops/rule_form/*"], "@kbn/response-ops-rule-params": ["src/platform/packages/shared/response-ops/rule_params"], diff --git a/yarn.lock b/yarn.lock index 090c3d7025ca2..c26130007f476 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6877,15 +6877,15 @@ version "0.0.0" uid "" -"@kbn/response-ops-alerts-apis@link:packages/response-ops/alerts_apis": +"@kbn/response-ops-alerts-apis@link:src/platform/packages/shared/response-ops/alerts-apis": version "0.0.0" uid "" -"@kbn/response-ops-alerts-fields-browser@link:packages/response-ops/alerts_fields_browser": +"@kbn/response-ops-alerts-fields-browser@link:src/platform/packages/shared/response-ops/alerts-fields-browser": version "0.0.0" uid "" -"@kbn/response-ops-alerts-table@link:packages/response-ops/alerts_table": +"@kbn/response-ops-alerts-table@link:src/platform/packages/shared/response-ops/alerts-table": version "0.0.0" uid "" From 5fbbcf97a1f912bf1e5ff51fe835420c51b8f20e Mon Sep 17 00:00:00 2001 From: Abhishek Bhatia <117628830+abhishekbhatia1710@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:31:27 +0530 Subject: [PATCH 15/78] [Entity Analytics] [Asset Criticality] Add "unassigned" as an asset criticality level for bulk_upload (#208884) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This pull request introduces the new `unassigned` criticality level for the asset criticality's `bulk_upload` . ### Key Changes: #### Schema and Configuration Updates: * Added `unassigned` to the list of criticality levels in multiple schema files (`kibana.serverless.yaml`, `kibana.yaml`, `common.schema.yaml`, `ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml`, `serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml`). #### TypeScript and Constants: * Updated `AssetCriticalityLevel` enum in `common.gen.ts` to include `unassigned`. * Added `UNASSIGNED` to `CriticalityLevels` enum and `CriticalityModifiers` in `constants.ts`. #### Tests: * Updated test cases to include `unassigned` as a valid criticality level in `parse_asset_criticality_csv_row.test.ts`, `validations.test.ts`, `asset_criticality_data_client.test.ts`, and `asset_criticality_csv_upload.ts`. #### Backend Logic: * Modified `AssetCriticalityDataClient` to handle `unassigned` criticality level appropriately. Screenshot 2025-01-30 at 2 03 11 PM ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [x] This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The `release_note:breaking` label should be applied in these situations. - [x] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [x] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) ### Testing Steps The main idea for this change is that the `unassigned` criticality level is actually marked as `deleted` in the ES documents. ES index name for default space : `.asset-criticality.asset-criticality-default` #### API 1. `POST /api/asset_criticality/upload_csv` ``` curl --location 'http://localhost:5601/api/asset_criticality/upload_csv?output=stream' \ --header 'kbn-xsrf: hello' \ --header 'Accept: multipart/form-data' \ --header 'Authorization: *******' \ --form 'file=@"" ``` Error response : ``` {"errors":[{"message":"Invalid criticality level \"unassigned_impact\", expected one of extreme_impact, high_impact, medium_impact, low_impact, unassigned","index":4}],"stats":{"successful":3,"failed":1,"total":4}}% ``` Success response : ``` {"errors":[],"stats":{"successful":4,"failed":0,"total":4}}% ``` Query the ES using below query to see if the criticality level is `deleted` ``` GET .asset-criticality.asset-criticality-default/_search { "query": { "match": { "asset.criticality": "deleted" } } } ``` ### UI 1. Navigate to Entity Store page 2. Upload a csv file with incorrect asset criticality level ![image](https://github.com/user-attachments/assets/8e19573b-f9f1-40df-a8de-be3ffa6ade17) 3. Rectify and upload the same file with correct criticality levels. ![image](https://github.com/user-attachments/assets/9c1872c0-e1d5-4a58-8cd8-bde0e6b0b26b) 4. Navigate to EA Dashboard and scroll down to the Entities section. 5. Select an entity and open the flyout. 6. Try changing the asset criticality of the entity. No blank/empty value should be present or assigned to asset criticality. 7. Should be able to successfully modify the asset criticality for the entity. ![Screenshot 2025-02-10 at 12 58 21 PM](https://github.com/user-attachments/assets/29ca6ff2-de2b-46e8-bec0-842672323844) ![Screenshot 2025-02-10 at 12 58 11 PM](https://github.com/user-attachments/assets/1cdb5f77-01e8-49b4-8f8d-bfc42859dbae) Confirm this by querying the ES with the query : ``` GET .asset-criticality.asset-criticality-default/_search { "query": { "match": { "asset.criticality": "deleted" } } } ``` Ensure that the Elastic search document's `_source` contains three keys, with `deleted` present as the ` `criticality_level` for the below three keys. `criticality_level` `host.asset.criticality` `asset.criticality` Example : ![Screenshot 2025-02-10 at 1 08 29 PM](https://github.com/user-attachments/assets/053eddad-f9df-4c65-b687-226d9cfd5715) ### Bulk upload ``` curl --location 'http://localhost:5601/api/asset_criticality/bulk' \ --header 'kbn-xsrf: hello' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic ****' \ --data '{ "records": [ { "id_value": "host-1", "id_field": "host.name", "criticality_level": "low_impact" }, { "id_value": "host-2", "id_field": "host.name", "criticality_level": "medium_impact" }, { "id_value": "host-6", "id_field": "host.name", "criticality_level": "medium_impact" }, { "id_value": "host-3", "id_field": "host.name", "criticality_level": "high_impact" }, { "id_value": "host-4", "id_field": "host.name", "criticality_level": "high_impact" }, { "id_value": "host-bulkupload", "id_field": "host.name", "criticality_level": "unassigned" } ] } ``` ![image](https://github.com/user-attachments/assets/f692798b-2589-42a4-8ee5-696af0e39fdc) --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- oas_docs/output/kibana.serverless.yaml | 18 +++++++- oas_docs/output/kibana.yaml | 18 +++++++- .../bulk_upload_asset_criticality.gen.ts | 30 ++++++++++++- .../bulk_upload_asset_criticality.schema.yaml | 19 +++++++- .../asset_criticality/constants.ts | 12 +++++- .../parse_asset_criticality_csv_row.test.ts | 21 +++++++-- .../parse_asset_criticality_csv_row.ts | 4 +- .../asset_criticality/types.ts | 9 +++- ...alytics_api_2023_10_31.bundled.schema.yaml | 22 +++++++++- ...alytics_api_2023_10_31.bundled.schema.yaml | 22 +++++++++- .../validations.test.ts | 2 +- .../asset_criticality_data_client.test.ts | 21 +++++++++ .../asset_criticality_data_client.ts | 43 ++++++++++++------- .../asset_criticality/helpers.ts | 6 ++- .../transform_csv_to_upsert_records.ts | 4 +- .../asset_criticality_csv_upload.ts | 4 +- 16 files changed, 219 insertions(+), 36 deletions(-) diff --git a/oas_docs/output/kibana.serverless.yaml b/oas_docs/output/kibana.serverless.yaml index 250ff7d9f7586..0f95b399e2029 100644 --- a/oas_docs/output/kibana.serverless.yaml +++ b/oas_docs/output/kibana.serverless.yaml @@ -5054,7 +5054,14 @@ paths: properties: records: items: - $ref: '#/components/schemas/Security_Entity_Analytics_API_CreateAssetCriticalityRecord' + allOf: + - $ref: '#/components/schemas/Security_Entity_Analytics_API_AssetCriticalityRecordIdParts' + - type: object + properties: + criticality_level: + $ref: '#/components/schemas/Security_Entity_Analytics_API_AssetCriticalityLevelsForBulkUpload' + required: + - criticality_level maxItems: 1000 minItems: 1 type: array @@ -51915,6 +51922,15 @@ components: - high_impact - extreme_impact type: string + Security_Entity_Analytics_API_AssetCriticalityLevelsForBulkUpload: + description: The criticality level of the asset for bulk upload. The value `unassigned` is used to indicate that the criticality level is not assigned and is only used for bulk upload. + enum: + - low_impact + - medium_impact + - high_impact + - extreme_impact + - unassigned + type: string Security_Entity_Analytics_API_AssetCriticalityRecord: allOf: - $ref: '#/components/schemas/Security_Entity_Analytics_API_CreateAssetCriticalityRecord' diff --git a/oas_docs/output/kibana.yaml b/oas_docs/output/kibana.yaml index a5af662da9ed5..c93b9dfce09df 100644 --- a/oas_docs/output/kibana.yaml +++ b/oas_docs/output/kibana.yaml @@ -5379,7 +5379,14 @@ paths: properties: records: items: - $ref: '#/components/schemas/Security_Entity_Analytics_API_CreateAssetCriticalityRecord' + allOf: + - $ref: '#/components/schemas/Security_Entity_Analytics_API_AssetCriticalityRecordIdParts' + - type: object + properties: + criticality_level: + $ref: '#/components/schemas/Security_Entity_Analytics_API_AssetCriticalityLevelsForBulkUpload' + required: + - criticality_level maxItems: 1000 minItems: 1 type: array @@ -58682,6 +58689,15 @@ components: - high_impact - extreme_impact type: string + Security_Entity_Analytics_API_AssetCriticalityLevelsForBulkUpload: + description: The criticality level of the asset for bulk upload. The value `unassigned` is used to indicate that the criticality level is not assigned and is only used for bulk upload. + enum: + - low_impact + - medium_impact + - high_impact + - extreme_impact + - unassigned + type: string Security_Entity_Analytics_API_AssetCriticalityRecord: allOf: - $ref: '#/components/schemas/Security_Entity_Analytics_API_CreateAssetCriticalityRecord' diff --git a/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.gen.ts index 0b1bb3f4228ae..aae8e0112edff 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.gen.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.gen.ts @@ -16,7 +16,7 @@ import { z } from '@kbn/zod'; -import { CreateAssetCriticalityRecord } from './common.gen'; +import { AssetCriticalityRecordIdParts } from './common.gen'; export type AssetCriticalityBulkUploadErrorItem = z.infer< typeof AssetCriticalityBulkUploadErrorItem @@ -33,11 +33,37 @@ export const AssetCriticalityBulkUploadStats = z.object({ total: z.number().int(), }); +/** + * The criticality level of the asset for bulk upload. The value `unassigned` is used to indicate that the criticality level is not assigned and is only used for bulk upload. + */ +export type AssetCriticalityLevelsForBulkUpload = z.infer< + typeof AssetCriticalityLevelsForBulkUpload +>; +export const AssetCriticalityLevelsForBulkUpload = z.enum([ + 'low_impact', + 'medium_impact', + 'high_impact', + 'extreme_impact', + 'unassigned', +]); +export type AssetCriticalityLevelsForBulkUploadEnum = + typeof AssetCriticalityLevelsForBulkUpload.enum; +export const AssetCriticalityLevelsForBulkUploadEnum = AssetCriticalityLevelsForBulkUpload.enum; + export type BulkUpsertAssetCriticalityRecordsRequestBody = z.infer< typeof BulkUpsertAssetCriticalityRecordsRequestBody >; export const BulkUpsertAssetCriticalityRecordsRequestBody = z.object({ - records: z.array(CreateAssetCriticalityRecord).min(1).max(1000), + records: z + .array( + AssetCriticalityRecordIdParts.merge( + z.object({ + criticality_level: AssetCriticalityLevelsForBulkUpload, + }) + ) + ) + .min(1) + .max(1000), }); export type BulkUpsertAssetCriticalityRecordsRequestBodyInput = z.input< typeof BulkUpsertAssetCriticalityRecordsRequestBody diff --git a/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.schema.yaml index 1f372fb14adba..3c8f61631008f 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.schema.yaml +++ b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/bulk_upload_asset_criticality.schema.yaml @@ -33,7 +33,14 @@ paths: minItems: 1 maxItems: 1000 items: - $ref: './common.schema.yaml#/components/schemas/CreateAssetCriticalityRecord' + allOf: + - $ref: './common.schema.yaml#/components/schemas/AssetCriticalityRecordIdParts' + - type: object + properties: + criticality_level: + $ref: '#/components/schemas/AssetCriticalityLevelsForBulkUpload' + required: + - criticality_level required: - records responses: @@ -90,3 +97,13 @@ components: - successful - failed - total + + AssetCriticalityLevelsForBulkUpload: + type: string + description: The criticality level of the asset for bulk upload. The value `unassigned` is used to indicate that the criticality level is not assigned and is only used for bulk upload. + enum: + - low_impact + - medium_impact + - high_impact + - extreme_impact + - unassigned diff --git a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/constants.ts index d089a52f4cc30..83e585ef5b4e6 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/constants.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/constants.ts @@ -34,8 +34,18 @@ export enum CriticalityLevels { MEDIUM_IMPACT = 'medium_impact', LOW_IMPACT = 'low_impact', } +export enum CriticalityLevelsForBulkUpload { + EXTREME_IMPACT = 'extreme_impact', + HIGH_IMPACT = 'high_impact', + MEDIUM_IMPACT = 'medium_impact', + LOW_IMPACT = 'low_impact', + UNASSIGNED = 'unassigned', +} -export const ValidCriticalityLevels = Object.values(CriticalityLevels); +export const ValidCriticalityLevels = [ + ...Object.values(CriticalityLevels), + CriticalityLevelsForBulkUpload.UNASSIGNED, +]; /** * CriticalityModifiers are used to adjust the risk score based on the criticality of the asset. diff --git a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/parse_asset_criticality_csv_row.test.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/parse_asset_criticality_csv_row.test.ts index 2e818cd62dc02..5adc849b08da9 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/parse_asset_criticality_csv_row.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/parse_asset_criticality_csv_row.test.ts @@ -89,12 +89,15 @@ describe('parseAssetCriticalityCsvRow', () => { }); it('should return valid false if the criticality level is invalid', () => { - const result = parseAssetCriticalityCsvRow(['host', 'host-1', 'invalid'], experimentalFeatures); + const result = parseAssetCriticalityCsvRow( + ['host', 'host-1', 'unassigned_impact'], + experimentalFeatures + ); expect(result.valid).toBe(false); // @ts-ignore result can now only be InvalidRecord expect(result.error).toMatchInlineSnapshot( - `"Invalid criticality level \\"invalid\\", expected one of extreme_impact, high_impact, medium_impact, low_impact"` + `"Invalid criticality level \\"unassigned_impact\\", expected one of extreme_impact, high_impact, medium_impact, low_impact, unassigned"` ); }); @@ -108,7 +111,7 @@ describe('parseAssetCriticalityCsvRow', () => { // @ts-ignore result can now only be InvalidRecord expect(result.error).toMatchInlineSnapshot( - `"Invalid criticality level \\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...\\", expected one of extreme_impact, high_impact, medium_impact, low_impact"` + `"Invalid criticality level \\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...\\", expected one of extreme_impact, high_impact, medium_impact, low_impact, unassigned"` ); }); @@ -151,4 +154,16 @@ describe('parseAssetCriticalityCsvRow', () => { }, }); }); + it('should return the parsed row if criticality level is UNASSIGNED', () => { + expect( + parseAssetCriticalityCsvRow(['host', 'host-1', 'UNASSIGNED'], experimentalFeatures) + ).toEqual({ + valid: true, + record: { + idField: 'host.name', + idValue: 'host-1', + criticalityLevel: 'unassigned', + }, + }); + }); }); diff --git a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/parse_asset_criticality_csv_row.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/parse_asset_criticality_csv_row.ts index 3e9b61568ad6c..fcba9dd91e2c6 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/parse_asset_criticality_csv_row.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/parse_asset_criticality_csv_row.ts @@ -7,7 +7,7 @@ import { i18n } from '@kbn/i18n'; import type { CriticalityLevels } from './constants'; import { ValidCriticalityLevels } from './constants'; -import { type AssetCriticalityUpsert, type CriticalityLevel } from './types'; +import { type AssetCriticalityUpsertForBulkUpload, type CriticalityLevel } from './types'; import { EntityTypeToIdentifierField, type EntityType } from '../types'; import { getAssetCriticalityEntityTypes } from './utils'; import type { ExperimentalFeatures } from '../../experimental_features'; @@ -16,7 +16,7 @@ const MAX_COLUMN_CHARS = 1000; interface ValidRecord { valid: true; - record: AssetCriticalityUpsert; + record: AssetCriticalityUpsertForBulkUpload; } interface InvalidRecord { valid: false; diff --git a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/types.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/types.ts index 3483864983240..13d9d6e51a002 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/types.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/types.ts @@ -11,10 +11,17 @@ export type CriticalityLevel = AssetCriticalityRecord['criticality_level']; export type CriticalityLevelWithUnassigned = CriticalityLevel | 'unassigned'; -export interface AssetCriticalityUpsert { +interface BaseAssetCriticalityUpsert { idField: AssetCriticalityRecord['id_field']; idValue: AssetCriticalityRecord['id_value']; +} + +export interface AssetCriticalityUpsert extends BaseAssetCriticalityUpsert { criticalityLevel: AssetCriticalityRecord['criticality_level']; } +export interface AssetCriticalityUpsertForBulkUpload extends BaseAssetCriticalityUpsert { + criticalityLevel: AssetCriticalityRecord['criticality_level'] | 'unassigned'; +} + export * from '../../api/entity_analytics/asset_criticality'; diff --git a/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml b/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml index eef0bb58a723a..28d3927a98c12 100644 --- a/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml +++ b/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml @@ -161,7 +161,15 @@ paths: properties: records: items: - $ref: '#/components/schemas/CreateAssetCriticalityRecord' + allOf: + - $ref: '#/components/schemas/AssetCriticalityRecordIdParts' + - type: object + properties: + criticality_level: + $ref: >- + #/components/schemas/AssetCriticalityLevelsForBulkUpload + required: + - criticality_level maxItems: 1000 minItems: 1 type: array @@ -860,6 +868,18 @@ components: - high_impact - extreme_impact type: string + AssetCriticalityLevelsForBulkUpload: + description: >- + The criticality level of the asset for bulk upload. The value + `unassigned` is used to indicate that the criticality level is not + assigned and is only used for bulk upload. + enum: + - low_impact + - medium_impact + - high_impact + - extreme_impact + - unassigned + type: string AssetCriticalityRecord: allOf: - $ref: '#/components/schemas/CreateAssetCriticalityRecord' diff --git a/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml b/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml index 4a923d1771e61..960e47a3e5f36 100644 --- a/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml +++ b/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml @@ -161,7 +161,15 @@ paths: properties: records: items: - $ref: '#/components/schemas/CreateAssetCriticalityRecord' + allOf: + - $ref: '#/components/schemas/AssetCriticalityRecordIdParts' + - type: object + properties: + criticality_level: + $ref: >- + #/components/schemas/AssetCriticalityLevelsForBulkUpload + required: + - criticality_level maxItems: 1000 minItems: 1 type: array @@ -860,6 +868,18 @@ components: - high_impact - extreme_impact type: string + AssetCriticalityLevelsForBulkUpload: + description: >- + The criticality level of the asset for bulk upload. The value + `unassigned` is used to indicate that the criticality level is not + assigned and is only used for bulk upload. + enum: + - low_impact + - medium_impact + - high_impact + - extreme_impact + - unassigned + type: string AssetCriticalityRecord: allOf: - $ref: '#/components/schemas/CreateAssetCriticalityRecord' diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/validations.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/validations.test.ts index c58ee23229cd6..ea6d70bc22952 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/validations.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/validations.test.ts @@ -38,7 +38,7 @@ describe('validateParsedContent', () => { errors: [ { message: - 'Invalid criticality level "invalid_criticality", expected one of extreme_impact, high_impact, medium_impact, low_impact', + 'Invalid criticality level "invalid_criticality", expected one of extreme_impact, high_impact, medium_impact, low_impact, unassigned', index: 1, }, { diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.test.ts index ca54ce647940a..446d4858d4467 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.test.ts @@ -360,6 +360,27 @@ describe('AssetCriticalityDataClient', () => { }, }); }); + + it('returns valid stats for unassigned', async () => { + const recordsStream = [ + { idField: 'host.name', idValue: 'host1', criticalityLevel: 'unassigned' }, + ]; + + const result = await subject.bulkUpsertFromStream({ + recordsStream: Readable.from(recordsStream), + retries: 3, + flushBytes: 1_000, + }); + + expect(result).toEqual({ + errors: [], + stats: { + failed: 0, + successful: 1, + total: 1, + }, + }); + }); }); }); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.ts index 0cc028fc32ec2..6871a3aedea41 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/asset_criticality_data_client.ts @@ -13,6 +13,7 @@ import { fromKueryExpression, toElasticsearchQuery } from '@kbn/es-query'; import type { BulkUpsertAssetCriticalityRecordsResponse, AssetCriticalityUpsert, + AssetCriticalityUpsertForBulkUpload, } from '../../../../common/entity_analytics/asset_criticality/types'; import type { AssetCriticalityRecord } from '../../../../common/api/entity_analytics'; import { createOrUpdateIndex } from '../utils/create_or_update_index'; @@ -286,7 +287,9 @@ export class AssetCriticalityDataClient { const processedEntities = new Set(); for await (const untypedRecord of recordsStream) { - const record = untypedRecord as unknown as AssetCriticalityUpsert | Error; + const record = untypedRecord as unknown as AssetCriticalityUpsert as + | AssetCriticalityUpsertForBulkUpload + | Error; stats.total++; if (record instanceof Error) { @@ -321,22 +324,32 @@ export class AssetCriticalityDataClient { flushBytes, retries, refreshOnCompletion: this.getIndex(), - onDocument: ({ record }) => [ - { update: { _id: createId(record) } }, - { - doc: { - id_field: record.idField, - id_value: record.idValue, - criticality_level: record.criticalityLevel, - asset: { - criticality: record.criticalityLevel, + onDocument: ({ record }) => { + const criticalityLevel = + record.criticalityLevel === 'unassigned' + ? CRITICALITY_VALUES.DELETED + : record.criticalityLevel; + + return [ + { update: { _id: createId(record) } }, + { + doc: { + id_field: record.idField, + id_value: record.idValue, + criticality_level: criticalityLevel, + asset: { + criticality: criticalityLevel, + }, + ...getImplicitEntityFields({ + ...record, + criticalityLevel, + }), + '@timestamp': new Date().toISOString(), }, - ...getImplicitEntityFields(record), - '@timestamp': new Date().toISOString(), + doc_as_upsert: true, }, - doc_as_upsert: true, - }, - ], + ]; + }, onDrop: ({ document, error }) => { errors.push({ message: error?.reason || 'Unknown error', diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.ts index f3aa9fa5b0d09..caff482f139c9 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.ts @@ -13,7 +13,7 @@ import type { CriticalityLevel, } from '../../../../common/entity_analytics/asset_criticality/types'; import { RISK_SCORING_NORMALIZATION_MAX } from '../risk_score/constants'; -import type { CriticalityValues } from './constants'; +import { type CriticalityValues } from './constants'; /** * Retrieves the criticality modifier for a given criticality level. @@ -89,7 +89,9 @@ export const getImplicitEntityFields = (record: AssetCriticalityUpsertWithDelete const entityType = entityTypeByIdField[record.idField]; return { [entityType]: { - asset: { criticality: record.criticalityLevel }, + asset: { + criticality: record.criticalityLevel, + }, name: record.idValue, }, }; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/transform_csv_to_upsert_records.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/transform_csv_to_upsert_records.ts index 27621aa6eb364..82a13a2295fdb 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/transform_csv_to_upsert_records.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/transform_csv_to_upsert_records.ts @@ -6,7 +6,7 @@ */ import { Transform } from 'stream'; import type { ExperimentalFeatures } from '../../../../common'; -import type { AssetCriticalityUpsert } from '../../../../common/entity_analytics/asset_criticality/types'; +import type { AssetCriticalityUpsertForBulkUpload } from '../../../../common/entity_analytics/asset_criticality/types'; import { parseAssetCriticalityCsvRow, isErrorResult, @@ -25,7 +25,7 @@ class TransformCSVToUpsertRecords extends Transform { public _transform( chunk: string[], encoding: string, - callback: (error: Error | null, data?: AssetCriticalityUpsert | Error) => void + callback: (error: Error | null, data?: AssetCriticalityUpsertForBulkUpload | Error) => void ) { try { const parseResult = parseAssetCriticalityCsvRow(chunk, this.experimentalFeatures); diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/asset_criticality_csv_upload.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/asset_criticality_csv_upload.ts index 7bcdadd2e2bf9..fd224a21975b1 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/asset_criticality_csv_upload.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/asset_criticality_csv_upload.ts @@ -104,7 +104,7 @@ export default ({ getService }: FtrProviderContext) => { { index: 1, message: - 'Invalid criticality level "invalid_criticality", expected one of extreme_impact, high_impact, medium_impact, low_impact', + 'Invalid criticality level "invalid_criticality", expected one of extreme_impact, high_impact, medium_impact, low_impact, unassigned', }, { index: 2, @@ -157,7 +157,7 @@ export default ({ getService }: FtrProviderContext) => { { index: 2, message: - 'Invalid criticality level "invalid_criticality", expected one of extreme_impact, high_impact, medium_impact, low_impact', + 'Invalid criticality level "invalid_criticality", expected one of extreme_impact, high_impact, medium_impact, low_impact, unassigned', }, ]); From 24b75740fd08f0a3c3ba36f3fa67782e1c2b7c1a Mon Sep 17 00:00:00 2001 From: Abhishek Bhatia <117628830+abhishekbhatia1710@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:31:39 +0530 Subject: [PATCH 16/78] [Security Solution][Entity Analytics][Risk Score]Changes for the confirmation message after RiskScore SO is updated (#211372) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary ### **What has changed?** This PR updates the text in the `toast` message when the Risk Score Saved Object configuration is modified by the user. ### **Reason for the change:** The update ensures compliance with the toast message guidelines: [EUI Toast Guidelines](https://eui.elastic.co/#/display/toast/guidelines). ### **Screenshots:** **Before:** ![image](https://github.com/user-attachments/assets/c7259b86-cd0f-44c7-a952-fa029baf11d1) **Now:** ![Screenshot 2025-02-17 at 12 02 55 PM](https://github.com/user-attachments/assets/c2421d1e-ad20-4d60-a861-68caf2b631a5) ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [x] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --- .../security_solution/public/entity_analytics/translations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/translations.ts index a11ba6f8c5d8c..c36179a44a8b3 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/translations.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/translations.ts @@ -176,7 +176,7 @@ export const RISK_SCORE_ENGINE_RUN_SUCCESS = i18n.translate( export const RISK_ENGINE_SAVED_OBJECT_CONFIGURATION_SUCCESS = i18n.translate( 'xpack.securitySolution.riskScore.savedObject.configurationSuccess', { - defaultMessage: 'Risk engine Saved Object configuration updated successfully', + defaultMessage: 'Your configuration was updated.', } ); From 579388d03e2ba10c0c72b642333aef1ca214ba38 Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Mon, 17 Feb 2025 21:04:13 +1100 Subject: [PATCH 17/78] [ES|QL] Update grammars (#211369) This PR updates the ES|QL grammars (lexer and parser) to match the latest version in Elasticsearch. --------- Co-authored-by: Stratoula Kalafateli --- .../kbn-esql-ast/src/antlr/esql_lexer.g4 | 46 +- .../kbn-esql-ast/src/antlr/esql_lexer.interp | 37 +- .../kbn-esql-ast/src/antlr/esql_lexer.tokens | 328 ++-- .../kbn-esql-ast/src/antlr/esql_lexer.ts | 1458 ++++++++------- .../kbn-esql-ast/src/antlr/esql_parser.g4 | 10 + .../kbn-esql-ast/src/antlr/esql_parser.interp | 20 +- .../kbn-esql-ast/src/antlr/esql_parser.tokens | 328 ++-- .../kbn-esql-ast/src/antlr/esql_parser.ts | 1658 ++++++++++------- .../src/antlr/esql_parser_listener.ts | 22 + .../src/esql/lib/esql_theme.test.ts | 2 + .../kbn-monaco/src/esql/lib/esql_theme.ts | 6 + 11 files changed, 2177 insertions(+), 1738 deletions(-) diff --git a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_lexer.g4 b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_lexer.g4 index 2eb9203dd5ed1..c0d4a5e4dc27d 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_lexer.g4 +++ b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_lexer.g4 @@ -87,13 +87,15 @@ JOIN_LOOKUP : 'lookup' -> pushMode(JOIN_MODE); // Once the command has been stabilized, remove the DEV_ prefix and the {}? conditional and move the command to the // main section while preserving alphabetical order: // MYCOMMAND : 'mycommand' -> ... -DEV_INLINESTATS : {this.isDevVersion()}? 'inlinestats' -> pushMode(EXPRESSION_MODE); -DEV_LOOKUP : {this.isDevVersion()}? 'lookup_🐔' -> pushMode(LOOKUP_MODE); -DEV_METRICS : {this.isDevVersion()}? 'metrics' -> pushMode(METRICS_MODE); +DEV_CHANGE_POINT : {this.isDevVersion()}? 'change_point' -> pushMode(CHANGE_POINT_MODE); +DEV_INLINESTATS : {this.isDevVersion()}? 'inlinestats' -> pushMode(EXPRESSION_MODE); +DEV_INSIST : {this.isDevVersion()}? 'insist_🐔' -> pushMode(PROJECT_MODE); +DEV_LOOKUP : {this.isDevVersion()}? 'lookup_🐔' -> pushMode(LOOKUP_MODE); +DEV_METRICS : {this.isDevVersion()}? 'metrics' -> pushMode(METRICS_MODE); // list of all JOIN commands -DEV_JOIN_FULL : {this.isDevVersion()}? 'full' -> pushMode(JOIN_MODE); -DEV_JOIN_LEFT : {this.isDevVersion()}? 'left' -> pushMode(JOIN_MODE); -DEV_JOIN_RIGHT : {this.isDevVersion()}? 'right' -> pushMode(JOIN_MODE); +DEV_JOIN_FULL : {this.isDevVersion()}? 'full' -> pushMode(JOIN_MODE); +DEV_JOIN_LEFT : {this.isDevVersion()}? 'left' -> pushMode(JOIN_MODE); +DEV_JOIN_RIGHT : {this.isDevVersion()}? 'right' -> pushMode(JOIN_MODE); // @@ -309,8 +311,9 @@ FROM_MULTILINE_COMMENT FROM_WS : WS -> channel(HIDDEN) ; + // -// DROP, KEEP +// DROP, KEEP, INSIST // mode PROJECT_MODE; PROJECT_PIPE : PIPE -> type(PIPE), popMode; @@ -639,4 +642,31 @@ CLOSING_METRICS_BY CLOSING_METRICS_PIPE : PIPE -> type(PIPE), popMode - ; \ No newline at end of file + ; + +/// +/// CHANGE_POINT command +/// +mode CHANGE_POINT_MODE; + +CHANGE_POINT_PIPE : PIPE -> type(PIPE), popMode; +CHANGE_POINT_ON : ON -> type(ON); +CHANGE_POINT_AS : AS -> type(AS); +CHANGE_POINT_DOT: DOT -> type(DOT); +CHANGE_POINT_COMMA: COMMA -> type(COMMA); +CHANGE_POINT_QUOTED_IDENTIFIER: QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER); +CHANGE_POINT_UNQUOTED_IDENTIFIER: UNQUOTED_IDENTIFIER -> type(UNQUOTED_IDENTIFIER); +CHANGE_POINT_LINE_COMMENT: LINE_COMMENT -> channel(HIDDEN); +CHANGE_POINT_MULTILINE_COMMENT: MULTILINE_COMMENT -> channel(HIDDEN); +CHANGE_POINT_WS: WS -> channel(HIDDEN); + +// +// INSIST command +// +mode INSIST_MODE; +INSIST_PIPE : PIPE -> type(PIPE), popMode; +INSIST_IDENTIFIER: UNQUOTED_IDENTIFIER -> type(UNQUOTED_IDENTIFIER); + +INSIST_WS : WS -> channel(HIDDEN); +INSIST_LINE_COMMENT : LINE_COMMENT -> channel(HIDDEN); +INSIST_MULTILINE_COMMENT : MULTILINE_COMMENT -> channel(HIDDEN); \ No newline at end of file diff --git a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_lexer.interp b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_lexer.interp index b2a1cec46d67d..140054634ddbd 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_lexer.interp +++ b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_lexer.interp @@ -27,6 +27,8 @@ null null null null +null +null '|' null null @@ -130,6 +132,12 @@ null null null null +null +null +null +null +null +null token symbolic names: null @@ -150,7 +158,9 @@ SORT STATS WHERE JOIN_LOOKUP +DEV_CHANGE_POINT DEV_INLINESTATS +DEV_INSIST DEV_LOOKUP DEV_METRICS DEV_JOIN_FULL @@ -263,6 +273,12 @@ METRICS_WS CLOSING_METRICS_LINE_COMMENT CLOSING_METRICS_MULTILINE_COMMENT CLOSING_METRICS_WS +CHANGE_POINT_LINE_COMMENT +CHANGE_POINT_MULTILINE_COMMENT +CHANGE_POINT_WS +INSIST_WS +INSIST_LINE_COMMENT +INSIST_MULTILINE_COMMENT rule names: DISSECT @@ -282,7 +298,9 @@ SORT STATS WHERE JOIN_LOOKUP +DEV_CHANGE_POINT DEV_INLINESTATS +DEV_INSIST DEV_LOOKUP DEV_METRICS DEV_JOIN_FULL @@ -482,6 +500,21 @@ CLOSING_METRICS_QUOTED_IDENTIFIER CLOSING_METRICS_UNQUOTED_IDENTIFIER CLOSING_METRICS_BY CLOSING_METRICS_PIPE +CHANGE_POINT_PIPE +CHANGE_POINT_ON +CHANGE_POINT_AS +CHANGE_POINT_DOT +CHANGE_POINT_COMMA +CHANGE_POINT_QUOTED_IDENTIFIER +CHANGE_POINT_UNQUOTED_IDENTIFIER +CHANGE_POINT_LINE_COMMENT +CHANGE_POINT_MULTILINE_COMMENT +CHANGE_POINT_WS +INSIST_PIPE +INSIST_IDENTIFIER +INSIST_WS +INSIST_LINE_COMMENT +INSIST_MULTILINE_COMMENT channel names: DEFAULT_TOKEN_CHANNEL @@ -504,6 +537,8 @@ LOOKUP_FIELD_MODE JOIN_MODE METRICS_MODE CLOSING_METRICS_MODE +CHANGE_POINT_MODE +INSIST_MODE atn: -[4, 0, 130, 1609, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 4, 23, 653, 8, 23, 11, 23, 12, 23, 654, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 663, 8, 24, 10, 24, 12, 24, 666, 9, 24, 1, 24, 3, 24, 669, 8, 24, 1, 24, 3, 24, 672, 8, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 681, 8, 25, 10, 25, 12, 25, 684, 9, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 4, 26, 692, 8, 26, 11, 26, 12, 26, 693, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 713, 8, 32, 1, 32, 4, 32, 716, 8, 32, 11, 32, 12, 32, 717, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 3, 35, 727, 8, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 3, 37, 734, 8, 37, 1, 38, 1, 38, 1, 38, 5, 38, 739, 8, 38, 10, 38, 12, 38, 742, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 750, 8, 38, 10, 38, 12, 38, 753, 9, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 760, 8, 38, 1, 38, 3, 38, 763, 8, 38, 3, 38, 765, 8, 38, 1, 39, 4, 39, 768, 8, 39, 11, 39, 12, 39, 769, 1, 40, 4, 40, 773, 8, 40, 11, 40, 12, 40, 774, 1, 40, 1, 40, 5, 40, 779, 8, 40, 10, 40, 12, 40, 782, 9, 40, 1, 40, 1, 40, 4, 40, 786, 8, 40, 11, 40, 12, 40, 787, 1, 40, 4, 40, 791, 8, 40, 11, 40, 12, 40, 792, 1, 40, 1, 40, 5, 40, 797, 8, 40, 10, 40, 12, 40, 800, 9, 40, 3, 40, 802, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 4, 40, 808, 8, 40, 11, 40, 12, 40, 809, 1, 40, 1, 40, 3, 40, 814, 8, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 3, 80, 946, 8, 80, 1, 80, 5, 80, 949, 8, 80, 10, 80, 12, 80, 952, 9, 80, 1, 80, 1, 80, 4, 80, 956, 8, 80, 11, 80, 12, 80, 957, 3, 80, 960, 8, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 5, 83, 974, 8, 83, 10, 83, 12, 83, 977, 9, 83, 1, 83, 1, 83, 3, 83, 981, 8, 83, 1, 83, 4, 83, 984, 8, 83, 11, 83, 12, 83, 985, 3, 83, 988, 8, 83, 1, 84, 1, 84, 4, 84, 992, 8, 84, 11, 84, 12, 84, 993, 1, 84, 1, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 3, 101, 1071, 8, 101, 1, 102, 4, 102, 1074, 8, 102, 11, 102, 12, 102, 1075, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 1123, 8, 113, 1, 114, 1, 114, 3, 114, 1127, 8, 114, 1, 114, 5, 114, 1130, 8, 114, 10, 114, 12, 114, 1133, 9, 114, 1, 114, 1, 114, 3, 114, 1137, 8, 114, 1, 114, 4, 114, 1140, 8, 114, 11, 114, 12, 114, 1141, 3, 114, 1144, 8, 114, 1, 115, 1, 115, 4, 115, 1148, 8, 115, 11, 115, 12, 115, 1149, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 135, 4, 135, 1233, 8, 135, 11, 135, 12, 135, 1234, 1, 135, 1, 135, 3, 135, 1239, 8, 135, 1, 135, 4, 135, 1242, 8, 135, 11, 135, 12, 135, 1243, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 4, 168, 1385, 8, 168, 11, 168, 12, 168, 1386, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 2, 682, 751, 0, 217, 16, 1, 18, 2, 20, 3, 22, 4, 24, 5, 26, 6, 28, 7, 30, 8, 32, 9, 34, 10, 36, 11, 38, 12, 40, 13, 42, 14, 44, 15, 46, 16, 48, 17, 50, 18, 52, 19, 54, 20, 56, 21, 58, 22, 60, 23, 62, 24, 64, 25, 66, 26, 68, 27, 70, 28, 72, 0, 74, 0, 76, 0, 78, 0, 80, 0, 82, 0, 84, 0, 86, 0, 88, 0, 90, 0, 92, 29, 94, 30, 96, 31, 98, 32, 100, 33, 102, 34, 104, 35, 106, 36, 108, 37, 110, 38, 112, 39, 114, 40, 116, 41, 118, 42, 120, 43, 122, 44, 124, 45, 126, 46, 128, 47, 130, 48, 132, 49, 134, 50, 136, 51, 138, 52, 140, 53, 142, 54, 144, 55, 146, 56, 148, 57, 150, 58, 152, 59, 154, 60, 156, 61, 158, 62, 160, 63, 162, 64, 164, 65, 166, 66, 168, 67, 170, 68, 172, 69, 174, 0, 176, 70, 178, 71, 180, 72, 182, 73, 184, 0, 186, 74, 188, 75, 190, 76, 192, 77, 194, 0, 196, 0, 198, 78, 200, 79, 202, 80, 204, 0, 206, 0, 208, 0, 210, 0, 212, 0, 214, 0, 216, 81, 218, 0, 220, 82, 222, 0, 224, 0, 226, 83, 228, 84, 230, 85, 232, 0, 234, 0, 236, 0, 238, 0, 240, 0, 242, 0, 244, 0, 246, 86, 248, 87, 250, 88, 252, 89, 254, 0, 256, 0, 258, 0, 260, 0, 262, 0, 264, 0, 266, 90, 268, 0, 270, 91, 272, 92, 274, 93, 276, 0, 278, 0, 280, 94, 282, 95, 284, 0, 286, 96, 288, 0, 290, 97, 292, 98, 294, 99, 296, 0, 298, 0, 300, 0, 302, 0, 304, 0, 306, 0, 308, 0, 310, 0, 312, 0, 314, 100, 316, 101, 318, 102, 320, 0, 322, 0, 324, 0, 326, 0, 328, 0, 330, 0, 332, 103, 334, 104, 336, 105, 338, 0, 340, 106, 342, 107, 344, 108, 346, 109, 348, 0, 350, 0, 352, 110, 354, 111, 356, 112, 358, 113, 360, 0, 362, 0, 364, 0, 366, 0, 368, 0, 370, 0, 372, 0, 374, 114, 376, 115, 378, 116, 380, 0, 382, 0, 384, 0, 386, 0, 388, 117, 390, 118, 392, 119, 394, 0, 396, 120, 398, 0, 400, 0, 402, 121, 404, 0, 406, 0, 408, 0, 410, 0, 412, 0, 414, 122, 416, 123, 418, 124, 420, 0, 422, 0, 424, 0, 426, 125, 428, 126, 430, 127, 432, 0, 434, 0, 436, 128, 438, 129, 440, 130, 442, 0, 444, 0, 446, 0, 448, 0, 16, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 36, 2, 0, 68, 68, 100, 100, 2, 0, 73, 73, 105, 105, 2, 0, 83, 83, 115, 115, 2, 0, 69, 69, 101, 101, 2, 0, 67, 67, 99, 99, 2, 0, 84, 84, 116, 116, 2, 0, 82, 82, 114, 114, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 78, 78, 110, 110, 2, 0, 72, 72, 104, 104, 2, 0, 86, 86, 118, 118, 2, 0, 65, 65, 97, 97, 2, 0, 76, 76, 108, 108, 2, 0, 88, 88, 120, 120, 2, 0, 70, 70, 102, 102, 2, 0, 77, 77, 109, 109, 2, 0, 71, 71, 103, 103, 2, 0, 75, 75, 107, 107, 2, 0, 87, 87, 119, 119, 2, 0, 85, 85, 117, 117, 6, 0, 9, 10, 13, 13, 32, 32, 47, 47, 91, 91, 93, 93, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 1, 0, 48, 57, 2, 0, 65, 90, 97, 122, 8, 0, 34, 34, 78, 78, 82, 82, 84, 84, 92, 92, 110, 110, 114, 114, 116, 116, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 2, 0, 43, 43, 45, 45, 1, 0, 96, 96, 2, 0, 66, 66, 98, 98, 2, 0, 89, 89, 121, 121, 11, 0, 9, 10, 13, 13, 32, 32, 34, 34, 44, 44, 47, 47, 58, 58, 61, 61, 91, 91, 93, 93, 124, 124, 2, 0, 42, 42, 47, 47, 11, 0, 9, 10, 13, 13, 32, 32, 34, 35, 44, 44, 47, 47, 58, 58, 60, 60, 62, 63, 92, 92, 124, 124, 2, 0, 74, 74, 106, 106, 1636, 0, 16, 1, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 30, 1, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 34, 1, 0, 0, 0, 0, 36, 1, 0, 0, 0, 0, 38, 1, 0, 0, 0, 0, 40, 1, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 46, 1, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 50, 1, 0, 0, 0, 0, 52, 1, 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 56, 1, 0, 0, 0, 0, 58, 1, 0, 0, 0, 0, 60, 1, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 66, 1, 0, 0, 0, 0, 68, 1, 0, 0, 0, 1, 70, 1, 0, 0, 0, 1, 92, 1, 0, 0, 0, 1, 94, 1, 0, 0, 0, 1, 96, 1, 0, 0, 0, 1, 98, 1, 0, 0, 0, 1, 100, 1, 0, 0, 0, 1, 102, 1, 0, 0, 0, 1, 104, 1, 0, 0, 0, 1, 106, 1, 0, 0, 0, 1, 108, 1, 0, 0, 0, 1, 110, 1, 0, 0, 0, 1, 112, 1, 0, 0, 0, 1, 114, 1, 0, 0, 0, 1, 116, 1, 0, 0, 0, 1, 118, 1, 0, 0, 0, 1, 120, 1, 0, 0, 0, 1, 122, 1, 0, 0, 0, 1, 124, 1, 0, 0, 0, 1, 126, 1, 0, 0, 0, 1, 128, 1, 0, 0, 0, 1, 130, 1, 0, 0, 0, 1, 132, 1, 0, 0, 0, 1, 134, 1, 0, 0, 0, 1, 136, 1, 0, 0, 0, 1, 138, 1, 0, 0, 0, 1, 140, 1, 0, 0, 0, 1, 142, 1, 0, 0, 0, 1, 144, 1, 0, 0, 0, 1, 146, 1, 0, 0, 0, 1, 148, 1, 0, 0, 0, 1, 150, 1, 0, 0, 0, 1, 152, 1, 0, 0, 0, 1, 154, 1, 0, 0, 0, 1, 156, 1, 0, 0, 0, 1, 158, 1, 0, 0, 0, 1, 160, 1, 0, 0, 0, 1, 162, 1, 0, 0, 0, 1, 164, 1, 0, 0, 0, 1, 166, 1, 0, 0, 0, 1, 168, 1, 0, 0, 0, 1, 170, 1, 0, 0, 0, 1, 172, 1, 0, 0, 0, 1, 174, 1, 0, 0, 0, 1, 176, 1, 0, 0, 0, 1, 178, 1, 0, 0, 0, 1, 180, 1, 0, 0, 0, 1, 182, 1, 0, 0, 0, 1, 186, 1, 0, 0, 0, 1, 188, 1, 0, 0, 0, 1, 190, 1, 0, 0, 0, 1, 192, 1, 0, 0, 0, 2, 194, 1, 0, 0, 0, 2, 196, 1, 0, 0, 0, 2, 198, 1, 0, 0, 0, 2, 200, 1, 0, 0, 0, 2, 202, 1, 0, 0, 0, 3, 204, 1, 0, 0, 0, 3, 206, 1, 0, 0, 0, 3, 208, 1, 0, 0, 0, 3, 210, 1, 0, 0, 0, 3, 212, 1, 0, 0, 0, 3, 214, 1, 0, 0, 0, 3, 216, 1, 0, 0, 0, 3, 220, 1, 0, 0, 0, 3, 222, 1, 0, 0, 0, 3, 224, 1, 0, 0, 0, 3, 226, 1, 0, 0, 0, 3, 228, 1, 0, 0, 0, 3, 230, 1, 0, 0, 0, 4, 232, 1, 0, 0, 0, 4, 234, 1, 0, 0, 0, 4, 236, 1, 0, 0, 0, 4, 238, 1, 0, 0, 0, 4, 240, 1, 0, 0, 0, 4, 246, 1, 0, 0, 0, 4, 248, 1, 0, 0, 0, 4, 250, 1, 0, 0, 0, 4, 252, 1, 0, 0, 0, 5, 254, 1, 0, 0, 0, 5, 256, 1, 0, 0, 0, 5, 258, 1, 0, 0, 0, 5, 260, 1, 0, 0, 0, 5, 262, 1, 0, 0, 0, 5, 264, 1, 0, 0, 0, 5, 266, 1, 0, 0, 0, 5, 268, 1, 0, 0, 0, 5, 270, 1, 0, 0, 0, 5, 272, 1, 0, 0, 0, 5, 274, 1, 0, 0, 0, 6, 276, 1, 0, 0, 0, 6, 278, 1, 0, 0, 0, 6, 280, 1, 0, 0, 0, 6, 282, 1, 0, 0, 0, 6, 286, 1, 0, 0, 0, 6, 288, 1, 0, 0, 0, 6, 290, 1, 0, 0, 0, 6, 292, 1, 0, 0, 0, 6, 294, 1, 0, 0, 0, 7, 296, 1, 0, 0, 0, 7, 298, 1, 0, 0, 0, 7, 300, 1, 0, 0, 0, 7, 302, 1, 0, 0, 0, 7, 304, 1, 0, 0, 0, 7, 306, 1, 0, 0, 0, 7, 308, 1, 0, 0, 0, 7, 310, 1, 0, 0, 0, 7, 312, 1, 0, 0, 0, 7, 314, 1, 0, 0, 0, 7, 316, 1, 0, 0, 0, 7, 318, 1, 0, 0, 0, 8, 320, 1, 0, 0, 0, 8, 322, 1, 0, 0, 0, 8, 324, 1, 0, 0, 0, 8, 326, 1, 0, 0, 0, 8, 328, 1, 0, 0, 0, 8, 330, 1, 0, 0, 0, 8, 332, 1, 0, 0, 0, 8, 334, 1, 0, 0, 0, 8, 336, 1, 0, 0, 0, 9, 338, 1, 0, 0, 0, 9, 340, 1, 0, 0, 0, 9, 342, 1, 0, 0, 0, 9, 344, 1, 0, 0, 0, 9, 346, 1, 0, 0, 0, 10, 348, 1, 0, 0, 0, 10, 350, 1, 0, 0, 0, 10, 352, 1, 0, 0, 0, 10, 354, 1, 0, 0, 0, 10, 356, 1, 0, 0, 0, 10, 358, 1, 0, 0, 0, 11, 360, 1, 0, 0, 0, 11, 362, 1, 0, 0, 0, 11, 364, 1, 0, 0, 0, 11, 366, 1, 0, 0, 0, 11, 368, 1, 0, 0, 0, 11, 370, 1, 0, 0, 0, 11, 372, 1, 0, 0, 0, 11, 374, 1, 0, 0, 0, 11, 376, 1, 0, 0, 0, 11, 378, 1, 0, 0, 0, 12, 380, 1, 0, 0, 0, 12, 382, 1, 0, 0, 0, 12, 384, 1, 0, 0, 0, 12, 386, 1, 0, 0, 0, 12, 388, 1, 0, 0, 0, 12, 390, 1, 0, 0, 0, 12, 392, 1, 0, 0, 0, 13, 394, 1, 0, 0, 0, 13, 396, 1, 0, 0, 0, 13, 398, 1, 0, 0, 0, 13, 400, 1, 0, 0, 0, 13, 402, 1, 0, 0, 0, 13, 404, 1, 0, 0, 0, 13, 406, 1, 0, 0, 0, 13, 408, 1, 0, 0, 0, 13, 410, 1, 0, 0, 0, 13, 412, 1, 0, 0, 0, 13, 414, 1, 0, 0, 0, 13, 416, 1, 0, 0, 0, 13, 418, 1, 0, 0, 0, 14, 420, 1, 0, 0, 0, 14, 422, 1, 0, 0, 0, 14, 424, 1, 0, 0, 0, 14, 426, 1, 0, 0, 0, 14, 428, 1, 0, 0, 0, 14, 430, 1, 0, 0, 0, 15, 432, 1, 0, 0, 0, 15, 434, 1, 0, 0, 0, 15, 436, 1, 0, 0, 0, 15, 438, 1, 0, 0, 0, 15, 440, 1, 0, 0, 0, 15, 442, 1, 0, 0, 0, 15, 444, 1, 0, 0, 0, 15, 446, 1, 0, 0, 0, 15, 448, 1, 0, 0, 0, 16, 450, 1, 0, 0, 0, 18, 460, 1, 0, 0, 0, 20, 467, 1, 0, 0, 0, 22, 476, 1, 0, 0, 0, 24, 483, 1, 0, 0, 0, 26, 493, 1, 0, 0, 0, 28, 500, 1, 0, 0, 0, 30, 507, 1, 0, 0, 0, 32, 514, 1, 0, 0, 0, 34, 522, 1, 0, 0, 0, 36, 534, 1, 0, 0, 0, 38, 543, 1, 0, 0, 0, 40, 549, 1, 0, 0, 0, 42, 556, 1, 0, 0, 0, 44, 563, 1, 0, 0, 0, 46, 571, 1, 0, 0, 0, 48, 579, 1, 0, 0, 0, 50, 588, 1, 0, 0, 0, 52, 603, 1, 0, 0, 0, 54, 615, 1, 0, 0, 0, 56, 626, 1, 0, 0, 0, 58, 634, 1, 0, 0, 0, 60, 642, 1, 0, 0, 0, 62, 652, 1, 0, 0, 0, 64, 658, 1, 0, 0, 0, 66, 675, 1, 0, 0, 0, 68, 691, 1, 0, 0, 0, 70, 697, 1, 0, 0, 0, 72, 701, 1, 0, 0, 0, 74, 703, 1, 0, 0, 0, 76, 705, 1, 0, 0, 0, 78, 708, 1, 0, 0, 0, 80, 710, 1, 0, 0, 0, 82, 719, 1, 0, 0, 0, 84, 721, 1, 0, 0, 0, 86, 726, 1, 0, 0, 0, 88, 728, 1, 0, 0, 0, 90, 733, 1, 0, 0, 0, 92, 764, 1, 0, 0, 0, 94, 767, 1, 0, 0, 0, 96, 813, 1, 0, 0, 0, 98, 815, 1, 0, 0, 0, 100, 818, 1, 0, 0, 0, 102, 822, 1, 0, 0, 0, 104, 826, 1, 0, 0, 0, 106, 828, 1, 0, 0, 0, 108, 831, 1, 0, 0, 0, 110, 833, 1, 0, 0, 0, 112, 835, 1, 0, 0, 0, 114, 840, 1, 0, 0, 0, 116, 842, 1, 0, 0, 0, 118, 848, 1, 0, 0, 0, 120, 854, 1, 0, 0, 0, 122, 857, 1, 0, 0, 0, 124, 860, 1, 0, 0, 0, 126, 865, 1, 0, 0, 0, 128, 870, 1, 0, 0, 0, 130, 872, 1, 0, 0, 0, 132, 876, 1, 0, 0, 0, 134, 881, 1, 0, 0, 0, 136, 887, 1, 0, 0, 0, 138, 890, 1, 0, 0, 0, 140, 892, 1, 0, 0, 0, 142, 898, 1, 0, 0, 0, 144, 900, 1, 0, 0, 0, 146, 905, 1, 0, 0, 0, 148, 908, 1, 0, 0, 0, 150, 911, 1, 0, 0, 0, 152, 914, 1, 0, 0, 0, 154, 916, 1, 0, 0, 0, 156, 919, 1, 0, 0, 0, 158, 921, 1, 0, 0, 0, 160, 924, 1, 0, 0, 0, 162, 926, 1, 0, 0, 0, 164, 928, 1, 0, 0, 0, 166, 930, 1, 0, 0, 0, 168, 932, 1, 0, 0, 0, 170, 934, 1, 0, 0, 0, 172, 936, 1, 0, 0, 0, 174, 938, 1, 0, 0, 0, 176, 959, 1, 0, 0, 0, 178, 961, 1, 0, 0, 0, 180, 966, 1, 0, 0, 0, 182, 987, 1, 0, 0, 0, 184, 989, 1, 0, 0, 0, 186, 997, 1, 0, 0, 0, 188, 999, 1, 0, 0, 0, 190, 1003, 1, 0, 0, 0, 192, 1007, 1, 0, 0, 0, 194, 1011, 1, 0, 0, 0, 196, 1016, 1, 0, 0, 0, 198, 1021, 1, 0, 0, 0, 200, 1025, 1, 0, 0, 0, 202, 1029, 1, 0, 0, 0, 204, 1033, 1, 0, 0, 0, 206, 1038, 1, 0, 0, 0, 208, 1042, 1, 0, 0, 0, 210, 1046, 1, 0, 0, 0, 212, 1050, 1, 0, 0, 0, 214, 1054, 1, 0, 0, 0, 216, 1058, 1, 0, 0, 0, 218, 1070, 1, 0, 0, 0, 220, 1073, 1, 0, 0, 0, 222, 1077, 1, 0, 0, 0, 224, 1081, 1, 0, 0, 0, 226, 1085, 1, 0, 0, 0, 228, 1089, 1, 0, 0, 0, 230, 1093, 1, 0, 0, 0, 232, 1097, 1, 0, 0, 0, 234, 1102, 1, 0, 0, 0, 236, 1106, 1, 0, 0, 0, 238, 1110, 1, 0, 0, 0, 240, 1114, 1, 0, 0, 0, 242, 1122, 1, 0, 0, 0, 244, 1143, 1, 0, 0, 0, 246, 1147, 1, 0, 0, 0, 248, 1151, 1, 0, 0, 0, 250, 1155, 1, 0, 0, 0, 252, 1159, 1, 0, 0, 0, 254, 1163, 1, 0, 0, 0, 256, 1168, 1, 0, 0, 0, 258, 1172, 1, 0, 0, 0, 260, 1176, 1, 0, 0, 0, 262, 1180, 1, 0, 0, 0, 264, 1184, 1, 0, 0, 0, 266, 1188, 1, 0, 0, 0, 268, 1191, 1, 0, 0, 0, 270, 1195, 1, 0, 0, 0, 272, 1199, 1, 0, 0, 0, 274, 1203, 1, 0, 0, 0, 276, 1207, 1, 0, 0, 0, 278, 1212, 1, 0, 0, 0, 280, 1217, 1, 0, 0, 0, 282, 1222, 1, 0, 0, 0, 284, 1229, 1, 0, 0, 0, 286, 1238, 1, 0, 0, 0, 288, 1245, 1, 0, 0, 0, 290, 1249, 1, 0, 0, 0, 292, 1253, 1, 0, 0, 0, 294, 1257, 1, 0, 0, 0, 296, 1261, 1, 0, 0, 0, 298, 1267, 1, 0, 0, 0, 300, 1271, 1, 0, 0, 0, 302, 1275, 1, 0, 0, 0, 304, 1279, 1, 0, 0, 0, 306, 1283, 1, 0, 0, 0, 308, 1287, 1, 0, 0, 0, 310, 1291, 1, 0, 0, 0, 312, 1295, 1, 0, 0, 0, 314, 1299, 1, 0, 0, 0, 316, 1303, 1, 0, 0, 0, 318, 1307, 1, 0, 0, 0, 320, 1311, 1, 0, 0, 0, 322, 1316, 1, 0, 0, 0, 324, 1320, 1, 0, 0, 0, 326, 1324, 1, 0, 0, 0, 328, 1328, 1, 0, 0, 0, 330, 1332, 1, 0, 0, 0, 332, 1336, 1, 0, 0, 0, 334, 1340, 1, 0, 0, 0, 336, 1344, 1, 0, 0, 0, 338, 1348, 1, 0, 0, 0, 340, 1353, 1, 0, 0, 0, 342, 1358, 1, 0, 0, 0, 344, 1362, 1, 0, 0, 0, 346, 1366, 1, 0, 0, 0, 348, 1370, 1, 0, 0, 0, 350, 1375, 1, 0, 0, 0, 352, 1384, 1, 0, 0, 0, 354, 1388, 1, 0, 0, 0, 356, 1392, 1, 0, 0, 0, 358, 1396, 1, 0, 0, 0, 360, 1400, 1, 0, 0, 0, 362, 1405, 1, 0, 0, 0, 364, 1409, 1, 0, 0, 0, 366, 1413, 1, 0, 0, 0, 368, 1417, 1, 0, 0, 0, 370, 1422, 1, 0, 0, 0, 372, 1426, 1, 0, 0, 0, 374, 1430, 1, 0, 0, 0, 376, 1434, 1, 0, 0, 0, 378, 1438, 1, 0, 0, 0, 380, 1442, 1, 0, 0, 0, 382, 1448, 1, 0, 0, 0, 384, 1452, 1, 0, 0, 0, 386, 1456, 1, 0, 0, 0, 388, 1460, 1, 0, 0, 0, 390, 1464, 1, 0, 0, 0, 392, 1468, 1, 0, 0, 0, 394, 1472, 1, 0, 0, 0, 396, 1477, 1, 0, 0, 0, 398, 1482, 1, 0, 0, 0, 400, 1486, 1, 0, 0, 0, 402, 1492, 1, 0, 0, 0, 404, 1501, 1, 0, 0, 0, 406, 1505, 1, 0, 0, 0, 408, 1509, 1, 0, 0, 0, 410, 1513, 1, 0, 0, 0, 412, 1517, 1, 0, 0, 0, 414, 1521, 1, 0, 0, 0, 416, 1525, 1, 0, 0, 0, 418, 1529, 1, 0, 0, 0, 420, 1533, 1, 0, 0, 0, 422, 1538, 1, 0, 0, 0, 424, 1544, 1, 0, 0, 0, 426, 1550, 1, 0, 0, 0, 428, 1554, 1, 0, 0, 0, 430, 1558, 1, 0, 0, 0, 432, 1562, 1, 0, 0, 0, 434, 1568, 1, 0, 0, 0, 436, 1574, 1, 0, 0, 0, 438, 1578, 1, 0, 0, 0, 440, 1582, 1, 0, 0, 0, 442, 1586, 1, 0, 0, 0, 444, 1592, 1, 0, 0, 0, 446, 1598, 1, 0, 0, 0, 448, 1604, 1, 0, 0, 0, 450, 451, 7, 0, 0, 0, 451, 452, 7, 1, 0, 0, 452, 453, 7, 2, 0, 0, 453, 454, 7, 2, 0, 0, 454, 455, 7, 3, 0, 0, 455, 456, 7, 4, 0, 0, 456, 457, 7, 5, 0, 0, 457, 458, 1, 0, 0, 0, 458, 459, 6, 0, 0, 0, 459, 17, 1, 0, 0, 0, 460, 461, 7, 0, 0, 0, 461, 462, 7, 6, 0, 0, 462, 463, 7, 7, 0, 0, 463, 464, 7, 8, 0, 0, 464, 465, 1, 0, 0, 0, 465, 466, 6, 1, 1, 0, 466, 19, 1, 0, 0, 0, 467, 468, 7, 3, 0, 0, 468, 469, 7, 9, 0, 0, 469, 470, 7, 6, 0, 0, 470, 471, 7, 1, 0, 0, 471, 472, 7, 4, 0, 0, 472, 473, 7, 10, 0, 0, 473, 474, 1, 0, 0, 0, 474, 475, 6, 2, 2, 0, 475, 21, 1, 0, 0, 0, 476, 477, 7, 3, 0, 0, 477, 478, 7, 11, 0, 0, 478, 479, 7, 12, 0, 0, 479, 480, 7, 13, 0, 0, 480, 481, 1, 0, 0, 0, 481, 482, 6, 3, 0, 0, 482, 23, 1, 0, 0, 0, 483, 484, 7, 3, 0, 0, 484, 485, 7, 14, 0, 0, 485, 486, 7, 8, 0, 0, 486, 487, 7, 13, 0, 0, 487, 488, 7, 12, 0, 0, 488, 489, 7, 1, 0, 0, 489, 490, 7, 9, 0, 0, 490, 491, 1, 0, 0, 0, 491, 492, 6, 4, 3, 0, 492, 25, 1, 0, 0, 0, 493, 494, 7, 15, 0, 0, 494, 495, 7, 6, 0, 0, 495, 496, 7, 7, 0, 0, 496, 497, 7, 16, 0, 0, 497, 498, 1, 0, 0, 0, 498, 499, 6, 5, 4, 0, 499, 27, 1, 0, 0, 0, 500, 501, 7, 17, 0, 0, 501, 502, 7, 6, 0, 0, 502, 503, 7, 7, 0, 0, 503, 504, 7, 18, 0, 0, 504, 505, 1, 0, 0, 0, 505, 506, 6, 6, 0, 0, 506, 29, 1, 0, 0, 0, 507, 508, 7, 18, 0, 0, 508, 509, 7, 3, 0, 0, 509, 510, 7, 3, 0, 0, 510, 511, 7, 8, 0, 0, 511, 512, 1, 0, 0, 0, 512, 513, 6, 7, 1, 0, 513, 31, 1, 0, 0, 0, 514, 515, 7, 13, 0, 0, 515, 516, 7, 1, 0, 0, 516, 517, 7, 16, 0, 0, 517, 518, 7, 1, 0, 0, 518, 519, 7, 5, 0, 0, 519, 520, 1, 0, 0, 0, 520, 521, 6, 8, 0, 0, 521, 33, 1, 0, 0, 0, 522, 523, 7, 16, 0, 0, 523, 524, 7, 11, 0, 0, 524, 525, 5, 95, 0, 0, 525, 526, 7, 3, 0, 0, 526, 527, 7, 14, 0, 0, 527, 528, 7, 8, 0, 0, 528, 529, 7, 12, 0, 0, 529, 530, 7, 9, 0, 0, 530, 531, 7, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, 533, 6, 9, 5, 0, 533, 35, 1, 0, 0, 0, 534, 535, 7, 6, 0, 0, 535, 536, 7, 3, 0, 0, 536, 537, 7, 9, 0, 0, 537, 538, 7, 12, 0, 0, 538, 539, 7, 16, 0, 0, 539, 540, 7, 3, 0, 0, 540, 541, 1, 0, 0, 0, 541, 542, 6, 10, 6, 0, 542, 37, 1, 0, 0, 0, 543, 544, 7, 6, 0, 0, 544, 545, 7, 7, 0, 0, 545, 546, 7, 19, 0, 0, 546, 547, 1, 0, 0, 0, 547, 548, 6, 11, 0, 0, 548, 39, 1, 0, 0, 0, 549, 550, 7, 2, 0, 0, 550, 551, 7, 10, 0, 0, 551, 552, 7, 7, 0, 0, 552, 553, 7, 19, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 6, 12, 7, 0, 555, 41, 1, 0, 0, 0, 556, 557, 7, 2, 0, 0, 557, 558, 7, 7, 0, 0, 558, 559, 7, 6, 0, 0, 559, 560, 7, 5, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 6, 13, 0, 0, 562, 43, 1, 0, 0, 0, 563, 564, 7, 2, 0, 0, 564, 565, 7, 5, 0, 0, 565, 566, 7, 12, 0, 0, 566, 567, 7, 5, 0, 0, 567, 568, 7, 2, 0, 0, 568, 569, 1, 0, 0, 0, 569, 570, 6, 14, 0, 0, 570, 45, 1, 0, 0, 0, 571, 572, 7, 19, 0, 0, 572, 573, 7, 10, 0, 0, 573, 574, 7, 3, 0, 0, 574, 575, 7, 6, 0, 0, 575, 576, 7, 3, 0, 0, 576, 577, 1, 0, 0, 0, 577, 578, 6, 15, 0, 0, 578, 47, 1, 0, 0, 0, 579, 580, 7, 13, 0, 0, 580, 581, 7, 7, 0, 0, 581, 582, 7, 7, 0, 0, 582, 583, 7, 18, 0, 0, 583, 584, 7, 20, 0, 0, 584, 585, 7, 8, 0, 0, 585, 586, 1, 0, 0, 0, 586, 587, 6, 16, 8, 0, 587, 49, 1, 0, 0, 0, 588, 589, 4, 17, 0, 0, 589, 590, 7, 1, 0, 0, 590, 591, 7, 9, 0, 0, 591, 592, 7, 13, 0, 0, 592, 593, 7, 1, 0, 0, 593, 594, 7, 9, 0, 0, 594, 595, 7, 3, 0, 0, 595, 596, 7, 2, 0, 0, 596, 597, 7, 5, 0, 0, 597, 598, 7, 12, 0, 0, 598, 599, 7, 5, 0, 0, 599, 600, 7, 2, 0, 0, 600, 601, 1, 0, 0, 0, 601, 602, 6, 17, 0, 0, 602, 51, 1, 0, 0, 0, 603, 604, 4, 18, 1, 0, 604, 605, 7, 13, 0, 0, 605, 606, 7, 7, 0, 0, 606, 607, 7, 7, 0, 0, 607, 608, 7, 18, 0, 0, 608, 609, 7, 20, 0, 0, 609, 610, 7, 8, 0, 0, 610, 611, 5, 95, 0, 0, 611, 612, 5, 128020, 0, 0, 612, 613, 1, 0, 0, 0, 613, 614, 6, 18, 9, 0, 614, 53, 1, 0, 0, 0, 615, 616, 4, 19, 2, 0, 616, 617, 7, 16, 0, 0, 617, 618, 7, 3, 0, 0, 618, 619, 7, 5, 0, 0, 619, 620, 7, 6, 0, 0, 620, 621, 7, 1, 0, 0, 621, 622, 7, 4, 0, 0, 622, 623, 7, 2, 0, 0, 623, 624, 1, 0, 0, 0, 624, 625, 6, 19, 10, 0, 625, 55, 1, 0, 0, 0, 626, 627, 4, 20, 3, 0, 627, 628, 7, 15, 0, 0, 628, 629, 7, 20, 0, 0, 629, 630, 7, 13, 0, 0, 630, 631, 7, 13, 0, 0, 631, 632, 1, 0, 0, 0, 632, 633, 6, 20, 8, 0, 633, 57, 1, 0, 0, 0, 634, 635, 4, 21, 4, 0, 635, 636, 7, 13, 0, 0, 636, 637, 7, 3, 0, 0, 637, 638, 7, 15, 0, 0, 638, 639, 7, 5, 0, 0, 639, 640, 1, 0, 0, 0, 640, 641, 6, 21, 8, 0, 641, 59, 1, 0, 0, 0, 642, 643, 4, 22, 5, 0, 643, 644, 7, 6, 0, 0, 644, 645, 7, 1, 0, 0, 645, 646, 7, 17, 0, 0, 646, 647, 7, 10, 0, 0, 647, 648, 7, 5, 0, 0, 648, 649, 1, 0, 0, 0, 649, 650, 6, 22, 8, 0, 650, 61, 1, 0, 0, 0, 651, 653, 8, 21, 0, 0, 652, 651, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 652, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 657, 6, 23, 0, 0, 657, 63, 1, 0, 0, 0, 658, 659, 5, 47, 0, 0, 659, 660, 5, 47, 0, 0, 660, 664, 1, 0, 0, 0, 661, 663, 8, 22, 0, 0, 662, 661, 1, 0, 0, 0, 663, 666, 1, 0, 0, 0, 664, 662, 1, 0, 0, 0, 664, 665, 1, 0, 0, 0, 665, 668, 1, 0, 0, 0, 666, 664, 1, 0, 0, 0, 667, 669, 5, 13, 0, 0, 668, 667, 1, 0, 0, 0, 668, 669, 1, 0, 0, 0, 669, 671, 1, 0, 0, 0, 670, 672, 5, 10, 0, 0, 671, 670, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0, 673, 674, 6, 24, 11, 0, 674, 65, 1, 0, 0, 0, 675, 676, 5, 47, 0, 0, 676, 677, 5, 42, 0, 0, 677, 682, 1, 0, 0, 0, 678, 681, 3, 66, 25, 0, 679, 681, 9, 0, 0, 0, 680, 678, 1, 0, 0, 0, 680, 679, 1, 0, 0, 0, 681, 684, 1, 0, 0, 0, 682, 683, 1, 0, 0, 0, 682, 680, 1, 0, 0, 0, 683, 685, 1, 0, 0, 0, 684, 682, 1, 0, 0, 0, 685, 686, 5, 42, 0, 0, 686, 687, 5, 47, 0, 0, 687, 688, 1, 0, 0, 0, 688, 689, 6, 25, 11, 0, 689, 67, 1, 0, 0, 0, 690, 692, 7, 23, 0, 0, 691, 690, 1, 0, 0, 0, 692, 693, 1, 0, 0, 0, 693, 691, 1, 0, 0, 0, 693, 694, 1, 0, 0, 0, 694, 695, 1, 0, 0, 0, 695, 696, 6, 26, 11, 0, 696, 69, 1, 0, 0, 0, 697, 698, 5, 124, 0, 0, 698, 699, 1, 0, 0, 0, 699, 700, 6, 27, 12, 0, 700, 71, 1, 0, 0, 0, 701, 702, 7, 24, 0, 0, 702, 73, 1, 0, 0, 0, 703, 704, 7, 25, 0, 0, 704, 75, 1, 0, 0, 0, 705, 706, 5, 92, 0, 0, 706, 707, 7, 26, 0, 0, 707, 77, 1, 0, 0, 0, 708, 709, 8, 27, 0, 0, 709, 79, 1, 0, 0, 0, 710, 712, 7, 3, 0, 0, 711, 713, 7, 28, 0, 0, 712, 711, 1, 0, 0, 0, 712, 713, 1, 0, 0, 0, 713, 715, 1, 0, 0, 0, 714, 716, 3, 72, 28, 0, 715, 714, 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 717, 715, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 81, 1, 0, 0, 0, 719, 720, 5, 64, 0, 0, 720, 83, 1, 0, 0, 0, 721, 722, 5, 96, 0, 0, 722, 85, 1, 0, 0, 0, 723, 727, 8, 29, 0, 0, 724, 725, 5, 96, 0, 0, 725, 727, 5, 96, 0, 0, 726, 723, 1, 0, 0, 0, 726, 724, 1, 0, 0, 0, 727, 87, 1, 0, 0, 0, 728, 729, 5, 95, 0, 0, 729, 89, 1, 0, 0, 0, 730, 734, 3, 74, 29, 0, 731, 734, 3, 72, 28, 0, 732, 734, 3, 88, 36, 0, 733, 730, 1, 0, 0, 0, 733, 731, 1, 0, 0, 0, 733, 732, 1, 0, 0, 0, 734, 91, 1, 0, 0, 0, 735, 740, 5, 34, 0, 0, 736, 739, 3, 76, 30, 0, 737, 739, 3, 78, 31, 0, 738, 736, 1, 0, 0, 0, 738, 737, 1, 0, 0, 0, 739, 742, 1, 0, 0, 0, 740, 738, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 743, 1, 0, 0, 0, 742, 740, 1, 0, 0, 0, 743, 765, 5, 34, 0, 0, 744, 745, 5, 34, 0, 0, 745, 746, 5, 34, 0, 0, 746, 747, 5, 34, 0, 0, 747, 751, 1, 0, 0, 0, 748, 750, 8, 22, 0, 0, 749, 748, 1, 0, 0, 0, 750, 753, 1, 0, 0, 0, 751, 752, 1, 0, 0, 0, 751, 749, 1, 0, 0, 0, 752, 754, 1, 0, 0, 0, 753, 751, 1, 0, 0, 0, 754, 755, 5, 34, 0, 0, 755, 756, 5, 34, 0, 0, 756, 757, 5, 34, 0, 0, 757, 759, 1, 0, 0, 0, 758, 760, 5, 34, 0, 0, 759, 758, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 762, 1, 0, 0, 0, 761, 763, 5, 34, 0, 0, 762, 761, 1, 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 765, 1, 0, 0, 0, 764, 735, 1, 0, 0, 0, 764, 744, 1, 0, 0, 0, 765, 93, 1, 0, 0, 0, 766, 768, 3, 72, 28, 0, 767, 766, 1, 0, 0, 0, 768, 769, 1, 0, 0, 0, 769, 767, 1, 0, 0, 0, 769, 770, 1, 0, 0, 0, 770, 95, 1, 0, 0, 0, 771, 773, 3, 72, 28, 0, 772, 771, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 772, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 776, 1, 0, 0, 0, 776, 780, 3, 114, 49, 0, 777, 779, 3, 72, 28, 0, 778, 777, 1, 0, 0, 0, 779, 782, 1, 0, 0, 0, 780, 778, 1, 0, 0, 0, 780, 781, 1, 0, 0, 0, 781, 814, 1, 0, 0, 0, 782, 780, 1, 0, 0, 0, 783, 785, 3, 114, 49, 0, 784, 786, 3, 72, 28, 0, 785, 784, 1, 0, 0, 0, 786, 787, 1, 0, 0, 0, 787, 785, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 788, 814, 1, 0, 0, 0, 789, 791, 3, 72, 28, 0, 790, 789, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 790, 1, 0, 0, 0, 792, 793, 1, 0, 0, 0, 793, 801, 1, 0, 0, 0, 794, 798, 3, 114, 49, 0, 795, 797, 3, 72, 28, 0, 796, 795, 1, 0, 0, 0, 797, 800, 1, 0, 0, 0, 798, 796, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799, 802, 1, 0, 0, 0, 800, 798, 1, 0, 0, 0, 801, 794, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 803, 1, 0, 0, 0, 803, 804, 3, 80, 32, 0, 804, 814, 1, 0, 0, 0, 805, 807, 3, 114, 49, 0, 806, 808, 3, 72, 28, 0, 807, 806, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 807, 1, 0, 0, 0, 809, 810, 1, 0, 0, 0, 810, 811, 1, 0, 0, 0, 811, 812, 3, 80, 32, 0, 812, 814, 1, 0, 0, 0, 813, 772, 1, 0, 0, 0, 813, 783, 1, 0, 0, 0, 813, 790, 1, 0, 0, 0, 813, 805, 1, 0, 0, 0, 814, 97, 1, 0, 0, 0, 815, 816, 7, 30, 0, 0, 816, 817, 7, 31, 0, 0, 817, 99, 1, 0, 0, 0, 818, 819, 7, 12, 0, 0, 819, 820, 7, 9, 0, 0, 820, 821, 7, 0, 0, 0, 821, 101, 1, 0, 0, 0, 822, 823, 7, 12, 0, 0, 823, 824, 7, 2, 0, 0, 824, 825, 7, 4, 0, 0, 825, 103, 1, 0, 0, 0, 826, 827, 5, 61, 0, 0, 827, 105, 1, 0, 0, 0, 828, 829, 5, 58, 0, 0, 829, 830, 5, 58, 0, 0, 830, 107, 1, 0, 0, 0, 831, 832, 5, 58, 0, 0, 832, 109, 1, 0, 0, 0, 833, 834, 5, 44, 0, 0, 834, 111, 1, 0, 0, 0, 835, 836, 7, 0, 0, 0, 836, 837, 7, 3, 0, 0, 837, 838, 7, 2, 0, 0, 838, 839, 7, 4, 0, 0, 839, 113, 1, 0, 0, 0, 840, 841, 5, 46, 0, 0, 841, 115, 1, 0, 0, 0, 842, 843, 7, 15, 0, 0, 843, 844, 7, 12, 0, 0, 844, 845, 7, 13, 0, 0, 845, 846, 7, 2, 0, 0, 846, 847, 7, 3, 0, 0, 847, 117, 1, 0, 0, 0, 848, 849, 7, 15, 0, 0, 849, 850, 7, 1, 0, 0, 850, 851, 7, 6, 0, 0, 851, 852, 7, 2, 0, 0, 852, 853, 7, 5, 0, 0, 853, 119, 1, 0, 0, 0, 854, 855, 7, 1, 0, 0, 855, 856, 7, 9, 0, 0, 856, 121, 1, 0, 0, 0, 857, 858, 7, 1, 0, 0, 858, 859, 7, 2, 0, 0, 859, 123, 1, 0, 0, 0, 860, 861, 7, 13, 0, 0, 861, 862, 7, 12, 0, 0, 862, 863, 7, 2, 0, 0, 863, 864, 7, 5, 0, 0, 864, 125, 1, 0, 0, 0, 865, 866, 7, 13, 0, 0, 866, 867, 7, 1, 0, 0, 867, 868, 7, 18, 0, 0, 868, 869, 7, 3, 0, 0, 869, 127, 1, 0, 0, 0, 870, 871, 5, 40, 0, 0, 871, 129, 1, 0, 0, 0, 872, 873, 7, 9, 0, 0, 873, 874, 7, 7, 0, 0, 874, 875, 7, 5, 0, 0, 875, 131, 1, 0, 0, 0, 876, 877, 7, 9, 0, 0, 877, 878, 7, 20, 0, 0, 878, 879, 7, 13, 0, 0, 879, 880, 7, 13, 0, 0, 880, 133, 1, 0, 0, 0, 881, 882, 7, 9, 0, 0, 882, 883, 7, 20, 0, 0, 883, 884, 7, 13, 0, 0, 884, 885, 7, 13, 0, 0, 885, 886, 7, 2, 0, 0, 886, 135, 1, 0, 0, 0, 887, 888, 7, 7, 0, 0, 888, 889, 7, 6, 0, 0, 889, 137, 1, 0, 0, 0, 890, 891, 5, 63, 0, 0, 891, 139, 1, 0, 0, 0, 892, 893, 7, 6, 0, 0, 893, 894, 7, 13, 0, 0, 894, 895, 7, 1, 0, 0, 895, 896, 7, 18, 0, 0, 896, 897, 7, 3, 0, 0, 897, 141, 1, 0, 0, 0, 898, 899, 5, 41, 0, 0, 899, 143, 1, 0, 0, 0, 900, 901, 7, 5, 0, 0, 901, 902, 7, 6, 0, 0, 902, 903, 7, 20, 0, 0, 903, 904, 7, 3, 0, 0, 904, 145, 1, 0, 0, 0, 905, 906, 5, 61, 0, 0, 906, 907, 5, 61, 0, 0, 907, 147, 1, 0, 0, 0, 908, 909, 5, 61, 0, 0, 909, 910, 5, 126, 0, 0, 910, 149, 1, 0, 0, 0, 911, 912, 5, 33, 0, 0, 912, 913, 5, 61, 0, 0, 913, 151, 1, 0, 0, 0, 914, 915, 5, 60, 0, 0, 915, 153, 1, 0, 0, 0, 916, 917, 5, 60, 0, 0, 917, 918, 5, 61, 0, 0, 918, 155, 1, 0, 0, 0, 919, 920, 5, 62, 0, 0, 920, 157, 1, 0, 0, 0, 921, 922, 5, 62, 0, 0, 922, 923, 5, 61, 0, 0, 923, 159, 1, 0, 0, 0, 924, 925, 5, 43, 0, 0, 925, 161, 1, 0, 0, 0, 926, 927, 5, 45, 0, 0, 927, 163, 1, 0, 0, 0, 928, 929, 5, 42, 0, 0, 929, 165, 1, 0, 0, 0, 930, 931, 5, 47, 0, 0, 931, 167, 1, 0, 0, 0, 932, 933, 5, 37, 0, 0, 933, 169, 1, 0, 0, 0, 934, 935, 5, 123, 0, 0, 935, 171, 1, 0, 0, 0, 936, 937, 5, 125, 0, 0, 937, 173, 1, 0, 0, 0, 938, 939, 3, 46, 15, 0, 939, 940, 1, 0, 0, 0, 940, 941, 6, 79, 13, 0, 941, 175, 1, 0, 0, 0, 942, 945, 3, 138, 61, 0, 943, 946, 3, 74, 29, 0, 944, 946, 3, 88, 36, 0, 945, 943, 1, 0, 0, 0, 945, 944, 1, 0, 0, 0, 946, 950, 1, 0, 0, 0, 947, 949, 3, 90, 37, 0, 948, 947, 1, 0, 0, 0, 949, 952, 1, 0, 0, 0, 950, 948, 1, 0, 0, 0, 950, 951, 1, 0, 0, 0, 951, 960, 1, 0, 0, 0, 952, 950, 1, 0, 0, 0, 953, 955, 3, 138, 61, 0, 954, 956, 3, 72, 28, 0, 955, 954, 1, 0, 0, 0, 956, 957, 1, 0, 0, 0, 957, 955, 1, 0, 0, 0, 957, 958, 1, 0, 0, 0, 958, 960, 1, 0, 0, 0, 959, 942, 1, 0, 0, 0, 959, 953, 1, 0, 0, 0, 960, 177, 1, 0, 0, 0, 961, 962, 5, 91, 0, 0, 962, 963, 1, 0, 0, 0, 963, 964, 6, 81, 0, 0, 964, 965, 6, 81, 0, 0, 965, 179, 1, 0, 0, 0, 966, 967, 5, 93, 0, 0, 967, 968, 1, 0, 0, 0, 968, 969, 6, 82, 12, 0, 969, 970, 6, 82, 12, 0, 970, 181, 1, 0, 0, 0, 971, 975, 3, 74, 29, 0, 972, 974, 3, 90, 37, 0, 973, 972, 1, 0, 0, 0, 974, 977, 1, 0, 0, 0, 975, 973, 1, 0, 0, 0, 975, 976, 1, 0, 0, 0, 976, 988, 1, 0, 0, 0, 977, 975, 1, 0, 0, 0, 978, 981, 3, 88, 36, 0, 979, 981, 3, 82, 33, 0, 980, 978, 1, 0, 0, 0, 980, 979, 1, 0, 0, 0, 981, 983, 1, 0, 0, 0, 982, 984, 3, 90, 37, 0, 983, 982, 1, 0, 0, 0, 984, 985, 1, 0, 0, 0, 985, 983, 1, 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, 988, 1, 0, 0, 0, 987, 971, 1, 0, 0, 0, 987, 980, 1, 0, 0, 0, 988, 183, 1, 0, 0, 0, 989, 991, 3, 84, 34, 0, 990, 992, 3, 86, 35, 0, 991, 990, 1, 0, 0, 0, 992, 993, 1, 0, 0, 0, 993, 991, 1, 0, 0, 0, 993, 994, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 996, 3, 84, 34, 0, 996, 185, 1, 0, 0, 0, 997, 998, 3, 184, 84, 0, 998, 187, 1, 0, 0, 0, 999, 1000, 3, 64, 24, 0, 1000, 1001, 1, 0, 0, 0, 1001, 1002, 6, 86, 11, 0, 1002, 189, 1, 0, 0, 0, 1003, 1004, 3, 66, 25, 0, 1004, 1005, 1, 0, 0, 0, 1005, 1006, 6, 87, 11, 0, 1006, 191, 1, 0, 0, 0, 1007, 1008, 3, 68, 26, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1010, 6, 88, 11, 0, 1010, 193, 1, 0, 0, 0, 1011, 1012, 3, 178, 81, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1014, 6, 89, 14, 0, 1014, 1015, 6, 89, 15, 0, 1015, 195, 1, 0, 0, 0, 1016, 1017, 3, 70, 27, 0, 1017, 1018, 1, 0, 0, 0, 1018, 1019, 6, 90, 16, 0, 1019, 1020, 6, 90, 12, 0, 1020, 197, 1, 0, 0, 0, 1021, 1022, 3, 68, 26, 0, 1022, 1023, 1, 0, 0, 0, 1023, 1024, 6, 91, 11, 0, 1024, 199, 1, 0, 0, 0, 1025, 1026, 3, 64, 24, 0, 1026, 1027, 1, 0, 0, 0, 1027, 1028, 6, 92, 11, 0, 1028, 201, 1, 0, 0, 0, 1029, 1030, 3, 66, 25, 0, 1030, 1031, 1, 0, 0, 0, 1031, 1032, 6, 93, 11, 0, 1032, 203, 1, 0, 0, 0, 1033, 1034, 3, 70, 27, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1036, 6, 94, 16, 0, 1036, 1037, 6, 94, 12, 0, 1037, 205, 1, 0, 0, 0, 1038, 1039, 3, 178, 81, 0, 1039, 1040, 1, 0, 0, 0, 1040, 1041, 6, 95, 14, 0, 1041, 207, 1, 0, 0, 0, 1042, 1043, 3, 180, 82, 0, 1043, 1044, 1, 0, 0, 0, 1044, 1045, 6, 96, 17, 0, 1045, 209, 1, 0, 0, 0, 1046, 1047, 3, 108, 46, 0, 1047, 1048, 1, 0, 0, 0, 1048, 1049, 6, 97, 18, 0, 1049, 211, 1, 0, 0, 0, 1050, 1051, 3, 110, 47, 0, 1051, 1052, 1, 0, 0, 0, 1052, 1053, 6, 98, 19, 0, 1053, 213, 1, 0, 0, 0, 1054, 1055, 3, 104, 44, 0, 1055, 1056, 1, 0, 0, 0, 1056, 1057, 6, 99, 20, 0, 1057, 215, 1, 0, 0, 0, 1058, 1059, 7, 16, 0, 0, 1059, 1060, 7, 3, 0, 0, 1060, 1061, 7, 5, 0, 0, 1061, 1062, 7, 12, 0, 0, 1062, 1063, 7, 0, 0, 0, 1063, 1064, 7, 12, 0, 0, 1064, 1065, 7, 5, 0, 0, 1065, 1066, 7, 12, 0, 0, 1066, 217, 1, 0, 0, 0, 1067, 1071, 8, 32, 0, 0, 1068, 1069, 5, 47, 0, 0, 1069, 1071, 8, 33, 0, 0, 1070, 1067, 1, 0, 0, 0, 1070, 1068, 1, 0, 0, 0, 1071, 219, 1, 0, 0, 0, 1072, 1074, 3, 218, 101, 0, 1073, 1072, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 1073, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, 221, 1, 0, 0, 0, 1077, 1078, 3, 220, 102, 0, 1078, 1079, 1, 0, 0, 0, 1079, 1080, 6, 103, 21, 0, 1080, 223, 1, 0, 0, 0, 1081, 1082, 3, 92, 38, 0, 1082, 1083, 1, 0, 0, 0, 1083, 1084, 6, 104, 22, 0, 1084, 225, 1, 0, 0, 0, 1085, 1086, 3, 64, 24, 0, 1086, 1087, 1, 0, 0, 0, 1087, 1088, 6, 105, 11, 0, 1088, 227, 1, 0, 0, 0, 1089, 1090, 3, 66, 25, 0, 1090, 1091, 1, 0, 0, 0, 1091, 1092, 6, 106, 11, 0, 1092, 229, 1, 0, 0, 0, 1093, 1094, 3, 68, 26, 0, 1094, 1095, 1, 0, 0, 0, 1095, 1096, 6, 107, 11, 0, 1096, 231, 1, 0, 0, 0, 1097, 1098, 3, 70, 27, 0, 1098, 1099, 1, 0, 0, 0, 1099, 1100, 6, 108, 16, 0, 1100, 1101, 6, 108, 12, 0, 1101, 233, 1, 0, 0, 0, 1102, 1103, 3, 114, 49, 0, 1103, 1104, 1, 0, 0, 0, 1104, 1105, 6, 109, 23, 0, 1105, 235, 1, 0, 0, 0, 1106, 1107, 3, 110, 47, 0, 1107, 1108, 1, 0, 0, 0, 1108, 1109, 6, 110, 19, 0, 1109, 237, 1, 0, 0, 0, 1110, 1111, 3, 138, 61, 0, 1111, 1112, 1, 0, 0, 0, 1112, 1113, 6, 111, 24, 0, 1113, 239, 1, 0, 0, 0, 1114, 1115, 3, 176, 80, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1117, 6, 112, 25, 0, 1117, 241, 1, 0, 0, 0, 1118, 1123, 3, 74, 29, 0, 1119, 1123, 3, 72, 28, 0, 1120, 1123, 3, 88, 36, 0, 1121, 1123, 3, 164, 74, 0, 1122, 1118, 1, 0, 0, 0, 1122, 1119, 1, 0, 0, 0, 1122, 1120, 1, 0, 0, 0, 1122, 1121, 1, 0, 0, 0, 1123, 243, 1, 0, 0, 0, 1124, 1127, 3, 74, 29, 0, 1125, 1127, 3, 164, 74, 0, 1126, 1124, 1, 0, 0, 0, 1126, 1125, 1, 0, 0, 0, 1127, 1131, 1, 0, 0, 0, 1128, 1130, 3, 242, 113, 0, 1129, 1128, 1, 0, 0, 0, 1130, 1133, 1, 0, 0, 0, 1131, 1129, 1, 0, 0, 0, 1131, 1132, 1, 0, 0, 0, 1132, 1144, 1, 0, 0, 0, 1133, 1131, 1, 0, 0, 0, 1134, 1137, 3, 88, 36, 0, 1135, 1137, 3, 82, 33, 0, 1136, 1134, 1, 0, 0, 0, 1136, 1135, 1, 0, 0, 0, 1137, 1139, 1, 0, 0, 0, 1138, 1140, 3, 242, 113, 0, 1139, 1138, 1, 0, 0, 0, 1140, 1141, 1, 0, 0, 0, 1141, 1139, 1, 0, 0, 0, 1141, 1142, 1, 0, 0, 0, 1142, 1144, 1, 0, 0, 0, 1143, 1126, 1, 0, 0, 0, 1143, 1136, 1, 0, 0, 0, 1144, 245, 1, 0, 0, 0, 1145, 1148, 3, 244, 114, 0, 1146, 1148, 3, 184, 84, 0, 1147, 1145, 1, 0, 0, 0, 1147, 1146, 1, 0, 0, 0, 1148, 1149, 1, 0, 0, 0, 1149, 1147, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 247, 1, 0, 0, 0, 1151, 1152, 3, 64, 24, 0, 1152, 1153, 1, 0, 0, 0, 1153, 1154, 6, 116, 11, 0, 1154, 249, 1, 0, 0, 0, 1155, 1156, 3, 66, 25, 0, 1156, 1157, 1, 0, 0, 0, 1157, 1158, 6, 117, 11, 0, 1158, 251, 1, 0, 0, 0, 1159, 1160, 3, 68, 26, 0, 1160, 1161, 1, 0, 0, 0, 1161, 1162, 6, 118, 11, 0, 1162, 253, 1, 0, 0, 0, 1163, 1164, 3, 70, 27, 0, 1164, 1165, 1, 0, 0, 0, 1165, 1166, 6, 119, 16, 0, 1166, 1167, 6, 119, 12, 0, 1167, 255, 1, 0, 0, 0, 1168, 1169, 3, 104, 44, 0, 1169, 1170, 1, 0, 0, 0, 1170, 1171, 6, 120, 20, 0, 1171, 257, 1, 0, 0, 0, 1172, 1173, 3, 110, 47, 0, 1173, 1174, 1, 0, 0, 0, 1174, 1175, 6, 121, 19, 0, 1175, 259, 1, 0, 0, 0, 1176, 1177, 3, 114, 49, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1179, 6, 122, 23, 0, 1179, 261, 1, 0, 0, 0, 1180, 1181, 3, 138, 61, 0, 1181, 1182, 1, 0, 0, 0, 1182, 1183, 6, 123, 24, 0, 1183, 263, 1, 0, 0, 0, 1184, 1185, 3, 176, 80, 0, 1185, 1186, 1, 0, 0, 0, 1186, 1187, 6, 124, 25, 0, 1187, 265, 1, 0, 0, 0, 1188, 1189, 7, 12, 0, 0, 1189, 1190, 7, 2, 0, 0, 1190, 267, 1, 0, 0, 0, 1191, 1192, 3, 246, 115, 0, 1192, 1193, 1, 0, 0, 0, 1193, 1194, 6, 126, 26, 0, 1194, 269, 1, 0, 0, 0, 1195, 1196, 3, 64, 24, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1198, 6, 127, 11, 0, 1198, 271, 1, 0, 0, 0, 1199, 1200, 3, 66, 25, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1202, 6, 128, 11, 0, 1202, 273, 1, 0, 0, 0, 1203, 1204, 3, 68, 26, 0, 1204, 1205, 1, 0, 0, 0, 1205, 1206, 6, 129, 11, 0, 1206, 275, 1, 0, 0, 0, 1207, 1208, 3, 70, 27, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1210, 6, 130, 16, 0, 1210, 1211, 6, 130, 12, 0, 1211, 277, 1, 0, 0, 0, 1212, 1213, 3, 178, 81, 0, 1213, 1214, 1, 0, 0, 0, 1214, 1215, 6, 131, 14, 0, 1215, 1216, 6, 131, 27, 0, 1216, 279, 1, 0, 0, 0, 1217, 1218, 7, 7, 0, 0, 1218, 1219, 7, 9, 0, 0, 1219, 1220, 1, 0, 0, 0, 1220, 1221, 6, 132, 28, 0, 1221, 281, 1, 0, 0, 0, 1222, 1223, 7, 19, 0, 0, 1223, 1224, 7, 1, 0, 0, 1224, 1225, 7, 5, 0, 0, 1225, 1226, 7, 10, 0, 0, 1226, 1227, 1, 0, 0, 0, 1227, 1228, 6, 133, 28, 0, 1228, 283, 1, 0, 0, 0, 1229, 1230, 8, 34, 0, 0, 1230, 285, 1, 0, 0, 0, 1231, 1233, 3, 284, 134, 0, 1232, 1231, 1, 0, 0, 0, 1233, 1234, 1, 0, 0, 0, 1234, 1232, 1, 0, 0, 0, 1234, 1235, 1, 0, 0, 0, 1235, 1236, 1, 0, 0, 0, 1236, 1237, 3, 108, 46, 0, 1237, 1239, 1, 0, 0, 0, 1238, 1232, 1, 0, 0, 0, 1238, 1239, 1, 0, 0, 0, 1239, 1241, 1, 0, 0, 0, 1240, 1242, 3, 284, 134, 0, 1241, 1240, 1, 0, 0, 0, 1242, 1243, 1, 0, 0, 0, 1243, 1241, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 287, 1, 0, 0, 0, 1245, 1246, 3, 286, 135, 0, 1246, 1247, 1, 0, 0, 0, 1247, 1248, 6, 136, 29, 0, 1248, 289, 1, 0, 0, 0, 1249, 1250, 3, 64, 24, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1252, 6, 137, 11, 0, 1252, 291, 1, 0, 0, 0, 1253, 1254, 3, 66, 25, 0, 1254, 1255, 1, 0, 0, 0, 1255, 1256, 6, 138, 11, 0, 1256, 293, 1, 0, 0, 0, 1257, 1258, 3, 68, 26, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1260, 6, 139, 11, 0, 1260, 295, 1, 0, 0, 0, 1261, 1262, 3, 70, 27, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1264, 6, 140, 16, 0, 1264, 1265, 6, 140, 12, 0, 1265, 1266, 6, 140, 12, 0, 1266, 297, 1, 0, 0, 0, 1267, 1268, 3, 104, 44, 0, 1268, 1269, 1, 0, 0, 0, 1269, 1270, 6, 141, 20, 0, 1270, 299, 1, 0, 0, 0, 1271, 1272, 3, 110, 47, 0, 1272, 1273, 1, 0, 0, 0, 1273, 1274, 6, 142, 19, 0, 1274, 301, 1, 0, 0, 0, 1275, 1276, 3, 114, 49, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1278, 6, 143, 23, 0, 1278, 303, 1, 0, 0, 0, 1279, 1280, 3, 282, 133, 0, 1280, 1281, 1, 0, 0, 0, 1281, 1282, 6, 144, 30, 0, 1282, 305, 1, 0, 0, 0, 1283, 1284, 3, 246, 115, 0, 1284, 1285, 1, 0, 0, 0, 1285, 1286, 6, 145, 26, 0, 1286, 307, 1, 0, 0, 0, 1287, 1288, 3, 186, 85, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1290, 6, 146, 31, 0, 1290, 309, 1, 0, 0, 0, 1291, 1292, 3, 138, 61, 0, 1292, 1293, 1, 0, 0, 0, 1293, 1294, 6, 147, 24, 0, 1294, 311, 1, 0, 0, 0, 1295, 1296, 3, 176, 80, 0, 1296, 1297, 1, 0, 0, 0, 1297, 1298, 6, 148, 25, 0, 1298, 313, 1, 0, 0, 0, 1299, 1300, 3, 64, 24, 0, 1300, 1301, 1, 0, 0, 0, 1301, 1302, 6, 149, 11, 0, 1302, 315, 1, 0, 0, 0, 1303, 1304, 3, 66, 25, 0, 1304, 1305, 1, 0, 0, 0, 1305, 1306, 6, 150, 11, 0, 1306, 317, 1, 0, 0, 0, 1307, 1308, 3, 68, 26, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 6, 151, 11, 0, 1310, 319, 1, 0, 0, 0, 1311, 1312, 3, 70, 27, 0, 1312, 1313, 1, 0, 0, 0, 1313, 1314, 6, 152, 16, 0, 1314, 1315, 6, 152, 12, 0, 1315, 321, 1, 0, 0, 0, 1316, 1317, 3, 114, 49, 0, 1317, 1318, 1, 0, 0, 0, 1318, 1319, 6, 153, 23, 0, 1319, 323, 1, 0, 0, 0, 1320, 1321, 3, 138, 61, 0, 1321, 1322, 1, 0, 0, 0, 1322, 1323, 6, 154, 24, 0, 1323, 325, 1, 0, 0, 0, 1324, 1325, 3, 176, 80, 0, 1325, 1326, 1, 0, 0, 0, 1326, 1327, 6, 155, 25, 0, 1327, 327, 1, 0, 0, 0, 1328, 1329, 3, 186, 85, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1331, 6, 156, 31, 0, 1331, 329, 1, 0, 0, 0, 1332, 1333, 3, 182, 83, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1335, 6, 157, 32, 0, 1335, 331, 1, 0, 0, 0, 1336, 1337, 3, 64, 24, 0, 1337, 1338, 1, 0, 0, 0, 1338, 1339, 6, 158, 11, 0, 1339, 333, 1, 0, 0, 0, 1340, 1341, 3, 66, 25, 0, 1341, 1342, 1, 0, 0, 0, 1342, 1343, 6, 159, 11, 0, 1343, 335, 1, 0, 0, 0, 1344, 1345, 3, 68, 26, 0, 1345, 1346, 1, 0, 0, 0, 1346, 1347, 6, 160, 11, 0, 1347, 337, 1, 0, 0, 0, 1348, 1349, 3, 70, 27, 0, 1349, 1350, 1, 0, 0, 0, 1350, 1351, 6, 161, 16, 0, 1351, 1352, 6, 161, 12, 0, 1352, 339, 1, 0, 0, 0, 1353, 1354, 7, 1, 0, 0, 1354, 1355, 7, 9, 0, 0, 1355, 1356, 7, 15, 0, 0, 1356, 1357, 7, 7, 0, 0, 1357, 341, 1, 0, 0, 0, 1358, 1359, 3, 64, 24, 0, 1359, 1360, 1, 0, 0, 0, 1360, 1361, 6, 163, 11, 0, 1361, 343, 1, 0, 0, 0, 1362, 1363, 3, 66, 25, 0, 1363, 1364, 1, 0, 0, 0, 1364, 1365, 6, 164, 11, 0, 1365, 345, 1, 0, 0, 0, 1366, 1367, 3, 68, 26, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1369, 6, 165, 11, 0, 1369, 347, 1, 0, 0, 0, 1370, 1371, 3, 180, 82, 0, 1371, 1372, 1, 0, 0, 0, 1372, 1373, 6, 166, 17, 0, 1373, 1374, 6, 166, 12, 0, 1374, 349, 1, 0, 0, 0, 1375, 1376, 3, 108, 46, 0, 1376, 1377, 1, 0, 0, 0, 1377, 1378, 6, 167, 18, 0, 1378, 351, 1, 0, 0, 0, 1379, 1385, 3, 82, 33, 0, 1380, 1385, 3, 72, 28, 0, 1381, 1385, 3, 114, 49, 0, 1382, 1385, 3, 74, 29, 0, 1383, 1385, 3, 88, 36, 0, 1384, 1379, 1, 0, 0, 0, 1384, 1380, 1, 0, 0, 0, 1384, 1381, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1384, 1383, 1, 0, 0, 0, 1385, 1386, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1386, 1387, 1, 0, 0, 0, 1387, 353, 1, 0, 0, 0, 1388, 1389, 3, 64, 24, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1391, 6, 169, 11, 0, 1391, 355, 1, 0, 0, 0, 1392, 1393, 3, 66, 25, 0, 1393, 1394, 1, 0, 0, 0, 1394, 1395, 6, 170, 11, 0, 1395, 357, 1, 0, 0, 0, 1396, 1397, 3, 68, 26, 0, 1397, 1398, 1, 0, 0, 0, 1398, 1399, 6, 171, 11, 0, 1399, 359, 1, 0, 0, 0, 1400, 1401, 3, 70, 27, 0, 1401, 1402, 1, 0, 0, 0, 1402, 1403, 6, 172, 16, 0, 1403, 1404, 6, 172, 12, 0, 1404, 361, 1, 0, 0, 0, 1405, 1406, 3, 108, 46, 0, 1406, 1407, 1, 0, 0, 0, 1407, 1408, 6, 173, 18, 0, 1408, 363, 1, 0, 0, 0, 1409, 1410, 3, 110, 47, 0, 1410, 1411, 1, 0, 0, 0, 1411, 1412, 6, 174, 19, 0, 1412, 365, 1, 0, 0, 0, 1413, 1414, 3, 114, 49, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1416, 6, 175, 23, 0, 1416, 367, 1, 0, 0, 0, 1417, 1418, 3, 280, 132, 0, 1418, 1419, 1, 0, 0, 0, 1419, 1420, 6, 176, 33, 0, 1420, 1421, 6, 176, 34, 0, 1421, 369, 1, 0, 0, 0, 1422, 1423, 3, 220, 102, 0, 1423, 1424, 1, 0, 0, 0, 1424, 1425, 6, 177, 21, 0, 1425, 371, 1, 0, 0, 0, 1426, 1427, 3, 92, 38, 0, 1427, 1428, 1, 0, 0, 0, 1428, 1429, 6, 178, 22, 0, 1429, 373, 1, 0, 0, 0, 1430, 1431, 3, 64, 24, 0, 1431, 1432, 1, 0, 0, 0, 1432, 1433, 6, 179, 11, 0, 1433, 375, 1, 0, 0, 0, 1434, 1435, 3, 66, 25, 0, 1435, 1436, 1, 0, 0, 0, 1436, 1437, 6, 180, 11, 0, 1437, 377, 1, 0, 0, 0, 1438, 1439, 3, 68, 26, 0, 1439, 1440, 1, 0, 0, 0, 1440, 1441, 6, 181, 11, 0, 1441, 379, 1, 0, 0, 0, 1442, 1443, 3, 70, 27, 0, 1443, 1444, 1, 0, 0, 0, 1444, 1445, 6, 182, 16, 0, 1445, 1446, 6, 182, 12, 0, 1446, 1447, 6, 182, 12, 0, 1447, 381, 1, 0, 0, 0, 1448, 1449, 3, 110, 47, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1451, 6, 183, 19, 0, 1451, 383, 1, 0, 0, 0, 1452, 1453, 3, 114, 49, 0, 1453, 1454, 1, 0, 0, 0, 1454, 1455, 6, 184, 23, 0, 1455, 385, 1, 0, 0, 0, 1456, 1457, 3, 246, 115, 0, 1457, 1458, 1, 0, 0, 0, 1458, 1459, 6, 185, 26, 0, 1459, 387, 1, 0, 0, 0, 1460, 1461, 3, 64, 24, 0, 1461, 1462, 1, 0, 0, 0, 1462, 1463, 6, 186, 11, 0, 1463, 389, 1, 0, 0, 0, 1464, 1465, 3, 66, 25, 0, 1465, 1466, 1, 0, 0, 0, 1466, 1467, 6, 187, 11, 0, 1467, 391, 1, 0, 0, 0, 1468, 1469, 3, 68, 26, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1471, 6, 188, 11, 0, 1471, 393, 1, 0, 0, 0, 1472, 1473, 3, 70, 27, 0, 1473, 1474, 1, 0, 0, 0, 1474, 1475, 6, 189, 16, 0, 1475, 1476, 6, 189, 12, 0, 1476, 395, 1, 0, 0, 0, 1477, 1478, 7, 35, 0, 0, 1478, 1479, 7, 7, 0, 0, 1479, 1480, 7, 1, 0, 0, 1480, 1481, 7, 9, 0, 0, 1481, 397, 1, 0, 0, 0, 1482, 1483, 3, 266, 125, 0, 1483, 1484, 1, 0, 0, 0, 1484, 1485, 6, 191, 35, 0, 1485, 399, 1, 0, 0, 0, 1486, 1487, 3, 280, 132, 0, 1487, 1488, 1, 0, 0, 0, 1488, 1489, 6, 192, 33, 0, 1489, 1490, 6, 192, 12, 0, 1490, 1491, 6, 192, 0, 0, 1491, 401, 1, 0, 0, 0, 1492, 1493, 7, 20, 0, 0, 1493, 1494, 7, 2, 0, 0, 1494, 1495, 7, 1, 0, 0, 1495, 1496, 7, 9, 0, 0, 1496, 1497, 7, 17, 0, 0, 1497, 1498, 1, 0, 0, 0, 1498, 1499, 6, 193, 12, 0, 1499, 1500, 6, 193, 0, 0, 1500, 403, 1, 0, 0, 0, 1501, 1502, 3, 220, 102, 0, 1502, 1503, 1, 0, 0, 0, 1503, 1504, 6, 194, 21, 0, 1504, 405, 1, 0, 0, 0, 1505, 1506, 3, 92, 38, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1508, 6, 195, 22, 0, 1508, 407, 1, 0, 0, 0, 1509, 1510, 3, 108, 46, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1512, 6, 196, 18, 0, 1512, 409, 1, 0, 0, 0, 1513, 1514, 3, 182, 83, 0, 1514, 1515, 1, 0, 0, 0, 1515, 1516, 6, 197, 32, 0, 1516, 411, 1, 0, 0, 0, 1517, 1518, 3, 186, 85, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1520, 6, 198, 31, 0, 1520, 413, 1, 0, 0, 0, 1521, 1522, 3, 64, 24, 0, 1522, 1523, 1, 0, 0, 0, 1523, 1524, 6, 199, 11, 0, 1524, 415, 1, 0, 0, 0, 1525, 1526, 3, 66, 25, 0, 1526, 1527, 1, 0, 0, 0, 1527, 1528, 6, 200, 11, 0, 1528, 417, 1, 0, 0, 0, 1529, 1530, 3, 68, 26, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, 6, 201, 11, 0, 1532, 419, 1, 0, 0, 0, 1533, 1534, 3, 70, 27, 0, 1534, 1535, 1, 0, 0, 0, 1535, 1536, 6, 202, 16, 0, 1536, 1537, 6, 202, 12, 0, 1537, 421, 1, 0, 0, 0, 1538, 1539, 3, 220, 102, 0, 1539, 1540, 1, 0, 0, 0, 1540, 1541, 6, 203, 21, 0, 1541, 1542, 6, 203, 12, 0, 1542, 1543, 6, 203, 36, 0, 1543, 423, 1, 0, 0, 0, 1544, 1545, 3, 92, 38, 0, 1545, 1546, 1, 0, 0, 0, 1546, 1547, 6, 204, 22, 0, 1547, 1548, 6, 204, 12, 0, 1548, 1549, 6, 204, 36, 0, 1549, 425, 1, 0, 0, 0, 1550, 1551, 3, 64, 24, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1553, 6, 205, 11, 0, 1553, 427, 1, 0, 0, 0, 1554, 1555, 3, 66, 25, 0, 1555, 1556, 1, 0, 0, 0, 1556, 1557, 6, 206, 11, 0, 1557, 429, 1, 0, 0, 0, 1558, 1559, 3, 68, 26, 0, 1559, 1560, 1, 0, 0, 0, 1560, 1561, 6, 207, 11, 0, 1561, 431, 1, 0, 0, 0, 1562, 1563, 3, 108, 46, 0, 1563, 1564, 1, 0, 0, 0, 1564, 1565, 6, 208, 18, 0, 1565, 1566, 6, 208, 12, 0, 1566, 1567, 6, 208, 10, 0, 1567, 433, 1, 0, 0, 0, 1568, 1569, 3, 110, 47, 0, 1569, 1570, 1, 0, 0, 0, 1570, 1571, 6, 209, 19, 0, 1571, 1572, 6, 209, 12, 0, 1572, 1573, 6, 209, 10, 0, 1573, 435, 1, 0, 0, 0, 1574, 1575, 3, 64, 24, 0, 1575, 1576, 1, 0, 0, 0, 1576, 1577, 6, 210, 11, 0, 1577, 437, 1, 0, 0, 0, 1578, 1579, 3, 66, 25, 0, 1579, 1580, 1, 0, 0, 0, 1580, 1581, 6, 211, 11, 0, 1581, 439, 1, 0, 0, 0, 1582, 1583, 3, 68, 26, 0, 1583, 1584, 1, 0, 0, 0, 1584, 1585, 6, 212, 11, 0, 1585, 441, 1, 0, 0, 0, 1586, 1587, 3, 186, 85, 0, 1587, 1588, 1, 0, 0, 0, 1588, 1589, 6, 213, 12, 0, 1589, 1590, 6, 213, 0, 0, 1590, 1591, 6, 213, 31, 0, 1591, 443, 1, 0, 0, 0, 1592, 1593, 3, 182, 83, 0, 1593, 1594, 1, 0, 0, 0, 1594, 1595, 6, 214, 12, 0, 1595, 1596, 6, 214, 0, 0, 1596, 1597, 6, 214, 32, 0, 1597, 445, 1, 0, 0, 0, 1598, 1599, 3, 98, 41, 0, 1599, 1600, 1, 0, 0, 0, 1600, 1601, 6, 215, 12, 0, 1601, 1602, 6, 215, 0, 0, 1602, 1603, 6, 215, 37, 0, 1603, 447, 1, 0, 0, 0, 1604, 1605, 3, 70, 27, 0, 1605, 1606, 1, 0, 0, 0, 1606, 1607, 6, 216, 16, 0, 1607, 1608, 6, 216, 12, 0, 1608, 449, 1, 0, 0, 0, 66, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 654, 664, 668, 671, 680, 682, 693, 712, 717, 726, 733, 738, 740, 751, 759, 762, 764, 769, 774, 780, 787, 792, 798, 801, 809, 813, 945, 950, 957, 959, 975, 980, 985, 987, 993, 1070, 1075, 1122, 1126, 1131, 1136, 1141, 1143, 1147, 1149, 1234, 1238, 1243, 1384, 1386, 38, 5, 1, 0, 5, 4, 0, 5, 6, 0, 5, 2, 0, 5, 3, 0, 5, 8, 0, 5, 5, 0, 5, 9, 0, 5, 13, 0, 5, 11, 0, 5, 14, 0, 0, 1, 0, 4, 0, 0, 7, 16, 0, 7, 71, 0, 5, 0, 0, 7, 28, 0, 7, 72, 0, 7, 37, 0, 7, 38, 0, 7, 35, 0, 7, 82, 0, 7, 29, 0, 7, 40, 0, 7, 52, 0, 7, 70, 0, 7, 86, 0, 5, 10, 0, 5, 7, 0, 7, 96, 0, 7, 95, 0, 7, 74, 0, 7, 73, 0, 7, 94, 0, 5, 12, 0, 7, 90, 0, 5, 15, 0, 7, 32, 0] \ No newline at end of file +[4, 0, 138, 1735, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 4, 25, 717, 8, 25, 11, 25, 12, 25, 718, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 727, 8, 26, 10, 26, 12, 26, 730, 9, 26, 1, 26, 3, 26, 733, 8, 26, 1, 26, 3, 26, 736, 8, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 745, 8, 27, 10, 27, 12, 27, 748, 9, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 4, 28, 756, 8, 28, 11, 28, 12, 28, 757, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 777, 8, 34, 1, 34, 4, 34, 780, 8, 34, 11, 34, 12, 34, 781, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 3, 37, 791, 8, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 3, 39, 798, 8, 39, 1, 40, 1, 40, 1, 40, 5, 40, 803, 8, 40, 10, 40, 12, 40, 806, 9, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 814, 8, 40, 10, 40, 12, 40, 817, 9, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 824, 8, 40, 1, 40, 3, 40, 827, 8, 40, 3, 40, 829, 8, 40, 1, 41, 4, 41, 832, 8, 41, 11, 41, 12, 41, 833, 1, 42, 4, 42, 837, 8, 42, 11, 42, 12, 42, 838, 1, 42, 1, 42, 5, 42, 843, 8, 42, 10, 42, 12, 42, 846, 9, 42, 1, 42, 1, 42, 4, 42, 850, 8, 42, 11, 42, 12, 42, 851, 1, 42, 4, 42, 855, 8, 42, 11, 42, 12, 42, 856, 1, 42, 1, 42, 5, 42, 861, 8, 42, 10, 42, 12, 42, 864, 9, 42, 3, 42, 866, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 4, 42, 872, 8, 42, 11, 42, 12, 42, 873, 1, 42, 1, 42, 3, 42, 878, 8, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 79, 1, 79, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 3, 82, 1010, 8, 82, 1, 82, 5, 82, 1013, 8, 82, 10, 82, 12, 82, 1016, 9, 82, 1, 82, 1, 82, 4, 82, 1020, 8, 82, 11, 82, 12, 82, 1021, 3, 82, 1024, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 5, 85, 1038, 8, 85, 10, 85, 12, 85, 1041, 9, 85, 1, 85, 1, 85, 3, 85, 1045, 8, 85, 1, 85, 4, 85, 1048, 8, 85, 11, 85, 12, 85, 1049, 3, 85, 1052, 8, 85, 1, 86, 1, 86, 4, 86, 1056, 8, 86, 11, 86, 12, 86, 1057, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 3, 103, 1135, 8, 103, 1, 104, 4, 104, 1138, 8, 104, 11, 104, 12, 104, 1139, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 3, 115, 1187, 8, 115, 1, 116, 1, 116, 3, 116, 1191, 8, 116, 1, 116, 5, 116, 1194, 8, 116, 10, 116, 12, 116, 1197, 9, 116, 1, 116, 1, 116, 3, 116, 1201, 8, 116, 1, 116, 4, 116, 1204, 8, 116, 11, 116, 12, 116, 1205, 3, 116, 1208, 8, 116, 1, 117, 1, 117, 4, 117, 1212, 8, 117, 11, 117, 12, 117, 1213, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, 4, 137, 1297, 8, 137, 11, 137, 12, 137, 1298, 1, 137, 1, 137, 3, 137, 1303, 8, 137, 1, 137, 4, 137, 1306, 8, 137, 11, 137, 12, 137, 1307, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 4, 170, 1449, 8, 170, 11, 170, 12, 170, 1450, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 2, 746, 815, 0, 234, 18, 1, 20, 2, 22, 3, 24, 4, 26, 5, 28, 6, 30, 7, 32, 8, 34, 9, 36, 10, 38, 11, 40, 12, 42, 13, 44, 14, 46, 15, 48, 16, 50, 17, 52, 18, 54, 19, 56, 20, 58, 21, 60, 22, 62, 23, 64, 24, 66, 25, 68, 26, 70, 27, 72, 28, 74, 29, 76, 30, 78, 0, 80, 0, 82, 0, 84, 0, 86, 0, 88, 0, 90, 0, 92, 0, 94, 0, 96, 0, 98, 31, 100, 32, 102, 33, 104, 34, 106, 35, 108, 36, 110, 37, 112, 38, 114, 39, 116, 40, 118, 41, 120, 42, 122, 43, 124, 44, 126, 45, 128, 46, 130, 47, 132, 48, 134, 49, 136, 50, 138, 51, 140, 52, 142, 53, 144, 54, 146, 55, 148, 56, 150, 57, 152, 58, 154, 59, 156, 60, 158, 61, 160, 62, 162, 63, 164, 64, 166, 65, 168, 66, 170, 67, 172, 68, 174, 69, 176, 70, 178, 71, 180, 0, 182, 72, 184, 73, 186, 74, 188, 75, 190, 0, 192, 76, 194, 77, 196, 78, 198, 79, 200, 0, 202, 0, 204, 80, 206, 81, 208, 82, 210, 0, 212, 0, 214, 0, 216, 0, 218, 0, 220, 0, 222, 83, 224, 0, 226, 84, 228, 0, 230, 0, 232, 85, 234, 86, 236, 87, 238, 0, 240, 0, 242, 0, 244, 0, 246, 0, 248, 0, 250, 0, 252, 88, 254, 89, 256, 90, 258, 91, 260, 0, 262, 0, 264, 0, 266, 0, 268, 0, 270, 0, 272, 92, 274, 0, 276, 93, 278, 94, 280, 95, 282, 0, 284, 0, 286, 96, 288, 97, 290, 0, 292, 98, 294, 0, 296, 99, 298, 100, 300, 101, 302, 0, 304, 0, 306, 0, 308, 0, 310, 0, 312, 0, 314, 0, 316, 0, 318, 0, 320, 102, 322, 103, 324, 104, 326, 0, 328, 0, 330, 0, 332, 0, 334, 0, 336, 0, 338, 105, 340, 106, 342, 107, 344, 0, 346, 108, 348, 109, 350, 110, 352, 111, 354, 0, 356, 0, 358, 112, 360, 113, 362, 114, 364, 115, 366, 0, 368, 0, 370, 0, 372, 0, 374, 0, 376, 0, 378, 0, 380, 116, 382, 117, 384, 118, 386, 0, 388, 0, 390, 0, 392, 0, 394, 119, 396, 120, 398, 121, 400, 0, 402, 122, 404, 0, 406, 0, 408, 123, 410, 0, 412, 0, 414, 0, 416, 0, 418, 0, 420, 124, 422, 125, 424, 126, 426, 0, 428, 0, 430, 0, 432, 127, 434, 128, 436, 129, 438, 0, 440, 0, 442, 130, 444, 131, 446, 132, 448, 0, 450, 0, 452, 0, 454, 0, 456, 0, 458, 0, 460, 0, 462, 0, 464, 0, 466, 0, 468, 0, 470, 133, 472, 134, 474, 135, 476, 0, 478, 0, 480, 136, 482, 137, 484, 138, 18, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 36, 2, 0, 68, 68, 100, 100, 2, 0, 73, 73, 105, 105, 2, 0, 83, 83, 115, 115, 2, 0, 69, 69, 101, 101, 2, 0, 67, 67, 99, 99, 2, 0, 84, 84, 116, 116, 2, 0, 82, 82, 114, 114, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 78, 78, 110, 110, 2, 0, 72, 72, 104, 104, 2, 0, 86, 86, 118, 118, 2, 0, 65, 65, 97, 97, 2, 0, 76, 76, 108, 108, 2, 0, 88, 88, 120, 120, 2, 0, 70, 70, 102, 102, 2, 0, 77, 77, 109, 109, 2, 0, 71, 71, 103, 103, 2, 0, 75, 75, 107, 107, 2, 0, 87, 87, 119, 119, 2, 0, 85, 85, 117, 117, 6, 0, 9, 10, 13, 13, 32, 32, 47, 47, 91, 91, 93, 93, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 1, 0, 48, 57, 2, 0, 65, 90, 97, 122, 8, 0, 34, 34, 78, 78, 82, 82, 84, 84, 92, 92, 110, 110, 114, 114, 116, 116, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 2, 0, 43, 43, 45, 45, 1, 0, 96, 96, 2, 0, 66, 66, 98, 98, 2, 0, 89, 89, 121, 121, 11, 0, 9, 10, 13, 13, 32, 32, 34, 34, 44, 44, 47, 47, 58, 58, 61, 61, 91, 91, 93, 93, 124, 124, 2, 0, 42, 42, 47, 47, 11, 0, 9, 10, 13, 13, 32, 32, 34, 35, 44, 44, 47, 47, 58, 58, 60, 60, 62, 63, 92, 92, 124, 124, 2, 0, 74, 74, 106, 106, 1760, 0, 18, 1, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 22, 1, 0, 0, 0, 0, 24, 1, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 30, 1, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 34, 1, 0, 0, 0, 0, 36, 1, 0, 0, 0, 0, 38, 1, 0, 0, 0, 0, 40, 1, 0, 0, 0, 0, 42, 1, 0, 0, 0, 0, 44, 1, 0, 0, 0, 0, 46, 1, 0, 0, 0, 0, 48, 1, 0, 0, 0, 0, 50, 1, 0, 0, 0, 0, 52, 1, 0, 0, 0, 0, 54, 1, 0, 0, 0, 0, 56, 1, 0, 0, 0, 0, 58, 1, 0, 0, 0, 0, 60, 1, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 66, 1, 0, 0, 0, 0, 68, 1, 0, 0, 0, 0, 70, 1, 0, 0, 0, 0, 72, 1, 0, 0, 0, 0, 74, 1, 0, 0, 0, 1, 76, 1, 0, 0, 0, 1, 98, 1, 0, 0, 0, 1, 100, 1, 0, 0, 0, 1, 102, 1, 0, 0, 0, 1, 104, 1, 0, 0, 0, 1, 106, 1, 0, 0, 0, 1, 108, 1, 0, 0, 0, 1, 110, 1, 0, 0, 0, 1, 112, 1, 0, 0, 0, 1, 114, 1, 0, 0, 0, 1, 116, 1, 0, 0, 0, 1, 118, 1, 0, 0, 0, 1, 120, 1, 0, 0, 0, 1, 122, 1, 0, 0, 0, 1, 124, 1, 0, 0, 0, 1, 126, 1, 0, 0, 0, 1, 128, 1, 0, 0, 0, 1, 130, 1, 0, 0, 0, 1, 132, 1, 0, 0, 0, 1, 134, 1, 0, 0, 0, 1, 136, 1, 0, 0, 0, 1, 138, 1, 0, 0, 0, 1, 140, 1, 0, 0, 0, 1, 142, 1, 0, 0, 0, 1, 144, 1, 0, 0, 0, 1, 146, 1, 0, 0, 0, 1, 148, 1, 0, 0, 0, 1, 150, 1, 0, 0, 0, 1, 152, 1, 0, 0, 0, 1, 154, 1, 0, 0, 0, 1, 156, 1, 0, 0, 0, 1, 158, 1, 0, 0, 0, 1, 160, 1, 0, 0, 0, 1, 162, 1, 0, 0, 0, 1, 164, 1, 0, 0, 0, 1, 166, 1, 0, 0, 0, 1, 168, 1, 0, 0, 0, 1, 170, 1, 0, 0, 0, 1, 172, 1, 0, 0, 0, 1, 174, 1, 0, 0, 0, 1, 176, 1, 0, 0, 0, 1, 178, 1, 0, 0, 0, 1, 180, 1, 0, 0, 0, 1, 182, 1, 0, 0, 0, 1, 184, 1, 0, 0, 0, 1, 186, 1, 0, 0, 0, 1, 188, 1, 0, 0, 0, 1, 192, 1, 0, 0, 0, 1, 194, 1, 0, 0, 0, 1, 196, 1, 0, 0, 0, 1, 198, 1, 0, 0, 0, 2, 200, 1, 0, 0, 0, 2, 202, 1, 0, 0, 0, 2, 204, 1, 0, 0, 0, 2, 206, 1, 0, 0, 0, 2, 208, 1, 0, 0, 0, 3, 210, 1, 0, 0, 0, 3, 212, 1, 0, 0, 0, 3, 214, 1, 0, 0, 0, 3, 216, 1, 0, 0, 0, 3, 218, 1, 0, 0, 0, 3, 220, 1, 0, 0, 0, 3, 222, 1, 0, 0, 0, 3, 226, 1, 0, 0, 0, 3, 228, 1, 0, 0, 0, 3, 230, 1, 0, 0, 0, 3, 232, 1, 0, 0, 0, 3, 234, 1, 0, 0, 0, 3, 236, 1, 0, 0, 0, 4, 238, 1, 0, 0, 0, 4, 240, 1, 0, 0, 0, 4, 242, 1, 0, 0, 0, 4, 244, 1, 0, 0, 0, 4, 246, 1, 0, 0, 0, 4, 252, 1, 0, 0, 0, 4, 254, 1, 0, 0, 0, 4, 256, 1, 0, 0, 0, 4, 258, 1, 0, 0, 0, 5, 260, 1, 0, 0, 0, 5, 262, 1, 0, 0, 0, 5, 264, 1, 0, 0, 0, 5, 266, 1, 0, 0, 0, 5, 268, 1, 0, 0, 0, 5, 270, 1, 0, 0, 0, 5, 272, 1, 0, 0, 0, 5, 274, 1, 0, 0, 0, 5, 276, 1, 0, 0, 0, 5, 278, 1, 0, 0, 0, 5, 280, 1, 0, 0, 0, 6, 282, 1, 0, 0, 0, 6, 284, 1, 0, 0, 0, 6, 286, 1, 0, 0, 0, 6, 288, 1, 0, 0, 0, 6, 292, 1, 0, 0, 0, 6, 294, 1, 0, 0, 0, 6, 296, 1, 0, 0, 0, 6, 298, 1, 0, 0, 0, 6, 300, 1, 0, 0, 0, 7, 302, 1, 0, 0, 0, 7, 304, 1, 0, 0, 0, 7, 306, 1, 0, 0, 0, 7, 308, 1, 0, 0, 0, 7, 310, 1, 0, 0, 0, 7, 312, 1, 0, 0, 0, 7, 314, 1, 0, 0, 0, 7, 316, 1, 0, 0, 0, 7, 318, 1, 0, 0, 0, 7, 320, 1, 0, 0, 0, 7, 322, 1, 0, 0, 0, 7, 324, 1, 0, 0, 0, 8, 326, 1, 0, 0, 0, 8, 328, 1, 0, 0, 0, 8, 330, 1, 0, 0, 0, 8, 332, 1, 0, 0, 0, 8, 334, 1, 0, 0, 0, 8, 336, 1, 0, 0, 0, 8, 338, 1, 0, 0, 0, 8, 340, 1, 0, 0, 0, 8, 342, 1, 0, 0, 0, 9, 344, 1, 0, 0, 0, 9, 346, 1, 0, 0, 0, 9, 348, 1, 0, 0, 0, 9, 350, 1, 0, 0, 0, 9, 352, 1, 0, 0, 0, 10, 354, 1, 0, 0, 0, 10, 356, 1, 0, 0, 0, 10, 358, 1, 0, 0, 0, 10, 360, 1, 0, 0, 0, 10, 362, 1, 0, 0, 0, 10, 364, 1, 0, 0, 0, 11, 366, 1, 0, 0, 0, 11, 368, 1, 0, 0, 0, 11, 370, 1, 0, 0, 0, 11, 372, 1, 0, 0, 0, 11, 374, 1, 0, 0, 0, 11, 376, 1, 0, 0, 0, 11, 378, 1, 0, 0, 0, 11, 380, 1, 0, 0, 0, 11, 382, 1, 0, 0, 0, 11, 384, 1, 0, 0, 0, 12, 386, 1, 0, 0, 0, 12, 388, 1, 0, 0, 0, 12, 390, 1, 0, 0, 0, 12, 392, 1, 0, 0, 0, 12, 394, 1, 0, 0, 0, 12, 396, 1, 0, 0, 0, 12, 398, 1, 0, 0, 0, 13, 400, 1, 0, 0, 0, 13, 402, 1, 0, 0, 0, 13, 404, 1, 0, 0, 0, 13, 406, 1, 0, 0, 0, 13, 408, 1, 0, 0, 0, 13, 410, 1, 0, 0, 0, 13, 412, 1, 0, 0, 0, 13, 414, 1, 0, 0, 0, 13, 416, 1, 0, 0, 0, 13, 418, 1, 0, 0, 0, 13, 420, 1, 0, 0, 0, 13, 422, 1, 0, 0, 0, 13, 424, 1, 0, 0, 0, 14, 426, 1, 0, 0, 0, 14, 428, 1, 0, 0, 0, 14, 430, 1, 0, 0, 0, 14, 432, 1, 0, 0, 0, 14, 434, 1, 0, 0, 0, 14, 436, 1, 0, 0, 0, 15, 438, 1, 0, 0, 0, 15, 440, 1, 0, 0, 0, 15, 442, 1, 0, 0, 0, 15, 444, 1, 0, 0, 0, 15, 446, 1, 0, 0, 0, 15, 448, 1, 0, 0, 0, 15, 450, 1, 0, 0, 0, 15, 452, 1, 0, 0, 0, 15, 454, 1, 0, 0, 0, 16, 456, 1, 0, 0, 0, 16, 458, 1, 0, 0, 0, 16, 460, 1, 0, 0, 0, 16, 462, 1, 0, 0, 0, 16, 464, 1, 0, 0, 0, 16, 466, 1, 0, 0, 0, 16, 468, 1, 0, 0, 0, 16, 470, 1, 0, 0, 0, 16, 472, 1, 0, 0, 0, 16, 474, 1, 0, 0, 0, 17, 476, 1, 0, 0, 0, 17, 478, 1, 0, 0, 0, 17, 480, 1, 0, 0, 0, 17, 482, 1, 0, 0, 0, 17, 484, 1, 0, 0, 0, 18, 486, 1, 0, 0, 0, 20, 496, 1, 0, 0, 0, 22, 503, 1, 0, 0, 0, 24, 512, 1, 0, 0, 0, 26, 519, 1, 0, 0, 0, 28, 529, 1, 0, 0, 0, 30, 536, 1, 0, 0, 0, 32, 543, 1, 0, 0, 0, 34, 550, 1, 0, 0, 0, 36, 558, 1, 0, 0, 0, 38, 570, 1, 0, 0, 0, 40, 579, 1, 0, 0, 0, 42, 585, 1, 0, 0, 0, 44, 592, 1, 0, 0, 0, 46, 599, 1, 0, 0, 0, 48, 607, 1, 0, 0, 0, 50, 615, 1, 0, 0, 0, 52, 624, 1, 0, 0, 0, 54, 640, 1, 0, 0, 0, 56, 655, 1, 0, 0, 0, 58, 667, 1, 0, 0, 0, 60, 679, 1, 0, 0, 0, 62, 690, 1, 0, 0, 0, 64, 698, 1, 0, 0, 0, 66, 706, 1, 0, 0, 0, 68, 716, 1, 0, 0, 0, 70, 722, 1, 0, 0, 0, 72, 739, 1, 0, 0, 0, 74, 755, 1, 0, 0, 0, 76, 761, 1, 0, 0, 0, 78, 765, 1, 0, 0, 0, 80, 767, 1, 0, 0, 0, 82, 769, 1, 0, 0, 0, 84, 772, 1, 0, 0, 0, 86, 774, 1, 0, 0, 0, 88, 783, 1, 0, 0, 0, 90, 785, 1, 0, 0, 0, 92, 790, 1, 0, 0, 0, 94, 792, 1, 0, 0, 0, 96, 797, 1, 0, 0, 0, 98, 828, 1, 0, 0, 0, 100, 831, 1, 0, 0, 0, 102, 877, 1, 0, 0, 0, 104, 879, 1, 0, 0, 0, 106, 882, 1, 0, 0, 0, 108, 886, 1, 0, 0, 0, 110, 890, 1, 0, 0, 0, 112, 892, 1, 0, 0, 0, 114, 895, 1, 0, 0, 0, 116, 897, 1, 0, 0, 0, 118, 899, 1, 0, 0, 0, 120, 904, 1, 0, 0, 0, 122, 906, 1, 0, 0, 0, 124, 912, 1, 0, 0, 0, 126, 918, 1, 0, 0, 0, 128, 921, 1, 0, 0, 0, 130, 924, 1, 0, 0, 0, 132, 929, 1, 0, 0, 0, 134, 934, 1, 0, 0, 0, 136, 936, 1, 0, 0, 0, 138, 940, 1, 0, 0, 0, 140, 945, 1, 0, 0, 0, 142, 951, 1, 0, 0, 0, 144, 954, 1, 0, 0, 0, 146, 956, 1, 0, 0, 0, 148, 962, 1, 0, 0, 0, 150, 964, 1, 0, 0, 0, 152, 969, 1, 0, 0, 0, 154, 972, 1, 0, 0, 0, 156, 975, 1, 0, 0, 0, 158, 978, 1, 0, 0, 0, 160, 980, 1, 0, 0, 0, 162, 983, 1, 0, 0, 0, 164, 985, 1, 0, 0, 0, 166, 988, 1, 0, 0, 0, 168, 990, 1, 0, 0, 0, 170, 992, 1, 0, 0, 0, 172, 994, 1, 0, 0, 0, 174, 996, 1, 0, 0, 0, 176, 998, 1, 0, 0, 0, 178, 1000, 1, 0, 0, 0, 180, 1002, 1, 0, 0, 0, 182, 1023, 1, 0, 0, 0, 184, 1025, 1, 0, 0, 0, 186, 1030, 1, 0, 0, 0, 188, 1051, 1, 0, 0, 0, 190, 1053, 1, 0, 0, 0, 192, 1061, 1, 0, 0, 0, 194, 1063, 1, 0, 0, 0, 196, 1067, 1, 0, 0, 0, 198, 1071, 1, 0, 0, 0, 200, 1075, 1, 0, 0, 0, 202, 1080, 1, 0, 0, 0, 204, 1085, 1, 0, 0, 0, 206, 1089, 1, 0, 0, 0, 208, 1093, 1, 0, 0, 0, 210, 1097, 1, 0, 0, 0, 212, 1102, 1, 0, 0, 0, 214, 1106, 1, 0, 0, 0, 216, 1110, 1, 0, 0, 0, 218, 1114, 1, 0, 0, 0, 220, 1118, 1, 0, 0, 0, 222, 1122, 1, 0, 0, 0, 224, 1134, 1, 0, 0, 0, 226, 1137, 1, 0, 0, 0, 228, 1141, 1, 0, 0, 0, 230, 1145, 1, 0, 0, 0, 232, 1149, 1, 0, 0, 0, 234, 1153, 1, 0, 0, 0, 236, 1157, 1, 0, 0, 0, 238, 1161, 1, 0, 0, 0, 240, 1166, 1, 0, 0, 0, 242, 1170, 1, 0, 0, 0, 244, 1174, 1, 0, 0, 0, 246, 1178, 1, 0, 0, 0, 248, 1186, 1, 0, 0, 0, 250, 1207, 1, 0, 0, 0, 252, 1211, 1, 0, 0, 0, 254, 1215, 1, 0, 0, 0, 256, 1219, 1, 0, 0, 0, 258, 1223, 1, 0, 0, 0, 260, 1227, 1, 0, 0, 0, 262, 1232, 1, 0, 0, 0, 264, 1236, 1, 0, 0, 0, 266, 1240, 1, 0, 0, 0, 268, 1244, 1, 0, 0, 0, 270, 1248, 1, 0, 0, 0, 272, 1252, 1, 0, 0, 0, 274, 1255, 1, 0, 0, 0, 276, 1259, 1, 0, 0, 0, 278, 1263, 1, 0, 0, 0, 280, 1267, 1, 0, 0, 0, 282, 1271, 1, 0, 0, 0, 284, 1276, 1, 0, 0, 0, 286, 1281, 1, 0, 0, 0, 288, 1286, 1, 0, 0, 0, 290, 1293, 1, 0, 0, 0, 292, 1302, 1, 0, 0, 0, 294, 1309, 1, 0, 0, 0, 296, 1313, 1, 0, 0, 0, 298, 1317, 1, 0, 0, 0, 300, 1321, 1, 0, 0, 0, 302, 1325, 1, 0, 0, 0, 304, 1331, 1, 0, 0, 0, 306, 1335, 1, 0, 0, 0, 308, 1339, 1, 0, 0, 0, 310, 1343, 1, 0, 0, 0, 312, 1347, 1, 0, 0, 0, 314, 1351, 1, 0, 0, 0, 316, 1355, 1, 0, 0, 0, 318, 1359, 1, 0, 0, 0, 320, 1363, 1, 0, 0, 0, 322, 1367, 1, 0, 0, 0, 324, 1371, 1, 0, 0, 0, 326, 1375, 1, 0, 0, 0, 328, 1380, 1, 0, 0, 0, 330, 1384, 1, 0, 0, 0, 332, 1388, 1, 0, 0, 0, 334, 1392, 1, 0, 0, 0, 336, 1396, 1, 0, 0, 0, 338, 1400, 1, 0, 0, 0, 340, 1404, 1, 0, 0, 0, 342, 1408, 1, 0, 0, 0, 344, 1412, 1, 0, 0, 0, 346, 1417, 1, 0, 0, 0, 348, 1422, 1, 0, 0, 0, 350, 1426, 1, 0, 0, 0, 352, 1430, 1, 0, 0, 0, 354, 1434, 1, 0, 0, 0, 356, 1439, 1, 0, 0, 0, 358, 1448, 1, 0, 0, 0, 360, 1452, 1, 0, 0, 0, 362, 1456, 1, 0, 0, 0, 364, 1460, 1, 0, 0, 0, 366, 1464, 1, 0, 0, 0, 368, 1469, 1, 0, 0, 0, 370, 1473, 1, 0, 0, 0, 372, 1477, 1, 0, 0, 0, 374, 1481, 1, 0, 0, 0, 376, 1486, 1, 0, 0, 0, 378, 1490, 1, 0, 0, 0, 380, 1494, 1, 0, 0, 0, 382, 1498, 1, 0, 0, 0, 384, 1502, 1, 0, 0, 0, 386, 1506, 1, 0, 0, 0, 388, 1512, 1, 0, 0, 0, 390, 1516, 1, 0, 0, 0, 392, 1520, 1, 0, 0, 0, 394, 1524, 1, 0, 0, 0, 396, 1528, 1, 0, 0, 0, 398, 1532, 1, 0, 0, 0, 400, 1536, 1, 0, 0, 0, 402, 1541, 1, 0, 0, 0, 404, 1546, 1, 0, 0, 0, 406, 1550, 1, 0, 0, 0, 408, 1556, 1, 0, 0, 0, 410, 1565, 1, 0, 0, 0, 412, 1569, 1, 0, 0, 0, 414, 1573, 1, 0, 0, 0, 416, 1577, 1, 0, 0, 0, 418, 1581, 1, 0, 0, 0, 420, 1585, 1, 0, 0, 0, 422, 1589, 1, 0, 0, 0, 424, 1593, 1, 0, 0, 0, 426, 1597, 1, 0, 0, 0, 428, 1602, 1, 0, 0, 0, 430, 1608, 1, 0, 0, 0, 432, 1614, 1, 0, 0, 0, 434, 1618, 1, 0, 0, 0, 436, 1622, 1, 0, 0, 0, 438, 1626, 1, 0, 0, 0, 440, 1632, 1, 0, 0, 0, 442, 1638, 1, 0, 0, 0, 444, 1642, 1, 0, 0, 0, 446, 1646, 1, 0, 0, 0, 448, 1650, 1, 0, 0, 0, 450, 1656, 1, 0, 0, 0, 452, 1662, 1, 0, 0, 0, 454, 1668, 1, 0, 0, 0, 456, 1673, 1, 0, 0, 0, 458, 1678, 1, 0, 0, 0, 460, 1682, 1, 0, 0, 0, 462, 1686, 1, 0, 0, 0, 464, 1690, 1, 0, 0, 0, 466, 1694, 1, 0, 0, 0, 468, 1698, 1, 0, 0, 0, 470, 1702, 1, 0, 0, 0, 472, 1706, 1, 0, 0, 0, 474, 1710, 1, 0, 0, 0, 476, 1714, 1, 0, 0, 0, 478, 1719, 1, 0, 0, 0, 480, 1723, 1, 0, 0, 0, 482, 1727, 1, 0, 0, 0, 484, 1731, 1, 0, 0, 0, 486, 487, 7, 0, 0, 0, 487, 488, 7, 1, 0, 0, 488, 489, 7, 2, 0, 0, 489, 490, 7, 2, 0, 0, 490, 491, 7, 3, 0, 0, 491, 492, 7, 4, 0, 0, 492, 493, 7, 5, 0, 0, 493, 494, 1, 0, 0, 0, 494, 495, 6, 0, 0, 0, 495, 19, 1, 0, 0, 0, 496, 497, 7, 0, 0, 0, 497, 498, 7, 6, 0, 0, 498, 499, 7, 7, 0, 0, 499, 500, 7, 8, 0, 0, 500, 501, 1, 0, 0, 0, 501, 502, 6, 1, 1, 0, 502, 21, 1, 0, 0, 0, 503, 504, 7, 3, 0, 0, 504, 505, 7, 9, 0, 0, 505, 506, 7, 6, 0, 0, 506, 507, 7, 1, 0, 0, 507, 508, 7, 4, 0, 0, 508, 509, 7, 10, 0, 0, 509, 510, 1, 0, 0, 0, 510, 511, 6, 2, 2, 0, 511, 23, 1, 0, 0, 0, 512, 513, 7, 3, 0, 0, 513, 514, 7, 11, 0, 0, 514, 515, 7, 12, 0, 0, 515, 516, 7, 13, 0, 0, 516, 517, 1, 0, 0, 0, 517, 518, 6, 3, 0, 0, 518, 25, 1, 0, 0, 0, 519, 520, 7, 3, 0, 0, 520, 521, 7, 14, 0, 0, 521, 522, 7, 8, 0, 0, 522, 523, 7, 13, 0, 0, 523, 524, 7, 12, 0, 0, 524, 525, 7, 1, 0, 0, 525, 526, 7, 9, 0, 0, 526, 527, 1, 0, 0, 0, 527, 528, 6, 4, 3, 0, 528, 27, 1, 0, 0, 0, 529, 530, 7, 15, 0, 0, 530, 531, 7, 6, 0, 0, 531, 532, 7, 7, 0, 0, 532, 533, 7, 16, 0, 0, 533, 534, 1, 0, 0, 0, 534, 535, 6, 5, 4, 0, 535, 29, 1, 0, 0, 0, 536, 537, 7, 17, 0, 0, 537, 538, 7, 6, 0, 0, 538, 539, 7, 7, 0, 0, 539, 540, 7, 18, 0, 0, 540, 541, 1, 0, 0, 0, 541, 542, 6, 6, 0, 0, 542, 31, 1, 0, 0, 0, 543, 544, 7, 18, 0, 0, 544, 545, 7, 3, 0, 0, 545, 546, 7, 3, 0, 0, 546, 547, 7, 8, 0, 0, 547, 548, 1, 0, 0, 0, 548, 549, 6, 7, 1, 0, 549, 33, 1, 0, 0, 0, 550, 551, 7, 13, 0, 0, 551, 552, 7, 1, 0, 0, 552, 553, 7, 16, 0, 0, 553, 554, 7, 1, 0, 0, 554, 555, 7, 5, 0, 0, 555, 556, 1, 0, 0, 0, 556, 557, 6, 8, 0, 0, 557, 35, 1, 0, 0, 0, 558, 559, 7, 16, 0, 0, 559, 560, 7, 11, 0, 0, 560, 561, 5, 95, 0, 0, 561, 562, 7, 3, 0, 0, 562, 563, 7, 14, 0, 0, 563, 564, 7, 8, 0, 0, 564, 565, 7, 12, 0, 0, 565, 566, 7, 9, 0, 0, 566, 567, 7, 0, 0, 0, 567, 568, 1, 0, 0, 0, 568, 569, 6, 9, 5, 0, 569, 37, 1, 0, 0, 0, 570, 571, 7, 6, 0, 0, 571, 572, 7, 3, 0, 0, 572, 573, 7, 9, 0, 0, 573, 574, 7, 12, 0, 0, 574, 575, 7, 16, 0, 0, 575, 576, 7, 3, 0, 0, 576, 577, 1, 0, 0, 0, 577, 578, 6, 10, 6, 0, 578, 39, 1, 0, 0, 0, 579, 580, 7, 6, 0, 0, 580, 581, 7, 7, 0, 0, 581, 582, 7, 19, 0, 0, 582, 583, 1, 0, 0, 0, 583, 584, 6, 11, 0, 0, 584, 41, 1, 0, 0, 0, 585, 586, 7, 2, 0, 0, 586, 587, 7, 10, 0, 0, 587, 588, 7, 7, 0, 0, 588, 589, 7, 19, 0, 0, 589, 590, 1, 0, 0, 0, 590, 591, 6, 12, 7, 0, 591, 43, 1, 0, 0, 0, 592, 593, 7, 2, 0, 0, 593, 594, 7, 7, 0, 0, 594, 595, 7, 6, 0, 0, 595, 596, 7, 5, 0, 0, 596, 597, 1, 0, 0, 0, 597, 598, 6, 13, 0, 0, 598, 45, 1, 0, 0, 0, 599, 600, 7, 2, 0, 0, 600, 601, 7, 5, 0, 0, 601, 602, 7, 12, 0, 0, 602, 603, 7, 5, 0, 0, 603, 604, 7, 2, 0, 0, 604, 605, 1, 0, 0, 0, 605, 606, 6, 14, 0, 0, 606, 47, 1, 0, 0, 0, 607, 608, 7, 19, 0, 0, 608, 609, 7, 10, 0, 0, 609, 610, 7, 3, 0, 0, 610, 611, 7, 6, 0, 0, 611, 612, 7, 3, 0, 0, 612, 613, 1, 0, 0, 0, 613, 614, 6, 15, 0, 0, 614, 49, 1, 0, 0, 0, 615, 616, 7, 13, 0, 0, 616, 617, 7, 7, 0, 0, 617, 618, 7, 7, 0, 0, 618, 619, 7, 18, 0, 0, 619, 620, 7, 20, 0, 0, 620, 621, 7, 8, 0, 0, 621, 622, 1, 0, 0, 0, 622, 623, 6, 16, 8, 0, 623, 51, 1, 0, 0, 0, 624, 625, 4, 17, 0, 0, 625, 626, 7, 4, 0, 0, 626, 627, 7, 10, 0, 0, 627, 628, 7, 12, 0, 0, 628, 629, 7, 9, 0, 0, 629, 630, 7, 17, 0, 0, 630, 631, 7, 3, 0, 0, 631, 632, 5, 95, 0, 0, 632, 633, 7, 8, 0, 0, 633, 634, 7, 7, 0, 0, 634, 635, 7, 1, 0, 0, 635, 636, 7, 9, 0, 0, 636, 637, 7, 5, 0, 0, 637, 638, 1, 0, 0, 0, 638, 639, 6, 17, 9, 0, 639, 53, 1, 0, 0, 0, 640, 641, 4, 18, 1, 0, 641, 642, 7, 1, 0, 0, 642, 643, 7, 9, 0, 0, 643, 644, 7, 13, 0, 0, 644, 645, 7, 1, 0, 0, 645, 646, 7, 9, 0, 0, 646, 647, 7, 3, 0, 0, 647, 648, 7, 2, 0, 0, 648, 649, 7, 5, 0, 0, 649, 650, 7, 12, 0, 0, 650, 651, 7, 5, 0, 0, 651, 652, 7, 2, 0, 0, 652, 653, 1, 0, 0, 0, 653, 654, 6, 18, 0, 0, 654, 55, 1, 0, 0, 0, 655, 656, 4, 19, 2, 0, 656, 657, 7, 1, 0, 0, 657, 658, 7, 9, 0, 0, 658, 659, 7, 2, 0, 0, 659, 660, 7, 1, 0, 0, 660, 661, 7, 2, 0, 0, 661, 662, 7, 5, 0, 0, 662, 663, 5, 95, 0, 0, 663, 664, 5, 128020, 0, 0, 664, 665, 1, 0, 0, 0, 665, 666, 6, 19, 1, 0, 666, 57, 1, 0, 0, 0, 667, 668, 4, 20, 3, 0, 668, 669, 7, 13, 0, 0, 669, 670, 7, 7, 0, 0, 670, 671, 7, 7, 0, 0, 671, 672, 7, 18, 0, 0, 672, 673, 7, 20, 0, 0, 673, 674, 7, 8, 0, 0, 674, 675, 5, 95, 0, 0, 675, 676, 5, 128020, 0, 0, 676, 677, 1, 0, 0, 0, 677, 678, 6, 20, 10, 0, 678, 59, 1, 0, 0, 0, 679, 680, 4, 21, 4, 0, 680, 681, 7, 16, 0, 0, 681, 682, 7, 3, 0, 0, 682, 683, 7, 5, 0, 0, 683, 684, 7, 6, 0, 0, 684, 685, 7, 1, 0, 0, 685, 686, 7, 4, 0, 0, 686, 687, 7, 2, 0, 0, 687, 688, 1, 0, 0, 0, 688, 689, 6, 21, 11, 0, 689, 61, 1, 0, 0, 0, 690, 691, 4, 22, 5, 0, 691, 692, 7, 15, 0, 0, 692, 693, 7, 20, 0, 0, 693, 694, 7, 13, 0, 0, 694, 695, 7, 13, 0, 0, 695, 696, 1, 0, 0, 0, 696, 697, 6, 22, 8, 0, 697, 63, 1, 0, 0, 0, 698, 699, 4, 23, 6, 0, 699, 700, 7, 13, 0, 0, 700, 701, 7, 3, 0, 0, 701, 702, 7, 15, 0, 0, 702, 703, 7, 5, 0, 0, 703, 704, 1, 0, 0, 0, 704, 705, 6, 23, 8, 0, 705, 65, 1, 0, 0, 0, 706, 707, 4, 24, 7, 0, 707, 708, 7, 6, 0, 0, 708, 709, 7, 1, 0, 0, 709, 710, 7, 17, 0, 0, 710, 711, 7, 10, 0, 0, 711, 712, 7, 5, 0, 0, 712, 713, 1, 0, 0, 0, 713, 714, 6, 24, 8, 0, 714, 67, 1, 0, 0, 0, 715, 717, 8, 21, 0, 0, 716, 715, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 716, 1, 0, 0, 0, 718, 719, 1, 0, 0, 0, 719, 720, 1, 0, 0, 0, 720, 721, 6, 25, 0, 0, 721, 69, 1, 0, 0, 0, 722, 723, 5, 47, 0, 0, 723, 724, 5, 47, 0, 0, 724, 728, 1, 0, 0, 0, 725, 727, 8, 22, 0, 0, 726, 725, 1, 0, 0, 0, 727, 730, 1, 0, 0, 0, 728, 726, 1, 0, 0, 0, 728, 729, 1, 0, 0, 0, 729, 732, 1, 0, 0, 0, 730, 728, 1, 0, 0, 0, 731, 733, 5, 13, 0, 0, 732, 731, 1, 0, 0, 0, 732, 733, 1, 0, 0, 0, 733, 735, 1, 0, 0, 0, 734, 736, 5, 10, 0, 0, 735, 734, 1, 0, 0, 0, 735, 736, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 738, 6, 26, 12, 0, 738, 71, 1, 0, 0, 0, 739, 740, 5, 47, 0, 0, 740, 741, 5, 42, 0, 0, 741, 746, 1, 0, 0, 0, 742, 745, 3, 72, 27, 0, 743, 745, 9, 0, 0, 0, 744, 742, 1, 0, 0, 0, 744, 743, 1, 0, 0, 0, 745, 748, 1, 0, 0, 0, 746, 747, 1, 0, 0, 0, 746, 744, 1, 0, 0, 0, 747, 749, 1, 0, 0, 0, 748, 746, 1, 0, 0, 0, 749, 750, 5, 42, 0, 0, 750, 751, 5, 47, 0, 0, 751, 752, 1, 0, 0, 0, 752, 753, 6, 27, 12, 0, 753, 73, 1, 0, 0, 0, 754, 756, 7, 23, 0, 0, 755, 754, 1, 0, 0, 0, 756, 757, 1, 0, 0, 0, 757, 755, 1, 0, 0, 0, 757, 758, 1, 0, 0, 0, 758, 759, 1, 0, 0, 0, 759, 760, 6, 28, 12, 0, 760, 75, 1, 0, 0, 0, 761, 762, 5, 124, 0, 0, 762, 763, 1, 0, 0, 0, 763, 764, 6, 29, 13, 0, 764, 77, 1, 0, 0, 0, 765, 766, 7, 24, 0, 0, 766, 79, 1, 0, 0, 0, 767, 768, 7, 25, 0, 0, 768, 81, 1, 0, 0, 0, 769, 770, 5, 92, 0, 0, 770, 771, 7, 26, 0, 0, 771, 83, 1, 0, 0, 0, 772, 773, 8, 27, 0, 0, 773, 85, 1, 0, 0, 0, 774, 776, 7, 3, 0, 0, 775, 777, 7, 28, 0, 0, 776, 775, 1, 0, 0, 0, 776, 777, 1, 0, 0, 0, 777, 779, 1, 0, 0, 0, 778, 780, 3, 78, 30, 0, 779, 778, 1, 0, 0, 0, 780, 781, 1, 0, 0, 0, 781, 779, 1, 0, 0, 0, 781, 782, 1, 0, 0, 0, 782, 87, 1, 0, 0, 0, 783, 784, 5, 64, 0, 0, 784, 89, 1, 0, 0, 0, 785, 786, 5, 96, 0, 0, 786, 91, 1, 0, 0, 0, 787, 791, 8, 29, 0, 0, 788, 789, 5, 96, 0, 0, 789, 791, 5, 96, 0, 0, 790, 787, 1, 0, 0, 0, 790, 788, 1, 0, 0, 0, 791, 93, 1, 0, 0, 0, 792, 793, 5, 95, 0, 0, 793, 95, 1, 0, 0, 0, 794, 798, 3, 80, 31, 0, 795, 798, 3, 78, 30, 0, 796, 798, 3, 94, 38, 0, 797, 794, 1, 0, 0, 0, 797, 795, 1, 0, 0, 0, 797, 796, 1, 0, 0, 0, 798, 97, 1, 0, 0, 0, 799, 804, 5, 34, 0, 0, 800, 803, 3, 82, 32, 0, 801, 803, 3, 84, 33, 0, 802, 800, 1, 0, 0, 0, 802, 801, 1, 0, 0, 0, 803, 806, 1, 0, 0, 0, 804, 802, 1, 0, 0, 0, 804, 805, 1, 0, 0, 0, 805, 807, 1, 0, 0, 0, 806, 804, 1, 0, 0, 0, 807, 829, 5, 34, 0, 0, 808, 809, 5, 34, 0, 0, 809, 810, 5, 34, 0, 0, 810, 811, 5, 34, 0, 0, 811, 815, 1, 0, 0, 0, 812, 814, 8, 22, 0, 0, 813, 812, 1, 0, 0, 0, 814, 817, 1, 0, 0, 0, 815, 816, 1, 0, 0, 0, 815, 813, 1, 0, 0, 0, 816, 818, 1, 0, 0, 0, 817, 815, 1, 0, 0, 0, 818, 819, 5, 34, 0, 0, 819, 820, 5, 34, 0, 0, 820, 821, 5, 34, 0, 0, 821, 823, 1, 0, 0, 0, 822, 824, 5, 34, 0, 0, 823, 822, 1, 0, 0, 0, 823, 824, 1, 0, 0, 0, 824, 826, 1, 0, 0, 0, 825, 827, 5, 34, 0, 0, 826, 825, 1, 0, 0, 0, 826, 827, 1, 0, 0, 0, 827, 829, 1, 0, 0, 0, 828, 799, 1, 0, 0, 0, 828, 808, 1, 0, 0, 0, 829, 99, 1, 0, 0, 0, 830, 832, 3, 78, 30, 0, 831, 830, 1, 0, 0, 0, 832, 833, 1, 0, 0, 0, 833, 831, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, 101, 1, 0, 0, 0, 835, 837, 3, 78, 30, 0, 836, 835, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 836, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 840, 1, 0, 0, 0, 840, 844, 3, 120, 51, 0, 841, 843, 3, 78, 30, 0, 842, 841, 1, 0, 0, 0, 843, 846, 1, 0, 0, 0, 844, 842, 1, 0, 0, 0, 844, 845, 1, 0, 0, 0, 845, 878, 1, 0, 0, 0, 846, 844, 1, 0, 0, 0, 847, 849, 3, 120, 51, 0, 848, 850, 3, 78, 30, 0, 849, 848, 1, 0, 0, 0, 850, 851, 1, 0, 0, 0, 851, 849, 1, 0, 0, 0, 851, 852, 1, 0, 0, 0, 852, 878, 1, 0, 0, 0, 853, 855, 3, 78, 30, 0, 854, 853, 1, 0, 0, 0, 855, 856, 1, 0, 0, 0, 856, 854, 1, 0, 0, 0, 856, 857, 1, 0, 0, 0, 857, 865, 1, 0, 0, 0, 858, 862, 3, 120, 51, 0, 859, 861, 3, 78, 30, 0, 860, 859, 1, 0, 0, 0, 861, 864, 1, 0, 0, 0, 862, 860, 1, 0, 0, 0, 862, 863, 1, 0, 0, 0, 863, 866, 1, 0, 0, 0, 864, 862, 1, 0, 0, 0, 865, 858, 1, 0, 0, 0, 865, 866, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, 868, 3, 86, 34, 0, 868, 878, 1, 0, 0, 0, 869, 871, 3, 120, 51, 0, 870, 872, 3, 78, 30, 0, 871, 870, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 871, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 875, 1, 0, 0, 0, 875, 876, 3, 86, 34, 0, 876, 878, 1, 0, 0, 0, 877, 836, 1, 0, 0, 0, 877, 847, 1, 0, 0, 0, 877, 854, 1, 0, 0, 0, 877, 869, 1, 0, 0, 0, 878, 103, 1, 0, 0, 0, 879, 880, 7, 30, 0, 0, 880, 881, 7, 31, 0, 0, 881, 105, 1, 0, 0, 0, 882, 883, 7, 12, 0, 0, 883, 884, 7, 9, 0, 0, 884, 885, 7, 0, 0, 0, 885, 107, 1, 0, 0, 0, 886, 887, 7, 12, 0, 0, 887, 888, 7, 2, 0, 0, 888, 889, 7, 4, 0, 0, 889, 109, 1, 0, 0, 0, 890, 891, 5, 61, 0, 0, 891, 111, 1, 0, 0, 0, 892, 893, 5, 58, 0, 0, 893, 894, 5, 58, 0, 0, 894, 113, 1, 0, 0, 0, 895, 896, 5, 58, 0, 0, 896, 115, 1, 0, 0, 0, 897, 898, 5, 44, 0, 0, 898, 117, 1, 0, 0, 0, 899, 900, 7, 0, 0, 0, 900, 901, 7, 3, 0, 0, 901, 902, 7, 2, 0, 0, 902, 903, 7, 4, 0, 0, 903, 119, 1, 0, 0, 0, 904, 905, 5, 46, 0, 0, 905, 121, 1, 0, 0, 0, 906, 907, 7, 15, 0, 0, 907, 908, 7, 12, 0, 0, 908, 909, 7, 13, 0, 0, 909, 910, 7, 2, 0, 0, 910, 911, 7, 3, 0, 0, 911, 123, 1, 0, 0, 0, 912, 913, 7, 15, 0, 0, 913, 914, 7, 1, 0, 0, 914, 915, 7, 6, 0, 0, 915, 916, 7, 2, 0, 0, 916, 917, 7, 5, 0, 0, 917, 125, 1, 0, 0, 0, 918, 919, 7, 1, 0, 0, 919, 920, 7, 9, 0, 0, 920, 127, 1, 0, 0, 0, 921, 922, 7, 1, 0, 0, 922, 923, 7, 2, 0, 0, 923, 129, 1, 0, 0, 0, 924, 925, 7, 13, 0, 0, 925, 926, 7, 12, 0, 0, 926, 927, 7, 2, 0, 0, 927, 928, 7, 5, 0, 0, 928, 131, 1, 0, 0, 0, 929, 930, 7, 13, 0, 0, 930, 931, 7, 1, 0, 0, 931, 932, 7, 18, 0, 0, 932, 933, 7, 3, 0, 0, 933, 133, 1, 0, 0, 0, 934, 935, 5, 40, 0, 0, 935, 135, 1, 0, 0, 0, 936, 937, 7, 9, 0, 0, 937, 938, 7, 7, 0, 0, 938, 939, 7, 5, 0, 0, 939, 137, 1, 0, 0, 0, 940, 941, 7, 9, 0, 0, 941, 942, 7, 20, 0, 0, 942, 943, 7, 13, 0, 0, 943, 944, 7, 13, 0, 0, 944, 139, 1, 0, 0, 0, 945, 946, 7, 9, 0, 0, 946, 947, 7, 20, 0, 0, 947, 948, 7, 13, 0, 0, 948, 949, 7, 13, 0, 0, 949, 950, 7, 2, 0, 0, 950, 141, 1, 0, 0, 0, 951, 952, 7, 7, 0, 0, 952, 953, 7, 6, 0, 0, 953, 143, 1, 0, 0, 0, 954, 955, 5, 63, 0, 0, 955, 145, 1, 0, 0, 0, 956, 957, 7, 6, 0, 0, 957, 958, 7, 13, 0, 0, 958, 959, 7, 1, 0, 0, 959, 960, 7, 18, 0, 0, 960, 961, 7, 3, 0, 0, 961, 147, 1, 0, 0, 0, 962, 963, 5, 41, 0, 0, 963, 149, 1, 0, 0, 0, 964, 965, 7, 5, 0, 0, 965, 966, 7, 6, 0, 0, 966, 967, 7, 20, 0, 0, 967, 968, 7, 3, 0, 0, 968, 151, 1, 0, 0, 0, 969, 970, 5, 61, 0, 0, 970, 971, 5, 61, 0, 0, 971, 153, 1, 0, 0, 0, 972, 973, 5, 61, 0, 0, 973, 974, 5, 126, 0, 0, 974, 155, 1, 0, 0, 0, 975, 976, 5, 33, 0, 0, 976, 977, 5, 61, 0, 0, 977, 157, 1, 0, 0, 0, 978, 979, 5, 60, 0, 0, 979, 159, 1, 0, 0, 0, 980, 981, 5, 60, 0, 0, 981, 982, 5, 61, 0, 0, 982, 161, 1, 0, 0, 0, 983, 984, 5, 62, 0, 0, 984, 163, 1, 0, 0, 0, 985, 986, 5, 62, 0, 0, 986, 987, 5, 61, 0, 0, 987, 165, 1, 0, 0, 0, 988, 989, 5, 43, 0, 0, 989, 167, 1, 0, 0, 0, 990, 991, 5, 45, 0, 0, 991, 169, 1, 0, 0, 0, 992, 993, 5, 42, 0, 0, 993, 171, 1, 0, 0, 0, 994, 995, 5, 47, 0, 0, 995, 173, 1, 0, 0, 0, 996, 997, 5, 37, 0, 0, 997, 175, 1, 0, 0, 0, 998, 999, 5, 123, 0, 0, 999, 177, 1, 0, 0, 0, 1000, 1001, 5, 125, 0, 0, 1001, 179, 1, 0, 0, 0, 1002, 1003, 3, 48, 15, 0, 1003, 1004, 1, 0, 0, 0, 1004, 1005, 6, 81, 14, 0, 1005, 181, 1, 0, 0, 0, 1006, 1009, 3, 144, 63, 0, 1007, 1010, 3, 80, 31, 0, 1008, 1010, 3, 94, 38, 0, 1009, 1007, 1, 0, 0, 0, 1009, 1008, 1, 0, 0, 0, 1010, 1014, 1, 0, 0, 0, 1011, 1013, 3, 96, 39, 0, 1012, 1011, 1, 0, 0, 0, 1013, 1016, 1, 0, 0, 0, 1014, 1012, 1, 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 1024, 1, 0, 0, 0, 1016, 1014, 1, 0, 0, 0, 1017, 1019, 3, 144, 63, 0, 1018, 1020, 3, 78, 30, 0, 1019, 1018, 1, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 1019, 1, 0, 0, 0, 1021, 1022, 1, 0, 0, 0, 1022, 1024, 1, 0, 0, 0, 1023, 1006, 1, 0, 0, 0, 1023, 1017, 1, 0, 0, 0, 1024, 183, 1, 0, 0, 0, 1025, 1026, 5, 91, 0, 0, 1026, 1027, 1, 0, 0, 0, 1027, 1028, 6, 83, 0, 0, 1028, 1029, 6, 83, 0, 0, 1029, 185, 1, 0, 0, 0, 1030, 1031, 5, 93, 0, 0, 1031, 1032, 1, 0, 0, 0, 1032, 1033, 6, 84, 13, 0, 1033, 1034, 6, 84, 13, 0, 1034, 187, 1, 0, 0, 0, 1035, 1039, 3, 80, 31, 0, 1036, 1038, 3, 96, 39, 0, 1037, 1036, 1, 0, 0, 0, 1038, 1041, 1, 0, 0, 0, 1039, 1037, 1, 0, 0, 0, 1039, 1040, 1, 0, 0, 0, 1040, 1052, 1, 0, 0, 0, 1041, 1039, 1, 0, 0, 0, 1042, 1045, 3, 94, 38, 0, 1043, 1045, 3, 88, 35, 0, 1044, 1042, 1, 0, 0, 0, 1044, 1043, 1, 0, 0, 0, 1045, 1047, 1, 0, 0, 0, 1046, 1048, 3, 96, 39, 0, 1047, 1046, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 1047, 1, 0, 0, 0, 1049, 1050, 1, 0, 0, 0, 1050, 1052, 1, 0, 0, 0, 1051, 1035, 1, 0, 0, 0, 1051, 1044, 1, 0, 0, 0, 1052, 189, 1, 0, 0, 0, 1053, 1055, 3, 90, 36, 0, 1054, 1056, 3, 92, 37, 0, 1055, 1054, 1, 0, 0, 0, 1056, 1057, 1, 0, 0, 0, 1057, 1055, 1, 0, 0, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1059, 1, 0, 0, 0, 1059, 1060, 3, 90, 36, 0, 1060, 191, 1, 0, 0, 0, 1061, 1062, 3, 190, 86, 0, 1062, 193, 1, 0, 0, 0, 1063, 1064, 3, 70, 26, 0, 1064, 1065, 1, 0, 0, 0, 1065, 1066, 6, 88, 12, 0, 1066, 195, 1, 0, 0, 0, 1067, 1068, 3, 72, 27, 0, 1068, 1069, 1, 0, 0, 0, 1069, 1070, 6, 89, 12, 0, 1070, 197, 1, 0, 0, 0, 1071, 1072, 3, 74, 28, 0, 1072, 1073, 1, 0, 0, 0, 1073, 1074, 6, 90, 12, 0, 1074, 199, 1, 0, 0, 0, 1075, 1076, 3, 184, 83, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1078, 6, 91, 15, 0, 1078, 1079, 6, 91, 16, 0, 1079, 201, 1, 0, 0, 0, 1080, 1081, 3, 76, 29, 0, 1081, 1082, 1, 0, 0, 0, 1082, 1083, 6, 92, 17, 0, 1083, 1084, 6, 92, 13, 0, 1084, 203, 1, 0, 0, 0, 1085, 1086, 3, 74, 28, 0, 1086, 1087, 1, 0, 0, 0, 1087, 1088, 6, 93, 12, 0, 1088, 205, 1, 0, 0, 0, 1089, 1090, 3, 70, 26, 0, 1090, 1091, 1, 0, 0, 0, 1091, 1092, 6, 94, 12, 0, 1092, 207, 1, 0, 0, 0, 1093, 1094, 3, 72, 27, 0, 1094, 1095, 1, 0, 0, 0, 1095, 1096, 6, 95, 12, 0, 1096, 209, 1, 0, 0, 0, 1097, 1098, 3, 76, 29, 0, 1098, 1099, 1, 0, 0, 0, 1099, 1100, 6, 96, 17, 0, 1100, 1101, 6, 96, 13, 0, 1101, 211, 1, 0, 0, 0, 1102, 1103, 3, 184, 83, 0, 1103, 1104, 1, 0, 0, 0, 1104, 1105, 6, 97, 15, 0, 1105, 213, 1, 0, 0, 0, 1106, 1107, 3, 186, 84, 0, 1107, 1108, 1, 0, 0, 0, 1108, 1109, 6, 98, 18, 0, 1109, 215, 1, 0, 0, 0, 1110, 1111, 3, 114, 48, 0, 1111, 1112, 1, 0, 0, 0, 1112, 1113, 6, 99, 19, 0, 1113, 217, 1, 0, 0, 0, 1114, 1115, 3, 116, 49, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1117, 6, 100, 20, 0, 1117, 219, 1, 0, 0, 0, 1118, 1119, 3, 110, 46, 0, 1119, 1120, 1, 0, 0, 0, 1120, 1121, 6, 101, 21, 0, 1121, 221, 1, 0, 0, 0, 1122, 1123, 7, 16, 0, 0, 1123, 1124, 7, 3, 0, 0, 1124, 1125, 7, 5, 0, 0, 1125, 1126, 7, 12, 0, 0, 1126, 1127, 7, 0, 0, 0, 1127, 1128, 7, 12, 0, 0, 1128, 1129, 7, 5, 0, 0, 1129, 1130, 7, 12, 0, 0, 1130, 223, 1, 0, 0, 0, 1131, 1135, 8, 32, 0, 0, 1132, 1133, 5, 47, 0, 0, 1133, 1135, 8, 33, 0, 0, 1134, 1131, 1, 0, 0, 0, 1134, 1132, 1, 0, 0, 0, 1135, 225, 1, 0, 0, 0, 1136, 1138, 3, 224, 103, 0, 1137, 1136, 1, 0, 0, 0, 1138, 1139, 1, 0, 0, 0, 1139, 1137, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 227, 1, 0, 0, 0, 1141, 1142, 3, 226, 104, 0, 1142, 1143, 1, 0, 0, 0, 1143, 1144, 6, 105, 22, 0, 1144, 229, 1, 0, 0, 0, 1145, 1146, 3, 98, 40, 0, 1146, 1147, 1, 0, 0, 0, 1147, 1148, 6, 106, 23, 0, 1148, 231, 1, 0, 0, 0, 1149, 1150, 3, 70, 26, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1152, 6, 107, 12, 0, 1152, 233, 1, 0, 0, 0, 1153, 1154, 3, 72, 27, 0, 1154, 1155, 1, 0, 0, 0, 1155, 1156, 6, 108, 12, 0, 1156, 235, 1, 0, 0, 0, 1157, 1158, 3, 74, 28, 0, 1158, 1159, 1, 0, 0, 0, 1159, 1160, 6, 109, 12, 0, 1160, 237, 1, 0, 0, 0, 1161, 1162, 3, 76, 29, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1164, 6, 110, 17, 0, 1164, 1165, 6, 110, 13, 0, 1165, 239, 1, 0, 0, 0, 1166, 1167, 3, 120, 51, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1169, 6, 111, 24, 0, 1169, 241, 1, 0, 0, 0, 1170, 1171, 3, 116, 49, 0, 1171, 1172, 1, 0, 0, 0, 1172, 1173, 6, 112, 20, 0, 1173, 243, 1, 0, 0, 0, 1174, 1175, 3, 144, 63, 0, 1175, 1176, 1, 0, 0, 0, 1176, 1177, 6, 113, 25, 0, 1177, 245, 1, 0, 0, 0, 1178, 1179, 3, 182, 82, 0, 1179, 1180, 1, 0, 0, 0, 1180, 1181, 6, 114, 26, 0, 1181, 247, 1, 0, 0, 0, 1182, 1187, 3, 80, 31, 0, 1183, 1187, 3, 78, 30, 0, 1184, 1187, 3, 94, 38, 0, 1185, 1187, 3, 170, 76, 0, 1186, 1182, 1, 0, 0, 0, 1186, 1183, 1, 0, 0, 0, 1186, 1184, 1, 0, 0, 0, 1186, 1185, 1, 0, 0, 0, 1187, 249, 1, 0, 0, 0, 1188, 1191, 3, 80, 31, 0, 1189, 1191, 3, 170, 76, 0, 1190, 1188, 1, 0, 0, 0, 1190, 1189, 1, 0, 0, 0, 1191, 1195, 1, 0, 0, 0, 1192, 1194, 3, 248, 115, 0, 1193, 1192, 1, 0, 0, 0, 1194, 1197, 1, 0, 0, 0, 1195, 1193, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 1208, 1, 0, 0, 0, 1197, 1195, 1, 0, 0, 0, 1198, 1201, 3, 94, 38, 0, 1199, 1201, 3, 88, 35, 0, 1200, 1198, 1, 0, 0, 0, 1200, 1199, 1, 0, 0, 0, 1201, 1203, 1, 0, 0, 0, 1202, 1204, 3, 248, 115, 0, 1203, 1202, 1, 0, 0, 0, 1204, 1205, 1, 0, 0, 0, 1205, 1203, 1, 0, 0, 0, 1205, 1206, 1, 0, 0, 0, 1206, 1208, 1, 0, 0, 0, 1207, 1190, 1, 0, 0, 0, 1207, 1200, 1, 0, 0, 0, 1208, 251, 1, 0, 0, 0, 1209, 1212, 3, 250, 116, 0, 1210, 1212, 3, 190, 86, 0, 1211, 1209, 1, 0, 0, 0, 1211, 1210, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1211, 1, 0, 0, 0, 1213, 1214, 1, 0, 0, 0, 1214, 253, 1, 0, 0, 0, 1215, 1216, 3, 70, 26, 0, 1216, 1217, 1, 0, 0, 0, 1217, 1218, 6, 118, 12, 0, 1218, 255, 1, 0, 0, 0, 1219, 1220, 3, 72, 27, 0, 1220, 1221, 1, 0, 0, 0, 1221, 1222, 6, 119, 12, 0, 1222, 257, 1, 0, 0, 0, 1223, 1224, 3, 74, 28, 0, 1224, 1225, 1, 0, 0, 0, 1225, 1226, 6, 120, 12, 0, 1226, 259, 1, 0, 0, 0, 1227, 1228, 3, 76, 29, 0, 1228, 1229, 1, 0, 0, 0, 1229, 1230, 6, 121, 17, 0, 1230, 1231, 6, 121, 13, 0, 1231, 261, 1, 0, 0, 0, 1232, 1233, 3, 110, 46, 0, 1233, 1234, 1, 0, 0, 0, 1234, 1235, 6, 122, 21, 0, 1235, 263, 1, 0, 0, 0, 1236, 1237, 3, 116, 49, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, 6, 123, 20, 0, 1239, 265, 1, 0, 0, 0, 1240, 1241, 3, 120, 51, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1243, 6, 124, 24, 0, 1243, 267, 1, 0, 0, 0, 1244, 1245, 3, 144, 63, 0, 1245, 1246, 1, 0, 0, 0, 1246, 1247, 6, 125, 25, 0, 1247, 269, 1, 0, 0, 0, 1248, 1249, 3, 182, 82, 0, 1249, 1250, 1, 0, 0, 0, 1250, 1251, 6, 126, 26, 0, 1251, 271, 1, 0, 0, 0, 1252, 1253, 7, 12, 0, 0, 1253, 1254, 7, 2, 0, 0, 1254, 273, 1, 0, 0, 0, 1255, 1256, 3, 252, 117, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1258, 6, 128, 27, 0, 1258, 275, 1, 0, 0, 0, 1259, 1260, 3, 70, 26, 0, 1260, 1261, 1, 0, 0, 0, 1261, 1262, 6, 129, 12, 0, 1262, 277, 1, 0, 0, 0, 1263, 1264, 3, 72, 27, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1266, 6, 130, 12, 0, 1266, 279, 1, 0, 0, 0, 1267, 1268, 3, 74, 28, 0, 1268, 1269, 1, 0, 0, 0, 1269, 1270, 6, 131, 12, 0, 1270, 281, 1, 0, 0, 0, 1271, 1272, 3, 76, 29, 0, 1272, 1273, 1, 0, 0, 0, 1273, 1274, 6, 132, 17, 0, 1274, 1275, 6, 132, 13, 0, 1275, 283, 1, 0, 0, 0, 1276, 1277, 3, 184, 83, 0, 1277, 1278, 1, 0, 0, 0, 1278, 1279, 6, 133, 15, 0, 1279, 1280, 6, 133, 28, 0, 1280, 285, 1, 0, 0, 0, 1281, 1282, 7, 7, 0, 0, 1282, 1283, 7, 9, 0, 0, 1283, 1284, 1, 0, 0, 0, 1284, 1285, 6, 134, 29, 0, 1285, 287, 1, 0, 0, 0, 1286, 1287, 7, 19, 0, 0, 1287, 1288, 7, 1, 0, 0, 1288, 1289, 7, 5, 0, 0, 1289, 1290, 7, 10, 0, 0, 1290, 1291, 1, 0, 0, 0, 1291, 1292, 6, 135, 29, 0, 1292, 289, 1, 0, 0, 0, 1293, 1294, 8, 34, 0, 0, 1294, 291, 1, 0, 0, 0, 1295, 1297, 3, 290, 136, 0, 1296, 1295, 1, 0, 0, 0, 1297, 1298, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1298, 1299, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1301, 3, 114, 48, 0, 1301, 1303, 1, 0, 0, 0, 1302, 1296, 1, 0, 0, 0, 1302, 1303, 1, 0, 0, 0, 1303, 1305, 1, 0, 0, 0, 1304, 1306, 3, 290, 136, 0, 1305, 1304, 1, 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, 1305, 1, 0, 0, 0, 1307, 1308, 1, 0, 0, 0, 1308, 293, 1, 0, 0, 0, 1309, 1310, 3, 292, 137, 0, 1310, 1311, 1, 0, 0, 0, 1311, 1312, 6, 138, 30, 0, 1312, 295, 1, 0, 0, 0, 1313, 1314, 3, 70, 26, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1316, 6, 139, 12, 0, 1316, 297, 1, 0, 0, 0, 1317, 1318, 3, 72, 27, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1320, 6, 140, 12, 0, 1320, 299, 1, 0, 0, 0, 1321, 1322, 3, 74, 28, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1324, 6, 141, 12, 0, 1324, 301, 1, 0, 0, 0, 1325, 1326, 3, 76, 29, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1328, 6, 142, 17, 0, 1328, 1329, 6, 142, 13, 0, 1329, 1330, 6, 142, 13, 0, 1330, 303, 1, 0, 0, 0, 1331, 1332, 3, 110, 46, 0, 1332, 1333, 1, 0, 0, 0, 1333, 1334, 6, 143, 21, 0, 1334, 305, 1, 0, 0, 0, 1335, 1336, 3, 116, 49, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1338, 6, 144, 20, 0, 1338, 307, 1, 0, 0, 0, 1339, 1340, 3, 120, 51, 0, 1340, 1341, 1, 0, 0, 0, 1341, 1342, 6, 145, 24, 0, 1342, 309, 1, 0, 0, 0, 1343, 1344, 3, 288, 135, 0, 1344, 1345, 1, 0, 0, 0, 1345, 1346, 6, 146, 31, 0, 1346, 311, 1, 0, 0, 0, 1347, 1348, 3, 252, 117, 0, 1348, 1349, 1, 0, 0, 0, 1349, 1350, 6, 147, 27, 0, 1350, 313, 1, 0, 0, 0, 1351, 1352, 3, 192, 87, 0, 1352, 1353, 1, 0, 0, 0, 1353, 1354, 6, 148, 32, 0, 1354, 315, 1, 0, 0, 0, 1355, 1356, 3, 144, 63, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1358, 6, 149, 25, 0, 1358, 317, 1, 0, 0, 0, 1359, 1360, 3, 182, 82, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1362, 6, 150, 26, 0, 1362, 319, 1, 0, 0, 0, 1363, 1364, 3, 70, 26, 0, 1364, 1365, 1, 0, 0, 0, 1365, 1366, 6, 151, 12, 0, 1366, 321, 1, 0, 0, 0, 1367, 1368, 3, 72, 27, 0, 1368, 1369, 1, 0, 0, 0, 1369, 1370, 6, 152, 12, 0, 1370, 323, 1, 0, 0, 0, 1371, 1372, 3, 74, 28, 0, 1372, 1373, 1, 0, 0, 0, 1373, 1374, 6, 153, 12, 0, 1374, 325, 1, 0, 0, 0, 1375, 1376, 3, 76, 29, 0, 1376, 1377, 1, 0, 0, 0, 1377, 1378, 6, 154, 17, 0, 1378, 1379, 6, 154, 13, 0, 1379, 327, 1, 0, 0, 0, 1380, 1381, 3, 120, 51, 0, 1381, 1382, 1, 0, 0, 0, 1382, 1383, 6, 155, 24, 0, 1383, 329, 1, 0, 0, 0, 1384, 1385, 3, 144, 63, 0, 1385, 1386, 1, 0, 0, 0, 1386, 1387, 6, 156, 25, 0, 1387, 331, 1, 0, 0, 0, 1388, 1389, 3, 182, 82, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1391, 6, 157, 26, 0, 1391, 333, 1, 0, 0, 0, 1392, 1393, 3, 192, 87, 0, 1393, 1394, 1, 0, 0, 0, 1394, 1395, 6, 158, 32, 0, 1395, 335, 1, 0, 0, 0, 1396, 1397, 3, 188, 85, 0, 1397, 1398, 1, 0, 0, 0, 1398, 1399, 6, 159, 33, 0, 1399, 337, 1, 0, 0, 0, 1400, 1401, 3, 70, 26, 0, 1401, 1402, 1, 0, 0, 0, 1402, 1403, 6, 160, 12, 0, 1403, 339, 1, 0, 0, 0, 1404, 1405, 3, 72, 27, 0, 1405, 1406, 1, 0, 0, 0, 1406, 1407, 6, 161, 12, 0, 1407, 341, 1, 0, 0, 0, 1408, 1409, 3, 74, 28, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1411, 6, 162, 12, 0, 1411, 343, 1, 0, 0, 0, 1412, 1413, 3, 76, 29, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1415, 6, 163, 17, 0, 1415, 1416, 6, 163, 13, 0, 1416, 345, 1, 0, 0, 0, 1417, 1418, 7, 1, 0, 0, 1418, 1419, 7, 9, 0, 0, 1419, 1420, 7, 15, 0, 0, 1420, 1421, 7, 7, 0, 0, 1421, 347, 1, 0, 0, 0, 1422, 1423, 3, 70, 26, 0, 1423, 1424, 1, 0, 0, 0, 1424, 1425, 6, 165, 12, 0, 1425, 349, 1, 0, 0, 0, 1426, 1427, 3, 72, 27, 0, 1427, 1428, 1, 0, 0, 0, 1428, 1429, 6, 166, 12, 0, 1429, 351, 1, 0, 0, 0, 1430, 1431, 3, 74, 28, 0, 1431, 1432, 1, 0, 0, 0, 1432, 1433, 6, 167, 12, 0, 1433, 353, 1, 0, 0, 0, 1434, 1435, 3, 186, 84, 0, 1435, 1436, 1, 0, 0, 0, 1436, 1437, 6, 168, 18, 0, 1437, 1438, 6, 168, 13, 0, 1438, 355, 1, 0, 0, 0, 1439, 1440, 3, 114, 48, 0, 1440, 1441, 1, 0, 0, 0, 1441, 1442, 6, 169, 19, 0, 1442, 357, 1, 0, 0, 0, 1443, 1449, 3, 88, 35, 0, 1444, 1449, 3, 78, 30, 0, 1445, 1449, 3, 120, 51, 0, 1446, 1449, 3, 80, 31, 0, 1447, 1449, 3, 94, 38, 0, 1448, 1443, 1, 0, 0, 0, 1448, 1444, 1, 0, 0, 0, 1448, 1445, 1, 0, 0, 0, 1448, 1446, 1, 0, 0, 0, 1448, 1447, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1448, 1, 0, 0, 0, 1450, 1451, 1, 0, 0, 0, 1451, 359, 1, 0, 0, 0, 1452, 1453, 3, 70, 26, 0, 1453, 1454, 1, 0, 0, 0, 1454, 1455, 6, 171, 12, 0, 1455, 361, 1, 0, 0, 0, 1456, 1457, 3, 72, 27, 0, 1457, 1458, 1, 0, 0, 0, 1458, 1459, 6, 172, 12, 0, 1459, 363, 1, 0, 0, 0, 1460, 1461, 3, 74, 28, 0, 1461, 1462, 1, 0, 0, 0, 1462, 1463, 6, 173, 12, 0, 1463, 365, 1, 0, 0, 0, 1464, 1465, 3, 76, 29, 0, 1465, 1466, 1, 0, 0, 0, 1466, 1467, 6, 174, 17, 0, 1467, 1468, 6, 174, 13, 0, 1468, 367, 1, 0, 0, 0, 1469, 1470, 3, 114, 48, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1472, 6, 175, 19, 0, 1472, 369, 1, 0, 0, 0, 1473, 1474, 3, 116, 49, 0, 1474, 1475, 1, 0, 0, 0, 1475, 1476, 6, 176, 20, 0, 1476, 371, 1, 0, 0, 0, 1477, 1478, 3, 120, 51, 0, 1478, 1479, 1, 0, 0, 0, 1479, 1480, 6, 177, 24, 0, 1480, 373, 1, 0, 0, 0, 1481, 1482, 3, 286, 134, 0, 1482, 1483, 1, 0, 0, 0, 1483, 1484, 6, 178, 34, 0, 1484, 1485, 6, 178, 35, 0, 1485, 375, 1, 0, 0, 0, 1486, 1487, 3, 226, 104, 0, 1487, 1488, 1, 0, 0, 0, 1488, 1489, 6, 179, 22, 0, 1489, 377, 1, 0, 0, 0, 1490, 1491, 3, 98, 40, 0, 1491, 1492, 1, 0, 0, 0, 1492, 1493, 6, 180, 23, 0, 1493, 379, 1, 0, 0, 0, 1494, 1495, 3, 70, 26, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1497, 6, 181, 12, 0, 1497, 381, 1, 0, 0, 0, 1498, 1499, 3, 72, 27, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1501, 6, 182, 12, 0, 1501, 383, 1, 0, 0, 0, 1502, 1503, 3, 74, 28, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1505, 6, 183, 12, 0, 1505, 385, 1, 0, 0, 0, 1506, 1507, 3, 76, 29, 0, 1507, 1508, 1, 0, 0, 0, 1508, 1509, 6, 184, 17, 0, 1509, 1510, 6, 184, 13, 0, 1510, 1511, 6, 184, 13, 0, 1511, 387, 1, 0, 0, 0, 1512, 1513, 3, 116, 49, 0, 1513, 1514, 1, 0, 0, 0, 1514, 1515, 6, 185, 20, 0, 1515, 389, 1, 0, 0, 0, 1516, 1517, 3, 120, 51, 0, 1517, 1518, 1, 0, 0, 0, 1518, 1519, 6, 186, 24, 0, 1519, 391, 1, 0, 0, 0, 1520, 1521, 3, 252, 117, 0, 1521, 1522, 1, 0, 0, 0, 1522, 1523, 6, 187, 27, 0, 1523, 393, 1, 0, 0, 0, 1524, 1525, 3, 70, 26, 0, 1525, 1526, 1, 0, 0, 0, 1526, 1527, 6, 188, 12, 0, 1527, 395, 1, 0, 0, 0, 1528, 1529, 3, 72, 27, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1531, 6, 189, 12, 0, 1531, 397, 1, 0, 0, 0, 1532, 1533, 3, 74, 28, 0, 1533, 1534, 1, 0, 0, 0, 1534, 1535, 6, 190, 12, 0, 1535, 399, 1, 0, 0, 0, 1536, 1537, 3, 76, 29, 0, 1537, 1538, 1, 0, 0, 0, 1538, 1539, 6, 191, 17, 0, 1539, 1540, 6, 191, 13, 0, 1540, 401, 1, 0, 0, 0, 1541, 1542, 7, 35, 0, 0, 1542, 1543, 7, 7, 0, 0, 1543, 1544, 7, 1, 0, 0, 1544, 1545, 7, 9, 0, 0, 1545, 403, 1, 0, 0, 0, 1546, 1547, 3, 272, 127, 0, 1547, 1548, 1, 0, 0, 0, 1548, 1549, 6, 193, 36, 0, 1549, 405, 1, 0, 0, 0, 1550, 1551, 3, 286, 134, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1553, 6, 194, 34, 0, 1553, 1554, 6, 194, 13, 0, 1554, 1555, 6, 194, 0, 0, 1555, 407, 1, 0, 0, 0, 1556, 1557, 7, 20, 0, 0, 1557, 1558, 7, 2, 0, 0, 1558, 1559, 7, 1, 0, 0, 1559, 1560, 7, 9, 0, 0, 1560, 1561, 7, 17, 0, 0, 1561, 1562, 1, 0, 0, 0, 1562, 1563, 6, 195, 13, 0, 1563, 1564, 6, 195, 0, 0, 1564, 409, 1, 0, 0, 0, 1565, 1566, 3, 226, 104, 0, 1566, 1567, 1, 0, 0, 0, 1567, 1568, 6, 196, 22, 0, 1568, 411, 1, 0, 0, 0, 1569, 1570, 3, 98, 40, 0, 1570, 1571, 1, 0, 0, 0, 1571, 1572, 6, 197, 23, 0, 1572, 413, 1, 0, 0, 0, 1573, 1574, 3, 114, 48, 0, 1574, 1575, 1, 0, 0, 0, 1575, 1576, 6, 198, 19, 0, 1576, 415, 1, 0, 0, 0, 1577, 1578, 3, 188, 85, 0, 1578, 1579, 1, 0, 0, 0, 1579, 1580, 6, 199, 33, 0, 1580, 417, 1, 0, 0, 0, 1581, 1582, 3, 192, 87, 0, 1582, 1583, 1, 0, 0, 0, 1583, 1584, 6, 200, 32, 0, 1584, 419, 1, 0, 0, 0, 1585, 1586, 3, 70, 26, 0, 1586, 1587, 1, 0, 0, 0, 1587, 1588, 6, 201, 12, 0, 1588, 421, 1, 0, 0, 0, 1589, 1590, 3, 72, 27, 0, 1590, 1591, 1, 0, 0, 0, 1591, 1592, 6, 202, 12, 0, 1592, 423, 1, 0, 0, 0, 1593, 1594, 3, 74, 28, 0, 1594, 1595, 1, 0, 0, 0, 1595, 1596, 6, 203, 12, 0, 1596, 425, 1, 0, 0, 0, 1597, 1598, 3, 76, 29, 0, 1598, 1599, 1, 0, 0, 0, 1599, 1600, 6, 204, 17, 0, 1600, 1601, 6, 204, 13, 0, 1601, 427, 1, 0, 0, 0, 1602, 1603, 3, 226, 104, 0, 1603, 1604, 1, 0, 0, 0, 1604, 1605, 6, 205, 22, 0, 1605, 1606, 6, 205, 13, 0, 1606, 1607, 6, 205, 37, 0, 1607, 429, 1, 0, 0, 0, 1608, 1609, 3, 98, 40, 0, 1609, 1610, 1, 0, 0, 0, 1610, 1611, 6, 206, 23, 0, 1611, 1612, 6, 206, 13, 0, 1612, 1613, 6, 206, 37, 0, 1613, 431, 1, 0, 0, 0, 1614, 1615, 3, 70, 26, 0, 1615, 1616, 1, 0, 0, 0, 1616, 1617, 6, 207, 12, 0, 1617, 433, 1, 0, 0, 0, 1618, 1619, 3, 72, 27, 0, 1619, 1620, 1, 0, 0, 0, 1620, 1621, 6, 208, 12, 0, 1621, 435, 1, 0, 0, 0, 1622, 1623, 3, 74, 28, 0, 1623, 1624, 1, 0, 0, 0, 1624, 1625, 6, 209, 12, 0, 1625, 437, 1, 0, 0, 0, 1626, 1627, 3, 114, 48, 0, 1627, 1628, 1, 0, 0, 0, 1628, 1629, 6, 210, 19, 0, 1629, 1630, 6, 210, 13, 0, 1630, 1631, 6, 210, 11, 0, 1631, 439, 1, 0, 0, 0, 1632, 1633, 3, 116, 49, 0, 1633, 1634, 1, 0, 0, 0, 1634, 1635, 6, 211, 20, 0, 1635, 1636, 6, 211, 13, 0, 1636, 1637, 6, 211, 11, 0, 1637, 441, 1, 0, 0, 0, 1638, 1639, 3, 70, 26, 0, 1639, 1640, 1, 0, 0, 0, 1640, 1641, 6, 212, 12, 0, 1641, 443, 1, 0, 0, 0, 1642, 1643, 3, 72, 27, 0, 1643, 1644, 1, 0, 0, 0, 1644, 1645, 6, 213, 12, 0, 1645, 445, 1, 0, 0, 0, 1646, 1647, 3, 74, 28, 0, 1647, 1648, 1, 0, 0, 0, 1648, 1649, 6, 214, 12, 0, 1649, 447, 1, 0, 0, 0, 1650, 1651, 3, 192, 87, 0, 1651, 1652, 1, 0, 0, 0, 1652, 1653, 6, 215, 13, 0, 1653, 1654, 6, 215, 0, 0, 1654, 1655, 6, 215, 32, 0, 1655, 449, 1, 0, 0, 0, 1656, 1657, 3, 188, 85, 0, 1657, 1658, 1, 0, 0, 0, 1658, 1659, 6, 216, 13, 0, 1659, 1660, 6, 216, 0, 0, 1660, 1661, 6, 216, 33, 0, 1661, 451, 1, 0, 0, 0, 1662, 1663, 3, 104, 43, 0, 1663, 1664, 1, 0, 0, 0, 1664, 1665, 6, 217, 13, 0, 1665, 1666, 6, 217, 0, 0, 1666, 1667, 6, 217, 38, 0, 1667, 453, 1, 0, 0, 0, 1668, 1669, 3, 76, 29, 0, 1669, 1670, 1, 0, 0, 0, 1670, 1671, 6, 218, 17, 0, 1671, 1672, 6, 218, 13, 0, 1672, 455, 1, 0, 0, 0, 1673, 1674, 3, 76, 29, 0, 1674, 1675, 1, 0, 0, 0, 1675, 1676, 6, 219, 17, 0, 1676, 1677, 6, 219, 13, 0, 1677, 457, 1, 0, 0, 0, 1678, 1679, 3, 286, 134, 0, 1679, 1680, 1, 0, 0, 0, 1680, 1681, 6, 220, 34, 0, 1681, 459, 1, 0, 0, 0, 1682, 1683, 3, 272, 127, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1685, 6, 221, 36, 0, 1685, 461, 1, 0, 0, 0, 1686, 1687, 3, 120, 51, 0, 1687, 1688, 1, 0, 0, 0, 1688, 1689, 6, 222, 24, 0, 1689, 463, 1, 0, 0, 0, 1690, 1691, 3, 116, 49, 0, 1691, 1692, 1, 0, 0, 0, 1692, 1693, 6, 223, 20, 0, 1693, 465, 1, 0, 0, 0, 1694, 1695, 3, 192, 87, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1697, 6, 224, 32, 0, 1697, 467, 1, 0, 0, 0, 1698, 1699, 3, 188, 85, 0, 1699, 1700, 1, 0, 0, 0, 1700, 1701, 6, 225, 33, 0, 1701, 469, 1, 0, 0, 0, 1702, 1703, 3, 70, 26, 0, 1703, 1704, 1, 0, 0, 0, 1704, 1705, 6, 226, 12, 0, 1705, 471, 1, 0, 0, 0, 1706, 1707, 3, 72, 27, 0, 1707, 1708, 1, 0, 0, 0, 1708, 1709, 6, 227, 12, 0, 1709, 473, 1, 0, 0, 0, 1710, 1711, 3, 74, 28, 0, 1711, 1712, 1, 0, 0, 0, 1712, 1713, 6, 228, 12, 0, 1713, 475, 1, 0, 0, 0, 1714, 1715, 3, 76, 29, 0, 1715, 1716, 1, 0, 0, 0, 1716, 1717, 6, 229, 17, 0, 1717, 1718, 6, 229, 13, 0, 1718, 477, 1, 0, 0, 0, 1719, 1720, 3, 188, 85, 0, 1720, 1721, 1, 0, 0, 0, 1721, 1722, 6, 230, 33, 0, 1722, 479, 1, 0, 0, 0, 1723, 1724, 3, 74, 28, 0, 1724, 1725, 1, 0, 0, 0, 1725, 1726, 6, 231, 12, 0, 1726, 481, 1, 0, 0, 0, 1727, 1728, 3, 70, 26, 0, 1728, 1729, 1, 0, 0, 0, 1729, 1730, 6, 232, 12, 0, 1730, 483, 1, 0, 0, 0, 1731, 1732, 3, 72, 27, 0, 1732, 1733, 1, 0, 0, 0, 1733, 1734, 6, 233, 12, 0, 1734, 485, 1, 0, 0, 0, 68, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 718, 728, 732, 735, 744, 746, 757, 776, 781, 790, 797, 802, 804, 815, 823, 826, 828, 833, 838, 844, 851, 856, 862, 865, 873, 877, 1009, 1014, 1021, 1023, 1039, 1044, 1049, 1051, 1057, 1134, 1139, 1186, 1190, 1195, 1200, 1205, 1207, 1211, 1213, 1298, 1302, 1307, 1448, 1450, 39, 5, 1, 0, 5, 4, 0, 5, 6, 0, 5, 2, 0, 5, 3, 0, 5, 8, 0, 5, 5, 0, 5, 9, 0, 5, 13, 0, 5, 16, 0, 5, 11, 0, 5, 14, 0, 0, 1, 0, 4, 0, 0, 7, 16, 0, 7, 73, 0, 5, 0, 0, 7, 30, 0, 7, 74, 0, 7, 39, 0, 7, 40, 0, 7, 37, 0, 7, 84, 0, 7, 31, 0, 7, 42, 0, 7, 54, 0, 7, 72, 0, 7, 88, 0, 5, 10, 0, 5, 7, 0, 7, 98, 0, 7, 97, 0, 7, 76, 0, 7, 75, 0, 7, 96, 0, 5, 12, 0, 7, 92, 0, 5, 15, 0, 7, 34, 0] \ No newline at end of file diff --git a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_lexer.tokens b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_lexer.tokens index 02af324872fc0..67105e31fac86 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_lexer.tokens +++ b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_lexer.tokens @@ -15,119 +15,127 @@ SORT=14 STATS=15 WHERE=16 JOIN_LOOKUP=17 -DEV_INLINESTATS=18 -DEV_LOOKUP=19 -DEV_METRICS=20 -DEV_JOIN_FULL=21 -DEV_JOIN_LEFT=22 -DEV_JOIN_RIGHT=23 -UNKNOWN_CMD=24 -LINE_COMMENT=25 -MULTILINE_COMMENT=26 -WS=27 -PIPE=28 -QUOTED_STRING=29 -INTEGER_LITERAL=30 -DECIMAL_LITERAL=31 -BY=32 -AND=33 -ASC=34 -ASSIGN=35 -CAST_OP=36 -COLON=37 -COMMA=38 -DESC=39 -DOT=40 -FALSE=41 -FIRST=42 -IN=43 -IS=44 -LAST=45 -LIKE=46 -LP=47 -NOT=48 -NULL=49 -NULLS=50 -OR=51 -PARAM=52 -RLIKE=53 -RP=54 -TRUE=55 -EQ=56 -CIEQ=57 -NEQ=58 -LT=59 -LTE=60 -GT=61 -GTE=62 -PLUS=63 -MINUS=64 -ASTERISK=65 -SLASH=66 -PERCENT=67 -LEFT_BRACES=68 -RIGHT_BRACES=69 -NAMED_OR_POSITIONAL_PARAM=70 -OPENING_BRACKET=71 -CLOSING_BRACKET=72 -UNQUOTED_IDENTIFIER=73 -QUOTED_IDENTIFIER=74 -EXPR_LINE_COMMENT=75 -EXPR_MULTILINE_COMMENT=76 -EXPR_WS=77 -EXPLAIN_WS=78 -EXPLAIN_LINE_COMMENT=79 -EXPLAIN_MULTILINE_COMMENT=80 -METADATA=81 -UNQUOTED_SOURCE=82 -FROM_LINE_COMMENT=83 -FROM_MULTILINE_COMMENT=84 -FROM_WS=85 -ID_PATTERN=86 -PROJECT_LINE_COMMENT=87 -PROJECT_MULTILINE_COMMENT=88 -PROJECT_WS=89 -AS=90 -RENAME_LINE_COMMENT=91 -RENAME_MULTILINE_COMMENT=92 -RENAME_WS=93 -ON=94 -WITH=95 -ENRICH_POLICY_NAME=96 -ENRICH_LINE_COMMENT=97 -ENRICH_MULTILINE_COMMENT=98 -ENRICH_WS=99 -ENRICH_FIELD_LINE_COMMENT=100 -ENRICH_FIELD_MULTILINE_COMMENT=101 -ENRICH_FIELD_WS=102 -MVEXPAND_LINE_COMMENT=103 -MVEXPAND_MULTILINE_COMMENT=104 -MVEXPAND_WS=105 -INFO=106 -SHOW_LINE_COMMENT=107 -SHOW_MULTILINE_COMMENT=108 -SHOW_WS=109 -SETTING=110 -SETTING_LINE_COMMENT=111 -SETTTING_MULTILINE_COMMENT=112 -SETTING_WS=113 -LOOKUP_LINE_COMMENT=114 -LOOKUP_MULTILINE_COMMENT=115 -LOOKUP_WS=116 -LOOKUP_FIELD_LINE_COMMENT=117 -LOOKUP_FIELD_MULTILINE_COMMENT=118 -LOOKUP_FIELD_WS=119 -JOIN=120 -USING=121 -JOIN_LINE_COMMENT=122 -JOIN_MULTILINE_COMMENT=123 -JOIN_WS=124 -METRICS_LINE_COMMENT=125 -METRICS_MULTILINE_COMMENT=126 -METRICS_WS=127 -CLOSING_METRICS_LINE_COMMENT=128 -CLOSING_METRICS_MULTILINE_COMMENT=129 -CLOSING_METRICS_WS=130 +DEV_CHANGE_POINT=18 +DEV_INLINESTATS=19 +DEV_INSIST=20 +DEV_LOOKUP=21 +DEV_METRICS=22 +DEV_JOIN_FULL=23 +DEV_JOIN_LEFT=24 +DEV_JOIN_RIGHT=25 +UNKNOWN_CMD=26 +LINE_COMMENT=27 +MULTILINE_COMMENT=28 +WS=29 +PIPE=30 +QUOTED_STRING=31 +INTEGER_LITERAL=32 +DECIMAL_LITERAL=33 +BY=34 +AND=35 +ASC=36 +ASSIGN=37 +CAST_OP=38 +COLON=39 +COMMA=40 +DESC=41 +DOT=42 +FALSE=43 +FIRST=44 +IN=45 +IS=46 +LAST=47 +LIKE=48 +LP=49 +NOT=50 +NULL=51 +NULLS=52 +OR=53 +PARAM=54 +RLIKE=55 +RP=56 +TRUE=57 +EQ=58 +CIEQ=59 +NEQ=60 +LT=61 +LTE=62 +GT=63 +GTE=64 +PLUS=65 +MINUS=66 +ASTERISK=67 +SLASH=68 +PERCENT=69 +LEFT_BRACES=70 +RIGHT_BRACES=71 +NAMED_OR_POSITIONAL_PARAM=72 +OPENING_BRACKET=73 +CLOSING_BRACKET=74 +UNQUOTED_IDENTIFIER=75 +QUOTED_IDENTIFIER=76 +EXPR_LINE_COMMENT=77 +EXPR_MULTILINE_COMMENT=78 +EXPR_WS=79 +EXPLAIN_WS=80 +EXPLAIN_LINE_COMMENT=81 +EXPLAIN_MULTILINE_COMMENT=82 +METADATA=83 +UNQUOTED_SOURCE=84 +FROM_LINE_COMMENT=85 +FROM_MULTILINE_COMMENT=86 +FROM_WS=87 +ID_PATTERN=88 +PROJECT_LINE_COMMENT=89 +PROJECT_MULTILINE_COMMENT=90 +PROJECT_WS=91 +AS=92 +RENAME_LINE_COMMENT=93 +RENAME_MULTILINE_COMMENT=94 +RENAME_WS=95 +ON=96 +WITH=97 +ENRICH_POLICY_NAME=98 +ENRICH_LINE_COMMENT=99 +ENRICH_MULTILINE_COMMENT=100 +ENRICH_WS=101 +ENRICH_FIELD_LINE_COMMENT=102 +ENRICH_FIELD_MULTILINE_COMMENT=103 +ENRICH_FIELD_WS=104 +MVEXPAND_LINE_COMMENT=105 +MVEXPAND_MULTILINE_COMMENT=106 +MVEXPAND_WS=107 +INFO=108 +SHOW_LINE_COMMENT=109 +SHOW_MULTILINE_COMMENT=110 +SHOW_WS=111 +SETTING=112 +SETTING_LINE_COMMENT=113 +SETTTING_MULTILINE_COMMENT=114 +SETTING_WS=115 +LOOKUP_LINE_COMMENT=116 +LOOKUP_MULTILINE_COMMENT=117 +LOOKUP_WS=118 +LOOKUP_FIELD_LINE_COMMENT=119 +LOOKUP_FIELD_MULTILINE_COMMENT=120 +LOOKUP_FIELD_WS=121 +JOIN=122 +USING=123 +JOIN_LINE_COMMENT=124 +JOIN_MULTILINE_COMMENT=125 +JOIN_WS=126 +METRICS_LINE_COMMENT=127 +METRICS_MULTILINE_COMMENT=128 +METRICS_WS=129 +CLOSING_METRICS_LINE_COMMENT=130 +CLOSING_METRICS_MULTILINE_COMMENT=131 +CLOSING_METRICS_WS=132 +CHANGE_POINT_LINE_COMMENT=133 +CHANGE_POINT_MULTILINE_COMMENT=134 +CHANGE_POINT_WS=135 +INSIST_WS=136 +INSIST_LINE_COMMENT=137 +INSIST_MULTILINE_COMMENT=138 'dissect'=1 'drop'=2 'enrich'=3 @@ -145,50 +153,50 @@ CLOSING_METRICS_WS=130 'stats'=15 'where'=16 'lookup'=17 -'|'=28 -'by'=32 -'and'=33 -'asc'=34 -'='=35 -'::'=36 -':'=37 -','=38 -'desc'=39 -'.'=40 -'false'=41 -'first'=42 -'in'=43 -'is'=44 -'last'=45 -'like'=46 -'('=47 -'not'=48 -'null'=49 -'nulls'=50 -'or'=51 -'?'=52 -'rlike'=53 -')'=54 -'true'=55 -'=='=56 -'=~'=57 -'!='=58 -'<'=59 -'<='=60 -'>'=61 -'>='=62 -'+'=63 -'-'=64 -'*'=65 -'/'=66 -'%'=67 -'{'=68 -'}'=69 -']'=72 -'metadata'=81 -'as'=90 -'on'=94 -'with'=95 -'info'=106 -'join'=120 -'USING'=121 +'|'=30 +'by'=34 +'and'=35 +'asc'=36 +'='=37 +'::'=38 +':'=39 +','=40 +'desc'=41 +'.'=42 +'false'=43 +'first'=44 +'in'=45 +'is'=46 +'last'=47 +'like'=48 +'('=49 +'not'=50 +'null'=51 +'nulls'=52 +'or'=53 +'?'=54 +'rlike'=55 +')'=56 +'true'=57 +'=='=58 +'=~'=59 +'!='=60 +'<'=61 +'<='=62 +'>'=63 +'>='=64 +'+'=65 +'-'=66 +'*'=67 +'/'=68 +'%'=69 +'{'=70 +'}'=71 +']'=74 +'metadata'=83 +'as'=92 +'on'=96 +'with'=97 +'info'=108 +'join'=122 +'USING'=123 diff --git a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_lexer.ts b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_lexer.ts index 5bcae5f6aead1..f0572a0dc700c 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_lexer.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_lexer.ts @@ -40,119 +40,127 @@ export default class esql_lexer extends lexer_config { public static readonly STATS = 15; public static readonly WHERE = 16; public static readonly JOIN_LOOKUP = 17; - public static readonly DEV_INLINESTATS = 18; - public static readonly DEV_LOOKUP = 19; - public static readonly DEV_METRICS = 20; - public static readonly DEV_JOIN_FULL = 21; - public static readonly DEV_JOIN_LEFT = 22; - public static readonly DEV_JOIN_RIGHT = 23; - public static readonly UNKNOWN_CMD = 24; - public static readonly LINE_COMMENT = 25; - public static readonly MULTILINE_COMMENT = 26; - public static readonly WS = 27; - public static readonly PIPE = 28; - public static readonly QUOTED_STRING = 29; - public static readonly INTEGER_LITERAL = 30; - public static readonly DECIMAL_LITERAL = 31; - public static readonly BY = 32; - public static readonly AND = 33; - public static readonly ASC = 34; - public static readonly ASSIGN = 35; - public static readonly CAST_OP = 36; - public static readonly COLON = 37; - public static readonly COMMA = 38; - public static readonly DESC = 39; - public static readonly DOT = 40; - public static readonly FALSE = 41; - public static readonly FIRST = 42; - public static readonly IN = 43; - public static readonly IS = 44; - public static readonly LAST = 45; - public static readonly LIKE = 46; - public static readonly LP = 47; - public static readonly NOT = 48; - public static readonly NULL = 49; - public static readonly NULLS = 50; - public static readonly OR = 51; - public static readonly PARAM = 52; - public static readonly RLIKE = 53; - public static readonly RP = 54; - public static readonly TRUE = 55; - public static readonly EQ = 56; - public static readonly CIEQ = 57; - public static readonly NEQ = 58; - public static readonly LT = 59; - public static readonly LTE = 60; - public static readonly GT = 61; - public static readonly GTE = 62; - public static readonly PLUS = 63; - public static readonly MINUS = 64; - public static readonly ASTERISK = 65; - public static readonly SLASH = 66; - public static readonly PERCENT = 67; - public static readonly LEFT_BRACES = 68; - public static readonly RIGHT_BRACES = 69; - public static readonly NAMED_OR_POSITIONAL_PARAM = 70; - public static readonly OPENING_BRACKET = 71; - public static readonly CLOSING_BRACKET = 72; - public static readonly UNQUOTED_IDENTIFIER = 73; - public static readonly QUOTED_IDENTIFIER = 74; - public static readonly EXPR_LINE_COMMENT = 75; - public static readonly EXPR_MULTILINE_COMMENT = 76; - public static readonly EXPR_WS = 77; - public static readonly EXPLAIN_WS = 78; - public static readonly EXPLAIN_LINE_COMMENT = 79; - public static readonly EXPLAIN_MULTILINE_COMMENT = 80; - public static readonly METADATA = 81; - public static readonly UNQUOTED_SOURCE = 82; - public static readonly FROM_LINE_COMMENT = 83; - public static readonly FROM_MULTILINE_COMMENT = 84; - public static readonly FROM_WS = 85; - public static readonly ID_PATTERN = 86; - public static readonly PROJECT_LINE_COMMENT = 87; - public static readonly PROJECT_MULTILINE_COMMENT = 88; - public static readonly PROJECT_WS = 89; - public static readonly AS = 90; - public static readonly RENAME_LINE_COMMENT = 91; - public static readonly RENAME_MULTILINE_COMMENT = 92; - public static readonly RENAME_WS = 93; - public static readonly ON = 94; - public static readonly WITH = 95; - public static readonly ENRICH_POLICY_NAME = 96; - public static readonly ENRICH_LINE_COMMENT = 97; - public static readonly ENRICH_MULTILINE_COMMENT = 98; - public static readonly ENRICH_WS = 99; - public static readonly ENRICH_FIELD_LINE_COMMENT = 100; - public static readonly ENRICH_FIELD_MULTILINE_COMMENT = 101; - public static readonly ENRICH_FIELD_WS = 102; - public static readonly MVEXPAND_LINE_COMMENT = 103; - public static readonly MVEXPAND_MULTILINE_COMMENT = 104; - public static readonly MVEXPAND_WS = 105; - public static readonly INFO = 106; - public static readonly SHOW_LINE_COMMENT = 107; - public static readonly SHOW_MULTILINE_COMMENT = 108; - public static readonly SHOW_WS = 109; - public static readonly SETTING = 110; - public static readonly SETTING_LINE_COMMENT = 111; - public static readonly SETTTING_MULTILINE_COMMENT = 112; - public static readonly SETTING_WS = 113; - public static readonly LOOKUP_LINE_COMMENT = 114; - public static readonly LOOKUP_MULTILINE_COMMENT = 115; - public static readonly LOOKUP_WS = 116; - public static readonly LOOKUP_FIELD_LINE_COMMENT = 117; - public static readonly LOOKUP_FIELD_MULTILINE_COMMENT = 118; - public static readonly LOOKUP_FIELD_WS = 119; - public static readonly JOIN = 120; - public static readonly USING = 121; - public static readonly JOIN_LINE_COMMENT = 122; - public static readonly JOIN_MULTILINE_COMMENT = 123; - public static readonly JOIN_WS = 124; - public static readonly METRICS_LINE_COMMENT = 125; - public static readonly METRICS_MULTILINE_COMMENT = 126; - public static readonly METRICS_WS = 127; - public static readonly CLOSING_METRICS_LINE_COMMENT = 128; - public static readonly CLOSING_METRICS_MULTILINE_COMMENT = 129; - public static readonly CLOSING_METRICS_WS = 130; + public static readonly DEV_CHANGE_POINT = 18; + public static readonly DEV_INLINESTATS = 19; + public static readonly DEV_INSIST = 20; + public static readonly DEV_LOOKUP = 21; + public static readonly DEV_METRICS = 22; + public static readonly DEV_JOIN_FULL = 23; + public static readonly DEV_JOIN_LEFT = 24; + public static readonly DEV_JOIN_RIGHT = 25; + public static readonly UNKNOWN_CMD = 26; + public static readonly LINE_COMMENT = 27; + public static readonly MULTILINE_COMMENT = 28; + public static readonly WS = 29; + public static readonly PIPE = 30; + public static readonly QUOTED_STRING = 31; + public static readonly INTEGER_LITERAL = 32; + public static readonly DECIMAL_LITERAL = 33; + public static readonly BY = 34; + public static readonly AND = 35; + public static readonly ASC = 36; + public static readonly ASSIGN = 37; + public static readonly CAST_OP = 38; + public static readonly COLON = 39; + public static readonly COMMA = 40; + public static readonly DESC = 41; + public static readonly DOT = 42; + public static readonly FALSE = 43; + public static readonly FIRST = 44; + public static readonly IN = 45; + public static readonly IS = 46; + public static readonly LAST = 47; + public static readonly LIKE = 48; + public static readonly LP = 49; + public static readonly NOT = 50; + public static readonly NULL = 51; + public static readonly NULLS = 52; + public static readonly OR = 53; + public static readonly PARAM = 54; + public static readonly RLIKE = 55; + public static readonly RP = 56; + public static readonly TRUE = 57; + public static readonly EQ = 58; + public static readonly CIEQ = 59; + public static readonly NEQ = 60; + public static readonly LT = 61; + public static readonly LTE = 62; + public static readonly GT = 63; + public static readonly GTE = 64; + public static readonly PLUS = 65; + public static readonly MINUS = 66; + public static readonly ASTERISK = 67; + public static readonly SLASH = 68; + public static readonly PERCENT = 69; + public static readonly LEFT_BRACES = 70; + public static readonly RIGHT_BRACES = 71; + public static readonly NAMED_OR_POSITIONAL_PARAM = 72; + public static readonly OPENING_BRACKET = 73; + public static readonly CLOSING_BRACKET = 74; + public static readonly UNQUOTED_IDENTIFIER = 75; + public static readonly QUOTED_IDENTIFIER = 76; + public static readonly EXPR_LINE_COMMENT = 77; + public static readonly EXPR_MULTILINE_COMMENT = 78; + public static readonly EXPR_WS = 79; + public static readonly EXPLAIN_WS = 80; + public static readonly EXPLAIN_LINE_COMMENT = 81; + public static readonly EXPLAIN_MULTILINE_COMMENT = 82; + public static readonly METADATA = 83; + public static readonly UNQUOTED_SOURCE = 84; + public static readonly FROM_LINE_COMMENT = 85; + public static readonly FROM_MULTILINE_COMMENT = 86; + public static readonly FROM_WS = 87; + public static readonly ID_PATTERN = 88; + public static readonly PROJECT_LINE_COMMENT = 89; + public static readonly PROJECT_MULTILINE_COMMENT = 90; + public static readonly PROJECT_WS = 91; + public static readonly AS = 92; + public static readonly RENAME_LINE_COMMENT = 93; + public static readonly RENAME_MULTILINE_COMMENT = 94; + public static readonly RENAME_WS = 95; + public static readonly ON = 96; + public static readonly WITH = 97; + public static readonly ENRICH_POLICY_NAME = 98; + public static readonly ENRICH_LINE_COMMENT = 99; + public static readonly ENRICH_MULTILINE_COMMENT = 100; + public static readonly ENRICH_WS = 101; + public static readonly ENRICH_FIELD_LINE_COMMENT = 102; + public static readonly ENRICH_FIELD_MULTILINE_COMMENT = 103; + public static readonly ENRICH_FIELD_WS = 104; + public static readonly MVEXPAND_LINE_COMMENT = 105; + public static readonly MVEXPAND_MULTILINE_COMMENT = 106; + public static readonly MVEXPAND_WS = 107; + public static readonly INFO = 108; + public static readonly SHOW_LINE_COMMENT = 109; + public static readonly SHOW_MULTILINE_COMMENT = 110; + public static readonly SHOW_WS = 111; + public static readonly SETTING = 112; + public static readonly SETTING_LINE_COMMENT = 113; + public static readonly SETTTING_MULTILINE_COMMENT = 114; + public static readonly SETTING_WS = 115; + public static readonly LOOKUP_LINE_COMMENT = 116; + public static readonly LOOKUP_MULTILINE_COMMENT = 117; + public static readonly LOOKUP_WS = 118; + public static readonly LOOKUP_FIELD_LINE_COMMENT = 119; + public static readonly LOOKUP_FIELD_MULTILINE_COMMENT = 120; + public static readonly LOOKUP_FIELD_WS = 121; + public static readonly JOIN = 122; + public static readonly USING = 123; + public static readonly JOIN_LINE_COMMENT = 124; + public static readonly JOIN_MULTILINE_COMMENT = 125; + public static readonly JOIN_WS = 126; + public static readonly METRICS_LINE_COMMENT = 127; + public static readonly METRICS_MULTILINE_COMMENT = 128; + public static readonly METRICS_WS = 129; + public static readonly CLOSING_METRICS_LINE_COMMENT = 130; + public static readonly CLOSING_METRICS_MULTILINE_COMMENT = 131; + public static readonly CLOSING_METRICS_WS = 132; + public static readonly CHANGE_POINT_LINE_COMMENT = 133; + public static readonly CHANGE_POINT_MULTILINE_COMMENT = 134; + public static readonly CHANGE_POINT_WS = 135; + public static readonly INSIST_WS = 136; + public static readonly INSIST_LINE_COMMENT = 137; + public static readonly INSIST_MULTILINE_COMMENT = 138; public static readonly EOF = Token.EOF; public static readonly EXPRESSION_MODE = 1; public static readonly EXPLAIN_MODE = 2; @@ -169,6 +177,8 @@ export default class esql_lexer extends lexer_config { public static readonly JOIN_MODE = 13; public static readonly METRICS_MODE = 14; public static readonly CLOSING_METRICS_MODE = 15; + public static readonly CHANGE_POINT_MODE = 16; + public static readonly INSIST_MODE = 17; public static readonly channelNames: string[] = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" ]; public static readonly literalNames: (string | null)[] = [ null, "'dissect'", @@ -186,6 +196,7 @@ export default class esql_lexer extends lexer_config { null, null, null, null, null, null, + null, null, "'|'", null, null, null, "'by'", "'and'", @@ -243,7 +254,9 @@ export default class esql_lexer extends lexer_config { "SHOW", "SORT", "STATS", "WHERE", "JOIN_LOOKUP", + "DEV_CHANGE_POINT", "DEV_INLINESTATS", + "DEV_INSIST", "DEV_LOOKUP", "DEV_METRICS", "DEV_JOIN_FULL", @@ -333,7 +346,13 @@ export default class esql_lexer extends lexer_config { "METRICS_WS", "CLOSING_METRICS_LINE_COMMENT", "CLOSING_METRICS_MULTILINE_COMMENT", - "CLOSING_METRICS_WS" ]; + "CLOSING_METRICS_WS", + "CHANGE_POINT_LINE_COMMENT", + "CHANGE_POINT_MULTILINE_COMMENT", + "CHANGE_POINT_WS", + "INSIST_WS", + "INSIST_LINE_COMMENT", + "INSIST_MULTILINE_COMMENT" ]; public static readonly modeNames: string[] = [ "DEFAULT_MODE", "EXPRESSION_MODE", "EXPLAIN_MODE", "FROM_MODE", "PROJECT_MODE", "RENAME_MODE", @@ -341,29 +360,30 @@ export default class esql_lexer extends lexer_config { "MVEXPAND_MODE", "SHOW_MODE", "SETTING_MODE", "LOOKUP_MODE", "LOOKUP_FIELD_MODE", "JOIN_MODE", - "METRICS_MODE", "CLOSING_METRICS_MODE", ]; + "METRICS_MODE", "CLOSING_METRICS_MODE", + "CHANGE_POINT_MODE", "INSIST_MODE", ]; public static readonly ruleNames: string[] = [ "DISSECT", "DROP", "ENRICH", "EVAL", "EXPLAIN", "FROM", "GROK", "KEEP", "LIMIT", "MV_EXPAND", "RENAME", "ROW", "SHOW", "SORT", "STATS", "WHERE", - "JOIN_LOOKUP", "DEV_INLINESTATS", "DEV_LOOKUP", "DEV_METRICS", "DEV_JOIN_FULL", - "DEV_JOIN_LEFT", "DEV_JOIN_RIGHT", "UNKNOWN_CMD", "LINE_COMMENT", "MULTILINE_COMMENT", - "WS", "PIPE", "DIGIT", "LETTER", "ESCAPE_SEQUENCE", "UNESCAPED_CHARS", - "EXPONENT", "ASPERAND", "BACKQUOTE", "BACKQUOTE_BLOCK", "UNDERSCORE", - "UNQUOTED_ID_BODY", "QUOTED_STRING", "INTEGER_LITERAL", "DECIMAL_LITERAL", - "BY", "AND", "ASC", "ASSIGN", "CAST_OP", "COLON", "COMMA", "DESC", "DOT", - "FALSE", "FIRST", "IN", "IS", "LAST", "LIKE", "LP", "NOT", "NULL", "NULLS", - "OR", "PARAM", "RLIKE", "RP", "TRUE", "EQ", "CIEQ", "NEQ", "LT", "LTE", - "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", "LEFT_BRACES", - "RIGHT_BRACES", "NESTED_WHERE", "NAMED_OR_POSITIONAL_PARAM", "OPENING_BRACKET", - "CLOSING_BRACKET", "UNQUOTED_IDENTIFIER", "QUOTED_ID", "QUOTED_IDENTIFIER", - "EXPR_LINE_COMMENT", "EXPR_MULTILINE_COMMENT", "EXPR_WS", "EXPLAIN_OPENING_BRACKET", - "EXPLAIN_PIPE", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT", "EXPLAIN_MULTILINE_COMMENT", - "FROM_PIPE", "FROM_OPENING_BRACKET", "FROM_CLOSING_BRACKET", "FROM_COLON", - "FROM_COMMA", "FROM_ASSIGN", "METADATA", "UNQUOTED_SOURCE_PART", "UNQUOTED_SOURCE", - "FROM_UNQUOTED_SOURCE", "FROM_QUOTED_SOURCE", "FROM_LINE_COMMENT", "FROM_MULTILINE_COMMENT", - "FROM_WS", "PROJECT_PIPE", "PROJECT_DOT", "PROJECT_COMMA", "PROJECT_PARAM", - "PROJECT_NAMED_OR_POSITIONAL_PARAM", "UNQUOTED_ID_BODY_WITH_PATTERN", + "JOIN_LOOKUP", "DEV_CHANGE_POINT", "DEV_INLINESTATS", "DEV_INSIST", "DEV_LOOKUP", + "DEV_METRICS", "DEV_JOIN_FULL", "DEV_JOIN_LEFT", "DEV_JOIN_RIGHT", "UNKNOWN_CMD", + "LINE_COMMENT", "MULTILINE_COMMENT", "WS", "PIPE", "DIGIT", "LETTER", + "ESCAPE_SEQUENCE", "UNESCAPED_CHARS", "EXPONENT", "ASPERAND", "BACKQUOTE", + "BACKQUOTE_BLOCK", "UNDERSCORE", "UNQUOTED_ID_BODY", "QUOTED_STRING", + "INTEGER_LITERAL", "DECIMAL_LITERAL", "BY", "AND", "ASC", "ASSIGN", "CAST_OP", + "COLON", "COMMA", "DESC", "DOT", "FALSE", "FIRST", "IN", "IS", "LAST", + "LIKE", "LP", "NOT", "NULL", "NULLS", "OR", "PARAM", "RLIKE", "RP", "TRUE", + "EQ", "CIEQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", + "SLASH", "PERCENT", "LEFT_BRACES", "RIGHT_BRACES", "NESTED_WHERE", "NAMED_OR_POSITIONAL_PARAM", + "OPENING_BRACKET", "CLOSING_BRACKET", "UNQUOTED_IDENTIFIER", "QUOTED_ID", + "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT", "EXPR_MULTILINE_COMMENT", "EXPR_WS", + "EXPLAIN_OPENING_BRACKET", "EXPLAIN_PIPE", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT", + "EXPLAIN_MULTILINE_COMMENT", "FROM_PIPE", "FROM_OPENING_BRACKET", "FROM_CLOSING_BRACKET", + "FROM_COLON", "FROM_COMMA", "FROM_ASSIGN", "METADATA", "UNQUOTED_SOURCE_PART", + "UNQUOTED_SOURCE", "FROM_UNQUOTED_SOURCE", "FROM_QUOTED_SOURCE", "FROM_LINE_COMMENT", + "FROM_MULTILINE_COMMENT", "FROM_WS", "PROJECT_PIPE", "PROJECT_DOT", "PROJECT_COMMA", + "PROJECT_PARAM", "PROJECT_NAMED_OR_POSITIONAL_PARAM", "UNQUOTED_ID_BODY_WITH_PATTERN", "UNQUOTED_ID_PATTERN", "ID_PATTERN", "PROJECT_LINE_COMMENT", "PROJECT_MULTILINE_COMMENT", "PROJECT_WS", "RENAME_PIPE", "RENAME_ASSIGN", "RENAME_COMMA", "RENAME_DOT", "RENAME_PARAM", "RENAME_NAMED_OR_POSITIONAL_PARAM", "AS", "RENAME_ID_PATTERN", @@ -390,7 +410,12 @@ export default class esql_lexer extends lexer_config { "METRICS_QUOTED_SOURCE", "METRICS_LINE_COMMENT", "METRICS_MULTILINE_COMMENT", "METRICS_WS", "CLOSING_METRICS_COLON", "CLOSING_METRICS_COMMA", "CLOSING_METRICS_LINE_COMMENT", "CLOSING_METRICS_MULTILINE_COMMENT", "CLOSING_METRICS_WS", "CLOSING_METRICS_QUOTED_IDENTIFIER", - "CLOSING_METRICS_UNQUOTED_IDENTIFIER", "CLOSING_METRICS_BY", "CLOSING_METRICS_PIPE", + "CLOSING_METRICS_UNQUOTED_IDENTIFIER", "CLOSING_METRICS_BY", "CLOSING_METRICS_PIPE", + "CHANGE_POINT_PIPE", "CHANGE_POINT_ON", "CHANGE_POINT_AS", "CHANGE_POINT_DOT", + "CHANGE_POINT_COMMA", "CHANGE_POINT_QUOTED_IDENTIFIER", "CHANGE_POINT_UNQUOTED_IDENTIFIER", + "CHANGE_POINT_LINE_COMMENT", "CHANGE_POINT_MULTILINE_COMMENT", "CHANGE_POINT_WS", + "INSIST_PIPE", "INSIST_IDENTIFIER", "INSIST_WS", "INSIST_LINE_COMMENT", + "INSIST_MULTILINE_COMMENT", ]; @@ -415,98 +440,119 @@ export default class esql_lexer extends lexer_config { public sempred(localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { switch (ruleIndex) { case 17: - return this.DEV_INLINESTATS_sempred(localctx, predIndex); + return this.DEV_CHANGE_POINT_sempred(localctx, predIndex); case 18: - return this.DEV_LOOKUP_sempred(localctx, predIndex); + return this.DEV_INLINESTATS_sempred(localctx, predIndex); case 19: - return this.DEV_METRICS_sempred(localctx, predIndex); + return this.DEV_INSIST_sempred(localctx, predIndex); case 20: - return this.DEV_JOIN_FULL_sempred(localctx, predIndex); + return this.DEV_LOOKUP_sempred(localctx, predIndex); case 21: - return this.DEV_JOIN_LEFT_sempred(localctx, predIndex); + return this.DEV_METRICS_sempred(localctx, predIndex); case 22: + return this.DEV_JOIN_FULL_sempred(localctx, predIndex); + case 23: + return this.DEV_JOIN_LEFT_sempred(localctx, predIndex); + case 24: return this.DEV_JOIN_RIGHT_sempred(localctx, predIndex); } return true; } - private DEV_INLINESTATS_sempred(localctx: RuleContext, predIndex: number): boolean { + private DEV_CHANGE_POINT_sempred(localctx: RuleContext, predIndex: number): boolean { switch (predIndex) { case 0: return this.isDevVersion(); } return true; } - private DEV_LOOKUP_sempred(localctx: RuleContext, predIndex: number): boolean { + private DEV_INLINESTATS_sempred(localctx: RuleContext, predIndex: number): boolean { switch (predIndex) { case 1: return this.isDevVersion(); } return true; } - private DEV_METRICS_sempred(localctx: RuleContext, predIndex: number): boolean { + private DEV_INSIST_sempred(localctx: RuleContext, predIndex: number): boolean { switch (predIndex) { case 2: return this.isDevVersion(); } return true; } - private DEV_JOIN_FULL_sempred(localctx: RuleContext, predIndex: number): boolean { + private DEV_LOOKUP_sempred(localctx: RuleContext, predIndex: number): boolean { switch (predIndex) { case 3: return this.isDevVersion(); } return true; } - private DEV_JOIN_LEFT_sempred(localctx: RuleContext, predIndex: number): boolean { + private DEV_METRICS_sempred(localctx: RuleContext, predIndex: number): boolean { switch (predIndex) { case 4: return this.isDevVersion(); } return true; } - private DEV_JOIN_RIGHT_sempred(localctx: RuleContext, predIndex: number): boolean { + private DEV_JOIN_FULL_sempred(localctx: RuleContext, predIndex: number): boolean { switch (predIndex) { case 5: return this.isDevVersion(); } return true; } + private DEV_JOIN_LEFT_sempred(localctx: RuleContext, predIndex: number): boolean { + switch (predIndex) { + case 6: + return this.isDevVersion(); + } + return true; + } + private DEV_JOIN_RIGHT_sempred(localctx: RuleContext, predIndex: number): boolean { + switch (predIndex) { + case 7: + return this.isDevVersion(); + } + return true; + } - public static readonly _serializedATN: number[] = [4,0,130,1609,6,-1,6, + public static readonly _serializedATN: number[] = [4,0,138,1735,6,-1,6, -1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1,6,-1, - 2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8, - 2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16, - 7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7, - 23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30, - 2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2, - 38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45, - 7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7, - 52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59, - 2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2, - 67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74, - 7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7, - 81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88, - 2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2, - 96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102, - 2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108, - 2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114, - 2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120, - 2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126, - 2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132, - 2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138, - 2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144, - 2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150, - 2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156, - 2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162, - 2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168, - 2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174, - 2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180, - 2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186, - 2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192, - 2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198, - 2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204, - 2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210, - 2,211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216, + 6,-1,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7, + 7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15, + 7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7, + 22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29, + 2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2, + 37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44, + 7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7, + 51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58, + 2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2, + 66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73, + 7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7, + 80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87, + 2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2, + 95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101, + 2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107, + 2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113, + 2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119, + 2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125, + 2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131, + 2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137, + 2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143, + 2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149, + 2,150,7,150,2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155, + 2,156,7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161, + 2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167, + 2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173, + 2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179, + 2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185, + 2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191, + 2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197, + 2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203, + 2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209, + 2,210,7,210,2,211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215, + 2,216,7,216,2,217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221, + 2,222,7,222,2,223,7,223,2,224,7,224,2,225,7,225,2,226,7,226,2,227,7,227, + 2,228,7,228,2,229,7,229,2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233, 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, 1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,4,1,4,1,4, 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6, @@ -516,516 +562,558 @@ export default class esql_lexer extends lexer_config { 12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14, 1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1, 16,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,17, - 1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1, - 18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19, - 1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1, - 21,1,21,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,23,4,23,653,8,23, - 11,23,12,23,654,1,23,1,23,1,24,1,24,1,24,1,24,5,24,663,8,24,10,24,12,24, - 666,9,24,1,24,3,24,669,8,24,1,24,3,24,672,8,24,1,24,1,24,1,25,1,25,1,25, - 1,25,1,25,5,25,681,8,25,10,25,12,25,684,9,25,1,25,1,25,1,25,1,25,1,25,1, - 26,4,26,692,8,26,11,26,12,26,693,1,26,1,26,1,27,1,27,1,27,1,27,1,28,1,28, - 1,29,1,29,1,30,1,30,1,30,1,31,1,31,1,32,1,32,3,32,713,8,32,1,32,4,32,716, - 8,32,11,32,12,32,717,1,33,1,33,1,34,1,34,1,35,1,35,1,35,3,35,727,8,35,1, - 36,1,36,1,37,1,37,1,37,3,37,734,8,37,1,38,1,38,1,38,5,38,739,8,38,10,38, - 12,38,742,9,38,1,38,1,38,1,38,1,38,1,38,1,38,5,38,750,8,38,10,38,12,38, - 753,9,38,1,38,1,38,1,38,1,38,1,38,3,38,760,8,38,1,38,3,38,763,8,38,3,38, - 765,8,38,1,39,4,39,768,8,39,11,39,12,39,769,1,40,4,40,773,8,40,11,40,12, - 40,774,1,40,1,40,5,40,779,8,40,10,40,12,40,782,9,40,1,40,1,40,4,40,786, - 8,40,11,40,12,40,787,1,40,4,40,791,8,40,11,40,12,40,792,1,40,1,40,5,40, - 797,8,40,10,40,12,40,800,9,40,3,40,802,8,40,1,40,1,40,1,40,1,40,4,40,808, - 8,40,11,40,12,40,809,1,40,1,40,3,40,814,8,40,1,41,1,41,1,41,1,42,1,42,1, - 42,1,42,1,43,1,43,1,43,1,43,1,44,1,44,1,45,1,45,1,45,1,46,1,46,1,47,1,47, - 1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,1,51,1, - 51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,53,1,53,1,53,1,54,1,54,1,54,1,54, - 1,54,1,55,1,55,1,55,1,55,1,55,1,56,1,56,1,57,1,57,1,57,1,57,1,58,1,58,1, - 58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,61,1,61,1,62, - 1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1, - 65,1,66,1,66,1,66,1,67,1,67,1,67,1,68,1,68,1,69,1,69,1,69,1,70,1,70,1,71, - 1,71,1,71,1,72,1,72,1,73,1,73,1,74,1,74,1,75,1,75,1,76,1,76,1,77,1,77,1, - 78,1,78,1,79,1,79,1,79,1,79,1,80,1,80,1,80,3,80,946,8,80,1,80,5,80,949, - 8,80,10,80,12,80,952,9,80,1,80,1,80,4,80,956,8,80,11,80,12,80,957,3,80, - 960,8,80,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,83,1,83,5, - 83,974,8,83,10,83,12,83,977,9,83,1,83,1,83,3,83,981,8,83,1,83,4,83,984, - 8,83,11,83,12,83,985,3,83,988,8,83,1,84,1,84,4,84,992,8,84,11,84,12,84, - 993,1,84,1,84,1,85,1,85,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,88,1, - 88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,91,1,91, - 1,91,1,91,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1, - 94,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,98,1,98, - 1,98,1,98,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,100,1,100, - 1,100,1,100,1,101,1,101,1,101,3,101,1071,8,101,1,102,4,102,1074,8,102,11, - 102,12,102,1075,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,105,1, - 105,1,105,1,105,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,108,1, - 108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,110,1, - 111,1,111,1,111,1,111,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,3, - 113,1123,8,113,1,114,1,114,3,114,1127,8,114,1,114,5,114,1130,8,114,10,114, - 12,114,1133,9,114,1,114,1,114,3,114,1137,8,114,1,114,4,114,1140,8,114,11, - 114,12,114,1141,3,114,1144,8,114,1,115,1,115,4,115,1148,8,115,11,115,12, - 115,1149,1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,117,1,118,1,118,1, - 118,1,118,1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,121,1, - 121,1,121,1,121,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,124,1, - 124,1,124,1,124,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,127,1,127,1, - 127,1,127,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,130,1,130,1, - 130,1,130,1,130,1,131,1,131,1,131,1,131,1,131,1,132,1,132,1,132,1,132,1, - 132,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,134,1,134,1,135,4,135,1233, - 8,135,11,135,12,135,1234,1,135,1,135,3,135,1239,8,135,1,135,4,135,1242, - 8,135,11,135,12,135,1243,1,136,1,136,1,136,1,136,1,137,1,137,1,137,1,137, - 1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,140,1,140,1,140,1,140, - 1,140,1,140,1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,143,1,143, - 1,143,1,143,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,146,1,146, - 1,146,1,146,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,149,1,149, - 1,149,1,149,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,152,1,152, - 1,152,1,152,1,152,1,153,1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,155, - 1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,158, - 1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,160,1,160,1,160,1,160,1,161, - 1,161,1,161,1,161,1,161,1,162,1,162,1,162,1,162,1,162,1,163,1,163,1,163, - 1,163,1,164,1,164,1,164,1,164,1,165,1,165,1,165,1,165,1,166,1,166,1,166, - 1,166,1,166,1,167,1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,4,168, - 1385,8,168,11,168,12,168,1386,1,169,1,169,1,169,1,169,1,170,1,170,1,170, - 1,170,1,171,1,171,1,171,1,171,1,172,1,172,1,172,1,172,1,172,1,173,1,173, - 1,173,1,173,1,174,1,174,1,174,1,174,1,175,1,175,1,175,1,175,1,176,1,176, - 1,176,1,176,1,176,1,177,1,177,1,177,1,177,1,178,1,178,1,178,1,178,1,179, - 1,179,1,179,1,179,1,180,1,180,1,180,1,180,1,181,1,181,1,181,1,181,1,182, - 1,182,1,182,1,182,1,182,1,182,1,183,1,183,1,183,1,183,1,184,1,184,1,184, - 1,184,1,185,1,185,1,185,1,185,1,186,1,186,1,186,1,186,1,187,1,187,1,187, - 1,187,1,188,1,188,1,188,1,188,1,189,1,189,1,189,1,189,1,189,1,190,1,190, - 1,190,1,190,1,190,1,191,1,191,1,191,1,191,1,192,1,192,1,192,1,192,1,192, - 1,192,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,194,1,194, - 1,194,1,194,1,195,1,195,1,195,1,195,1,196,1,196,1,196,1,196,1,197,1,197, - 1,197,1,197,1,198,1,198,1,198,1,198,1,199,1,199,1,199,1,199,1,200,1,200, - 1,200,1,200,1,201,1,201,1,201,1,201,1,202,1,202,1,202,1,202,1,202,1,203, - 1,203,1,203,1,203,1,203,1,203,1,204,1,204,1,204,1,204,1,204,1,204,1,205, - 1,205,1,205,1,205,1,206,1,206,1,206,1,206,1,207,1,207,1,207,1,207,1,208, - 1,208,1,208,1,208,1,208,1,208,1,209,1,209,1,209,1,209,1,209,1,209,1,210, - 1,210,1,210,1,210,1,211,1,211,1,211,1,211,1,212,1,212,1,212,1,212,1,213, - 1,213,1,213,1,213,1,213,1,213,1,214,1,214,1,214,1,214,1,214,1,214,1,215, - 1,215,1,215,1,215,1,215,1,215,1,216,1,216,1,216,1,216,1,216,2,682,751,0, - 217,16,1,18,2,20,3,22,4,24,5,26,6,28,7,30,8,32,9,34,10,36,11,38,12,40,13, - 42,14,44,15,46,16,48,17,50,18,52,19,54,20,56,21,58,22,60,23,62,24,64,25, - 66,26,68,27,70,28,72,0,74,0,76,0,78,0,80,0,82,0,84,0,86,0,88,0,90,0,92, - 29,94,30,96,31,98,32,100,33,102,34,104,35,106,36,108,37,110,38,112,39,114, - 40,116,41,118,42,120,43,122,44,124,45,126,46,128,47,130,48,132,49,134,50, - 136,51,138,52,140,53,142,54,144,55,146,56,148,57,150,58,152,59,154,60,156, - 61,158,62,160,63,162,64,164,65,166,66,168,67,170,68,172,69,174,0,176,70, - 178,71,180,72,182,73,184,0,186,74,188,75,190,76,192,77,194,0,196,0,198, - 78,200,79,202,80,204,0,206,0,208,0,210,0,212,0,214,0,216,81,218,0,220,82, - 222,0,224,0,226,83,228,84,230,85,232,0,234,0,236,0,238,0,240,0,242,0,244, - 0,246,86,248,87,250,88,252,89,254,0,256,0,258,0,260,0,262,0,264,0,266,90, - 268,0,270,91,272,92,274,93,276,0,278,0,280,94,282,95,284,0,286,96,288,0, - 290,97,292,98,294,99,296,0,298,0,300,0,302,0,304,0,306,0,308,0,310,0,312, - 0,314,100,316,101,318,102,320,0,322,0,324,0,326,0,328,0,330,0,332,103,334, - 104,336,105,338,0,340,106,342,107,344,108,346,109,348,0,350,0,352,110,354, - 111,356,112,358,113,360,0,362,0,364,0,366,0,368,0,370,0,372,0,374,114,376, - 115,378,116,380,0,382,0,384,0,386,0,388,117,390,118,392,119,394,0,396,120, - 398,0,400,0,402,121,404,0,406,0,408,0,410,0,412,0,414,122,416,123,418,124, - 420,0,422,0,424,0,426,125,428,126,430,127,432,0,434,0,436,128,438,129,440, - 130,442,0,444,0,446,0,448,0,16,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,36, - 2,0,68,68,100,100,2,0,73,73,105,105,2,0,83,83,115,115,2,0,69,69,101,101, - 2,0,67,67,99,99,2,0,84,84,116,116,2,0,82,82,114,114,2,0,79,79,111,111,2, - 0,80,80,112,112,2,0,78,78,110,110,2,0,72,72,104,104,2,0,86,86,118,118,2, - 0,65,65,97,97,2,0,76,76,108,108,2,0,88,88,120,120,2,0,70,70,102,102,2,0, - 77,77,109,109,2,0,71,71,103,103,2,0,75,75,107,107,2,0,87,87,119,119,2,0, - 85,85,117,117,6,0,9,10,13,13,32,32,47,47,91,91,93,93,2,0,10,10,13,13,3, - 0,9,10,13,13,32,32,1,0,48,57,2,0,65,90,97,122,8,0,34,34,78,78,82,82,84, + 1,17,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1, + 18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19, + 1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1, + 20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22, + 1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1, + 23,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,25,4,25,717,8,25,11,25, + 12,25,718,1,25,1,25,1,26,1,26,1,26,1,26,5,26,727,8,26,10,26,12,26,730,9, + 26,1,26,3,26,733,8,26,1,26,3,26,736,8,26,1,26,1,26,1,27,1,27,1,27,1,27, + 1,27,5,27,745,8,27,10,27,12,27,748,9,27,1,27,1,27,1,27,1,27,1,27,1,28,4, + 28,756,8,28,11,28,12,28,757,1,28,1,28,1,29,1,29,1,29,1,29,1,30,1,30,1,31, + 1,31,1,32,1,32,1,32,1,33,1,33,1,34,1,34,3,34,777,8,34,1,34,4,34,780,8,34, + 11,34,12,34,781,1,35,1,35,1,36,1,36,1,37,1,37,1,37,3,37,791,8,37,1,38,1, + 38,1,39,1,39,1,39,3,39,798,8,39,1,40,1,40,1,40,5,40,803,8,40,10,40,12,40, + 806,9,40,1,40,1,40,1,40,1,40,1,40,1,40,5,40,814,8,40,10,40,12,40,817,9, + 40,1,40,1,40,1,40,1,40,1,40,3,40,824,8,40,1,40,3,40,827,8,40,3,40,829,8, + 40,1,41,4,41,832,8,41,11,41,12,41,833,1,42,4,42,837,8,42,11,42,12,42,838, + 1,42,1,42,5,42,843,8,42,10,42,12,42,846,9,42,1,42,1,42,4,42,850,8,42,11, + 42,12,42,851,1,42,4,42,855,8,42,11,42,12,42,856,1,42,1,42,5,42,861,8,42, + 10,42,12,42,864,9,42,3,42,866,8,42,1,42,1,42,1,42,1,42,4,42,872,8,42,11, + 42,12,42,873,1,42,1,42,3,42,878,8,42,1,43,1,43,1,43,1,44,1,44,1,44,1,44, + 1,45,1,45,1,45,1,45,1,46,1,46,1,47,1,47,1,47,1,48,1,48,1,49,1,49,1,50,1, + 50,1,50,1,50,1,50,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1,53, + 1,53,1,53,1,53,1,54,1,54,1,54,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1, + 57,1,57,1,57,1,57,1,57,1,58,1,58,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60, + 1,60,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,63,1,63,1,64,1,64,1, + 64,1,64,1,64,1,64,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,68, + 1,68,1,68,1,69,1,69,1,69,1,70,1,70,1,71,1,71,1,71,1,72,1,72,1,73,1,73,1, + 73,1,74,1,74,1,75,1,75,1,76,1,76,1,77,1,77,1,78,1,78,1,79,1,79,1,80,1,80, + 1,81,1,81,1,81,1,81,1,82,1,82,1,82,3,82,1010,8,82,1,82,5,82,1013,8,82,10, + 82,12,82,1016,9,82,1,82,1,82,4,82,1020,8,82,11,82,12,82,1021,3,82,1024, + 8,82,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,85,1,85,5,85,1038, + 8,85,10,85,12,85,1041,9,85,1,85,1,85,3,85,1045,8,85,1,85,4,85,1048,8,85, + 11,85,12,85,1049,3,85,1052,8,85,1,86,1,86,4,86,1056,8,86,11,86,12,86,1057, + 1,86,1,86,1,87,1,87,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,90,1,90,1, + 90,1,90,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93, + 1,93,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1, + 97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,100,1,100,1, + 100,1,100,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,102,1, + 102,1,102,1,102,1,103,1,103,1,103,3,103,1135,8,103,1,104,4,104,1138,8,104, + 11,104,12,104,1139,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,107, + 1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,110, + 1,110,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,112, + 1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115, + 3,115,1187,8,115,1,116,1,116,3,116,1191,8,116,1,116,5,116,1194,8,116,10, + 116,12,116,1197,9,116,1,116,1,116,3,116,1201,8,116,1,116,4,116,1204,8,116, + 11,116,12,116,1205,3,116,1208,8,116,1,117,1,117,4,117,1212,8,117,11,117, + 12,117,1213,1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,120,1,120, + 1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122,1,122,1,123, + 1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,126, + 1,126,1,126,1,126,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,129,1,129, + 1,129,1,129,1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,132,1,132, + 1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134, + 1,134,1,135,1,135,1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,137,4,137, + 1297,8,137,11,137,12,137,1298,1,137,1,137,3,137,1303,8,137,1,137,4,137, + 1306,8,137,11,137,12,137,1307,1,138,1,138,1,138,1,138,1,139,1,139,1,139, + 1,139,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,1,142,1,142,1,142, + 1,142,1,142,1,142,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,145, + 1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,147,1,147,1,147,1,147,1,148, + 1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,150,1,151, + 1,151,1,151,1,151,1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,153,1,154, + 1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156, + 1,157,1,157,1,157,1,157,1,158,1,158,1,158,1,158,1,159,1,159,1,159,1,159, + 1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,162,1,162,1,162,1,162, + 1,163,1,163,1,163,1,163,1,163,1,164,1,164,1,164,1,164,1,164,1,165,1,165, + 1,165,1,165,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,168,1,168, + 1,168,1,168,1,168,1,169,1,169,1,169,1,169,1,170,1,170,1,170,1,170,1,170, + 4,170,1449,8,170,11,170,12,170,1450,1,171,1,171,1,171,1,171,1,172,1,172, + 1,172,1,172,1,173,1,173,1,173,1,173,1,174,1,174,1,174,1,174,1,174,1,175, + 1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,177,1,177,1,177,1,177,1,178, + 1,178,1,178,1,178,1,178,1,179,1,179,1,179,1,179,1,180,1,180,1,180,1,180, + 1,181,1,181,1,181,1,181,1,182,1,182,1,182,1,182,1,183,1,183,1,183,1,183, + 1,184,1,184,1,184,1,184,1,184,1,184,1,185,1,185,1,185,1,185,1,186,1,186, + 1,186,1,186,1,187,1,187,1,187,1,187,1,188,1,188,1,188,1,188,1,189,1,189, + 1,189,1,189,1,190,1,190,1,190,1,190,1,191,1,191,1,191,1,191,1,191,1,192, + 1,192,1,192,1,192,1,192,1,193,1,193,1,193,1,193,1,194,1,194,1,194,1,194, + 1,194,1,194,1,195,1,195,1,195,1,195,1,195,1,195,1,195,1,195,1,195,1,196, + 1,196,1,196,1,196,1,197,1,197,1,197,1,197,1,198,1,198,1,198,1,198,1,199, + 1,199,1,199,1,199,1,200,1,200,1,200,1,200,1,201,1,201,1,201,1,201,1,202, + 1,202,1,202,1,202,1,203,1,203,1,203,1,203,1,204,1,204,1,204,1,204,1,204, + 1,205,1,205,1,205,1,205,1,205,1,205,1,206,1,206,1,206,1,206,1,206,1,206, + 1,207,1,207,1,207,1,207,1,208,1,208,1,208,1,208,1,209,1,209,1,209,1,209, + 1,210,1,210,1,210,1,210,1,210,1,210,1,211,1,211,1,211,1,211,1,211,1,211, + 1,212,1,212,1,212,1,212,1,213,1,213,1,213,1,213,1,214,1,214,1,214,1,214, + 1,215,1,215,1,215,1,215,1,215,1,215,1,216,1,216,1,216,1,216,1,216,1,216, + 1,217,1,217,1,217,1,217,1,217,1,217,1,218,1,218,1,218,1,218,1,218,1,219, + 1,219,1,219,1,219,1,219,1,220,1,220,1,220,1,220,1,221,1,221,1,221,1,221, + 1,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223,1,224,1,224,1,224,1,224, + 1,225,1,225,1,225,1,225,1,226,1,226,1,226,1,226,1,227,1,227,1,227,1,227, + 1,228,1,228,1,228,1,228,1,229,1,229,1,229,1,229,1,229,1,230,1,230,1,230, + 1,230,1,231,1,231,1,231,1,231,1,232,1,232,1,232,1,232,1,233,1,233,1,233, + 1,233,2,746,815,0,234,18,1,20,2,22,3,24,4,26,5,28,6,30,7,32,8,34,9,36,10, + 38,11,40,12,42,13,44,14,46,15,48,16,50,17,52,18,54,19,56,20,58,21,60,22, + 62,23,64,24,66,25,68,26,70,27,72,28,74,29,76,30,78,0,80,0,82,0,84,0,86, + 0,88,0,90,0,92,0,94,0,96,0,98,31,100,32,102,33,104,34,106,35,108,36,110, + 37,112,38,114,39,116,40,118,41,120,42,122,43,124,44,126,45,128,46,130,47, + 132,48,134,49,136,50,138,51,140,52,142,53,144,54,146,55,148,56,150,57,152, + 58,154,59,156,60,158,61,160,62,162,63,164,64,166,65,168,66,170,67,172,68, + 174,69,176,70,178,71,180,0,182,72,184,73,186,74,188,75,190,0,192,76,194, + 77,196,78,198,79,200,0,202,0,204,80,206,81,208,82,210,0,212,0,214,0,216, + 0,218,0,220,0,222,83,224,0,226,84,228,0,230,0,232,85,234,86,236,87,238, + 0,240,0,242,0,244,0,246,0,248,0,250,0,252,88,254,89,256,90,258,91,260,0, + 262,0,264,0,266,0,268,0,270,0,272,92,274,0,276,93,278,94,280,95,282,0,284, + 0,286,96,288,97,290,0,292,98,294,0,296,99,298,100,300,101,302,0,304,0,306, + 0,308,0,310,0,312,0,314,0,316,0,318,0,320,102,322,103,324,104,326,0,328, + 0,330,0,332,0,334,0,336,0,338,105,340,106,342,107,344,0,346,108,348,109, + 350,110,352,111,354,0,356,0,358,112,360,113,362,114,364,115,366,0,368,0, + 370,0,372,0,374,0,376,0,378,0,380,116,382,117,384,118,386,0,388,0,390,0, + 392,0,394,119,396,120,398,121,400,0,402,122,404,0,406,0,408,123,410,0,412, + 0,414,0,416,0,418,0,420,124,422,125,424,126,426,0,428,0,430,0,432,127,434, + 128,436,129,438,0,440,0,442,130,444,131,446,132,448,0,450,0,452,0,454,0, + 456,0,458,0,460,0,462,0,464,0,466,0,468,0,470,133,472,134,474,135,476,0, + 478,0,480,136,482,137,484,138,18,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, + 16,17,36,2,0,68,68,100,100,2,0,73,73,105,105,2,0,83,83,115,115,2,0,69,69, + 101,101,2,0,67,67,99,99,2,0,84,84,116,116,2,0,82,82,114,114,2,0,79,79,111, + 111,2,0,80,80,112,112,2,0,78,78,110,110,2,0,72,72,104,104,2,0,86,86,118, + 118,2,0,65,65,97,97,2,0,76,76,108,108,2,0,88,88,120,120,2,0,70,70,102,102, + 2,0,77,77,109,109,2,0,71,71,103,103,2,0,75,75,107,107,2,0,87,87,119,119, + 2,0,85,85,117,117,6,0,9,10,13,13,32,32,47,47,91,91,93,93,2,0,10,10,13,13, + 3,0,9,10,13,13,32,32,1,0,48,57,2,0,65,90,97,122,8,0,34,34,78,78,82,82,84, 84,92,92,110,110,114,114,116,116,4,0,10,10,13,13,34,34,92,92,2,0,43,43, 45,45,1,0,96,96,2,0,66,66,98,98,2,0,89,89,121,121,11,0,9,10,13,13,32,32, 34,34,44,44,47,47,58,58,61,61,91,91,93,93,124,124,2,0,42,42,47,47,11,0, 9,10,13,13,32,32,34,35,44,44,47,47,58,58,60,60,62,63,92,92,124,124,2,0, - 74,74,106,106,1636,0,16,1,0,0,0,0,18,1,0,0,0,0,20,1,0,0,0,0,22,1,0,0,0, - 0,24,1,0,0,0,0,26,1,0,0,0,0,28,1,0,0,0,0,30,1,0,0,0,0,32,1,0,0,0,0,34,1, - 0,0,0,0,36,1,0,0,0,0,38,1,0,0,0,0,40,1,0,0,0,0,42,1,0,0,0,0,44,1,0,0,0, - 0,46,1,0,0,0,0,48,1,0,0,0,0,50,1,0,0,0,0,52,1,0,0,0,0,54,1,0,0,0,0,56,1, - 0,0,0,0,58,1,0,0,0,0,60,1,0,0,0,0,62,1,0,0,0,0,64,1,0,0,0,0,66,1,0,0,0, - 0,68,1,0,0,0,1,70,1,0,0,0,1,92,1,0,0,0,1,94,1,0,0,0,1,96,1,0,0,0,1,98,1, - 0,0,0,1,100,1,0,0,0,1,102,1,0,0,0,1,104,1,0,0,0,1,106,1,0,0,0,1,108,1,0, - 0,0,1,110,1,0,0,0,1,112,1,0,0,0,1,114,1,0,0,0,1,116,1,0,0,0,1,118,1,0,0, - 0,1,120,1,0,0,0,1,122,1,0,0,0,1,124,1,0,0,0,1,126,1,0,0,0,1,128,1,0,0,0, - 1,130,1,0,0,0,1,132,1,0,0,0,1,134,1,0,0,0,1,136,1,0,0,0,1,138,1,0,0,0,1, - 140,1,0,0,0,1,142,1,0,0,0,1,144,1,0,0,0,1,146,1,0,0,0,1,148,1,0,0,0,1,150, - 1,0,0,0,1,152,1,0,0,0,1,154,1,0,0,0,1,156,1,0,0,0,1,158,1,0,0,0,1,160,1, - 0,0,0,1,162,1,0,0,0,1,164,1,0,0,0,1,166,1,0,0,0,1,168,1,0,0,0,1,170,1,0, - 0,0,1,172,1,0,0,0,1,174,1,0,0,0,1,176,1,0,0,0,1,178,1,0,0,0,1,180,1,0,0, - 0,1,182,1,0,0,0,1,186,1,0,0,0,1,188,1,0,0,0,1,190,1,0,0,0,1,192,1,0,0,0, - 2,194,1,0,0,0,2,196,1,0,0,0,2,198,1,0,0,0,2,200,1,0,0,0,2,202,1,0,0,0,3, - 204,1,0,0,0,3,206,1,0,0,0,3,208,1,0,0,0,3,210,1,0,0,0,3,212,1,0,0,0,3,214, - 1,0,0,0,3,216,1,0,0,0,3,220,1,0,0,0,3,222,1,0,0,0,3,224,1,0,0,0,3,226,1, - 0,0,0,3,228,1,0,0,0,3,230,1,0,0,0,4,232,1,0,0,0,4,234,1,0,0,0,4,236,1,0, - 0,0,4,238,1,0,0,0,4,240,1,0,0,0,4,246,1,0,0,0,4,248,1,0,0,0,4,250,1,0,0, - 0,4,252,1,0,0,0,5,254,1,0,0,0,5,256,1,0,0,0,5,258,1,0,0,0,5,260,1,0,0,0, - 5,262,1,0,0,0,5,264,1,0,0,0,5,266,1,0,0,0,5,268,1,0,0,0,5,270,1,0,0,0,5, - 272,1,0,0,0,5,274,1,0,0,0,6,276,1,0,0,0,6,278,1,0,0,0,6,280,1,0,0,0,6,282, - 1,0,0,0,6,286,1,0,0,0,6,288,1,0,0,0,6,290,1,0,0,0,6,292,1,0,0,0,6,294,1, - 0,0,0,7,296,1,0,0,0,7,298,1,0,0,0,7,300,1,0,0,0,7,302,1,0,0,0,7,304,1,0, - 0,0,7,306,1,0,0,0,7,308,1,0,0,0,7,310,1,0,0,0,7,312,1,0,0,0,7,314,1,0,0, - 0,7,316,1,0,0,0,7,318,1,0,0,0,8,320,1,0,0,0,8,322,1,0,0,0,8,324,1,0,0,0, - 8,326,1,0,0,0,8,328,1,0,0,0,8,330,1,0,0,0,8,332,1,0,0,0,8,334,1,0,0,0,8, - 336,1,0,0,0,9,338,1,0,0,0,9,340,1,0,0,0,9,342,1,0,0,0,9,344,1,0,0,0,9,346, - 1,0,0,0,10,348,1,0,0,0,10,350,1,0,0,0,10,352,1,0,0,0,10,354,1,0,0,0,10, - 356,1,0,0,0,10,358,1,0,0,0,11,360,1,0,0,0,11,362,1,0,0,0,11,364,1,0,0,0, - 11,366,1,0,0,0,11,368,1,0,0,0,11,370,1,0,0,0,11,372,1,0,0,0,11,374,1,0, - 0,0,11,376,1,0,0,0,11,378,1,0,0,0,12,380,1,0,0,0,12,382,1,0,0,0,12,384, - 1,0,0,0,12,386,1,0,0,0,12,388,1,0,0,0,12,390,1,0,0,0,12,392,1,0,0,0,13, - 394,1,0,0,0,13,396,1,0,0,0,13,398,1,0,0,0,13,400,1,0,0,0,13,402,1,0,0,0, - 13,404,1,0,0,0,13,406,1,0,0,0,13,408,1,0,0,0,13,410,1,0,0,0,13,412,1,0, - 0,0,13,414,1,0,0,0,13,416,1,0,0,0,13,418,1,0,0,0,14,420,1,0,0,0,14,422, - 1,0,0,0,14,424,1,0,0,0,14,426,1,0,0,0,14,428,1,0,0,0,14,430,1,0,0,0,15, - 432,1,0,0,0,15,434,1,0,0,0,15,436,1,0,0,0,15,438,1,0,0,0,15,440,1,0,0,0, - 15,442,1,0,0,0,15,444,1,0,0,0,15,446,1,0,0,0,15,448,1,0,0,0,16,450,1,0, - 0,0,18,460,1,0,0,0,20,467,1,0,0,0,22,476,1,0,0,0,24,483,1,0,0,0,26,493, - 1,0,0,0,28,500,1,0,0,0,30,507,1,0,0,0,32,514,1,0,0,0,34,522,1,0,0,0,36, - 534,1,0,0,0,38,543,1,0,0,0,40,549,1,0,0,0,42,556,1,0,0,0,44,563,1,0,0,0, - 46,571,1,0,0,0,48,579,1,0,0,0,50,588,1,0,0,0,52,603,1,0,0,0,54,615,1,0, - 0,0,56,626,1,0,0,0,58,634,1,0,0,0,60,642,1,0,0,0,62,652,1,0,0,0,64,658, - 1,0,0,0,66,675,1,0,0,0,68,691,1,0,0,0,70,697,1,0,0,0,72,701,1,0,0,0,74, - 703,1,0,0,0,76,705,1,0,0,0,78,708,1,0,0,0,80,710,1,0,0,0,82,719,1,0,0,0, - 84,721,1,0,0,0,86,726,1,0,0,0,88,728,1,0,0,0,90,733,1,0,0,0,92,764,1,0, - 0,0,94,767,1,0,0,0,96,813,1,0,0,0,98,815,1,0,0,0,100,818,1,0,0,0,102,822, - 1,0,0,0,104,826,1,0,0,0,106,828,1,0,0,0,108,831,1,0,0,0,110,833,1,0,0,0, - 112,835,1,0,0,0,114,840,1,0,0,0,116,842,1,0,0,0,118,848,1,0,0,0,120,854, - 1,0,0,0,122,857,1,0,0,0,124,860,1,0,0,0,126,865,1,0,0,0,128,870,1,0,0,0, - 130,872,1,0,0,0,132,876,1,0,0,0,134,881,1,0,0,0,136,887,1,0,0,0,138,890, - 1,0,0,0,140,892,1,0,0,0,142,898,1,0,0,0,144,900,1,0,0,0,146,905,1,0,0,0, - 148,908,1,0,0,0,150,911,1,0,0,0,152,914,1,0,0,0,154,916,1,0,0,0,156,919, - 1,0,0,0,158,921,1,0,0,0,160,924,1,0,0,0,162,926,1,0,0,0,164,928,1,0,0,0, - 166,930,1,0,0,0,168,932,1,0,0,0,170,934,1,0,0,0,172,936,1,0,0,0,174,938, - 1,0,0,0,176,959,1,0,0,0,178,961,1,0,0,0,180,966,1,0,0,0,182,987,1,0,0,0, - 184,989,1,0,0,0,186,997,1,0,0,0,188,999,1,0,0,0,190,1003,1,0,0,0,192,1007, - 1,0,0,0,194,1011,1,0,0,0,196,1016,1,0,0,0,198,1021,1,0,0,0,200,1025,1,0, - 0,0,202,1029,1,0,0,0,204,1033,1,0,0,0,206,1038,1,0,0,0,208,1042,1,0,0,0, - 210,1046,1,0,0,0,212,1050,1,0,0,0,214,1054,1,0,0,0,216,1058,1,0,0,0,218, - 1070,1,0,0,0,220,1073,1,0,0,0,222,1077,1,0,0,0,224,1081,1,0,0,0,226,1085, - 1,0,0,0,228,1089,1,0,0,0,230,1093,1,0,0,0,232,1097,1,0,0,0,234,1102,1,0, - 0,0,236,1106,1,0,0,0,238,1110,1,0,0,0,240,1114,1,0,0,0,242,1122,1,0,0,0, - 244,1143,1,0,0,0,246,1147,1,0,0,0,248,1151,1,0,0,0,250,1155,1,0,0,0,252, - 1159,1,0,0,0,254,1163,1,0,0,0,256,1168,1,0,0,0,258,1172,1,0,0,0,260,1176, - 1,0,0,0,262,1180,1,0,0,0,264,1184,1,0,0,0,266,1188,1,0,0,0,268,1191,1,0, - 0,0,270,1195,1,0,0,0,272,1199,1,0,0,0,274,1203,1,0,0,0,276,1207,1,0,0,0, - 278,1212,1,0,0,0,280,1217,1,0,0,0,282,1222,1,0,0,0,284,1229,1,0,0,0,286, - 1238,1,0,0,0,288,1245,1,0,0,0,290,1249,1,0,0,0,292,1253,1,0,0,0,294,1257, - 1,0,0,0,296,1261,1,0,0,0,298,1267,1,0,0,0,300,1271,1,0,0,0,302,1275,1,0, - 0,0,304,1279,1,0,0,0,306,1283,1,0,0,0,308,1287,1,0,0,0,310,1291,1,0,0,0, - 312,1295,1,0,0,0,314,1299,1,0,0,0,316,1303,1,0,0,0,318,1307,1,0,0,0,320, - 1311,1,0,0,0,322,1316,1,0,0,0,324,1320,1,0,0,0,326,1324,1,0,0,0,328,1328, - 1,0,0,0,330,1332,1,0,0,0,332,1336,1,0,0,0,334,1340,1,0,0,0,336,1344,1,0, - 0,0,338,1348,1,0,0,0,340,1353,1,0,0,0,342,1358,1,0,0,0,344,1362,1,0,0,0, - 346,1366,1,0,0,0,348,1370,1,0,0,0,350,1375,1,0,0,0,352,1384,1,0,0,0,354, - 1388,1,0,0,0,356,1392,1,0,0,0,358,1396,1,0,0,0,360,1400,1,0,0,0,362,1405, - 1,0,0,0,364,1409,1,0,0,0,366,1413,1,0,0,0,368,1417,1,0,0,0,370,1422,1,0, - 0,0,372,1426,1,0,0,0,374,1430,1,0,0,0,376,1434,1,0,0,0,378,1438,1,0,0,0, - 380,1442,1,0,0,0,382,1448,1,0,0,0,384,1452,1,0,0,0,386,1456,1,0,0,0,388, - 1460,1,0,0,0,390,1464,1,0,0,0,392,1468,1,0,0,0,394,1472,1,0,0,0,396,1477, - 1,0,0,0,398,1482,1,0,0,0,400,1486,1,0,0,0,402,1492,1,0,0,0,404,1501,1,0, - 0,0,406,1505,1,0,0,0,408,1509,1,0,0,0,410,1513,1,0,0,0,412,1517,1,0,0,0, - 414,1521,1,0,0,0,416,1525,1,0,0,0,418,1529,1,0,0,0,420,1533,1,0,0,0,422, - 1538,1,0,0,0,424,1544,1,0,0,0,426,1550,1,0,0,0,428,1554,1,0,0,0,430,1558, - 1,0,0,0,432,1562,1,0,0,0,434,1568,1,0,0,0,436,1574,1,0,0,0,438,1578,1,0, - 0,0,440,1582,1,0,0,0,442,1586,1,0,0,0,444,1592,1,0,0,0,446,1598,1,0,0,0, - 448,1604,1,0,0,0,450,451,7,0,0,0,451,452,7,1,0,0,452,453,7,2,0,0,453,454, - 7,2,0,0,454,455,7,3,0,0,455,456,7,4,0,0,456,457,7,5,0,0,457,458,1,0,0,0, - 458,459,6,0,0,0,459,17,1,0,0,0,460,461,7,0,0,0,461,462,7,6,0,0,462,463, - 7,7,0,0,463,464,7,8,0,0,464,465,1,0,0,0,465,466,6,1,1,0,466,19,1,0,0,0, - 467,468,7,3,0,0,468,469,7,9,0,0,469,470,7,6,0,0,470,471,7,1,0,0,471,472, - 7,4,0,0,472,473,7,10,0,0,473,474,1,0,0,0,474,475,6,2,2,0,475,21,1,0,0,0, - 476,477,7,3,0,0,477,478,7,11,0,0,478,479,7,12,0,0,479,480,7,13,0,0,480, - 481,1,0,0,0,481,482,6,3,0,0,482,23,1,0,0,0,483,484,7,3,0,0,484,485,7,14, - 0,0,485,486,7,8,0,0,486,487,7,13,0,0,487,488,7,12,0,0,488,489,7,1,0,0,489, - 490,7,9,0,0,490,491,1,0,0,0,491,492,6,4,3,0,492,25,1,0,0,0,493,494,7,15, - 0,0,494,495,7,6,0,0,495,496,7,7,0,0,496,497,7,16,0,0,497,498,1,0,0,0,498, - 499,6,5,4,0,499,27,1,0,0,0,500,501,7,17,0,0,501,502,7,6,0,0,502,503,7,7, - 0,0,503,504,7,18,0,0,504,505,1,0,0,0,505,506,6,6,0,0,506,29,1,0,0,0,507, - 508,7,18,0,0,508,509,7,3,0,0,509,510,7,3,0,0,510,511,7,8,0,0,511,512,1, - 0,0,0,512,513,6,7,1,0,513,31,1,0,0,0,514,515,7,13,0,0,515,516,7,1,0,0,516, - 517,7,16,0,0,517,518,7,1,0,0,518,519,7,5,0,0,519,520,1,0,0,0,520,521,6, - 8,0,0,521,33,1,0,0,0,522,523,7,16,0,0,523,524,7,11,0,0,524,525,5,95,0,0, - 525,526,7,3,0,0,526,527,7,14,0,0,527,528,7,8,0,0,528,529,7,12,0,0,529,530, - 7,9,0,0,530,531,7,0,0,0,531,532,1,0,0,0,532,533,6,9,5,0,533,35,1,0,0,0, - 534,535,7,6,0,0,535,536,7,3,0,0,536,537,7,9,0,0,537,538,7,12,0,0,538,539, - 7,16,0,0,539,540,7,3,0,0,540,541,1,0,0,0,541,542,6,10,6,0,542,37,1,0,0, - 0,543,544,7,6,0,0,544,545,7,7,0,0,545,546,7,19,0,0,546,547,1,0,0,0,547, - 548,6,11,0,0,548,39,1,0,0,0,549,550,7,2,0,0,550,551,7,10,0,0,551,552,7, - 7,0,0,552,553,7,19,0,0,553,554,1,0,0,0,554,555,6,12,7,0,555,41,1,0,0,0, - 556,557,7,2,0,0,557,558,7,7,0,0,558,559,7,6,0,0,559,560,7,5,0,0,560,561, - 1,0,0,0,561,562,6,13,0,0,562,43,1,0,0,0,563,564,7,2,0,0,564,565,7,5,0,0, - 565,566,7,12,0,0,566,567,7,5,0,0,567,568,7,2,0,0,568,569,1,0,0,0,569,570, - 6,14,0,0,570,45,1,0,0,0,571,572,7,19,0,0,572,573,7,10,0,0,573,574,7,3,0, - 0,574,575,7,6,0,0,575,576,7,3,0,0,576,577,1,0,0,0,577,578,6,15,0,0,578, - 47,1,0,0,0,579,580,7,13,0,0,580,581,7,7,0,0,581,582,7,7,0,0,582,583,7,18, - 0,0,583,584,7,20,0,0,584,585,7,8,0,0,585,586,1,0,0,0,586,587,6,16,8,0,587, - 49,1,0,0,0,588,589,4,17,0,0,589,590,7,1,0,0,590,591,7,9,0,0,591,592,7,13, - 0,0,592,593,7,1,0,0,593,594,7,9,0,0,594,595,7,3,0,0,595,596,7,2,0,0,596, - 597,7,5,0,0,597,598,7,12,0,0,598,599,7,5,0,0,599,600,7,2,0,0,600,601,1, - 0,0,0,601,602,6,17,0,0,602,51,1,0,0,0,603,604,4,18,1,0,604,605,7,13,0,0, - 605,606,7,7,0,0,606,607,7,7,0,0,607,608,7,18,0,0,608,609,7,20,0,0,609,610, - 7,8,0,0,610,611,5,95,0,0,611,612,5,128020,0,0,612,613,1,0,0,0,613,614,6, - 18,9,0,614,53,1,0,0,0,615,616,4,19,2,0,616,617,7,16,0,0,617,618,7,3,0,0, - 618,619,7,5,0,0,619,620,7,6,0,0,620,621,7,1,0,0,621,622,7,4,0,0,622,623, - 7,2,0,0,623,624,1,0,0,0,624,625,6,19,10,0,625,55,1,0,0,0,626,627,4,20,3, - 0,627,628,7,15,0,0,628,629,7,20,0,0,629,630,7,13,0,0,630,631,7,13,0,0,631, - 632,1,0,0,0,632,633,6,20,8,0,633,57,1,0,0,0,634,635,4,21,4,0,635,636,7, - 13,0,0,636,637,7,3,0,0,637,638,7,15,0,0,638,639,7,5,0,0,639,640,1,0,0,0, - 640,641,6,21,8,0,641,59,1,0,0,0,642,643,4,22,5,0,643,644,7,6,0,0,644,645, - 7,1,0,0,645,646,7,17,0,0,646,647,7,10,0,0,647,648,7,5,0,0,648,649,1,0,0, - 0,649,650,6,22,8,0,650,61,1,0,0,0,651,653,8,21,0,0,652,651,1,0,0,0,653, - 654,1,0,0,0,654,652,1,0,0,0,654,655,1,0,0,0,655,656,1,0,0,0,656,657,6,23, - 0,0,657,63,1,0,0,0,658,659,5,47,0,0,659,660,5,47,0,0,660,664,1,0,0,0,661, - 663,8,22,0,0,662,661,1,0,0,0,663,666,1,0,0,0,664,662,1,0,0,0,664,665,1, - 0,0,0,665,668,1,0,0,0,666,664,1,0,0,0,667,669,5,13,0,0,668,667,1,0,0,0, - 668,669,1,0,0,0,669,671,1,0,0,0,670,672,5,10,0,0,671,670,1,0,0,0,671,672, - 1,0,0,0,672,673,1,0,0,0,673,674,6,24,11,0,674,65,1,0,0,0,675,676,5,47,0, - 0,676,677,5,42,0,0,677,682,1,0,0,0,678,681,3,66,25,0,679,681,9,0,0,0,680, - 678,1,0,0,0,680,679,1,0,0,0,681,684,1,0,0,0,682,683,1,0,0,0,682,680,1,0, - 0,0,683,685,1,0,0,0,684,682,1,0,0,0,685,686,5,42,0,0,686,687,5,47,0,0,687, - 688,1,0,0,0,688,689,6,25,11,0,689,67,1,0,0,0,690,692,7,23,0,0,691,690,1, - 0,0,0,692,693,1,0,0,0,693,691,1,0,0,0,693,694,1,0,0,0,694,695,1,0,0,0,695, - 696,6,26,11,0,696,69,1,0,0,0,697,698,5,124,0,0,698,699,1,0,0,0,699,700, - 6,27,12,0,700,71,1,0,0,0,701,702,7,24,0,0,702,73,1,0,0,0,703,704,7,25,0, - 0,704,75,1,0,0,0,705,706,5,92,0,0,706,707,7,26,0,0,707,77,1,0,0,0,708,709, - 8,27,0,0,709,79,1,0,0,0,710,712,7,3,0,0,711,713,7,28,0,0,712,711,1,0,0, - 0,712,713,1,0,0,0,713,715,1,0,0,0,714,716,3,72,28,0,715,714,1,0,0,0,716, - 717,1,0,0,0,717,715,1,0,0,0,717,718,1,0,0,0,718,81,1,0,0,0,719,720,5,64, - 0,0,720,83,1,0,0,0,721,722,5,96,0,0,722,85,1,0,0,0,723,727,8,29,0,0,724, - 725,5,96,0,0,725,727,5,96,0,0,726,723,1,0,0,0,726,724,1,0,0,0,727,87,1, - 0,0,0,728,729,5,95,0,0,729,89,1,0,0,0,730,734,3,74,29,0,731,734,3,72,28, - 0,732,734,3,88,36,0,733,730,1,0,0,0,733,731,1,0,0,0,733,732,1,0,0,0,734, - 91,1,0,0,0,735,740,5,34,0,0,736,739,3,76,30,0,737,739,3,78,31,0,738,736, - 1,0,0,0,738,737,1,0,0,0,739,742,1,0,0,0,740,738,1,0,0,0,740,741,1,0,0,0, - 741,743,1,0,0,0,742,740,1,0,0,0,743,765,5,34,0,0,744,745,5,34,0,0,745,746, - 5,34,0,0,746,747,5,34,0,0,747,751,1,0,0,0,748,750,8,22,0,0,749,748,1,0, - 0,0,750,753,1,0,0,0,751,752,1,0,0,0,751,749,1,0,0,0,752,754,1,0,0,0,753, - 751,1,0,0,0,754,755,5,34,0,0,755,756,5,34,0,0,756,757,5,34,0,0,757,759, - 1,0,0,0,758,760,5,34,0,0,759,758,1,0,0,0,759,760,1,0,0,0,760,762,1,0,0, - 0,761,763,5,34,0,0,762,761,1,0,0,0,762,763,1,0,0,0,763,765,1,0,0,0,764, - 735,1,0,0,0,764,744,1,0,0,0,765,93,1,0,0,0,766,768,3,72,28,0,767,766,1, - 0,0,0,768,769,1,0,0,0,769,767,1,0,0,0,769,770,1,0,0,0,770,95,1,0,0,0,771, - 773,3,72,28,0,772,771,1,0,0,0,773,774,1,0,0,0,774,772,1,0,0,0,774,775,1, - 0,0,0,775,776,1,0,0,0,776,780,3,114,49,0,777,779,3,72,28,0,778,777,1,0, - 0,0,779,782,1,0,0,0,780,778,1,0,0,0,780,781,1,0,0,0,781,814,1,0,0,0,782, - 780,1,0,0,0,783,785,3,114,49,0,784,786,3,72,28,0,785,784,1,0,0,0,786,787, - 1,0,0,0,787,785,1,0,0,0,787,788,1,0,0,0,788,814,1,0,0,0,789,791,3,72,28, - 0,790,789,1,0,0,0,791,792,1,0,0,0,792,790,1,0,0,0,792,793,1,0,0,0,793,801, - 1,0,0,0,794,798,3,114,49,0,795,797,3,72,28,0,796,795,1,0,0,0,797,800,1, - 0,0,0,798,796,1,0,0,0,798,799,1,0,0,0,799,802,1,0,0,0,800,798,1,0,0,0,801, - 794,1,0,0,0,801,802,1,0,0,0,802,803,1,0,0,0,803,804,3,80,32,0,804,814,1, - 0,0,0,805,807,3,114,49,0,806,808,3,72,28,0,807,806,1,0,0,0,808,809,1,0, - 0,0,809,807,1,0,0,0,809,810,1,0,0,0,810,811,1,0,0,0,811,812,3,80,32,0,812, - 814,1,0,0,0,813,772,1,0,0,0,813,783,1,0,0,0,813,790,1,0,0,0,813,805,1,0, - 0,0,814,97,1,0,0,0,815,816,7,30,0,0,816,817,7,31,0,0,817,99,1,0,0,0,818, - 819,7,12,0,0,819,820,7,9,0,0,820,821,7,0,0,0,821,101,1,0,0,0,822,823,7, - 12,0,0,823,824,7,2,0,0,824,825,7,4,0,0,825,103,1,0,0,0,826,827,5,61,0,0, - 827,105,1,0,0,0,828,829,5,58,0,0,829,830,5,58,0,0,830,107,1,0,0,0,831,832, - 5,58,0,0,832,109,1,0,0,0,833,834,5,44,0,0,834,111,1,0,0,0,835,836,7,0,0, - 0,836,837,7,3,0,0,837,838,7,2,0,0,838,839,7,4,0,0,839,113,1,0,0,0,840,841, - 5,46,0,0,841,115,1,0,0,0,842,843,7,15,0,0,843,844,7,12,0,0,844,845,7,13, - 0,0,845,846,7,2,0,0,846,847,7,3,0,0,847,117,1,0,0,0,848,849,7,15,0,0,849, - 850,7,1,0,0,850,851,7,6,0,0,851,852,7,2,0,0,852,853,7,5,0,0,853,119,1,0, - 0,0,854,855,7,1,0,0,855,856,7,9,0,0,856,121,1,0,0,0,857,858,7,1,0,0,858, - 859,7,2,0,0,859,123,1,0,0,0,860,861,7,13,0,0,861,862,7,12,0,0,862,863,7, - 2,0,0,863,864,7,5,0,0,864,125,1,0,0,0,865,866,7,13,0,0,866,867,7,1,0,0, - 867,868,7,18,0,0,868,869,7,3,0,0,869,127,1,0,0,0,870,871,5,40,0,0,871,129, - 1,0,0,0,872,873,7,9,0,0,873,874,7,7,0,0,874,875,7,5,0,0,875,131,1,0,0,0, - 876,877,7,9,0,0,877,878,7,20,0,0,878,879,7,13,0,0,879,880,7,13,0,0,880, - 133,1,0,0,0,881,882,7,9,0,0,882,883,7,20,0,0,883,884,7,13,0,0,884,885,7, - 13,0,0,885,886,7,2,0,0,886,135,1,0,0,0,887,888,7,7,0,0,888,889,7,6,0,0, - 889,137,1,0,0,0,890,891,5,63,0,0,891,139,1,0,0,0,892,893,7,6,0,0,893,894, - 7,13,0,0,894,895,7,1,0,0,895,896,7,18,0,0,896,897,7,3,0,0,897,141,1,0,0, - 0,898,899,5,41,0,0,899,143,1,0,0,0,900,901,7,5,0,0,901,902,7,6,0,0,902, - 903,7,20,0,0,903,904,7,3,0,0,904,145,1,0,0,0,905,906,5,61,0,0,906,907,5, - 61,0,0,907,147,1,0,0,0,908,909,5,61,0,0,909,910,5,126,0,0,910,149,1,0,0, - 0,911,912,5,33,0,0,912,913,5,61,0,0,913,151,1,0,0,0,914,915,5,60,0,0,915, - 153,1,0,0,0,916,917,5,60,0,0,917,918,5,61,0,0,918,155,1,0,0,0,919,920,5, - 62,0,0,920,157,1,0,0,0,921,922,5,62,0,0,922,923,5,61,0,0,923,159,1,0,0, - 0,924,925,5,43,0,0,925,161,1,0,0,0,926,927,5,45,0,0,927,163,1,0,0,0,928, - 929,5,42,0,0,929,165,1,0,0,0,930,931,5,47,0,0,931,167,1,0,0,0,932,933,5, - 37,0,0,933,169,1,0,0,0,934,935,5,123,0,0,935,171,1,0,0,0,936,937,5,125, - 0,0,937,173,1,0,0,0,938,939,3,46,15,0,939,940,1,0,0,0,940,941,6,79,13,0, - 941,175,1,0,0,0,942,945,3,138,61,0,943,946,3,74,29,0,944,946,3,88,36,0, - 945,943,1,0,0,0,945,944,1,0,0,0,946,950,1,0,0,0,947,949,3,90,37,0,948,947, - 1,0,0,0,949,952,1,0,0,0,950,948,1,0,0,0,950,951,1,0,0,0,951,960,1,0,0,0, - 952,950,1,0,0,0,953,955,3,138,61,0,954,956,3,72,28,0,955,954,1,0,0,0,956, - 957,1,0,0,0,957,955,1,0,0,0,957,958,1,0,0,0,958,960,1,0,0,0,959,942,1,0, - 0,0,959,953,1,0,0,0,960,177,1,0,0,0,961,962,5,91,0,0,962,963,1,0,0,0,963, - 964,6,81,0,0,964,965,6,81,0,0,965,179,1,0,0,0,966,967,5,93,0,0,967,968, - 1,0,0,0,968,969,6,82,12,0,969,970,6,82,12,0,970,181,1,0,0,0,971,975,3,74, - 29,0,972,974,3,90,37,0,973,972,1,0,0,0,974,977,1,0,0,0,975,973,1,0,0,0, - 975,976,1,0,0,0,976,988,1,0,0,0,977,975,1,0,0,0,978,981,3,88,36,0,979,981, - 3,82,33,0,980,978,1,0,0,0,980,979,1,0,0,0,981,983,1,0,0,0,982,984,3,90, - 37,0,983,982,1,0,0,0,984,985,1,0,0,0,985,983,1,0,0,0,985,986,1,0,0,0,986, - 988,1,0,0,0,987,971,1,0,0,0,987,980,1,0,0,0,988,183,1,0,0,0,989,991,3,84, - 34,0,990,992,3,86,35,0,991,990,1,0,0,0,992,993,1,0,0,0,993,991,1,0,0,0, - 993,994,1,0,0,0,994,995,1,0,0,0,995,996,3,84,34,0,996,185,1,0,0,0,997,998, - 3,184,84,0,998,187,1,0,0,0,999,1000,3,64,24,0,1000,1001,1,0,0,0,1001,1002, - 6,86,11,0,1002,189,1,0,0,0,1003,1004,3,66,25,0,1004,1005,1,0,0,0,1005,1006, - 6,87,11,0,1006,191,1,0,0,0,1007,1008,3,68,26,0,1008,1009,1,0,0,0,1009,1010, - 6,88,11,0,1010,193,1,0,0,0,1011,1012,3,178,81,0,1012,1013,1,0,0,0,1013, - 1014,6,89,14,0,1014,1015,6,89,15,0,1015,195,1,0,0,0,1016,1017,3,70,27,0, - 1017,1018,1,0,0,0,1018,1019,6,90,16,0,1019,1020,6,90,12,0,1020,197,1,0, - 0,0,1021,1022,3,68,26,0,1022,1023,1,0,0,0,1023,1024,6,91,11,0,1024,199, - 1,0,0,0,1025,1026,3,64,24,0,1026,1027,1,0,0,0,1027,1028,6,92,11,0,1028, - 201,1,0,0,0,1029,1030,3,66,25,0,1030,1031,1,0,0,0,1031,1032,6,93,11,0,1032, - 203,1,0,0,0,1033,1034,3,70,27,0,1034,1035,1,0,0,0,1035,1036,6,94,16,0,1036, - 1037,6,94,12,0,1037,205,1,0,0,0,1038,1039,3,178,81,0,1039,1040,1,0,0,0, - 1040,1041,6,95,14,0,1041,207,1,0,0,0,1042,1043,3,180,82,0,1043,1044,1,0, - 0,0,1044,1045,6,96,17,0,1045,209,1,0,0,0,1046,1047,3,108,46,0,1047,1048, - 1,0,0,0,1048,1049,6,97,18,0,1049,211,1,0,0,0,1050,1051,3,110,47,0,1051, - 1052,1,0,0,0,1052,1053,6,98,19,0,1053,213,1,0,0,0,1054,1055,3,104,44,0, - 1055,1056,1,0,0,0,1056,1057,6,99,20,0,1057,215,1,0,0,0,1058,1059,7,16,0, - 0,1059,1060,7,3,0,0,1060,1061,7,5,0,0,1061,1062,7,12,0,0,1062,1063,7,0, - 0,0,1063,1064,7,12,0,0,1064,1065,7,5,0,0,1065,1066,7,12,0,0,1066,217,1, - 0,0,0,1067,1071,8,32,0,0,1068,1069,5,47,0,0,1069,1071,8,33,0,0,1070,1067, - 1,0,0,0,1070,1068,1,0,0,0,1071,219,1,0,0,0,1072,1074,3,218,101,0,1073,1072, - 1,0,0,0,1074,1075,1,0,0,0,1075,1073,1,0,0,0,1075,1076,1,0,0,0,1076,221, - 1,0,0,0,1077,1078,3,220,102,0,1078,1079,1,0,0,0,1079,1080,6,103,21,0,1080, - 223,1,0,0,0,1081,1082,3,92,38,0,1082,1083,1,0,0,0,1083,1084,6,104,22,0, - 1084,225,1,0,0,0,1085,1086,3,64,24,0,1086,1087,1,0,0,0,1087,1088,6,105, - 11,0,1088,227,1,0,0,0,1089,1090,3,66,25,0,1090,1091,1,0,0,0,1091,1092,6, - 106,11,0,1092,229,1,0,0,0,1093,1094,3,68,26,0,1094,1095,1,0,0,0,1095,1096, - 6,107,11,0,1096,231,1,0,0,0,1097,1098,3,70,27,0,1098,1099,1,0,0,0,1099, - 1100,6,108,16,0,1100,1101,6,108,12,0,1101,233,1,0,0,0,1102,1103,3,114,49, - 0,1103,1104,1,0,0,0,1104,1105,6,109,23,0,1105,235,1,0,0,0,1106,1107,3,110, - 47,0,1107,1108,1,0,0,0,1108,1109,6,110,19,0,1109,237,1,0,0,0,1110,1111, - 3,138,61,0,1111,1112,1,0,0,0,1112,1113,6,111,24,0,1113,239,1,0,0,0,1114, - 1115,3,176,80,0,1115,1116,1,0,0,0,1116,1117,6,112,25,0,1117,241,1,0,0,0, - 1118,1123,3,74,29,0,1119,1123,3,72,28,0,1120,1123,3,88,36,0,1121,1123,3, - 164,74,0,1122,1118,1,0,0,0,1122,1119,1,0,0,0,1122,1120,1,0,0,0,1122,1121, - 1,0,0,0,1123,243,1,0,0,0,1124,1127,3,74,29,0,1125,1127,3,164,74,0,1126, - 1124,1,0,0,0,1126,1125,1,0,0,0,1127,1131,1,0,0,0,1128,1130,3,242,113,0, - 1129,1128,1,0,0,0,1130,1133,1,0,0,0,1131,1129,1,0,0,0,1131,1132,1,0,0,0, - 1132,1144,1,0,0,0,1133,1131,1,0,0,0,1134,1137,3,88,36,0,1135,1137,3,82, - 33,0,1136,1134,1,0,0,0,1136,1135,1,0,0,0,1137,1139,1,0,0,0,1138,1140,3, - 242,113,0,1139,1138,1,0,0,0,1140,1141,1,0,0,0,1141,1139,1,0,0,0,1141,1142, - 1,0,0,0,1142,1144,1,0,0,0,1143,1126,1,0,0,0,1143,1136,1,0,0,0,1144,245, - 1,0,0,0,1145,1148,3,244,114,0,1146,1148,3,184,84,0,1147,1145,1,0,0,0,1147, - 1146,1,0,0,0,1148,1149,1,0,0,0,1149,1147,1,0,0,0,1149,1150,1,0,0,0,1150, - 247,1,0,0,0,1151,1152,3,64,24,0,1152,1153,1,0,0,0,1153,1154,6,116,11,0, - 1154,249,1,0,0,0,1155,1156,3,66,25,0,1156,1157,1,0,0,0,1157,1158,6,117, - 11,0,1158,251,1,0,0,0,1159,1160,3,68,26,0,1160,1161,1,0,0,0,1161,1162,6, - 118,11,0,1162,253,1,0,0,0,1163,1164,3,70,27,0,1164,1165,1,0,0,0,1165,1166, - 6,119,16,0,1166,1167,6,119,12,0,1167,255,1,0,0,0,1168,1169,3,104,44,0,1169, - 1170,1,0,0,0,1170,1171,6,120,20,0,1171,257,1,0,0,0,1172,1173,3,110,47,0, - 1173,1174,1,0,0,0,1174,1175,6,121,19,0,1175,259,1,0,0,0,1176,1177,3,114, - 49,0,1177,1178,1,0,0,0,1178,1179,6,122,23,0,1179,261,1,0,0,0,1180,1181, - 3,138,61,0,1181,1182,1,0,0,0,1182,1183,6,123,24,0,1183,263,1,0,0,0,1184, - 1185,3,176,80,0,1185,1186,1,0,0,0,1186,1187,6,124,25,0,1187,265,1,0,0,0, - 1188,1189,7,12,0,0,1189,1190,7,2,0,0,1190,267,1,0,0,0,1191,1192,3,246,115, - 0,1192,1193,1,0,0,0,1193,1194,6,126,26,0,1194,269,1,0,0,0,1195,1196,3,64, - 24,0,1196,1197,1,0,0,0,1197,1198,6,127,11,0,1198,271,1,0,0,0,1199,1200, - 3,66,25,0,1200,1201,1,0,0,0,1201,1202,6,128,11,0,1202,273,1,0,0,0,1203, - 1204,3,68,26,0,1204,1205,1,0,0,0,1205,1206,6,129,11,0,1206,275,1,0,0,0, - 1207,1208,3,70,27,0,1208,1209,1,0,0,0,1209,1210,6,130,16,0,1210,1211,6, - 130,12,0,1211,277,1,0,0,0,1212,1213,3,178,81,0,1213,1214,1,0,0,0,1214,1215, - 6,131,14,0,1215,1216,6,131,27,0,1216,279,1,0,0,0,1217,1218,7,7,0,0,1218, - 1219,7,9,0,0,1219,1220,1,0,0,0,1220,1221,6,132,28,0,1221,281,1,0,0,0,1222, - 1223,7,19,0,0,1223,1224,7,1,0,0,1224,1225,7,5,0,0,1225,1226,7,10,0,0,1226, - 1227,1,0,0,0,1227,1228,6,133,28,0,1228,283,1,0,0,0,1229,1230,8,34,0,0,1230, - 285,1,0,0,0,1231,1233,3,284,134,0,1232,1231,1,0,0,0,1233,1234,1,0,0,0,1234, - 1232,1,0,0,0,1234,1235,1,0,0,0,1235,1236,1,0,0,0,1236,1237,3,108,46,0,1237, - 1239,1,0,0,0,1238,1232,1,0,0,0,1238,1239,1,0,0,0,1239,1241,1,0,0,0,1240, - 1242,3,284,134,0,1241,1240,1,0,0,0,1242,1243,1,0,0,0,1243,1241,1,0,0,0, - 1243,1244,1,0,0,0,1244,287,1,0,0,0,1245,1246,3,286,135,0,1246,1247,1,0, - 0,0,1247,1248,6,136,29,0,1248,289,1,0,0,0,1249,1250,3,64,24,0,1250,1251, - 1,0,0,0,1251,1252,6,137,11,0,1252,291,1,0,0,0,1253,1254,3,66,25,0,1254, - 1255,1,0,0,0,1255,1256,6,138,11,0,1256,293,1,0,0,0,1257,1258,3,68,26,0, - 1258,1259,1,0,0,0,1259,1260,6,139,11,0,1260,295,1,0,0,0,1261,1262,3,70, - 27,0,1262,1263,1,0,0,0,1263,1264,6,140,16,0,1264,1265,6,140,12,0,1265,1266, - 6,140,12,0,1266,297,1,0,0,0,1267,1268,3,104,44,0,1268,1269,1,0,0,0,1269, - 1270,6,141,20,0,1270,299,1,0,0,0,1271,1272,3,110,47,0,1272,1273,1,0,0,0, - 1273,1274,6,142,19,0,1274,301,1,0,0,0,1275,1276,3,114,49,0,1276,1277,1, - 0,0,0,1277,1278,6,143,23,0,1278,303,1,0,0,0,1279,1280,3,282,133,0,1280, - 1281,1,0,0,0,1281,1282,6,144,30,0,1282,305,1,0,0,0,1283,1284,3,246,115, - 0,1284,1285,1,0,0,0,1285,1286,6,145,26,0,1286,307,1,0,0,0,1287,1288,3,186, - 85,0,1288,1289,1,0,0,0,1289,1290,6,146,31,0,1290,309,1,0,0,0,1291,1292, - 3,138,61,0,1292,1293,1,0,0,0,1293,1294,6,147,24,0,1294,311,1,0,0,0,1295, - 1296,3,176,80,0,1296,1297,1,0,0,0,1297,1298,6,148,25,0,1298,313,1,0,0,0, - 1299,1300,3,64,24,0,1300,1301,1,0,0,0,1301,1302,6,149,11,0,1302,315,1,0, - 0,0,1303,1304,3,66,25,0,1304,1305,1,0,0,0,1305,1306,6,150,11,0,1306,317, - 1,0,0,0,1307,1308,3,68,26,0,1308,1309,1,0,0,0,1309,1310,6,151,11,0,1310, - 319,1,0,0,0,1311,1312,3,70,27,0,1312,1313,1,0,0,0,1313,1314,6,152,16,0, - 1314,1315,6,152,12,0,1315,321,1,0,0,0,1316,1317,3,114,49,0,1317,1318,1, - 0,0,0,1318,1319,6,153,23,0,1319,323,1,0,0,0,1320,1321,3,138,61,0,1321,1322, - 1,0,0,0,1322,1323,6,154,24,0,1323,325,1,0,0,0,1324,1325,3,176,80,0,1325, - 1326,1,0,0,0,1326,1327,6,155,25,0,1327,327,1,0,0,0,1328,1329,3,186,85,0, - 1329,1330,1,0,0,0,1330,1331,6,156,31,0,1331,329,1,0,0,0,1332,1333,3,182, - 83,0,1333,1334,1,0,0,0,1334,1335,6,157,32,0,1335,331,1,0,0,0,1336,1337, - 3,64,24,0,1337,1338,1,0,0,0,1338,1339,6,158,11,0,1339,333,1,0,0,0,1340, - 1341,3,66,25,0,1341,1342,1,0,0,0,1342,1343,6,159,11,0,1343,335,1,0,0,0, - 1344,1345,3,68,26,0,1345,1346,1,0,0,0,1346,1347,6,160,11,0,1347,337,1,0, - 0,0,1348,1349,3,70,27,0,1349,1350,1,0,0,0,1350,1351,6,161,16,0,1351,1352, - 6,161,12,0,1352,339,1,0,0,0,1353,1354,7,1,0,0,1354,1355,7,9,0,0,1355,1356, - 7,15,0,0,1356,1357,7,7,0,0,1357,341,1,0,0,0,1358,1359,3,64,24,0,1359,1360, - 1,0,0,0,1360,1361,6,163,11,0,1361,343,1,0,0,0,1362,1363,3,66,25,0,1363, - 1364,1,0,0,0,1364,1365,6,164,11,0,1365,345,1,0,0,0,1366,1367,3,68,26,0, - 1367,1368,1,0,0,0,1368,1369,6,165,11,0,1369,347,1,0,0,0,1370,1371,3,180, - 82,0,1371,1372,1,0,0,0,1372,1373,6,166,17,0,1373,1374,6,166,12,0,1374,349, - 1,0,0,0,1375,1376,3,108,46,0,1376,1377,1,0,0,0,1377,1378,6,167,18,0,1378, - 351,1,0,0,0,1379,1385,3,82,33,0,1380,1385,3,72,28,0,1381,1385,3,114,49, - 0,1382,1385,3,74,29,0,1383,1385,3,88,36,0,1384,1379,1,0,0,0,1384,1380,1, - 0,0,0,1384,1381,1,0,0,0,1384,1382,1,0,0,0,1384,1383,1,0,0,0,1385,1386,1, - 0,0,0,1386,1384,1,0,0,0,1386,1387,1,0,0,0,1387,353,1,0,0,0,1388,1389,3, - 64,24,0,1389,1390,1,0,0,0,1390,1391,6,169,11,0,1391,355,1,0,0,0,1392,1393, - 3,66,25,0,1393,1394,1,0,0,0,1394,1395,6,170,11,0,1395,357,1,0,0,0,1396, - 1397,3,68,26,0,1397,1398,1,0,0,0,1398,1399,6,171,11,0,1399,359,1,0,0,0, - 1400,1401,3,70,27,0,1401,1402,1,0,0,0,1402,1403,6,172,16,0,1403,1404,6, - 172,12,0,1404,361,1,0,0,0,1405,1406,3,108,46,0,1406,1407,1,0,0,0,1407,1408, - 6,173,18,0,1408,363,1,0,0,0,1409,1410,3,110,47,0,1410,1411,1,0,0,0,1411, - 1412,6,174,19,0,1412,365,1,0,0,0,1413,1414,3,114,49,0,1414,1415,1,0,0,0, - 1415,1416,6,175,23,0,1416,367,1,0,0,0,1417,1418,3,280,132,0,1418,1419,1, - 0,0,0,1419,1420,6,176,33,0,1420,1421,6,176,34,0,1421,369,1,0,0,0,1422,1423, - 3,220,102,0,1423,1424,1,0,0,0,1424,1425,6,177,21,0,1425,371,1,0,0,0,1426, - 1427,3,92,38,0,1427,1428,1,0,0,0,1428,1429,6,178,22,0,1429,373,1,0,0,0, - 1430,1431,3,64,24,0,1431,1432,1,0,0,0,1432,1433,6,179,11,0,1433,375,1,0, - 0,0,1434,1435,3,66,25,0,1435,1436,1,0,0,0,1436,1437,6,180,11,0,1437,377, - 1,0,0,0,1438,1439,3,68,26,0,1439,1440,1,0,0,0,1440,1441,6,181,11,0,1441, - 379,1,0,0,0,1442,1443,3,70,27,0,1443,1444,1,0,0,0,1444,1445,6,182,16,0, - 1445,1446,6,182,12,0,1446,1447,6,182,12,0,1447,381,1,0,0,0,1448,1449,3, - 110,47,0,1449,1450,1,0,0,0,1450,1451,6,183,19,0,1451,383,1,0,0,0,1452,1453, - 3,114,49,0,1453,1454,1,0,0,0,1454,1455,6,184,23,0,1455,385,1,0,0,0,1456, - 1457,3,246,115,0,1457,1458,1,0,0,0,1458,1459,6,185,26,0,1459,387,1,0,0, - 0,1460,1461,3,64,24,0,1461,1462,1,0,0,0,1462,1463,6,186,11,0,1463,389,1, - 0,0,0,1464,1465,3,66,25,0,1465,1466,1,0,0,0,1466,1467,6,187,11,0,1467,391, - 1,0,0,0,1468,1469,3,68,26,0,1469,1470,1,0,0,0,1470,1471,6,188,11,0,1471, - 393,1,0,0,0,1472,1473,3,70,27,0,1473,1474,1,0,0,0,1474,1475,6,189,16,0, - 1475,1476,6,189,12,0,1476,395,1,0,0,0,1477,1478,7,35,0,0,1478,1479,7,7, - 0,0,1479,1480,7,1,0,0,1480,1481,7,9,0,0,1481,397,1,0,0,0,1482,1483,3,266, - 125,0,1483,1484,1,0,0,0,1484,1485,6,191,35,0,1485,399,1,0,0,0,1486,1487, - 3,280,132,0,1487,1488,1,0,0,0,1488,1489,6,192,33,0,1489,1490,6,192,12,0, - 1490,1491,6,192,0,0,1491,401,1,0,0,0,1492,1493,7,20,0,0,1493,1494,7,2,0, - 0,1494,1495,7,1,0,0,1495,1496,7,9,0,0,1496,1497,7,17,0,0,1497,1498,1,0, - 0,0,1498,1499,6,193,12,0,1499,1500,6,193,0,0,1500,403,1,0,0,0,1501,1502, - 3,220,102,0,1502,1503,1,0,0,0,1503,1504,6,194,21,0,1504,405,1,0,0,0,1505, - 1506,3,92,38,0,1506,1507,1,0,0,0,1507,1508,6,195,22,0,1508,407,1,0,0,0, - 1509,1510,3,108,46,0,1510,1511,1,0,0,0,1511,1512,6,196,18,0,1512,409,1, - 0,0,0,1513,1514,3,182,83,0,1514,1515,1,0,0,0,1515,1516,6,197,32,0,1516, - 411,1,0,0,0,1517,1518,3,186,85,0,1518,1519,1,0,0,0,1519,1520,6,198,31,0, - 1520,413,1,0,0,0,1521,1522,3,64,24,0,1522,1523,1,0,0,0,1523,1524,6,199, - 11,0,1524,415,1,0,0,0,1525,1526,3,66,25,0,1526,1527,1,0,0,0,1527,1528,6, - 200,11,0,1528,417,1,0,0,0,1529,1530,3,68,26,0,1530,1531,1,0,0,0,1531,1532, - 6,201,11,0,1532,419,1,0,0,0,1533,1534,3,70,27,0,1534,1535,1,0,0,0,1535, - 1536,6,202,16,0,1536,1537,6,202,12,0,1537,421,1,0,0,0,1538,1539,3,220,102, - 0,1539,1540,1,0,0,0,1540,1541,6,203,21,0,1541,1542,6,203,12,0,1542,1543, - 6,203,36,0,1543,423,1,0,0,0,1544,1545,3,92,38,0,1545,1546,1,0,0,0,1546, - 1547,6,204,22,0,1547,1548,6,204,12,0,1548,1549,6,204,36,0,1549,425,1,0, - 0,0,1550,1551,3,64,24,0,1551,1552,1,0,0,0,1552,1553,6,205,11,0,1553,427, - 1,0,0,0,1554,1555,3,66,25,0,1555,1556,1,0,0,0,1556,1557,6,206,11,0,1557, - 429,1,0,0,0,1558,1559,3,68,26,0,1559,1560,1,0,0,0,1560,1561,6,207,11,0, - 1561,431,1,0,0,0,1562,1563,3,108,46,0,1563,1564,1,0,0,0,1564,1565,6,208, - 18,0,1565,1566,6,208,12,0,1566,1567,6,208,10,0,1567,433,1,0,0,0,1568,1569, - 3,110,47,0,1569,1570,1,0,0,0,1570,1571,6,209,19,0,1571,1572,6,209,12,0, - 1572,1573,6,209,10,0,1573,435,1,0,0,0,1574,1575,3,64,24,0,1575,1576,1,0, - 0,0,1576,1577,6,210,11,0,1577,437,1,0,0,0,1578,1579,3,66,25,0,1579,1580, - 1,0,0,0,1580,1581,6,211,11,0,1581,439,1,0,0,0,1582,1583,3,68,26,0,1583, - 1584,1,0,0,0,1584,1585,6,212,11,0,1585,441,1,0,0,0,1586,1587,3,186,85,0, - 1587,1588,1,0,0,0,1588,1589,6,213,12,0,1589,1590,6,213,0,0,1590,1591,6, - 213,31,0,1591,443,1,0,0,0,1592,1593,3,182,83,0,1593,1594,1,0,0,0,1594,1595, - 6,214,12,0,1595,1596,6,214,0,0,1596,1597,6,214,32,0,1597,445,1,0,0,0,1598, - 1599,3,98,41,0,1599,1600,1,0,0,0,1600,1601,6,215,12,0,1601,1602,6,215,0, - 0,1602,1603,6,215,37,0,1603,447,1,0,0,0,1604,1605,3,70,27,0,1605,1606,1, - 0,0,0,1606,1607,6,216,16,0,1607,1608,6,216,12,0,1608,449,1,0,0,0,66,0,1, - 2,3,4,5,6,7,8,9,10,11,12,13,14,15,654,664,668,671,680,682,693,712,717,726, - 733,738,740,751,759,762,764,769,774,780,787,792,798,801,809,813,945,950, - 957,959,975,980,985,987,993,1070,1075,1122,1126,1131,1136,1141,1143,1147, - 1149,1234,1238,1243,1384,1386,38,5,1,0,5,4,0,5,6,0,5,2,0,5,3,0,5,8,0,5, - 5,0,5,9,0,5,13,0,5,11,0,5,14,0,0,1,0,4,0,0,7,16,0,7,71,0,5,0,0,7,28,0,7, - 72,0,7,37,0,7,38,0,7,35,0,7,82,0,7,29,0,7,40,0,7,52,0,7,70,0,7,86,0,5,10, - 0,5,7,0,7,96,0,7,95,0,7,74,0,7,73,0,7,94,0,5,12,0,7,90,0,5,15,0,7,32,0]; + 74,74,106,106,1760,0,18,1,0,0,0,0,20,1,0,0,0,0,22,1,0,0,0,0,24,1,0,0,0, + 0,26,1,0,0,0,0,28,1,0,0,0,0,30,1,0,0,0,0,32,1,0,0,0,0,34,1,0,0,0,0,36,1, + 0,0,0,0,38,1,0,0,0,0,40,1,0,0,0,0,42,1,0,0,0,0,44,1,0,0,0,0,46,1,0,0,0, + 0,48,1,0,0,0,0,50,1,0,0,0,0,52,1,0,0,0,0,54,1,0,0,0,0,56,1,0,0,0,0,58,1, + 0,0,0,0,60,1,0,0,0,0,62,1,0,0,0,0,64,1,0,0,0,0,66,1,0,0,0,0,68,1,0,0,0, + 0,70,1,0,0,0,0,72,1,0,0,0,0,74,1,0,0,0,1,76,1,0,0,0,1,98,1,0,0,0,1,100, + 1,0,0,0,1,102,1,0,0,0,1,104,1,0,0,0,1,106,1,0,0,0,1,108,1,0,0,0,1,110,1, + 0,0,0,1,112,1,0,0,0,1,114,1,0,0,0,1,116,1,0,0,0,1,118,1,0,0,0,1,120,1,0, + 0,0,1,122,1,0,0,0,1,124,1,0,0,0,1,126,1,0,0,0,1,128,1,0,0,0,1,130,1,0,0, + 0,1,132,1,0,0,0,1,134,1,0,0,0,1,136,1,0,0,0,1,138,1,0,0,0,1,140,1,0,0,0, + 1,142,1,0,0,0,1,144,1,0,0,0,1,146,1,0,0,0,1,148,1,0,0,0,1,150,1,0,0,0,1, + 152,1,0,0,0,1,154,1,0,0,0,1,156,1,0,0,0,1,158,1,0,0,0,1,160,1,0,0,0,1,162, + 1,0,0,0,1,164,1,0,0,0,1,166,1,0,0,0,1,168,1,0,0,0,1,170,1,0,0,0,1,172,1, + 0,0,0,1,174,1,0,0,0,1,176,1,0,0,0,1,178,1,0,0,0,1,180,1,0,0,0,1,182,1,0, + 0,0,1,184,1,0,0,0,1,186,1,0,0,0,1,188,1,0,0,0,1,192,1,0,0,0,1,194,1,0,0, + 0,1,196,1,0,0,0,1,198,1,0,0,0,2,200,1,0,0,0,2,202,1,0,0,0,2,204,1,0,0,0, + 2,206,1,0,0,0,2,208,1,0,0,0,3,210,1,0,0,0,3,212,1,0,0,0,3,214,1,0,0,0,3, + 216,1,0,0,0,3,218,1,0,0,0,3,220,1,0,0,0,3,222,1,0,0,0,3,226,1,0,0,0,3,228, + 1,0,0,0,3,230,1,0,0,0,3,232,1,0,0,0,3,234,1,0,0,0,3,236,1,0,0,0,4,238,1, + 0,0,0,4,240,1,0,0,0,4,242,1,0,0,0,4,244,1,0,0,0,4,246,1,0,0,0,4,252,1,0, + 0,0,4,254,1,0,0,0,4,256,1,0,0,0,4,258,1,0,0,0,5,260,1,0,0,0,5,262,1,0,0, + 0,5,264,1,0,0,0,5,266,1,0,0,0,5,268,1,0,0,0,5,270,1,0,0,0,5,272,1,0,0,0, + 5,274,1,0,0,0,5,276,1,0,0,0,5,278,1,0,0,0,5,280,1,0,0,0,6,282,1,0,0,0,6, + 284,1,0,0,0,6,286,1,0,0,0,6,288,1,0,0,0,6,292,1,0,0,0,6,294,1,0,0,0,6,296, + 1,0,0,0,6,298,1,0,0,0,6,300,1,0,0,0,7,302,1,0,0,0,7,304,1,0,0,0,7,306,1, + 0,0,0,7,308,1,0,0,0,7,310,1,0,0,0,7,312,1,0,0,0,7,314,1,0,0,0,7,316,1,0, + 0,0,7,318,1,0,0,0,7,320,1,0,0,0,7,322,1,0,0,0,7,324,1,0,0,0,8,326,1,0,0, + 0,8,328,1,0,0,0,8,330,1,0,0,0,8,332,1,0,0,0,8,334,1,0,0,0,8,336,1,0,0,0, + 8,338,1,0,0,0,8,340,1,0,0,0,8,342,1,0,0,0,9,344,1,0,0,0,9,346,1,0,0,0,9, + 348,1,0,0,0,9,350,1,0,0,0,9,352,1,0,0,0,10,354,1,0,0,0,10,356,1,0,0,0,10, + 358,1,0,0,0,10,360,1,0,0,0,10,362,1,0,0,0,10,364,1,0,0,0,11,366,1,0,0,0, + 11,368,1,0,0,0,11,370,1,0,0,0,11,372,1,0,0,0,11,374,1,0,0,0,11,376,1,0, + 0,0,11,378,1,0,0,0,11,380,1,0,0,0,11,382,1,0,0,0,11,384,1,0,0,0,12,386, + 1,0,0,0,12,388,1,0,0,0,12,390,1,0,0,0,12,392,1,0,0,0,12,394,1,0,0,0,12, + 396,1,0,0,0,12,398,1,0,0,0,13,400,1,0,0,0,13,402,1,0,0,0,13,404,1,0,0,0, + 13,406,1,0,0,0,13,408,1,0,0,0,13,410,1,0,0,0,13,412,1,0,0,0,13,414,1,0, + 0,0,13,416,1,0,0,0,13,418,1,0,0,0,13,420,1,0,0,0,13,422,1,0,0,0,13,424, + 1,0,0,0,14,426,1,0,0,0,14,428,1,0,0,0,14,430,1,0,0,0,14,432,1,0,0,0,14, + 434,1,0,0,0,14,436,1,0,0,0,15,438,1,0,0,0,15,440,1,0,0,0,15,442,1,0,0,0, + 15,444,1,0,0,0,15,446,1,0,0,0,15,448,1,0,0,0,15,450,1,0,0,0,15,452,1,0, + 0,0,15,454,1,0,0,0,16,456,1,0,0,0,16,458,1,0,0,0,16,460,1,0,0,0,16,462, + 1,0,0,0,16,464,1,0,0,0,16,466,1,0,0,0,16,468,1,0,0,0,16,470,1,0,0,0,16, + 472,1,0,0,0,16,474,1,0,0,0,17,476,1,0,0,0,17,478,1,0,0,0,17,480,1,0,0,0, + 17,482,1,0,0,0,17,484,1,0,0,0,18,486,1,0,0,0,20,496,1,0,0,0,22,503,1,0, + 0,0,24,512,1,0,0,0,26,519,1,0,0,0,28,529,1,0,0,0,30,536,1,0,0,0,32,543, + 1,0,0,0,34,550,1,0,0,0,36,558,1,0,0,0,38,570,1,0,0,0,40,579,1,0,0,0,42, + 585,1,0,0,0,44,592,1,0,0,0,46,599,1,0,0,0,48,607,1,0,0,0,50,615,1,0,0,0, + 52,624,1,0,0,0,54,640,1,0,0,0,56,655,1,0,0,0,58,667,1,0,0,0,60,679,1,0, + 0,0,62,690,1,0,0,0,64,698,1,0,0,0,66,706,1,0,0,0,68,716,1,0,0,0,70,722, + 1,0,0,0,72,739,1,0,0,0,74,755,1,0,0,0,76,761,1,0,0,0,78,765,1,0,0,0,80, + 767,1,0,0,0,82,769,1,0,0,0,84,772,1,0,0,0,86,774,1,0,0,0,88,783,1,0,0,0, + 90,785,1,0,0,0,92,790,1,0,0,0,94,792,1,0,0,0,96,797,1,0,0,0,98,828,1,0, + 0,0,100,831,1,0,0,0,102,877,1,0,0,0,104,879,1,0,0,0,106,882,1,0,0,0,108, + 886,1,0,0,0,110,890,1,0,0,0,112,892,1,0,0,0,114,895,1,0,0,0,116,897,1,0, + 0,0,118,899,1,0,0,0,120,904,1,0,0,0,122,906,1,0,0,0,124,912,1,0,0,0,126, + 918,1,0,0,0,128,921,1,0,0,0,130,924,1,0,0,0,132,929,1,0,0,0,134,934,1,0, + 0,0,136,936,1,0,0,0,138,940,1,0,0,0,140,945,1,0,0,0,142,951,1,0,0,0,144, + 954,1,0,0,0,146,956,1,0,0,0,148,962,1,0,0,0,150,964,1,0,0,0,152,969,1,0, + 0,0,154,972,1,0,0,0,156,975,1,0,0,0,158,978,1,0,0,0,160,980,1,0,0,0,162, + 983,1,0,0,0,164,985,1,0,0,0,166,988,1,0,0,0,168,990,1,0,0,0,170,992,1,0, + 0,0,172,994,1,0,0,0,174,996,1,0,0,0,176,998,1,0,0,0,178,1000,1,0,0,0,180, + 1002,1,0,0,0,182,1023,1,0,0,0,184,1025,1,0,0,0,186,1030,1,0,0,0,188,1051, + 1,0,0,0,190,1053,1,0,0,0,192,1061,1,0,0,0,194,1063,1,0,0,0,196,1067,1,0, + 0,0,198,1071,1,0,0,0,200,1075,1,0,0,0,202,1080,1,0,0,0,204,1085,1,0,0,0, + 206,1089,1,0,0,0,208,1093,1,0,0,0,210,1097,1,0,0,0,212,1102,1,0,0,0,214, + 1106,1,0,0,0,216,1110,1,0,0,0,218,1114,1,0,0,0,220,1118,1,0,0,0,222,1122, + 1,0,0,0,224,1134,1,0,0,0,226,1137,1,0,0,0,228,1141,1,0,0,0,230,1145,1,0, + 0,0,232,1149,1,0,0,0,234,1153,1,0,0,0,236,1157,1,0,0,0,238,1161,1,0,0,0, + 240,1166,1,0,0,0,242,1170,1,0,0,0,244,1174,1,0,0,0,246,1178,1,0,0,0,248, + 1186,1,0,0,0,250,1207,1,0,0,0,252,1211,1,0,0,0,254,1215,1,0,0,0,256,1219, + 1,0,0,0,258,1223,1,0,0,0,260,1227,1,0,0,0,262,1232,1,0,0,0,264,1236,1,0, + 0,0,266,1240,1,0,0,0,268,1244,1,0,0,0,270,1248,1,0,0,0,272,1252,1,0,0,0, + 274,1255,1,0,0,0,276,1259,1,0,0,0,278,1263,1,0,0,0,280,1267,1,0,0,0,282, + 1271,1,0,0,0,284,1276,1,0,0,0,286,1281,1,0,0,0,288,1286,1,0,0,0,290,1293, + 1,0,0,0,292,1302,1,0,0,0,294,1309,1,0,0,0,296,1313,1,0,0,0,298,1317,1,0, + 0,0,300,1321,1,0,0,0,302,1325,1,0,0,0,304,1331,1,0,0,0,306,1335,1,0,0,0, + 308,1339,1,0,0,0,310,1343,1,0,0,0,312,1347,1,0,0,0,314,1351,1,0,0,0,316, + 1355,1,0,0,0,318,1359,1,0,0,0,320,1363,1,0,0,0,322,1367,1,0,0,0,324,1371, + 1,0,0,0,326,1375,1,0,0,0,328,1380,1,0,0,0,330,1384,1,0,0,0,332,1388,1,0, + 0,0,334,1392,1,0,0,0,336,1396,1,0,0,0,338,1400,1,0,0,0,340,1404,1,0,0,0, + 342,1408,1,0,0,0,344,1412,1,0,0,0,346,1417,1,0,0,0,348,1422,1,0,0,0,350, + 1426,1,0,0,0,352,1430,1,0,0,0,354,1434,1,0,0,0,356,1439,1,0,0,0,358,1448, + 1,0,0,0,360,1452,1,0,0,0,362,1456,1,0,0,0,364,1460,1,0,0,0,366,1464,1,0, + 0,0,368,1469,1,0,0,0,370,1473,1,0,0,0,372,1477,1,0,0,0,374,1481,1,0,0,0, + 376,1486,1,0,0,0,378,1490,1,0,0,0,380,1494,1,0,0,0,382,1498,1,0,0,0,384, + 1502,1,0,0,0,386,1506,1,0,0,0,388,1512,1,0,0,0,390,1516,1,0,0,0,392,1520, + 1,0,0,0,394,1524,1,0,0,0,396,1528,1,0,0,0,398,1532,1,0,0,0,400,1536,1,0, + 0,0,402,1541,1,0,0,0,404,1546,1,0,0,0,406,1550,1,0,0,0,408,1556,1,0,0,0, + 410,1565,1,0,0,0,412,1569,1,0,0,0,414,1573,1,0,0,0,416,1577,1,0,0,0,418, + 1581,1,0,0,0,420,1585,1,0,0,0,422,1589,1,0,0,0,424,1593,1,0,0,0,426,1597, + 1,0,0,0,428,1602,1,0,0,0,430,1608,1,0,0,0,432,1614,1,0,0,0,434,1618,1,0, + 0,0,436,1622,1,0,0,0,438,1626,1,0,0,0,440,1632,1,0,0,0,442,1638,1,0,0,0, + 444,1642,1,0,0,0,446,1646,1,0,0,0,448,1650,1,0,0,0,450,1656,1,0,0,0,452, + 1662,1,0,0,0,454,1668,1,0,0,0,456,1673,1,0,0,0,458,1678,1,0,0,0,460,1682, + 1,0,0,0,462,1686,1,0,0,0,464,1690,1,0,0,0,466,1694,1,0,0,0,468,1698,1,0, + 0,0,470,1702,1,0,0,0,472,1706,1,0,0,0,474,1710,1,0,0,0,476,1714,1,0,0,0, + 478,1719,1,0,0,0,480,1723,1,0,0,0,482,1727,1,0,0,0,484,1731,1,0,0,0,486, + 487,7,0,0,0,487,488,7,1,0,0,488,489,7,2,0,0,489,490,7,2,0,0,490,491,7,3, + 0,0,491,492,7,4,0,0,492,493,7,5,0,0,493,494,1,0,0,0,494,495,6,0,0,0,495, + 19,1,0,0,0,496,497,7,0,0,0,497,498,7,6,0,0,498,499,7,7,0,0,499,500,7,8, + 0,0,500,501,1,0,0,0,501,502,6,1,1,0,502,21,1,0,0,0,503,504,7,3,0,0,504, + 505,7,9,0,0,505,506,7,6,0,0,506,507,7,1,0,0,507,508,7,4,0,0,508,509,7,10, + 0,0,509,510,1,0,0,0,510,511,6,2,2,0,511,23,1,0,0,0,512,513,7,3,0,0,513, + 514,7,11,0,0,514,515,7,12,0,0,515,516,7,13,0,0,516,517,1,0,0,0,517,518, + 6,3,0,0,518,25,1,0,0,0,519,520,7,3,0,0,520,521,7,14,0,0,521,522,7,8,0,0, + 522,523,7,13,0,0,523,524,7,12,0,0,524,525,7,1,0,0,525,526,7,9,0,0,526,527, + 1,0,0,0,527,528,6,4,3,0,528,27,1,0,0,0,529,530,7,15,0,0,530,531,7,6,0,0, + 531,532,7,7,0,0,532,533,7,16,0,0,533,534,1,0,0,0,534,535,6,5,4,0,535,29, + 1,0,0,0,536,537,7,17,0,0,537,538,7,6,0,0,538,539,7,7,0,0,539,540,7,18,0, + 0,540,541,1,0,0,0,541,542,6,6,0,0,542,31,1,0,0,0,543,544,7,18,0,0,544,545, + 7,3,0,0,545,546,7,3,0,0,546,547,7,8,0,0,547,548,1,0,0,0,548,549,6,7,1,0, + 549,33,1,0,0,0,550,551,7,13,0,0,551,552,7,1,0,0,552,553,7,16,0,0,553,554, + 7,1,0,0,554,555,7,5,0,0,555,556,1,0,0,0,556,557,6,8,0,0,557,35,1,0,0,0, + 558,559,7,16,0,0,559,560,7,11,0,0,560,561,5,95,0,0,561,562,7,3,0,0,562, + 563,7,14,0,0,563,564,7,8,0,0,564,565,7,12,0,0,565,566,7,9,0,0,566,567,7, + 0,0,0,567,568,1,0,0,0,568,569,6,9,5,0,569,37,1,0,0,0,570,571,7,6,0,0,571, + 572,7,3,0,0,572,573,7,9,0,0,573,574,7,12,0,0,574,575,7,16,0,0,575,576,7, + 3,0,0,576,577,1,0,0,0,577,578,6,10,6,0,578,39,1,0,0,0,579,580,7,6,0,0,580, + 581,7,7,0,0,581,582,7,19,0,0,582,583,1,0,0,0,583,584,6,11,0,0,584,41,1, + 0,0,0,585,586,7,2,0,0,586,587,7,10,0,0,587,588,7,7,0,0,588,589,7,19,0,0, + 589,590,1,0,0,0,590,591,6,12,7,0,591,43,1,0,0,0,592,593,7,2,0,0,593,594, + 7,7,0,0,594,595,7,6,0,0,595,596,7,5,0,0,596,597,1,0,0,0,597,598,6,13,0, + 0,598,45,1,0,0,0,599,600,7,2,0,0,600,601,7,5,0,0,601,602,7,12,0,0,602,603, + 7,5,0,0,603,604,7,2,0,0,604,605,1,0,0,0,605,606,6,14,0,0,606,47,1,0,0,0, + 607,608,7,19,0,0,608,609,7,10,0,0,609,610,7,3,0,0,610,611,7,6,0,0,611,612, + 7,3,0,0,612,613,1,0,0,0,613,614,6,15,0,0,614,49,1,0,0,0,615,616,7,13,0, + 0,616,617,7,7,0,0,617,618,7,7,0,0,618,619,7,18,0,0,619,620,7,20,0,0,620, + 621,7,8,0,0,621,622,1,0,0,0,622,623,6,16,8,0,623,51,1,0,0,0,624,625,4,17, + 0,0,625,626,7,4,0,0,626,627,7,10,0,0,627,628,7,12,0,0,628,629,7,9,0,0,629, + 630,7,17,0,0,630,631,7,3,0,0,631,632,5,95,0,0,632,633,7,8,0,0,633,634,7, + 7,0,0,634,635,7,1,0,0,635,636,7,9,0,0,636,637,7,5,0,0,637,638,1,0,0,0,638, + 639,6,17,9,0,639,53,1,0,0,0,640,641,4,18,1,0,641,642,7,1,0,0,642,643,7, + 9,0,0,643,644,7,13,0,0,644,645,7,1,0,0,645,646,7,9,0,0,646,647,7,3,0,0, + 647,648,7,2,0,0,648,649,7,5,0,0,649,650,7,12,0,0,650,651,7,5,0,0,651,652, + 7,2,0,0,652,653,1,0,0,0,653,654,6,18,0,0,654,55,1,0,0,0,655,656,4,19,2, + 0,656,657,7,1,0,0,657,658,7,9,0,0,658,659,7,2,0,0,659,660,7,1,0,0,660,661, + 7,2,0,0,661,662,7,5,0,0,662,663,5,95,0,0,663,664,5,128020,0,0,664,665,1, + 0,0,0,665,666,6,19,1,0,666,57,1,0,0,0,667,668,4,20,3,0,668,669,7,13,0,0, + 669,670,7,7,0,0,670,671,7,7,0,0,671,672,7,18,0,0,672,673,7,20,0,0,673,674, + 7,8,0,0,674,675,5,95,0,0,675,676,5,128020,0,0,676,677,1,0,0,0,677,678,6, + 20,10,0,678,59,1,0,0,0,679,680,4,21,4,0,680,681,7,16,0,0,681,682,7,3,0, + 0,682,683,7,5,0,0,683,684,7,6,0,0,684,685,7,1,0,0,685,686,7,4,0,0,686,687, + 7,2,0,0,687,688,1,0,0,0,688,689,6,21,11,0,689,61,1,0,0,0,690,691,4,22,5, + 0,691,692,7,15,0,0,692,693,7,20,0,0,693,694,7,13,0,0,694,695,7,13,0,0,695, + 696,1,0,0,0,696,697,6,22,8,0,697,63,1,0,0,0,698,699,4,23,6,0,699,700,7, + 13,0,0,700,701,7,3,0,0,701,702,7,15,0,0,702,703,7,5,0,0,703,704,1,0,0,0, + 704,705,6,23,8,0,705,65,1,0,0,0,706,707,4,24,7,0,707,708,7,6,0,0,708,709, + 7,1,0,0,709,710,7,17,0,0,710,711,7,10,0,0,711,712,7,5,0,0,712,713,1,0,0, + 0,713,714,6,24,8,0,714,67,1,0,0,0,715,717,8,21,0,0,716,715,1,0,0,0,717, + 718,1,0,0,0,718,716,1,0,0,0,718,719,1,0,0,0,719,720,1,0,0,0,720,721,6,25, + 0,0,721,69,1,0,0,0,722,723,5,47,0,0,723,724,5,47,0,0,724,728,1,0,0,0,725, + 727,8,22,0,0,726,725,1,0,0,0,727,730,1,0,0,0,728,726,1,0,0,0,728,729,1, + 0,0,0,729,732,1,0,0,0,730,728,1,0,0,0,731,733,5,13,0,0,732,731,1,0,0,0, + 732,733,1,0,0,0,733,735,1,0,0,0,734,736,5,10,0,0,735,734,1,0,0,0,735,736, + 1,0,0,0,736,737,1,0,0,0,737,738,6,26,12,0,738,71,1,0,0,0,739,740,5,47,0, + 0,740,741,5,42,0,0,741,746,1,0,0,0,742,745,3,72,27,0,743,745,9,0,0,0,744, + 742,1,0,0,0,744,743,1,0,0,0,745,748,1,0,0,0,746,747,1,0,0,0,746,744,1,0, + 0,0,747,749,1,0,0,0,748,746,1,0,0,0,749,750,5,42,0,0,750,751,5,47,0,0,751, + 752,1,0,0,0,752,753,6,27,12,0,753,73,1,0,0,0,754,756,7,23,0,0,755,754,1, + 0,0,0,756,757,1,0,0,0,757,755,1,0,0,0,757,758,1,0,0,0,758,759,1,0,0,0,759, + 760,6,28,12,0,760,75,1,0,0,0,761,762,5,124,0,0,762,763,1,0,0,0,763,764, + 6,29,13,0,764,77,1,0,0,0,765,766,7,24,0,0,766,79,1,0,0,0,767,768,7,25,0, + 0,768,81,1,0,0,0,769,770,5,92,0,0,770,771,7,26,0,0,771,83,1,0,0,0,772,773, + 8,27,0,0,773,85,1,0,0,0,774,776,7,3,0,0,775,777,7,28,0,0,776,775,1,0,0, + 0,776,777,1,0,0,0,777,779,1,0,0,0,778,780,3,78,30,0,779,778,1,0,0,0,780, + 781,1,0,0,0,781,779,1,0,0,0,781,782,1,0,0,0,782,87,1,0,0,0,783,784,5,64, + 0,0,784,89,1,0,0,0,785,786,5,96,0,0,786,91,1,0,0,0,787,791,8,29,0,0,788, + 789,5,96,0,0,789,791,5,96,0,0,790,787,1,0,0,0,790,788,1,0,0,0,791,93,1, + 0,0,0,792,793,5,95,0,0,793,95,1,0,0,0,794,798,3,80,31,0,795,798,3,78,30, + 0,796,798,3,94,38,0,797,794,1,0,0,0,797,795,1,0,0,0,797,796,1,0,0,0,798, + 97,1,0,0,0,799,804,5,34,0,0,800,803,3,82,32,0,801,803,3,84,33,0,802,800, + 1,0,0,0,802,801,1,0,0,0,803,806,1,0,0,0,804,802,1,0,0,0,804,805,1,0,0,0, + 805,807,1,0,0,0,806,804,1,0,0,0,807,829,5,34,0,0,808,809,5,34,0,0,809,810, + 5,34,0,0,810,811,5,34,0,0,811,815,1,0,0,0,812,814,8,22,0,0,813,812,1,0, + 0,0,814,817,1,0,0,0,815,816,1,0,0,0,815,813,1,0,0,0,816,818,1,0,0,0,817, + 815,1,0,0,0,818,819,5,34,0,0,819,820,5,34,0,0,820,821,5,34,0,0,821,823, + 1,0,0,0,822,824,5,34,0,0,823,822,1,0,0,0,823,824,1,0,0,0,824,826,1,0,0, + 0,825,827,5,34,0,0,826,825,1,0,0,0,826,827,1,0,0,0,827,829,1,0,0,0,828, + 799,1,0,0,0,828,808,1,0,0,0,829,99,1,0,0,0,830,832,3,78,30,0,831,830,1, + 0,0,0,832,833,1,0,0,0,833,831,1,0,0,0,833,834,1,0,0,0,834,101,1,0,0,0,835, + 837,3,78,30,0,836,835,1,0,0,0,837,838,1,0,0,0,838,836,1,0,0,0,838,839,1, + 0,0,0,839,840,1,0,0,0,840,844,3,120,51,0,841,843,3,78,30,0,842,841,1,0, + 0,0,843,846,1,0,0,0,844,842,1,0,0,0,844,845,1,0,0,0,845,878,1,0,0,0,846, + 844,1,0,0,0,847,849,3,120,51,0,848,850,3,78,30,0,849,848,1,0,0,0,850,851, + 1,0,0,0,851,849,1,0,0,0,851,852,1,0,0,0,852,878,1,0,0,0,853,855,3,78,30, + 0,854,853,1,0,0,0,855,856,1,0,0,0,856,854,1,0,0,0,856,857,1,0,0,0,857,865, + 1,0,0,0,858,862,3,120,51,0,859,861,3,78,30,0,860,859,1,0,0,0,861,864,1, + 0,0,0,862,860,1,0,0,0,862,863,1,0,0,0,863,866,1,0,0,0,864,862,1,0,0,0,865, + 858,1,0,0,0,865,866,1,0,0,0,866,867,1,0,0,0,867,868,3,86,34,0,868,878,1, + 0,0,0,869,871,3,120,51,0,870,872,3,78,30,0,871,870,1,0,0,0,872,873,1,0, + 0,0,873,871,1,0,0,0,873,874,1,0,0,0,874,875,1,0,0,0,875,876,3,86,34,0,876, + 878,1,0,0,0,877,836,1,0,0,0,877,847,1,0,0,0,877,854,1,0,0,0,877,869,1,0, + 0,0,878,103,1,0,0,0,879,880,7,30,0,0,880,881,7,31,0,0,881,105,1,0,0,0,882, + 883,7,12,0,0,883,884,7,9,0,0,884,885,7,0,0,0,885,107,1,0,0,0,886,887,7, + 12,0,0,887,888,7,2,0,0,888,889,7,4,0,0,889,109,1,0,0,0,890,891,5,61,0,0, + 891,111,1,0,0,0,892,893,5,58,0,0,893,894,5,58,0,0,894,113,1,0,0,0,895,896, + 5,58,0,0,896,115,1,0,0,0,897,898,5,44,0,0,898,117,1,0,0,0,899,900,7,0,0, + 0,900,901,7,3,0,0,901,902,7,2,0,0,902,903,7,4,0,0,903,119,1,0,0,0,904,905, + 5,46,0,0,905,121,1,0,0,0,906,907,7,15,0,0,907,908,7,12,0,0,908,909,7,13, + 0,0,909,910,7,2,0,0,910,911,7,3,0,0,911,123,1,0,0,0,912,913,7,15,0,0,913, + 914,7,1,0,0,914,915,7,6,0,0,915,916,7,2,0,0,916,917,7,5,0,0,917,125,1,0, + 0,0,918,919,7,1,0,0,919,920,7,9,0,0,920,127,1,0,0,0,921,922,7,1,0,0,922, + 923,7,2,0,0,923,129,1,0,0,0,924,925,7,13,0,0,925,926,7,12,0,0,926,927,7, + 2,0,0,927,928,7,5,0,0,928,131,1,0,0,0,929,930,7,13,0,0,930,931,7,1,0,0, + 931,932,7,18,0,0,932,933,7,3,0,0,933,133,1,0,0,0,934,935,5,40,0,0,935,135, + 1,0,0,0,936,937,7,9,0,0,937,938,7,7,0,0,938,939,7,5,0,0,939,137,1,0,0,0, + 940,941,7,9,0,0,941,942,7,20,0,0,942,943,7,13,0,0,943,944,7,13,0,0,944, + 139,1,0,0,0,945,946,7,9,0,0,946,947,7,20,0,0,947,948,7,13,0,0,948,949,7, + 13,0,0,949,950,7,2,0,0,950,141,1,0,0,0,951,952,7,7,0,0,952,953,7,6,0,0, + 953,143,1,0,0,0,954,955,5,63,0,0,955,145,1,0,0,0,956,957,7,6,0,0,957,958, + 7,13,0,0,958,959,7,1,0,0,959,960,7,18,0,0,960,961,7,3,0,0,961,147,1,0,0, + 0,962,963,5,41,0,0,963,149,1,0,0,0,964,965,7,5,0,0,965,966,7,6,0,0,966, + 967,7,20,0,0,967,968,7,3,0,0,968,151,1,0,0,0,969,970,5,61,0,0,970,971,5, + 61,0,0,971,153,1,0,0,0,972,973,5,61,0,0,973,974,5,126,0,0,974,155,1,0,0, + 0,975,976,5,33,0,0,976,977,5,61,0,0,977,157,1,0,0,0,978,979,5,60,0,0,979, + 159,1,0,0,0,980,981,5,60,0,0,981,982,5,61,0,0,982,161,1,0,0,0,983,984,5, + 62,0,0,984,163,1,0,0,0,985,986,5,62,0,0,986,987,5,61,0,0,987,165,1,0,0, + 0,988,989,5,43,0,0,989,167,1,0,0,0,990,991,5,45,0,0,991,169,1,0,0,0,992, + 993,5,42,0,0,993,171,1,0,0,0,994,995,5,47,0,0,995,173,1,0,0,0,996,997,5, + 37,0,0,997,175,1,0,0,0,998,999,5,123,0,0,999,177,1,0,0,0,1000,1001,5,125, + 0,0,1001,179,1,0,0,0,1002,1003,3,48,15,0,1003,1004,1,0,0,0,1004,1005,6, + 81,14,0,1005,181,1,0,0,0,1006,1009,3,144,63,0,1007,1010,3,80,31,0,1008, + 1010,3,94,38,0,1009,1007,1,0,0,0,1009,1008,1,0,0,0,1010,1014,1,0,0,0,1011, + 1013,3,96,39,0,1012,1011,1,0,0,0,1013,1016,1,0,0,0,1014,1012,1,0,0,0,1014, + 1015,1,0,0,0,1015,1024,1,0,0,0,1016,1014,1,0,0,0,1017,1019,3,144,63,0,1018, + 1020,3,78,30,0,1019,1018,1,0,0,0,1020,1021,1,0,0,0,1021,1019,1,0,0,0,1021, + 1022,1,0,0,0,1022,1024,1,0,0,0,1023,1006,1,0,0,0,1023,1017,1,0,0,0,1024, + 183,1,0,0,0,1025,1026,5,91,0,0,1026,1027,1,0,0,0,1027,1028,6,83,0,0,1028, + 1029,6,83,0,0,1029,185,1,0,0,0,1030,1031,5,93,0,0,1031,1032,1,0,0,0,1032, + 1033,6,84,13,0,1033,1034,6,84,13,0,1034,187,1,0,0,0,1035,1039,3,80,31,0, + 1036,1038,3,96,39,0,1037,1036,1,0,0,0,1038,1041,1,0,0,0,1039,1037,1,0,0, + 0,1039,1040,1,0,0,0,1040,1052,1,0,0,0,1041,1039,1,0,0,0,1042,1045,3,94, + 38,0,1043,1045,3,88,35,0,1044,1042,1,0,0,0,1044,1043,1,0,0,0,1045,1047, + 1,0,0,0,1046,1048,3,96,39,0,1047,1046,1,0,0,0,1048,1049,1,0,0,0,1049,1047, + 1,0,0,0,1049,1050,1,0,0,0,1050,1052,1,0,0,0,1051,1035,1,0,0,0,1051,1044, + 1,0,0,0,1052,189,1,0,0,0,1053,1055,3,90,36,0,1054,1056,3,92,37,0,1055,1054, + 1,0,0,0,1056,1057,1,0,0,0,1057,1055,1,0,0,0,1057,1058,1,0,0,0,1058,1059, + 1,0,0,0,1059,1060,3,90,36,0,1060,191,1,0,0,0,1061,1062,3,190,86,0,1062, + 193,1,0,0,0,1063,1064,3,70,26,0,1064,1065,1,0,0,0,1065,1066,6,88,12,0,1066, + 195,1,0,0,0,1067,1068,3,72,27,0,1068,1069,1,0,0,0,1069,1070,6,89,12,0,1070, + 197,1,0,0,0,1071,1072,3,74,28,0,1072,1073,1,0,0,0,1073,1074,6,90,12,0,1074, + 199,1,0,0,0,1075,1076,3,184,83,0,1076,1077,1,0,0,0,1077,1078,6,91,15,0, + 1078,1079,6,91,16,0,1079,201,1,0,0,0,1080,1081,3,76,29,0,1081,1082,1,0, + 0,0,1082,1083,6,92,17,0,1083,1084,6,92,13,0,1084,203,1,0,0,0,1085,1086, + 3,74,28,0,1086,1087,1,0,0,0,1087,1088,6,93,12,0,1088,205,1,0,0,0,1089,1090, + 3,70,26,0,1090,1091,1,0,0,0,1091,1092,6,94,12,0,1092,207,1,0,0,0,1093,1094, + 3,72,27,0,1094,1095,1,0,0,0,1095,1096,6,95,12,0,1096,209,1,0,0,0,1097,1098, + 3,76,29,0,1098,1099,1,0,0,0,1099,1100,6,96,17,0,1100,1101,6,96,13,0,1101, + 211,1,0,0,0,1102,1103,3,184,83,0,1103,1104,1,0,0,0,1104,1105,6,97,15,0, + 1105,213,1,0,0,0,1106,1107,3,186,84,0,1107,1108,1,0,0,0,1108,1109,6,98, + 18,0,1109,215,1,0,0,0,1110,1111,3,114,48,0,1111,1112,1,0,0,0,1112,1113, + 6,99,19,0,1113,217,1,0,0,0,1114,1115,3,116,49,0,1115,1116,1,0,0,0,1116, + 1117,6,100,20,0,1117,219,1,0,0,0,1118,1119,3,110,46,0,1119,1120,1,0,0,0, + 1120,1121,6,101,21,0,1121,221,1,0,0,0,1122,1123,7,16,0,0,1123,1124,7,3, + 0,0,1124,1125,7,5,0,0,1125,1126,7,12,0,0,1126,1127,7,0,0,0,1127,1128,7, + 12,0,0,1128,1129,7,5,0,0,1129,1130,7,12,0,0,1130,223,1,0,0,0,1131,1135, + 8,32,0,0,1132,1133,5,47,0,0,1133,1135,8,33,0,0,1134,1131,1,0,0,0,1134,1132, + 1,0,0,0,1135,225,1,0,0,0,1136,1138,3,224,103,0,1137,1136,1,0,0,0,1138,1139, + 1,0,0,0,1139,1137,1,0,0,0,1139,1140,1,0,0,0,1140,227,1,0,0,0,1141,1142, + 3,226,104,0,1142,1143,1,0,0,0,1143,1144,6,105,22,0,1144,229,1,0,0,0,1145, + 1146,3,98,40,0,1146,1147,1,0,0,0,1147,1148,6,106,23,0,1148,231,1,0,0,0, + 1149,1150,3,70,26,0,1150,1151,1,0,0,0,1151,1152,6,107,12,0,1152,233,1,0, + 0,0,1153,1154,3,72,27,0,1154,1155,1,0,0,0,1155,1156,6,108,12,0,1156,235, + 1,0,0,0,1157,1158,3,74,28,0,1158,1159,1,0,0,0,1159,1160,6,109,12,0,1160, + 237,1,0,0,0,1161,1162,3,76,29,0,1162,1163,1,0,0,0,1163,1164,6,110,17,0, + 1164,1165,6,110,13,0,1165,239,1,0,0,0,1166,1167,3,120,51,0,1167,1168,1, + 0,0,0,1168,1169,6,111,24,0,1169,241,1,0,0,0,1170,1171,3,116,49,0,1171,1172, + 1,0,0,0,1172,1173,6,112,20,0,1173,243,1,0,0,0,1174,1175,3,144,63,0,1175, + 1176,1,0,0,0,1176,1177,6,113,25,0,1177,245,1,0,0,0,1178,1179,3,182,82,0, + 1179,1180,1,0,0,0,1180,1181,6,114,26,0,1181,247,1,0,0,0,1182,1187,3,80, + 31,0,1183,1187,3,78,30,0,1184,1187,3,94,38,0,1185,1187,3,170,76,0,1186, + 1182,1,0,0,0,1186,1183,1,0,0,0,1186,1184,1,0,0,0,1186,1185,1,0,0,0,1187, + 249,1,0,0,0,1188,1191,3,80,31,0,1189,1191,3,170,76,0,1190,1188,1,0,0,0, + 1190,1189,1,0,0,0,1191,1195,1,0,0,0,1192,1194,3,248,115,0,1193,1192,1,0, + 0,0,1194,1197,1,0,0,0,1195,1193,1,0,0,0,1195,1196,1,0,0,0,1196,1208,1,0, + 0,0,1197,1195,1,0,0,0,1198,1201,3,94,38,0,1199,1201,3,88,35,0,1200,1198, + 1,0,0,0,1200,1199,1,0,0,0,1201,1203,1,0,0,0,1202,1204,3,248,115,0,1203, + 1202,1,0,0,0,1204,1205,1,0,0,0,1205,1203,1,0,0,0,1205,1206,1,0,0,0,1206, + 1208,1,0,0,0,1207,1190,1,0,0,0,1207,1200,1,0,0,0,1208,251,1,0,0,0,1209, + 1212,3,250,116,0,1210,1212,3,190,86,0,1211,1209,1,0,0,0,1211,1210,1,0,0, + 0,1212,1213,1,0,0,0,1213,1211,1,0,0,0,1213,1214,1,0,0,0,1214,253,1,0,0, + 0,1215,1216,3,70,26,0,1216,1217,1,0,0,0,1217,1218,6,118,12,0,1218,255,1, + 0,0,0,1219,1220,3,72,27,0,1220,1221,1,0,0,0,1221,1222,6,119,12,0,1222,257, + 1,0,0,0,1223,1224,3,74,28,0,1224,1225,1,0,0,0,1225,1226,6,120,12,0,1226, + 259,1,0,0,0,1227,1228,3,76,29,0,1228,1229,1,0,0,0,1229,1230,6,121,17,0, + 1230,1231,6,121,13,0,1231,261,1,0,0,0,1232,1233,3,110,46,0,1233,1234,1, + 0,0,0,1234,1235,6,122,21,0,1235,263,1,0,0,0,1236,1237,3,116,49,0,1237,1238, + 1,0,0,0,1238,1239,6,123,20,0,1239,265,1,0,0,0,1240,1241,3,120,51,0,1241, + 1242,1,0,0,0,1242,1243,6,124,24,0,1243,267,1,0,0,0,1244,1245,3,144,63,0, + 1245,1246,1,0,0,0,1246,1247,6,125,25,0,1247,269,1,0,0,0,1248,1249,3,182, + 82,0,1249,1250,1,0,0,0,1250,1251,6,126,26,0,1251,271,1,0,0,0,1252,1253, + 7,12,0,0,1253,1254,7,2,0,0,1254,273,1,0,0,0,1255,1256,3,252,117,0,1256, + 1257,1,0,0,0,1257,1258,6,128,27,0,1258,275,1,0,0,0,1259,1260,3,70,26,0, + 1260,1261,1,0,0,0,1261,1262,6,129,12,0,1262,277,1,0,0,0,1263,1264,3,72, + 27,0,1264,1265,1,0,0,0,1265,1266,6,130,12,0,1266,279,1,0,0,0,1267,1268, + 3,74,28,0,1268,1269,1,0,0,0,1269,1270,6,131,12,0,1270,281,1,0,0,0,1271, + 1272,3,76,29,0,1272,1273,1,0,0,0,1273,1274,6,132,17,0,1274,1275,6,132,13, + 0,1275,283,1,0,0,0,1276,1277,3,184,83,0,1277,1278,1,0,0,0,1278,1279,6,133, + 15,0,1279,1280,6,133,28,0,1280,285,1,0,0,0,1281,1282,7,7,0,0,1282,1283, + 7,9,0,0,1283,1284,1,0,0,0,1284,1285,6,134,29,0,1285,287,1,0,0,0,1286,1287, + 7,19,0,0,1287,1288,7,1,0,0,1288,1289,7,5,0,0,1289,1290,7,10,0,0,1290,1291, + 1,0,0,0,1291,1292,6,135,29,0,1292,289,1,0,0,0,1293,1294,8,34,0,0,1294,291, + 1,0,0,0,1295,1297,3,290,136,0,1296,1295,1,0,0,0,1297,1298,1,0,0,0,1298, + 1296,1,0,0,0,1298,1299,1,0,0,0,1299,1300,1,0,0,0,1300,1301,3,114,48,0,1301, + 1303,1,0,0,0,1302,1296,1,0,0,0,1302,1303,1,0,0,0,1303,1305,1,0,0,0,1304, + 1306,3,290,136,0,1305,1304,1,0,0,0,1306,1307,1,0,0,0,1307,1305,1,0,0,0, + 1307,1308,1,0,0,0,1308,293,1,0,0,0,1309,1310,3,292,137,0,1310,1311,1,0, + 0,0,1311,1312,6,138,30,0,1312,295,1,0,0,0,1313,1314,3,70,26,0,1314,1315, + 1,0,0,0,1315,1316,6,139,12,0,1316,297,1,0,0,0,1317,1318,3,72,27,0,1318, + 1319,1,0,0,0,1319,1320,6,140,12,0,1320,299,1,0,0,0,1321,1322,3,74,28,0, + 1322,1323,1,0,0,0,1323,1324,6,141,12,0,1324,301,1,0,0,0,1325,1326,3,76, + 29,0,1326,1327,1,0,0,0,1327,1328,6,142,17,0,1328,1329,6,142,13,0,1329,1330, + 6,142,13,0,1330,303,1,0,0,0,1331,1332,3,110,46,0,1332,1333,1,0,0,0,1333, + 1334,6,143,21,0,1334,305,1,0,0,0,1335,1336,3,116,49,0,1336,1337,1,0,0,0, + 1337,1338,6,144,20,0,1338,307,1,0,0,0,1339,1340,3,120,51,0,1340,1341,1, + 0,0,0,1341,1342,6,145,24,0,1342,309,1,0,0,0,1343,1344,3,288,135,0,1344, + 1345,1,0,0,0,1345,1346,6,146,31,0,1346,311,1,0,0,0,1347,1348,3,252,117, + 0,1348,1349,1,0,0,0,1349,1350,6,147,27,0,1350,313,1,0,0,0,1351,1352,3,192, + 87,0,1352,1353,1,0,0,0,1353,1354,6,148,32,0,1354,315,1,0,0,0,1355,1356, + 3,144,63,0,1356,1357,1,0,0,0,1357,1358,6,149,25,0,1358,317,1,0,0,0,1359, + 1360,3,182,82,0,1360,1361,1,0,0,0,1361,1362,6,150,26,0,1362,319,1,0,0,0, + 1363,1364,3,70,26,0,1364,1365,1,0,0,0,1365,1366,6,151,12,0,1366,321,1,0, + 0,0,1367,1368,3,72,27,0,1368,1369,1,0,0,0,1369,1370,6,152,12,0,1370,323, + 1,0,0,0,1371,1372,3,74,28,0,1372,1373,1,0,0,0,1373,1374,6,153,12,0,1374, + 325,1,0,0,0,1375,1376,3,76,29,0,1376,1377,1,0,0,0,1377,1378,6,154,17,0, + 1378,1379,6,154,13,0,1379,327,1,0,0,0,1380,1381,3,120,51,0,1381,1382,1, + 0,0,0,1382,1383,6,155,24,0,1383,329,1,0,0,0,1384,1385,3,144,63,0,1385,1386, + 1,0,0,0,1386,1387,6,156,25,0,1387,331,1,0,0,0,1388,1389,3,182,82,0,1389, + 1390,1,0,0,0,1390,1391,6,157,26,0,1391,333,1,0,0,0,1392,1393,3,192,87,0, + 1393,1394,1,0,0,0,1394,1395,6,158,32,0,1395,335,1,0,0,0,1396,1397,3,188, + 85,0,1397,1398,1,0,0,0,1398,1399,6,159,33,0,1399,337,1,0,0,0,1400,1401, + 3,70,26,0,1401,1402,1,0,0,0,1402,1403,6,160,12,0,1403,339,1,0,0,0,1404, + 1405,3,72,27,0,1405,1406,1,0,0,0,1406,1407,6,161,12,0,1407,341,1,0,0,0, + 1408,1409,3,74,28,0,1409,1410,1,0,0,0,1410,1411,6,162,12,0,1411,343,1,0, + 0,0,1412,1413,3,76,29,0,1413,1414,1,0,0,0,1414,1415,6,163,17,0,1415,1416, + 6,163,13,0,1416,345,1,0,0,0,1417,1418,7,1,0,0,1418,1419,7,9,0,0,1419,1420, + 7,15,0,0,1420,1421,7,7,0,0,1421,347,1,0,0,0,1422,1423,3,70,26,0,1423,1424, + 1,0,0,0,1424,1425,6,165,12,0,1425,349,1,0,0,0,1426,1427,3,72,27,0,1427, + 1428,1,0,0,0,1428,1429,6,166,12,0,1429,351,1,0,0,0,1430,1431,3,74,28,0, + 1431,1432,1,0,0,0,1432,1433,6,167,12,0,1433,353,1,0,0,0,1434,1435,3,186, + 84,0,1435,1436,1,0,0,0,1436,1437,6,168,18,0,1437,1438,6,168,13,0,1438,355, + 1,0,0,0,1439,1440,3,114,48,0,1440,1441,1,0,0,0,1441,1442,6,169,19,0,1442, + 357,1,0,0,0,1443,1449,3,88,35,0,1444,1449,3,78,30,0,1445,1449,3,120,51, + 0,1446,1449,3,80,31,0,1447,1449,3,94,38,0,1448,1443,1,0,0,0,1448,1444,1, + 0,0,0,1448,1445,1,0,0,0,1448,1446,1,0,0,0,1448,1447,1,0,0,0,1449,1450,1, + 0,0,0,1450,1448,1,0,0,0,1450,1451,1,0,0,0,1451,359,1,0,0,0,1452,1453,3, + 70,26,0,1453,1454,1,0,0,0,1454,1455,6,171,12,0,1455,361,1,0,0,0,1456,1457, + 3,72,27,0,1457,1458,1,0,0,0,1458,1459,6,172,12,0,1459,363,1,0,0,0,1460, + 1461,3,74,28,0,1461,1462,1,0,0,0,1462,1463,6,173,12,0,1463,365,1,0,0,0, + 1464,1465,3,76,29,0,1465,1466,1,0,0,0,1466,1467,6,174,17,0,1467,1468,6, + 174,13,0,1468,367,1,0,0,0,1469,1470,3,114,48,0,1470,1471,1,0,0,0,1471,1472, + 6,175,19,0,1472,369,1,0,0,0,1473,1474,3,116,49,0,1474,1475,1,0,0,0,1475, + 1476,6,176,20,0,1476,371,1,0,0,0,1477,1478,3,120,51,0,1478,1479,1,0,0,0, + 1479,1480,6,177,24,0,1480,373,1,0,0,0,1481,1482,3,286,134,0,1482,1483,1, + 0,0,0,1483,1484,6,178,34,0,1484,1485,6,178,35,0,1485,375,1,0,0,0,1486,1487, + 3,226,104,0,1487,1488,1,0,0,0,1488,1489,6,179,22,0,1489,377,1,0,0,0,1490, + 1491,3,98,40,0,1491,1492,1,0,0,0,1492,1493,6,180,23,0,1493,379,1,0,0,0, + 1494,1495,3,70,26,0,1495,1496,1,0,0,0,1496,1497,6,181,12,0,1497,381,1,0, + 0,0,1498,1499,3,72,27,0,1499,1500,1,0,0,0,1500,1501,6,182,12,0,1501,383, + 1,0,0,0,1502,1503,3,74,28,0,1503,1504,1,0,0,0,1504,1505,6,183,12,0,1505, + 385,1,0,0,0,1506,1507,3,76,29,0,1507,1508,1,0,0,0,1508,1509,6,184,17,0, + 1509,1510,6,184,13,0,1510,1511,6,184,13,0,1511,387,1,0,0,0,1512,1513,3, + 116,49,0,1513,1514,1,0,0,0,1514,1515,6,185,20,0,1515,389,1,0,0,0,1516,1517, + 3,120,51,0,1517,1518,1,0,0,0,1518,1519,6,186,24,0,1519,391,1,0,0,0,1520, + 1521,3,252,117,0,1521,1522,1,0,0,0,1522,1523,6,187,27,0,1523,393,1,0,0, + 0,1524,1525,3,70,26,0,1525,1526,1,0,0,0,1526,1527,6,188,12,0,1527,395,1, + 0,0,0,1528,1529,3,72,27,0,1529,1530,1,0,0,0,1530,1531,6,189,12,0,1531,397, + 1,0,0,0,1532,1533,3,74,28,0,1533,1534,1,0,0,0,1534,1535,6,190,12,0,1535, + 399,1,0,0,0,1536,1537,3,76,29,0,1537,1538,1,0,0,0,1538,1539,6,191,17,0, + 1539,1540,6,191,13,0,1540,401,1,0,0,0,1541,1542,7,35,0,0,1542,1543,7,7, + 0,0,1543,1544,7,1,0,0,1544,1545,7,9,0,0,1545,403,1,0,0,0,1546,1547,3,272, + 127,0,1547,1548,1,0,0,0,1548,1549,6,193,36,0,1549,405,1,0,0,0,1550,1551, + 3,286,134,0,1551,1552,1,0,0,0,1552,1553,6,194,34,0,1553,1554,6,194,13,0, + 1554,1555,6,194,0,0,1555,407,1,0,0,0,1556,1557,7,20,0,0,1557,1558,7,2,0, + 0,1558,1559,7,1,0,0,1559,1560,7,9,0,0,1560,1561,7,17,0,0,1561,1562,1,0, + 0,0,1562,1563,6,195,13,0,1563,1564,6,195,0,0,1564,409,1,0,0,0,1565,1566, + 3,226,104,0,1566,1567,1,0,0,0,1567,1568,6,196,22,0,1568,411,1,0,0,0,1569, + 1570,3,98,40,0,1570,1571,1,0,0,0,1571,1572,6,197,23,0,1572,413,1,0,0,0, + 1573,1574,3,114,48,0,1574,1575,1,0,0,0,1575,1576,6,198,19,0,1576,415,1, + 0,0,0,1577,1578,3,188,85,0,1578,1579,1,0,0,0,1579,1580,6,199,33,0,1580, + 417,1,0,0,0,1581,1582,3,192,87,0,1582,1583,1,0,0,0,1583,1584,6,200,32,0, + 1584,419,1,0,0,0,1585,1586,3,70,26,0,1586,1587,1,0,0,0,1587,1588,6,201, + 12,0,1588,421,1,0,0,0,1589,1590,3,72,27,0,1590,1591,1,0,0,0,1591,1592,6, + 202,12,0,1592,423,1,0,0,0,1593,1594,3,74,28,0,1594,1595,1,0,0,0,1595,1596, + 6,203,12,0,1596,425,1,0,0,0,1597,1598,3,76,29,0,1598,1599,1,0,0,0,1599, + 1600,6,204,17,0,1600,1601,6,204,13,0,1601,427,1,0,0,0,1602,1603,3,226,104, + 0,1603,1604,1,0,0,0,1604,1605,6,205,22,0,1605,1606,6,205,13,0,1606,1607, + 6,205,37,0,1607,429,1,0,0,0,1608,1609,3,98,40,0,1609,1610,1,0,0,0,1610, + 1611,6,206,23,0,1611,1612,6,206,13,0,1612,1613,6,206,37,0,1613,431,1,0, + 0,0,1614,1615,3,70,26,0,1615,1616,1,0,0,0,1616,1617,6,207,12,0,1617,433, + 1,0,0,0,1618,1619,3,72,27,0,1619,1620,1,0,0,0,1620,1621,6,208,12,0,1621, + 435,1,0,0,0,1622,1623,3,74,28,0,1623,1624,1,0,0,0,1624,1625,6,209,12,0, + 1625,437,1,0,0,0,1626,1627,3,114,48,0,1627,1628,1,0,0,0,1628,1629,6,210, + 19,0,1629,1630,6,210,13,0,1630,1631,6,210,11,0,1631,439,1,0,0,0,1632,1633, + 3,116,49,0,1633,1634,1,0,0,0,1634,1635,6,211,20,0,1635,1636,6,211,13,0, + 1636,1637,6,211,11,0,1637,441,1,0,0,0,1638,1639,3,70,26,0,1639,1640,1,0, + 0,0,1640,1641,6,212,12,0,1641,443,1,0,0,0,1642,1643,3,72,27,0,1643,1644, + 1,0,0,0,1644,1645,6,213,12,0,1645,445,1,0,0,0,1646,1647,3,74,28,0,1647, + 1648,1,0,0,0,1648,1649,6,214,12,0,1649,447,1,0,0,0,1650,1651,3,192,87,0, + 1651,1652,1,0,0,0,1652,1653,6,215,13,0,1653,1654,6,215,0,0,1654,1655,6, + 215,32,0,1655,449,1,0,0,0,1656,1657,3,188,85,0,1657,1658,1,0,0,0,1658,1659, + 6,216,13,0,1659,1660,6,216,0,0,1660,1661,6,216,33,0,1661,451,1,0,0,0,1662, + 1663,3,104,43,0,1663,1664,1,0,0,0,1664,1665,6,217,13,0,1665,1666,6,217, + 0,0,1666,1667,6,217,38,0,1667,453,1,0,0,0,1668,1669,3,76,29,0,1669,1670, + 1,0,0,0,1670,1671,6,218,17,0,1671,1672,6,218,13,0,1672,455,1,0,0,0,1673, + 1674,3,76,29,0,1674,1675,1,0,0,0,1675,1676,6,219,17,0,1676,1677,6,219,13, + 0,1677,457,1,0,0,0,1678,1679,3,286,134,0,1679,1680,1,0,0,0,1680,1681,6, + 220,34,0,1681,459,1,0,0,0,1682,1683,3,272,127,0,1683,1684,1,0,0,0,1684, + 1685,6,221,36,0,1685,461,1,0,0,0,1686,1687,3,120,51,0,1687,1688,1,0,0,0, + 1688,1689,6,222,24,0,1689,463,1,0,0,0,1690,1691,3,116,49,0,1691,1692,1, + 0,0,0,1692,1693,6,223,20,0,1693,465,1,0,0,0,1694,1695,3,192,87,0,1695,1696, + 1,0,0,0,1696,1697,6,224,32,0,1697,467,1,0,0,0,1698,1699,3,188,85,0,1699, + 1700,1,0,0,0,1700,1701,6,225,33,0,1701,469,1,0,0,0,1702,1703,3,70,26,0, + 1703,1704,1,0,0,0,1704,1705,6,226,12,0,1705,471,1,0,0,0,1706,1707,3,72, + 27,0,1707,1708,1,0,0,0,1708,1709,6,227,12,0,1709,473,1,0,0,0,1710,1711, + 3,74,28,0,1711,1712,1,0,0,0,1712,1713,6,228,12,0,1713,475,1,0,0,0,1714, + 1715,3,76,29,0,1715,1716,1,0,0,0,1716,1717,6,229,17,0,1717,1718,6,229,13, + 0,1718,477,1,0,0,0,1719,1720,3,188,85,0,1720,1721,1,0,0,0,1721,1722,6,230, + 33,0,1722,479,1,0,0,0,1723,1724,3,74,28,0,1724,1725,1,0,0,0,1725,1726,6, + 231,12,0,1726,481,1,0,0,0,1727,1728,3,70,26,0,1728,1729,1,0,0,0,1729,1730, + 6,232,12,0,1730,483,1,0,0,0,1731,1732,3,72,27,0,1732,1733,1,0,0,0,1733, + 1734,6,233,12,0,1734,485,1,0,0,0,68,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, + 15,16,17,718,728,732,735,744,746,757,776,781,790,797,802,804,815,823,826, + 828,833,838,844,851,856,862,865,873,877,1009,1014,1021,1023,1039,1044,1049, + 1051,1057,1134,1139,1186,1190,1195,1200,1205,1207,1211,1213,1298,1302,1307, + 1448,1450,39,5,1,0,5,4,0,5,6,0,5,2,0,5,3,0,5,8,0,5,5,0,5,9,0,5,13,0,5,16, + 0,5,11,0,5,14,0,0,1,0,4,0,0,7,16,0,7,73,0,5,0,0,7,30,0,7,74,0,7,39,0,7, + 40,0,7,37,0,7,84,0,7,31,0,7,42,0,7,54,0,7,72,0,7,88,0,5,10,0,5,7,0,7,98, + 0,7,97,0,7,76,0,7,75,0,7,96,0,5,12,0,7,92,0,5,15,0,7,34,0]; private static __ATN: ATN; public static get _ATN(): ATN { diff --git a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.g4 b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.g4 index b6d5e2f7f6041..a6429953bff22 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.g4 +++ b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.g4 @@ -57,6 +57,8 @@ processingCommand // in development | {this.isDevVersion()}? inlinestatsCommand | {this.isDevVersion()}? lookupCommand + | {this.isDevVersion()}? changePointCommand + | {this.isDevVersion()}? insistCommand ; whereCommand @@ -340,4 +342,12 @@ joinCondition joinPredicate : valueExpression + ; + +changePointCommand + : DEV_CHANGE_POINT value=qualifiedName (ON key=qualifiedName)? (AS targetType=qualifiedName COMMA targetPvalue=qualifiedName)? + ; + +insistCommand + : DEV_INSIST qualifiedNamePatterns ; \ No newline at end of file diff --git a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.interp b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.interp index 7459589fe9637..04440d5cbca77 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.interp +++ b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.interp @@ -27,6 +27,8 @@ null null null null +null +null '|' null null @@ -130,6 +132,12 @@ null null null null +null +null +null +null +null +null token symbolic names: null @@ -150,7 +158,9 @@ SORT STATS WHERE JOIN_LOOKUP +DEV_CHANGE_POINT DEV_INLINESTATS +DEV_INSIST DEV_LOOKUP DEV_METRICS DEV_JOIN_FULL @@ -263,6 +273,12 @@ METRICS_WS CLOSING_METRICS_LINE_COMMENT CLOSING_METRICS_MULTILINE_COMMENT CLOSING_METRICS_WS +CHANGE_POINT_LINE_COMMENT +CHANGE_POINT_MULTILINE_COMMENT +CHANGE_POINT_WS +INSIST_WS +INSIST_LINE_COMMENT +INSIST_MULTILINE_COMMENT rule names: singleStatement @@ -331,7 +347,9 @@ joinCommand joinTarget joinCondition joinPredicate +changePointCommand +insistCommand atn: -[4, 1, 130, 642, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 142, 8, 1, 10, 1, 12, 1, 145, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 153, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 172, 8, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 184, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 191, 8, 5, 10, 5, 12, 5, 194, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 201, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 206, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 214, 8, 5, 10, 5, 12, 5, 217, 9, 5, 1, 6, 1, 6, 3, 6, 221, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 228, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 233, 8, 6, 1, 7, 1, 7, 1, 7, 3, 7, 238, 8, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 248, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 254, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 262, 8, 9, 10, 9, 12, 9, 265, 9, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 275, 8, 10, 1, 10, 1, 10, 1, 10, 5, 10, 280, 8, 10, 10, 10, 12, 10, 283, 9, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 291, 8, 11, 10, 11, 12, 11, 294, 9, 11, 1, 11, 1, 11, 3, 11, 298, 8, 11, 3, 11, 300, 8, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 310, 8, 13, 10, 13, 12, 13, 313, 9, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 5, 17, 329, 8, 17, 10, 17, 12, 17, 332, 9, 17, 1, 18, 1, 18, 1, 18, 3, 18, 337, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 5, 19, 345, 8, 19, 10, 19, 12, 19, 348, 9, 19, 1, 19, 3, 19, 351, 8, 19, 1, 20, 1, 20, 1, 20, 3, 20, 356, 8, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 5, 23, 368, 8, 23, 10, 23, 12, 23, 371, 9, 23, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 377, 8, 24, 10, 24, 12, 24, 380, 9, 24, 1, 24, 3, 24, 383, 8, 24, 1, 24, 1, 24, 3, 24, 387, 8, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 3, 26, 394, 8, 26, 1, 26, 1, 26, 3, 26, 398, 8, 26, 1, 27, 1, 27, 1, 27, 5, 27, 403, 8, 27, 10, 27, 12, 27, 406, 9, 27, 1, 28, 1, 28, 1, 28, 3, 28, 411, 8, 28, 1, 29, 1, 29, 1, 29, 5, 29, 416, 8, 29, 10, 29, 12, 29, 419, 9, 29, 1, 30, 1, 30, 1, 30, 5, 30, 424, 8, 30, 10, 30, 12, 30, 427, 9, 30, 1, 31, 1, 31, 1, 31, 5, 31, 432, 8, 31, 10, 31, 12, 31, 435, 9, 31, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 441, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 456, 8, 34, 10, 34, 12, 34, 459, 9, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 467, 8, 34, 10, 34, 12, 34, 470, 9, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 478, 8, 34, 10, 34, 12, 34, 481, 9, 34, 1, 34, 1, 34, 3, 34, 485, 8, 34, 1, 35, 1, 35, 3, 35, 489, 8, 35, 1, 36, 1, 36, 3, 36, 493, 8, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 502, 8, 38, 10, 38, 12, 38, 505, 9, 38, 1, 39, 1, 39, 3, 39, 509, 8, 39, 1, 39, 1, 39, 3, 39, 513, 8, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 5, 42, 525, 8, 42, 10, 42, 12, 42, 528, 9, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 538, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 5, 47, 550, 8, 47, 10, 47, 12, 47, 553, 9, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 3, 50, 563, 8, 50, 1, 51, 3, 51, 566, 8, 51, 1, 51, 1, 51, 1, 52, 3, 52, 571, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 593, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 599, 8, 58, 10, 58, 12, 58, 602, 9, 58, 3, 58, 604, 8, 58, 1, 59, 1, 59, 1, 59, 3, 59, 609, 8, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 622, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 635, 8, 64, 10, 64, 12, 64, 638, 9, 64, 1, 65, 1, 65, 1, 65, 0, 4, 2, 10, 18, 20, 66, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 0, 9, 1, 0, 63, 64, 1, 0, 65, 67, 2, 0, 29, 29, 82, 82, 1, 0, 73, 74, 2, 0, 34, 34, 39, 39, 2, 0, 42, 42, 45, 45, 2, 0, 41, 41, 55, 55, 2, 0, 56, 56, 58, 62, 2, 0, 17, 17, 22, 23, 667, 0, 132, 1, 0, 0, 0, 2, 135, 1, 0, 0, 0, 4, 152, 1, 0, 0, 0, 6, 171, 1, 0, 0, 0, 8, 173, 1, 0, 0, 0, 10, 205, 1, 0, 0, 0, 12, 232, 1, 0, 0, 0, 14, 234, 1, 0, 0, 0, 16, 247, 1, 0, 0, 0, 18, 253, 1, 0, 0, 0, 20, 274, 1, 0, 0, 0, 22, 284, 1, 0, 0, 0, 24, 303, 1, 0, 0, 0, 26, 305, 1, 0, 0, 0, 28, 316, 1, 0, 0, 0, 30, 320, 1, 0, 0, 0, 32, 322, 1, 0, 0, 0, 34, 325, 1, 0, 0, 0, 36, 336, 1, 0, 0, 0, 38, 340, 1, 0, 0, 0, 40, 355, 1, 0, 0, 0, 42, 359, 1, 0, 0, 0, 44, 361, 1, 0, 0, 0, 46, 363, 1, 0, 0, 0, 48, 372, 1, 0, 0, 0, 50, 388, 1, 0, 0, 0, 52, 391, 1, 0, 0, 0, 54, 399, 1, 0, 0, 0, 56, 407, 1, 0, 0, 0, 58, 412, 1, 0, 0, 0, 60, 420, 1, 0, 0, 0, 62, 428, 1, 0, 0, 0, 64, 436, 1, 0, 0, 0, 66, 440, 1, 0, 0, 0, 68, 484, 1, 0, 0, 0, 70, 488, 1, 0, 0, 0, 72, 492, 1, 0, 0, 0, 74, 494, 1, 0, 0, 0, 76, 497, 1, 0, 0, 0, 78, 506, 1, 0, 0, 0, 80, 514, 1, 0, 0, 0, 82, 517, 1, 0, 0, 0, 84, 520, 1, 0, 0, 0, 86, 529, 1, 0, 0, 0, 88, 533, 1, 0, 0, 0, 90, 539, 1, 0, 0, 0, 92, 543, 1, 0, 0, 0, 94, 546, 1, 0, 0, 0, 96, 554, 1, 0, 0, 0, 98, 558, 1, 0, 0, 0, 100, 562, 1, 0, 0, 0, 102, 565, 1, 0, 0, 0, 104, 570, 1, 0, 0, 0, 106, 574, 1, 0, 0, 0, 108, 576, 1, 0, 0, 0, 110, 578, 1, 0, 0, 0, 112, 581, 1, 0, 0, 0, 114, 585, 1, 0, 0, 0, 116, 588, 1, 0, 0, 0, 118, 608, 1, 0, 0, 0, 120, 612, 1, 0, 0, 0, 122, 617, 1, 0, 0, 0, 124, 623, 1, 0, 0, 0, 126, 628, 1, 0, 0, 0, 128, 630, 1, 0, 0, 0, 130, 639, 1, 0, 0, 0, 132, 133, 3, 2, 1, 0, 133, 134, 5, 0, 0, 1, 134, 1, 1, 0, 0, 0, 135, 136, 6, 1, -1, 0, 136, 137, 3, 4, 2, 0, 137, 143, 1, 0, 0, 0, 138, 139, 10, 1, 0, 0, 139, 140, 5, 28, 0, 0, 140, 142, 3, 6, 3, 0, 141, 138, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 3, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 153, 3, 110, 55, 0, 147, 153, 3, 38, 19, 0, 148, 153, 3, 32, 16, 0, 149, 153, 3, 114, 57, 0, 150, 151, 4, 2, 1, 0, 151, 153, 3, 48, 24, 0, 152, 146, 1, 0, 0, 0, 152, 147, 1, 0, 0, 0, 152, 148, 1, 0, 0, 0, 152, 149, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 153, 5, 1, 0, 0, 0, 154, 172, 3, 50, 25, 0, 155, 172, 3, 8, 4, 0, 156, 172, 3, 80, 40, 0, 157, 172, 3, 74, 37, 0, 158, 172, 3, 52, 26, 0, 159, 172, 3, 76, 38, 0, 160, 172, 3, 82, 41, 0, 161, 172, 3, 84, 42, 0, 162, 172, 3, 88, 44, 0, 163, 172, 3, 90, 45, 0, 164, 172, 3, 116, 58, 0, 165, 172, 3, 92, 46, 0, 166, 172, 3, 124, 62, 0, 167, 168, 4, 3, 2, 0, 168, 172, 3, 122, 61, 0, 169, 170, 4, 3, 3, 0, 170, 172, 3, 120, 60, 0, 171, 154, 1, 0, 0, 0, 171, 155, 1, 0, 0, 0, 171, 156, 1, 0, 0, 0, 171, 157, 1, 0, 0, 0, 171, 158, 1, 0, 0, 0, 171, 159, 1, 0, 0, 0, 171, 160, 1, 0, 0, 0, 171, 161, 1, 0, 0, 0, 171, 162, 1, 0, 0, 0, 171, 163, 1, 0, 0, 0, 171, 164, 1, 0, 0, 0, 171, 165, 1, 0, 0, 0, 171, 166, 1, 0, 0, 0, 171, 167, 1, 0, 0, 0, 171, 169, 1, 0, 0, 0, 172, 7, 1, 0, 0, 0, 173, 174, 5, 16, 0, 0, 174, 175, 3, 10, 5, 0, 175, 9, 1, 0, 0, 0, 176, 177, 6, 5, -1, 0, 177, 178, 5, 48, 0, 0, 178, 206, 3, 10, 5, 8, 179, 206, 3, 16, 8, 0, 180, 206, 3, 12, 6, 0, 181, 183, 3, 16, 8, 0, 182, 184, 5, 48, 0, 0, 183, 182, 1, 0, 0, 0, 183, 184, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185, 186, 5, 43, 0, 0, 186, 187, 5, 47, 0, 0, 187, 192, 3, 16, 8, 0, 188, 189, 5, 38, 0, 0, 189, 191, 3, 16, 8, 0, 190, 188, 1, 0, 0, 0, 191, 194, 1, 0, 0, 0, 192, 190, 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 195, 1, 0, 0, 0, 194, 192, 1, 0, 0, 0, 195, 196, 5, 54, 0, 0, 196, 206, 1, 0, 0, 0, 197, 198, 3, 16, 8, 0, 198, 200, 5, 44, 0, 0, 199, 201, 5, 48, 0, 0, 200, 199, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202, 203, 5, 49, 0, 0, 203, 206, 1, 0, 0, 0, 204, 206, 3, 14, 7, 0, 205, 176, 1, 0, 0, 0, 205, 179, 1, 0, 0, 0, 205, 180, 1, 0, 0, 0, 205, 181, 1, 0, 0, 0, 205, 197, 1, 0, 0, 0, 205, 204, 1, 0, 0, 0, 206, 215, 1, 0, 0, 0, 207, 208, 10, 5, 0, 0, 208, 209, 5, 33, 0, 0, 209, 214, 3, 10, 5, 6, 210, 211, 10, 4, 0, 0, 211, 212, 5, 51, 0, 0, 212, 214, 3, 10, 5, 5, 213, 207, 1, 0, 0, 0, 213, 210, 1, 0, 0, 0, 214, 217, 1, 0, 0, 0, 215, 213, 1, 0, 0, 0, 215, 216, 1, 0, 0, 0, 216, 11, 1, 0, 0, 0, 217, 215, 1, 0, 0, 0, 218, 220, 3, 16, 8, 0, 219, 221, 5, 48, 0, 0, 220, 219, 1, 0, 0, 0, 220, 221, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 223, 5, 46, 0, 0, 223, 224, 3, 106, 53, 0, 224, 233, 1, 0, 0, 0, 225, 227, 3, 16, 8, 0, 226, 228, 5, 48, 0, 0, 227, 226, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 230, 5, 53, 0, 0, 230, 231, 3, 106, 53, 0, 231, 233, 1, 0, 0, 0, 232, 218, 1, 0, 0, 0, 232, 225, 1, 0, 0, 0, 233, 13, 1, 0, 0, 0, 234, 237, 3, 58, 29, 0, 235, 236, 5, 36, 0, 0, 236, 238, 3, 30, 15, 0, 237, 235, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 239, 1, 0, 0, 0, 239, 240, 5, 37, 0, 0, 240, 241, 3, 68, 34, 0, 241, 15, 1, 0, 0, 0, 242, 248, 3, 18, 9, 0, 243, 244, 3, 18, 9, 0, 244, 245, 3, 108, 54, 0, 245, 246, 3, 18, 9, 0, 246, 248, 1, 0, 0, 0, 247, 242, 1, 0, 0, 0, 247, 243, 1, 0, 0, 0, 248, 17, 1, 0, 0, 0, 249, 250, 6, 9, -1, 0, 250, 254, 3, 20, 10, 0, 251, 252, 7, 0, 0, 0, 252, 254, 3, 18, 9, 3, 253, 249, 1, 0, 0, 0, 253, 251, 1, 0, 0, 0, 254, 263, 1, 0, 0, 0, 255, 256, 10, 2, 0, 0, 256, 257, 7, 1, 0, 0, 257, 262, 3, 18, 9, 3, 258, 259, 10, 1, 0, 0, 259, 260, 7, 0, 0, 0, 260, 262, 3, 18, 9, 2, 261, 255, 1, 0, 0, 0, 261, 258, 1, 0, 0, 0, 262, 265, 1, 0, 0, 0, 263, 261, 1, 0, 0, 0, 263, 264, 1, 0, 0, 0, 264, 19, 1, 0, 0, 0, 265, 263, 1, 0, 0, 0, 266, 267, 6, 10, -1, 0, 267, 275, 3, 68, 34, 0, 268, 275, 3, 58, 29, 0, 269, 275, 3, 22, 11, 0, 270, 271, 5, 47, 0, 0, 271, 272, 3, 10, 5, 0, 272, 273, 5, 54, 0, 0, 273, 275, 1, 0, 0, 0, 274, 266, 1, 0, 0, 0, 274, 268, 1, 0, 0, 0, 274, 269, 1, 0, 0, 0, 274, 270, 1, 0, 0, 0, 275, 281, 1, 0, 0, 0, 276, 277, 10, 1, 0, 0, 277, 278, 5, 36, 0, 0, 278, 280, 3, 30, 15, 0, 279, 276, 1, 0, 0, 0, 280, 283, 1, 0, 0, 0, 281, 279, 1, 0, 0, 0, 281, 282, 1, 0, 0, 0, 282, 21, 1, 0, 0, 0, 283, 281, 1, 0, 0, 0, 284, 285, 3, 24, 12, 0, 285, 299, 5, 47, 0, 0, 286, 300, 5, 65, 0, 0, 287, 292, 3, 10, 5, 0, 288, 289, 5, 38, 0, 0, 289, 291, 3, 10, 5, 0, 290, 288, 1, 0, 0, 0, 291, 294, 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 297, 1, 0, 0, 0, 294, 292, 1, 0, 0, 0, 295, 296, 5, 38, 0, 0, 296, 298, 3, 26, 13, 0, 297, 295, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 300, 1, 0, 0, 0, 299, 286, 1, 0, 0, 0, 299, 287, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 301, 1, 0, 0, 0, 301, 302, 5, 54, 0, 0, 302, 23, 1, 0, 0, 0, 303, 304, 3, 72, 36, 0, 304, 25, 1, 0, 0, 0, 305, 306, 5, 68, 0, 0, 306, 311, 3, 28, 14, 0, 307, 308, 5, 38, 0, 0, 308, 310, 3, 28, 14, 0, 309, 307, 1, 0, 0, 0, 310, 313, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 314, 1, 0, 0, 0, 313, 311, 1, 0, 0, 0, 314, 315, 5, 69, 0, 0, 315, 27, 1, 0, 0, 0, 316, 317, 3, 106, 53, 0, 317, 318, 5, 37, 0, 0, 318, 319, 3, 68, 34, 0, 319, 29, 1, 0, 0, 0, 320, 321, 3, 64, 32, 0, 321, 31, 1, 0, 0, 0, 322, 323, 5, 12, 0, 0, 323, 324, 3, 34, 17, 0, 324, 33, 1, 0, 0, 0, 325, 330, 3, 36, 18, 0, 326, 327, 5, 38, 0, 0, 327, 329, 3, 36, 18, 0, 328, 326, 1, 0, 0, 0, 329, 332, 1, 0, 0, 0, 330, 328, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 35, 1, 0, 0, 0, 332, 330, 1, 0, 0, 0, 333, 334, 3, 58, 29, 0, 334, 335, 5, 35, 0, 0, 335, 337, 1, 0, 0, 0, 336, 333, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 339, 3, 10, 5, 0, 339, 37, 1, 0, 0, 0, 340, 341, 5, 6, 0, 0, 341, 346, 3, 40, 20, 0, 342, 343, 5, 38, 0, 0, 343, 345, 3, 40, 20, 0, 344, 342, 1, 0, 0, 0, 345, 348, 1, 0, 0, 0, 346, 344, 1, 0, 0, 0, 346, 347, 1, 0, 0, 0, 347, 350, 1, 0, 0, 0, 348, 346, 1, 0, 0, 0, 349, 351, 3, 46, 23, 0, 350, 349, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 39, 1, 0, 0, 0, 352, 353, 3, 42, 21, 0, 353, 354, 5, 37, 0, 0, 354, 356, 1, 0, 0, 0, 355, 352, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 357, 1, 0, 0, 0, 357, 358, 3, 44, 22, 0, 358, 41, 1, 0, 0, 0, 359, 360, 7, 2, 0, 0, 360, 43, 1, 0, 0, 0, 361, 362, 7, 2, 0, 0, 362, 45, 1, 0, 0, 0, 363, 364, 5, 81, 0, 0, 364, 369, 5, 82, 0, 0, 365, 366, 5, 38, 0, 0, 366, 368, 5, 82, 0, 0, 367, 365, 1, 0, 0, 0, 368, 371, 1, 0, 0, 0, 369, 367, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 47, 1, 0, 0, 0, 371, 369, 1, 0, 0, 0, 372, 373, 5, 20, 0, 0, 373, 378, 3, 40, 20, 0, 374, 375, 5, 38, 0, 0, 375, 377, 3, 40, 20, 0, 376, 374, 1, 0, 0, 0, 377, 380, 1, 0, 0, 0, 378, 376, 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, 382, 1, 0, 0, 0, 380, 378, 1, 0, 0, 0, 381, 383, 3, 54, 27, 0, 382, 381, 1, 0, 0, 0, 382, 383, 1, 0, 0, 0, 383, 386, 1, 0, 0, 0, 384, 385, 5, 32, 0, 0, 385, 387, 3, 34, 17, 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 49, 1, 0, 0, 0, 388, 389, 5, 4, 0, 0, 389, 390, 3, 34, 17, 0, 390, 51, 1, 0, 0, 0, 391, 393, 5, 15, 0, 0, 392, 394, 3, 54, 27, 0, 393, 392, 1, 0, 0, 0, 393, 394, 1, 0, 0, 0, 394, 397, 1, 0, 0, 0, 395, 396, 5, 32, 0, 0, 396, 398, 3, 34, 17, 0, 397, 395, 1, 0, 0, 0, 397, 398, 1, 0, 0, 0, 398, 53, 1, 0, 0, 0, 399, 404, 3, 56, 28, 0, 400, 401, 5, 38, 0, 0, 401, 403, 3, 56, 28, 0, 402, 400, 1, 0, 0, 0, 403, 406, 1, 0, 0, 0, 404, 402, 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 55, 1, 0, 0, 0, 406, 404, 1, 0, 0, 0, 407, 410, 3, 36, 18, 0, 408, 409, 5, 16, 0, 0, 409, 411, 3, 10, 5, 0, 410, 408, 1, 0, 0, 0, 410, 411, 1, 0, 0, 0, 411, 57, 1, 0, 0, 0, 412, 417, 3, 72, 36, 0, 413, 414, 5, 40, 0, 0, 414, 416, 3, 72, 36, 0, 415, 413, 1, 0, 0, 0, 416, 419, 1, 0, 0, 0, 417, 415, 1, 0, 0, 0, 417, 418, 1, 0, 0, 0, 418, 59, 1, 0, 0, 0, 419, 417, 1, 0, 0, 0, 420, 425, 3, 66, 33, 0, 421, 422, 5, 40, 0, 0, 422, 424, 3, 66, 33, 0, 423, 421, 1, 0, 0, 0, 424, 427, 1, 0, 0, 0, 425, 423, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 61, 1, 0, 0, 0, 427, 425, 1, 0, 0, 0, 428, 433, 3, 60, 30, 0, 429, 430, 5, 38, 0, 0, 430, 432, 3, 60, 30, 0, 431, 429, 1, 0, 0, 0, 432, 435, 1, 0, 0, 0, 433, 431, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 434, 63, 1, 0, 0, 0, 435, 433, 1, 0, 0, 0, 436, 437, 7, 3, 0, 0, 437, 65, 1, 0, 0, 0, 438, 441, 5, 86, 0, 0, 439, 441, 3, 70, 35, 0, 440, 438, 1, 0, 0, 0, 440, 439, 1, 0, 0, 0, 441, 67, 1, 0, 0, 0, 442, 485, 5, 49, 0, 0, 443, 444, 3, 104, 52, 0, 444, 445, 5, 73, 0, 0, 445, 485, 1, 0, 0, 0, 446, 485, 3, 102, 51, 0, 447, 485, 3, 104, 52, 0, 448, 485, 3, 98, 49, 0, 449, 485, 3, 70, 35, 0, 450, 485, 3, 106, 53, 0, 451, 452, 5, 71, 0, 0, 452, 457, 3, 100, 50, 0, 453, 454, 5, 38, 0, 0, 454, 456, 3, 100, 50, 0, 455, 453, 1, 0, 0, 0, 456, 459, 1, 0, 0, 0, 457, 455, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, 460, 1, 0, 0, 0, 459, 457, 1, 0, 0, 0, 460, 461, 5, 72, 0, 0, 461, 485, 1, 0, 0, 0, 462, 463, 5, 71, 0, 0, 463, 468, 3, 98, 49, 0, 464, 465, 5, 38, 0, 0, 465, 467, 3, 98, 49, 0, 466, 464, 1, 0, 0, 0, 467, 470, 1, 0, 0, 0, 468, 466, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 471, 1, 0, 0, 0, 470, 468, 1, 0, 0, 0, 471, 472, 5, 72, 0, 0, 472, 485, 1, 0, 0, 0, 473, 474, 5, 71, 0, 0, 474, 479, 3, 106, 53, 0, 475, 476, 5, 38, 0, 0, 476, 478, 3, 106, 53, 0, 477, 475, 1, 0, 0, 0, 478, 481, 1, 0, 0, 0, 479, 477, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 482, 1, 0, 0, 0, 481, 479, 1, 0, 0, 0, 482, 483, 5, 72, 0, 0, 483, 485, 1, 0, 0, 0, 484, 442, 1, 0, 0, 0, 484, 443, 1, 0, 0, 0, 484, 446, 1, 0, 0, 0, 484, 447, 1, 0, 0, 0, 484, 448, 1, 0, 0, 0, 484, 449, 1, 0, 0, 0, 484, 450, 1, 0, 0, 0, 484, 451, 1, 0, 0, 0, 484, 462, 1, 0, 0, 0, 484, 473, 1, 0, 0, 0, 485, 69, 1, 0, 0, 0, 486, 489, 5, 52, 0, 0, 487, 489, 5, 70, 0, 0, 488, 486, 1, 0, 0, 0, 488, 487, 1, 0, 0, 0, 489, 71, 1, 0, 0, 0, 490, 493, 3, 64, 32, 0, 491, 493, 3, 70, 35, 0, 492, 490, 1, 0, 0, 0, 492, 491, 1, 0, 0, 0, 493, 73, 1, 0, 0, 0, 494, 495, 5, 9, 0, 0, 495, 496, 5, 30, 0, 0, 496, 75, 1, 0, 0, 0, 497, 498, 5, 14, 0, 0, 498, 503, 3, 78, 39, 0, 499, 500, 5, 38, 0, 0, 500, 502, 3, 78, 39, 0, 501, 499, 1, 0, 0, 0, 502, 505, 1, 0, 0, 0, 503, 501, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 77, 1, 0, 0, 0, 505, 503, 1, 0, 0, 0, 506, 508, 3, 10, 5, 0, 507, 509, 7, 4, 0, 0, 508, 507, 1, 0, 0, 0, 508, 509, 1, 0, 0, 0, 509, 512, 1, 0, 0, 0, 510, 511, 5, 50, 0, 0, 511, 513, 7, 5, 0, 0, 512, 510, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 79, 1, 0, 0, 0, 514, 515, 5, 8, 0, 0, 515, 516, 3, 62, 31, 0, 516, 81, 1, 0, 0, 0, 517, 518, 5, 2, 0, 0, 518, 519, 3, 62, 31, 0, 519, 83, 1, 0, 0, 0, 520, 521, 5, 11, 0, 0, 521, 526, 3, 86, 43, 0, 522, 523, 5, 38, 0, 0, 523, 525, 3, 86, 43, 0, 524, 522, 1, 0, 0, 0, 525, 528, 1, 0, 0, 0, 526, 524, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 85, 1, 0, 0, 0, 528, 526, 1, 0, 0, 0, 529, 530, 3, 60, 30, 0, 530, 531, 5, 90, 0, 0, 531, 532, 3, 60, 30, 0, 532, 87, 1, 0, 0, 0, 533, 534, 5, 1, 0, 0, 534, 535, 3, 20, 10, 0, 535, 537, 3, 106, 53, 0, 536, 538, 3, 94, 47, 0, 537, 536, 1, 0, 0, 0, 537, 538, 1, 0, 0, 0, 538, 89, 1, 0, 0, 0, 539, 540, 5, 7, 0, 0, 540, 541, 3, 20, 10, 0, 541, 542, 3, 106, 53, 0, 542, 91, 1, 0, 0, 0, 543, 544, 5, 10, 0, 0, 544, 545, 3, 58, 29, 0, 545, 93, 1, 0, 0, 0, 546, 551, 3, 96, 48, 0, 547, 548, 5, 38, 0, 0, 548, 550, 3, 96, 48, 0, 549, 547, 1, 0, 0, 0, 550, 553, 1, 0, 0, 0, 551, 549, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 95, 1, 0, 0, 0, 553, 551, 1, 0, 0, 0, 554, 555, 3, 64, 32, 0, 555, 556, 5, 35, 0, 0, 556, 557, 3, 68, 34, 0, 557, 97, 1, 0, 0, 0, 558, 559, 7, 6, 0, 0, 559, 99, 1, 0, 0, 0, 560, 563, 3, 102, 51, 0, 561, 563, 3, 104, 52, 0, 562, 560, 1, 0, 0, 0, 562, 561, 1, 0, 0, 0, 563, 101, 1, 0, 0, 0, 564, 566, 7, 0, 0, 0, 565, 564, 1, 0, 0, 0, 565, 566, 1, 0, 0, 0, 566, 567, 1, 0, 0, 0, 567, 568, 5, 31, 0, 0, 568, 103, 1, 0, 0, 0, 569, 571, 7, 0, 0, 0, 570, 569, 1, 0, 0, 0, 570, 571, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 573, 5, 30, 0, 0, 573, 105, 1, 0, 0, 0, 574, 575, 5, 29, 0, 0, 575, 107, 1, 0, 0, 0, 576, 577, 7, 7, 0, 0, 577, 109, 1, 0, 0, 0, 578, 579, 5, 5, 0, 0, 579, 580, 3, 112, 56, 0, 580, 111, 1, 0, 0, 0, 581, 582, 5, 71, 0, 0, 582, 583, 3, 2, 1, 0, 583, 584, 5, 72, 0, 0, 584, 113, 1, 0, 0, 0, 585, 586, 5, 13, 0, 0, 586, 587, 5, 106, 0, 0, 587, 115, 1, 0, 0, 0, 588, 589, 5, 3, 0, 0, 589, 592, 5, 96, 0, 0, 590, 591, 5, 94, 0, 0, 591, 593, 3, 60, 30, 0, 592, 590, 1, 0, 0, 0, 592, 593, 1, 0, 0, 0, 593, 603, 1, 0, 0, 0, 594, 595, 5, 95, 0, 0, 595, 600, 3, 118, 59, 0, 596, 597, 5, 38, 0, 0, 597, 599, 3, 118, 59, 0, 598, 596, 1, 0, 0, 0, 599, 602, 1, 0, 0, 0, 600, 598, 1, 0, 0, 0, 600, 601, 1, 0, 0, 0, 601, 604, 1, 0, 0, 0, 602, 600, 1, 0, 0, 0, 603, 594, 1, 0, 0, 0, 603, 604, 1, 0, 0, 0, 604, 117, 1, 0, 0, 0, 605, 606, 3, 60, 30, 0, 606, 607, 5, 35, 0, 0, 607, 609, 1, 0, 0, 0, 608, 605, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 611, 3, 60, 30, 0, 611, 119, 1, 0, 0, 0, 612, 613, 5, 19, 0, 0, 613, 614, 3, 40, 20, 0, 614, 615, 5, 94, 0, 0, 615, 616, 3, 62, 31, 0, 616, 121, 1, 0, 0, 0, 617, 618, 5, 18, 0, 0, 618, 621, 3, 54, 27, 0, 619, 620, 5, 32, 0, 0, 620, 622, 3, 34, 17, 0, 621, 619, 1, 0, 0, 0, 621, 622, 1, 0, 0, 0, 622, 123, 1, 0, 0, 0, 623, 624, 7, 8, 0, 0, 624, 625, 5, 120, 0, 0, 625, 626, 3, 126, 63, 0, 626, 627, 3, 128, 64, 0, 627, 125, 1, 0, 0, 0, 628, 629, 3, 40, 20, 0, 629, 127, 1, 0, 0, 0, 630, 631, 5, 94, 0, 0, 631, 636, 3, 130, 65, 0, 632, 633, 5, 38, 0, 0, 633, 635, 3, 130, 65, 0, 634, 632, 1, 0, 0, 0, 635, 638, 1, 0, 0, 0, 636, 634, 1, 0, 0, 0, 636, 637, 1, 0, 0, 0, 637, 129, 1, 0, 0, 0, 638, 636, 1, 0, 0, 0, 639, 640, 3, 16, 8, 0, 640, 131, 1, 0, 0, 0, 61, 143, 152, 171, 183, 192, 200, 205, 213, 215, 220, 227, 232, 237, 247, 253, 261, 263, 274, 281, 292, 297, 299, 311, 330, 336, 346, 350, 355, 369, 378, 382, 386, 393, 397, 404, 410, 417, 425, 433, 440, 457, 468, 479, 484, 488, 492, 503, 508, 512, 526, 537, 551, 562, 565, 570, 592, 600, 603, 608, 621, 636] \ No newline at end of file +[4, 1, 138, 666, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 146, 8, 1, 10, 1, 12, 1, 149, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 157, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 180, 8, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 192, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 199, 8, 5, 10, 5, 12, 5, 202, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 209, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 214, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 222, 8, 5, 10, 5, 12, 5, 225, 9, 5, 1, 6, 1, 6, 3, 6, 229, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 236, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 241, 8, 6, 1, 7, 1, 7, 1, 7, 3, 7, 246, 8, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 256, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 262, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 5, 9, 270, 8, 9, 10, 9, 12, 9, 273, 9, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 283, 8, 10, 1, 10, 1, 10, 1, 10, 5, 10, 288, 8, 10, 10, 10, 12, 10, 291, 9, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 299, 8, 11, 10, 11, 12, 11, 302, 9, 11, 1, 11, 1, 11, 3, 11, 306, 8, 11, 3, 11, 308, 8, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 318, 8, 13, 10, 13, 12, 13, 321, 9, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 5, 17, 337, 8, 17, 10, 17, 12, 17, 340, 9, 17, 1, 18, 1, 18, 1, 18, 3, 18, 345, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 5, 19, 353, 8, 19, 10, 19, 12, 19, 356, 9, 19, 1, 19, 3, 19, 359, 8, 19, 1, 20, 1, 20, 1, 20, 3, 20, 364, 8, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 5, 23, 376, 8, 23, 10, 23, 12, 23, 379, 9, 23, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 385, 8, 24, 10, 24, 12, 24, 388, 9, 24, 1, 24, 3, 24, 391, 8, 24, 1, 24, 1, 24, 3, 24, 395, 8, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 3, 26, 402, 8, 26, 1, 26, 1, 26, 3, 26, 406, 8, 26, 1, 27, 1, 27, 1, 27, 5, 27, 411, 8, 27, 10, 27, 12, 27, 414, 9, 27, 1, 28, 1, 28, 1, 28, 3, 28, 419, 8, 28, 1, 29, 1, 29, 1, 29, 5, 29, 424, 8, 29, 10, 29, 12, 29, 427, 9, 29, 1, 30, 1, 30, 1, 30, 5, 30, 432, 8, 30, 10, 30, 12, 30, 435, 9, 30, 1, 31, 1, 31, 1, 31, 5, 31, 440, 8, 31, 10, 31, 12, 31, 443, 9, 31, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 449, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 464, 8, 34, 10, 34, 12, 34, 467, 9, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 475, 8, 34, 10, 34, 12, 34, 478, 9, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 486, 8, 34, 10, 34, 12, 34, 489, 9, 34, 1, 34, 1, 34, 3, 34, 493, 8, 34, 1, 35, 1, 35, 3, 35, 497, 8, 35, 1, 36, 1, 36, 3, 36, 501, 8, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 510, 8, 38, 10, 38, 12, 38, 513, 9, 38, 1, 39, 1, 39, 3, 39, 517, 8, 39, 1, 39, 1, 39, 3, 39, 521, 8, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 5, 42, 533, 8, 42, 10, 42, 12, 42, 536, 9, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 546, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 5, 47, 558, 8, 47, 10, 47, 12, 47, 561, 9, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 3, 50, 571, 8, 50, 1, 51, 3, 51, 574, 8, 51, 1, 51, 1, 51, 1, 52, 3, 52, 579, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 601, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 607, 8, 58, 10, 58, 12, 58, 610, 9, 58, 3, 58, 612, 8, 58, 1, 59, 1, 59, 1, 59, 3, 59, 617, 8, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 630, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 643, 8, 64, 10, 64, 12, 64, 646, 9, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 654, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 661, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 0, 4, 2, 10, 18, 20, 68, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 0, 9, 1, 0, 65, 66, 1, 0, 67, 69, 2, 0, 31, 31, 84, 84, 1, 0, 75, 76, 2, 0, 36, 36, 41, 41, 2, 0, 44, 44, 47, 47, 2, 0, 43, 43, 57, 57, 2, 0, 58, 58, 60, 64, 2, 0, 17, 17, 24, 25, 693, 0, 136, 1, 0, 0, 0, 2, 139, 1, 0, 0, 0, 4, 156, 1, 0, 0, 0, 6, 179, 1, 0, 0, 0, 8, 181, 1, 0, 0, 0, 10, 213, 1, 0, 0, 0, 12, 240, 1, 0, 0, 0, 14, 242, 1, 0, 0, 0, 16, 255, 1, 0, 0, 0, 18, 261, 1, 0, 0, 0, 20, 282, 1, 0, 0, 0, 22, 292, 1, 0, 0, 0, 24, 311, 1, 0, 0, 0, 26, 313, 1, 0, 0, 0, 28, 324, 1, 0, 0, 0, 30, 328, 1, 0, 0, 0, 32, 330, 1, 0, 0, 0, 34, 333, 1, 0, 0, 0, 36, 344, 1, 0, 0, 0, 38, 348, 1, 0, 0, 0, 40, 363, 1, 0, 0, 0, 42, 367, 1, 0, 0, 0, 44, 369, 1, 0, 0, 0, 46, 371, 1, 0, 0, 0, 48, 380, 1, 0, 0, 0, 50, 396, 1, 0, 0, 0, 52, 399, 1, 0, 0, 0, 54, 407, 1, 0, 0, 0, 56, 415, 1, 0, 0, 0, 58, 420, 1, 0, 0, 0, 60, 428, 1, 0, 0, 0, 62, 436, 1, 0, 0, 0, 64, 444, 1, 0, 0, 0, 66, 448, 1, 0, 0, 0, 68, 492, 1, 0, 0, 0, 70, 496, 1, 0, 0, 0, 72, 500, 1, 0, 0, 0, 74, 502, 1, 0, 0, 0, 76, 505, 1, 0, 0, 0, 78, 514, 1, 0, 0, 0, 80, 522, 1, 0, 0, 0, 82, 525, 1, 0, 0, 0, 84, 528, 1, 0, 0, 0, 86, 537, 1, 0, 0, 0, 88, 541, 1, 0, 0, 0, 90, 547, 1, 0, 0, 0, 92, 551, 1, 0, 0, 0, 94, 554, 1, 0, 0, 0, 96, 562, 1, 0, 0, 0, 98, 566, 1, 0, 0, 0, 100, 570, 1, 0, 0, 0, 102, 573, 1, 0, 0, 0, 104, 578, 1, 0, 0, 0, 106, 582, 1, 0, 0, 0, 108, 584, 1, 0, 0, 0, 110, 586, 1, 0, 0, 0, 112, 589, 1, 0, 0, 0, 114, 593, 1, 0, 0, 0, 116, 596, 1, 0, 0, 0, 118, 616, 1, 0, 0, 0, 120, 620, 1, 0, 0, 0, 122, 625, 1, 0, 0, 0, 124, 631, 1, 0, 0, 0, 126, 636, 1, 0, 0, 0, 128, 638, 1, 0, 0, 0, 130, 647, 1, 0, 0, 0, 132, 649, 1, 0, 0, 0, 134, 662, 1, 0, 0, 0, 136, 137, 3, 2, 1, 0, 137, 138, 5, 0, 0, 1, 138, 1, 1, 0, 0, 0, 139, 140, 6, 1, -1, 0, 140, 141, 3, 4, 2, 0, 141, 147, 1, 0, 0, 0, 142, 143, 10, 1, 0, 0, 143, 144, 5, 30, 0, 0, 144, 146, 3, 6, 3, 0, 145, 142, 1, 0, 0, 0, 146, 149, 1, 0, 0, 0, 147, 145, 1, 0, 0, 0, 147, 148, 1, 0, 0, 0, 148, 3, 1, 0, 0, 0, 149, 147, 1, 0, 0, 0, 150, 157, 3, 110, 55, 0, 151, 157, 3, 38, 19, 0, 152, 157, 3, 32, 16, 0, 153, 157, 3, 114, 57, 0, 154, 155, 4, 2, 1, 0, 155, 157, 3, 48, 24, 0, 156, 150, 1, 0, 0, 0, 156, 151, 1, 0, 0, 0, 156, 152, 1, 0, 0, 0, 156, 153, 1, 0, 0, 0, 156, 154, 1, 0, 0, 0, 157, 5, 1, 0, 0, 0, 158, 180, 3, 50, 25, 0, 159, 180, 3, 8, 4, 0, 160, 180, 3, 80, 40, 0, 161, 180, 3, 74, 37, 0, 162, 180, 3, 52, 26, 0, 163, 180, 3, 76, 38, 0, 164, 180, 3, 82, 41, 0, 165, 180, 3, 84, 42, 0, 166, 180, 3, 88, 44, 0, 167, 180, 3, 90, 45, 0, 168, 180, 3, 116, 58, 0, 169, 180, 3, 92, 46, 0, 170, 180, 3, 124, 62, 0, 171, 172, 4, 3, 2, 0, 172, 180, 3, 122, 61, 0, 173, 174, 4, 3, 3, 0, 174, 180, 3, 120, 60, 0, 175, 176, 4, 3, 4, 0, 176, 180, 3, 132, 66, 0, 177, 178, 4, 3, 5, 0, 178, 180, 3, 134, 67, 0, 179, 158, 1, 0, 0, 0, 179, 159, 1, 0, 0, 0, 179, 160, 1, 0, 0, 0, 179, 161, 1, 0, 0, 0, 179, 162, 1, 0, 0, 0, 179, 163, 1, 0, 0, 0, 179, 164, 1, 0, 0, 0, 179, 165, 1, 0, 0, 0, 179, 166, 1, 0, 0, 0, 179, 167, 1, 0, 0, 0, 179, 168, 1, 0, 0, 0, 179, 169, 1, 0, 0, 0, 179, 170, 1, 0, 0, 0, 179, 171, 1, 0, 0, 0, 179, 173, 1, 0, 0, 0, 179, 175, 1, 0, 0, 0, 179, 177, 1, 0, 0, 0, 180, 7, 1, 0, 0, 0, 181, 182, 5, 16, 0, 0, 182, 183, 3, 10, 5, 0, 183, 9, 1, 0, 0, 0, 184, 185, 6, 5, -1, 0, 185, 186, 5, 50, 0, 0, 186, 214, 3, 10, 5, 8, 187, 214, 3, 16, 8, 0, 188, 214, 3, 12, 6, 0, 189, 191, 3, 16, 8, 0, 190, 192, 5, 50, 0, 0, 191, 190, 1, 0, 0, 0, 191, 192, 1, 0, 0, 0, 192, 193, 1, 0, 0, 0, 193, 194, 5, 45, 0, 0, 194, 195, 5, 49, 0, 0, 195, 200, 3, 16, 8, 0, 196, 197, 5, 40, 0, 0, 197, 199, 3, 16, 8, 0, 198, 196, 1, 0, 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 203, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 204, 5, 56, 0, 0, 204, 214, 1, 0, 0, 0, 205, 206, 3, 16, 8, 0, 206, 208, 5, 46, 0, 0, 207, 209, 5, 50, 0, 0, 208, 207, 1, 0, 0, 0, 208, 209, 1, 0, 0, 0, 209, 210, 1, 0, 0, 0, 210, 211, 5, 51, 0, 0, 211, 214, 1, 0, 0, 0, 212, 214, 3, 14, 7, 0, 213, 184, 1, 0, 0, 0, 213, 187, 1, 0, 0, 0, 213, 188, 1, 0, 0, 0, 213, 189, 1, 0, 0, 0, 213, 205, 1, 0, 0, 0, 213, 212, 1, 0, 0, 0, 214, 223, 1, 0, 0, 0, 215, 216, 10, 5, 0, 0, 216, 217, 5, 35, 0, 0, 217, 222, 3, 10, 5, 6, 218, 219, 10, 4, 0, 0, 219, 220, 5, 53, 0, 0, 220, 222, 3, 10, 5, 5, 221, 215, 1, 0, 0, 0, 221, 218, 1, 0, 0, 0, 222, 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 11, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 228, 3, 16, 8, 0, 227, 229, 5, 50, 0, 0, 228, 227, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 231, 5, 48, 0, 0, 231, 232, 3, 106, 53, 0, 232, 241, 1, 0, 0, 0, 233, 235, 3, 16, 8, 0, 234, 236, 5, 50, 0, 0, 235, 234, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 237, 1, 0, 0, 0, 237, 238, 5, 55, 0, 0, 238, 239, 3, 106, 53, 0, 239, 241, 1, 0, 0, 0, 240, 226, 1, 0, 0, 0, 240, 233, 1, 0, 0, 0, 241, 13, 1, 0, 0, 0, 242, 245, 3, 58, 29, 0, 243, 244, 5, 38, 0, 0, 244, 246, 3, 30, 15, 0, 245, 243, 1, 0, 0, 0, 245, 246, 1, 0, 0, 0, 246, 247, 1, 0, 0, 0, 247, 248, 5, 39, 0, 0, 248, 249, 3, 68, 34, 0, 249, 15, 1, 0, 0, 0, 250, 256, 3, 18, 9, 0, 251, 252, 3, 18, 9, 0, 252, 253, 3, 108, 54, 0, 253, 254, 3, 18, 9, 0, 254, 256, 1, 0, 0, 0, 255, 250, 1, 0, 0, 0, 255, 251, 1, 0, 0, 0, 256, 17, 1, 0, 0, 0, 257, 258, 6, 9, -1, 0, 258, 262, 3, 20, 10, 0, 259, 260, 7, 0, 0, 0, 260, 262, 3, 18, 9, 3, 261, 257, 1, 0, 0, 0, 261, 259, 1, 0, 0, 0, 262, 271, 1, 0, 0, 0, 263, 264, 10, 2, 0, 0, 264, 265, 7, 1, 0, 0, 265, 270, 3, 18, 9, 3, 266, 267, 10, 1, 0, 0, 267, 268, 7, 0, 0, 0, 268, 270, 3, 18, 9, 2, 269, 263, 1, 0, 0, 0, 269, 266, 1, 0, 0, 0, 270, 273, 1, 0, 0, 0, 271, 269, 1, 0, 0, 0, 271, 272, 1, 0, 0, 0, 272, 19, 1, 0, 0, 0, 273, 271, 1, 0, 0, 0, 274, 275, 6, 10, -1, 0, 275, 283, 3, 68, 34, 0, 276, 283, 3, 58, 29, 0, 277, 283, 3, 22, 11, 0, 278, 279, 5, 49, 0, 0, 279, 280, 3, 10, 5, 0, 280, 281, 5, 56, 0, 0, 281, 283, 1, 0, 0, 0, 282, 274, 1, 0, 0, 0, 282, 276, 1, 0, 0, 0, 282, 277, 1, 0, 0, 0, 282, 278, 1, 0, 0, 0, 283, 289, 1, 0, 0, 0, 284, 285, 10, 1, 0, 0, 285, 286, 5, 38, 0, 0, 286, 288, 3, 30, 15, 0, 287, 284, 1, 0, 0, 0, 288, 291, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 21, 1, 0, 0, 0, 291, 289, 1, 0, 0, 0, 292, 293, 3, 24, 12, 0, 293, 307, 5, 49, 0, 0, 294, 308, 5, 67, 0, 0, 295, 300, 3, 10, 5, 0, 296, 297, 5, 40, 0, 0, 297, 299, 3, 10, 5, 0, 298, 296, 1, 0, 0, 0, 299, 302, 1, 0, 0, 0, 300, 298, 1, 0, 0, 0, 300, 301, 1, 0, 0, 0, 301, 305, 1, 0, 0, 0, 302, 300, 1, 0, 0, 0, 303, 304, 5, 40, 0, 0, 304, 306, 3, 26, 13, 0, 305, 303, 1, 0, 0, 0, 305, 306, 1, 0, 0, 0, 306, 308, 1, 0, 0, 0, 307, 294, 1, 0, 0, 0, 307, 295, 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 309, 1, 0, 0, 0, 309, 310, 5, 56, 0, 0, 310, 23, 1, 0, 0, 0, 311, 312, 3, 72, 36, 0, 312, 25, 1, 0, 0, 0, 313, 314, 5, 70, 0, 0, 314, 319, 3, 28, 14, 0, 315, 316, 5, 40, 0, 0, 316, 318, 3, 28, 14, 0, 317, 315, 1, 0, 0, 0, 318, 321, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 322, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 323, 5, 71, 0, 0, 323, 27, 1, 0, 0, 0, 324, 325, 3, 106, 53, 0, 325, 326, 5, 39, 0, 0, 326, 327, 3, 68, 34, 0, 327, 29, 1, 0, 0, 0, 328, 329, 3, 64, 32, 0, 329, 31, 1, 0, 0, 0, 330, 331, 5, 12, 0, 0, 331, 332, 3, 34, 17, 0, 332, 33, 1, 0, 0, 0, 333, 338, 3, 36, 18, 0, 334, 335, 5, 40, 0, 0, 335, 337, 3, 36, 18, 0, 336, 334, 1, 0, 0, 0, 337, 340, 1, 0, 0, 0, 338, 336, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 339, 35, 1, 0, 0, 0, 340, 338, 1, 0, 0, 0, 341, 342, 3, 58, 29, 0, 342, 343, 5, 37, 0, 0, 343, 345, 1, 0, 0, 0, 344, 341, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 347, 3, 10, 5, 0, 347, 37, 1, 0, 0, 0, 348, 349, 5, 6, 0, 0, 349, 354, 3, 40, 20, 0, 350, 351, 5, 40, 0, 0, 351, 353, 3, 40, 20, 0, 352, 350, 1, 0, 0, 0, 353, 356, 1, 0, 0, 0, 354, 352, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 358, 1, 0, 0, 0, 356, 354, 1, 0, 0, 0, 357, 359, 3, 46, 23, 0, 358, 357, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 39, 1, 0, 0, 0, 360, 361, 3, 42, 21, 0, 361, 362, 5, 39, 0, 0, 362, 364, 1, 0, 0, 0, 363, 360, 1, 0, 0, 0, 363, 364, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 366, 3, 44, 22, 0, 366, 41, 1, 0, 0, 0, 367, 368, 7, 2, 0, 0, 368, 43, 1, 0, 0, 0, 369, 370, 7, 2, 0, 0, 370, 45, 1, 0, 0, 0, 371, 372, 5, 83, 0, 0, 372, 377, 5, 84, 0, 0, 373, 374, 5, 40, 0, 0, 374, 376, 5, 84, 0, 0, 375, 373, 1, 0, 0, 0, 376, 379, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 47, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 380, 381, 5, 22, 0, 0, 381, 386, 3, 40, 20, 0, 382, 383, 5, 40, 0, 0, 383, 385, 3, 40, 20, 0, 384, 382, 1, 0, 0, 0, 385, 388, 1, 0, 0, 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 390, 1, 0, 0, 0, 388, 386, 1, 0, 0, 0, 389, 391, 3, 54, 27, 0, 390, 389, 1, 0, 0, 0, 390, 391, 1, 0, 0, 0, 391, 394, 1, 0, 0, 0, 392, 393, 5, 34, 0, 0, 393, 395, 3, 34, 17, 0, 394, 392, 1, 0, 0, 0, 394, 395, 1, 0, 0, 0, 395, 49, 1, 0, 0, 0, 396, 397, 5, 4, 0, 0, 397, 398, 3, 34, 17, 0, 398, 51, 1, 0, 0, 0, 399, 401, 5, 15, 0, 0, 400, 402, 3, 54, 27, 0, 401, 400, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 405, 1, 0, 0, 0, 403, 404, 5, 34, 0, 0, 404, 406, 3, 34, 17, 0, 405, 403, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 53, 1, 0, 0, 0, 407, 412, 3, 56, 28, 0, 408, 409, 5, 40, 0, 0, 409, 411, 3, 56, 28, 0, 410, 408, 1, 0, 0, 0, 411, 414, 1, 0, 0, 0, 412, 410, 1, 0, 0, 0, 412, 413, 1, 0, 0, 0, 413, 55, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 415, 418, 3, 36, 18, 0, 416, 417, 5, 16, 0, 0, 417, 419, 3, 10, 5, 0, 418, 416, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 57, 1, 0, 0, 0, 420, 425, 3, 72, 36, 0, 421, 422, 5, 42, 0, 0, 422, 424, 3, 72, 36, 0, 423, 421, 1, 0, 0, 0, 424, 427, 1, 0, 0, 0, 425, 423, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 59, 1, 0, 0, 0, 427, 425, 1, 0, 0, 0, 428, 433, 3, 66, 33, 0, 429, 430, 5, 42, 0, 0, 430, 432, 3, 66, 33, 0, 431, 429, 1, 0, 0, 0, 432, 435, 1, 0, 0, 0, 433, 431, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 434, 61, 1, 0, 0, 0, 435, 433, 1, 0, 0, 0, 436, 441, 3, 60, 30, 0, 437, 438, 5, 40, 0, 0, 438, 440, 3, 60, 30, 0, 439, 437, 1, 0, 0, 0, 440, 443, 1, 0, 0, 0, 441, 439, 1, 0, 0, 0, 441, 442, 1, 0, 0, 0, 442, 63, 1, 0, 0, 0, 443, 441, 1, 0, 0, 0, 444, 445, 7, 3, 0, 0, 445, 65, 1, 0, 0, 0, 446, 449, 5, 88, 0, 0, 447, 449, 3, 70, 35, 0, 448, 446, 1, 0, 0, 0, 448, 447, 1, 0, 0, 0, 449, 67, 1, 0, 0, 0, 450, 493, 5, 51, 0, 0, 451, 452, 3, 104, 52, 0, 452, 453, 5, 75, 0, 0, 453, 493, 1, 0, 0, 0, 454, 493, 3, 102, 51, 0, 455, 493, 3, 104, 52, 0, 456, 493, 3, 98, 49, 0, 457, 493, 3, 70, 35, 0, 458, 493, 3, 106, 53, 0, 459, 460, 5, 73, 0, 0, 460, 465, 3, 100, 50, 0, 461, 462, 5, 40, 0, 0, 462, 464, 3, 100, 50, 0, 463, 461, 1, 0, 0, 0, 464, 467, 1, 0, 0, 0, 465, 463, 1, 0, 0, 0, 465, 466, 1, 0, 0, 0, 466, 468, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 468, 469, 5, 74, 0, 0, 469, 493, 1, 0, 0, 0, 470, 471, 5, 73, 0, 0, 471, 476, 3, 98, 49, 0, 472, 473, 5, 40, 0, 0, 473, 475, 3, 98, 49, 0, 474, 472, 1, 0, 0, 0, 475, 478, 1, 0, 0, 0, 476, 474, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 479, 1, 0, 0, 0, 478, 476, 1, 0, 0, 0, 479, 480, 5, 74, 0, 0, 480, 493, 1, 0, 0, 0, 481, 482, 5, 73, 0, 0, 482, 487, 3, 106, 53, 0, 483, 484, 5, 40, 0, 0, 484, 486, 3, 106, 53, 0, 485, 483, 1, 0, 0, 0, 486, 489, 1, 0, 0, 0, 487, 485, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, 488, 490, 1, 0, 0, 0, 489, 487, 1, 0, 0, 0, 490, 491, 5, 74, 0, 0, 491, 493, 1, 0, 0, 0, 492, 450, 1, 0, 0, 0, 492, 451, 1, 0, 0, 0, 492, 454, 1, 0, 0, 0, 492, 455, 1, 0, 0, 0, 492, 456, 1, 0, 0, 0, 492, 457, 1, 0, 0, 0, 492, 458, 1, 0, 0, 0, 492, 459, 1, 0, 0, 0, 492, 470, 1, 0, 0, 0, 492, 481, 1, 0, 0, 0, 493, 69, 1, 0, 0, 0, 494, 497, 5, 54, 0, 0, 495, 497, 5, 72, 0, 0, 496, 494, 1, 0, 0, 0, 496, 495, 1, 0, 0, 0, 497, 71, 1, 0, 0, 0, 498, 501, 3, 64, 32, 0, 499, 501, 3, 70, 35, 0, 500, 498, 1, 0, 0, 0, 500, 499, 1, 0, 0, 0, 501, 73, 1, 0, 0, 0, 502, 503, 5, 9, 0, 0, 503, 504, 5, 32, 0, 0, 504, 75, 1, 0, 0, 0, 505, 506, 5, 14, 0, 0, 506, 511, 3, 78, 39, 0, 507, 508, 5, 40, 0, 0, 508, 510, 3, 78, 39, 0, 509, 507, 1, 0, 0, 0, 510, 513, 1, 0, 0, 0, 511, 509, 1, 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 77, 1, 0, 0, 0, 513, 511, 1, 0, 0, 0, 514, 516, 3, 10, 5, 0, 515, 517, 7, 4, 0, 0, 516, 515, 1, 0, 0, 0, 516, 517, 1, 0, 0, 0, 517, 520, 1, 0, 0, 0, 518, 519, 5, 52, 0, 0, 519, 521, 7, 5, 0, 0, 520, 518, 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 79, 1, 0, 0, 0, 522, 523, 5, 8, 0, 0, 523, 524, 3, 62, 31, 0, 524, 81, 1, 0, 0, 0, 525, 526, 5, 2, 0, 0, 526, 527, 3, 62, 31, 0, 527, 83, 1, 0, 0, 0, 528, 529, 5, 11, 0, 0, 529, 534, 3, 86, 43, 0, 530, 531, 5, 40, 0, 0, 531, 533, 3, 86, 43, 0, 532, 530, 1, 0, 0, 0, 533, 536, 1, 0, 0, 0, 534, 532, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, 85, 1, 0, 0, 0, 536, 534, 1, 0, 0, 0, 537, 538, 3, 60, 30, 0, 538, 539, 5, 92, 0, 0, 539, 540, 3, 60, 30, 0, 540, 87, 1, 0, 0, 0, 541, 542, 5, 1, 0, 0, 542, 543, 3, 20, 10, 0, 543, 545, 3, 106, 53, 0, 544, 546, 3, 94, 47, 0, 545, 544, 1, 0, 0, 0, 545, 546, 1, 0, 0, 0, 546, 89, 1, 0, 0, 0, 547, 548, 5, 7, 0, 0, 548, 549, 3, 20, 10, 0, 549, 550, 3, 106, 53, 0, 550, 91, 1, 0, 0, 0, 551, 552, 5, 10, 0, 0, 552, 553, 3, 58, 29, 0, 553, 93, 1, 0, 0, 0, 554, 559, 3, 96, 48, 0, 555, 556, 5, 40, 0, 0, 556, 558, 3, 96, 48, 0, 557, 555, 1, 0, 0, 0, 558, 561, 1, 0, 0, 0, 559, 557, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 95, 1, 0, 0, 0, 561, 559, 1, 0, 0, 0, 562, 563, 3, 64, 32, 0, 563, 564, 5, 37, 0, 0, 564, 565, 3, 68, 34, 0, 565, 97, 1, 0, 0, 0, 566, 567, 7, 6, 0, 0, 567, 99, 1, 0, 0, 0, 568, 571, 3, 102, 51, 0, 569, 571, 3, 104, 52, 0, 570, 568, 1, 0, 0, 0, 570, 569, 1, 0, 0, 0, 571, 101, 1, 0, 0, 0, 572, 574, 7, 0, 0, 0, 573, 572, 1, 0, 0, 0, 573, 574, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 576, 5, 33, 0, 0, 576, 103, 1, 0, 0, 0, 577, 579, 7, 0, 0, 0, 578, 577, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 581, 5, 32, 0, 0, 581, 105, 1, 0, 0, 0, 582, 583, 5, 31, 0, 0, 583, 107, 1, 0, 0, 0, 584, 585, 7, 7, 0, 0, 585, 109, 1, 0, 0, 0, 586, 587, 5, 5, 0, 0, 587, 588, 3, 112, 56, 0, 588, 111, 1, 0, 0, 0, 589, 590, 5, 73, 0, 0, 590, 591, 3, 2, 1, 0, 591, 592, 5, 74, 0, 0, 592, 113, 1, 0, 0, 0, 593, 594, 5, 13, 0, 0, 594, 595, 5, 108, 0, 0, 595, 115, 1, 0, 0, 0, 596, 597, 5, 3, 0, 0, 597, 600, 5, 98, 0, 0, 598, 599, 5, 96, 0, 0, 599, 601, 3, 60, 30, 0, 600, 598, 1, 0, 0, 0, 600, 601, 1, 0, 0, 0, 601, 611, 1, 0, 0, 0, 602, 603, 5, 97, 0, 0, 603, 608, 3, 118, 59, 0, 604, 605, 5, 40, 0, 0, 605, 607, 3, 118, 59, 0, 606, 604, 1, 0, 0, 0, 607, 610, 1, 0, 0, 0, 608, 606, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609, 612, 1, 0, 0, 0, 610, 608, 1, 0, 0, 0, 611, 602, 1, 0, 0, 0, 611, 612, 1, 0, 0, 0, 612, 117, 1, 0, 0, 0, 613, 614, 3, 60, 30, 0, 614, 615, 5, 37, 0, 0, 615, 617, 1, 0, 0, 0, 616, 613, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 618, 1, 0, 0, 0, 618, 619, 3, 60, 30, 0, 619, 119, 1, 0, 0, 0, 620, 621, 5, 21, 0, 0, 621, 622, 3, 40, 20, 0, 622, 623, 5, 96, 0, 0, 623, 624, 3, 62, 31, 0, 624, 121, 1, 0, 0, 0, 625, 626, 5, 19, 0, 0, 626, 629, 3, 54, 27, 0, 627, 628, 5, 34, 0, 0, 628, 630, 3, 34, 17, 0, 629, 627, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 123, 1, 0, 0, 0, 631, 632, 7, 8, 0, 0, 632, 633, 5, 122, 0, 0, 633, 634, 3, 126, 63, 0, 634, 635, 3, 128, 64, 0, 635, 125, 1, 0, 0, 0, 636, 637, 3, 40, 20, 0, 637, 127, 1, 0, 0, 0, 638, 639, 5, 96, 0, 0, 639, 644, 3, 130, 65, 0, 640, 641, 5, 40, 0, 0, 641, 643, 3, 130, 65, 0, 642, 640, 1, 0, 0, 0, 643, 646, 1, 0, 0, 0, 644, 642, 1, 0, 0, 0, 644, 645, 1, 0, 0, 0, 645, 129, 1, 0, 0, 0, 646, 644, 1, 0, 0, 0, 647, 648, 3, 16, 8, 0, 648, 131, 1, 0, 0, 0, 649, 650, 5, 18, 0, 0, 650, 653, 3, 58, 29, 0, 651, 652, 5, 96, 0, 0, 652, 654, 3, 58, 29, 0, 653, 651, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 660, 1, 0, 0, 0, 655, 656, 5, 92, 0, 0, 656, 657, 3, 58, 29, 0, 657, 658, 5, 40, 0, 0, 658, 659, 3, 58, 29, 0, 659, 661, 1, 0, 0, 0, 660, 655, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, 133, 1, 0, 0, 0, 662, 663, 5, 20, 0, 0, 663, 664, 3, 62, 31, 0, 664, 135, 1, 0, 0, 0, 63, 147, 156, 179, 191, 200, 208, 213, 221, 223, 228, 235, 240, 245, 255, 261, 269, 271, 282, 289, 300, 305, 307, 319, 338, 344, 354, 358, 363, 377, 386, 390, 394, 401, 405, 412, 418, 425, 433, 441, 448, 465, 476, 487, 492, 496, 500, 511, 516, 520, 534, 545, 559, 570, 573, 578, 600, 608, 611, 616, 629, 644, 653, 660] \ No newline at end of file diff --git a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.tokens b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.tokens index 02af324872fc0..67105e31fac86 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.tokens +++ b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.tokens @@ -15,119 +15,127 @@ SORT=14 STATS=15 WHERE=16 JOIN_LOOKUP=17 -DEV_INLINESTATS=18 -DEV_LOOKUP=19 -DEV_METRICS=20 -DEV_JOIN_FULL=21 -DEV_JOIN_LEFT=22 -DEV_JOIN_RIGHT=23 -UNKNOWN_CMD=24 -LINE_COMMENT=25 -MULTILINE_COMMENT=26 -WS=27 -PIPE=28 -QUOTED_STRING=29 -INTEGER_LITERAL=30 -DECIMAL_LITERAL=31 -BY=32 -AND=33 -ASC=34 -ASSIGN=35 -CAST_OP=36 -COLON=37 -COMMA=38 -DESC=39 -DOT=40 -FALSE=41 -FIRST=42 -IN=43 -IS=44 -LAST=45 -LIKE=46 -LP=47 -NOT=48 -NULL=49 -NULLS=50 -OR=51 -PARAM=52 -RLIKE=53 -RP=54 -TRUE=55 -EQ=56 -CIEQ=57 -NEQ=58 -LT=59 -LTE=60 -GT=61 -GTE=62 -PLUS=63 -MINUS=64 -ASTERISK=65 -SLASH=66 -PERCENT=67 -LEFT_BRACES=68 -RIGHT_BRACES=69 -NAMED_OR_POSITIONAL_PARAM=70 -OPENING_BRACKET=71 -CLOSING_BRACKET=72 -UNQUOTED_IDENTIFIER=73 -QUOTED_IDENTIFIER=74 -EXPR_LINE_COMMENT=75 -EXPR_MULTILINE_COMMENT=76 -EXPR_WS=77 -EXPLAIN_WS=78 -EXPLAIN_LINE_COMMENT=79 -EXPLAIN_MULTILINE_COMMENT=80 -METADATA=81 -UNQUOTED_SOURCE=82 -FROM_LINE_COMMENT=83 -FROM_MULTILINE_COMMENT=84 -FROM_WS=85 -ID_PATTERN=86 -PROJECT_LINE_COMMENT=87 -PROJECT_MULTILINE_COMMENT=88 -PROJECT_WS=89 -AS=90 -RENAME_LINE_COMMENT=91 -RENAME_MULTILINE_COMMENT=92 -RENAME_WS=93 -ON=94 -WITH=95 -ENRICH_POLICY_NAME=96 -ENRICH_LINE_COMMENT=97 -ENRICH_MULTILINE_COMMENT=98 -ENRICH_WS=99 -ENRICH_FIELD_LINE_COMMENT=100 -ENRICH_FIELD_MULTILINE_COMMENT=101 -ENRICH_FIELD_WS=102 -MVEXPAND_LINE_COMMENT=103 -MVEXPAND_MULTILINE_COMMENT=104 -MVEXPAND_WS=105 -INFO=106 -SHOW_LINE_COMMENT=107 -SHOW_MULTILINE_COMMENT=108 -SHOW_WS=109 -SETTING=110 -SETTING_LINE_COMMENT=111 -SETTTING_MULTILINE_COMMENT=112 -SETTING_WS=113 -LOOKUP_LINE_COMMENT=114 -LOOKUP_MULTILINE_COMMENT=115 -LOOKUP_WS=116 -LOOKUP_FIELD_LINE_COMMENT=117 -LOOKUP_FIELD_MULTILINE_COMMENT=118 -LOOKUP_FIELD_WS=119 -JOIN=120 -USING=121 -JOIN_LINE_COMMENT=122 -JOIN_MULTILINE_COMMENT=123 -JOIN_WS=124 -METRICS_LINE_COMMENT=125 -METRICS_MULTILINE_COMMENT=126 -METRICS_WS=127 -CLOSING_METRICS_LINE_COMMENT=128 -CLOSING_METRICS_MULTILINE_COMMENT=129 -CLOSING_METRICS_WS=130 +DEV_CHANGE_POINT=18 +DEV_INLINESTATS=19 +DEV_INSIST=20 +DEV_LOOKUP=21 +DEV_METRICS=22 +DEV_JOIN_FULL=23 +DEV_JOIN_LEFT=24 +DEV_JOIN_RIGHT=25 +UNKNOWN_CMD=26 +LINE_COMMENT=27 +MULTILINE_COMMENT=28 +WS=29 +PIPE=30 +QUOTED_STRING=31 +INTEGER_LITERAL=32 +DECIMAL_LITERAL=33 +BY=34 +AND=35 +ASC=36 +ASSIGN=37 +CAST_OP=38 +COLON=39 +COMMA=40 +DESC=41 +DOT=42 +FALSE=43 +FIRST=44 +IN=45 +IS=46 +LAST=47 +LIKE=48 +LP=49 +NOT=50 +NULL=51 +NULLS=52 +OR=53 +PARAM=54 +RLIKE=55 +RP=56 +TRUE=57 +EQ=58 +CIEQ=59 +NEQ=60 +LT=61 +LTE=62 +GT=63 +GTE=64 +PLUS=65 +MINUS=66 +ASTERISK=67 +SLASH=68 +PERCENT=69 +LEFT_BRACES=70 +RIGHT_BRACES=71 +NAMED_OR_POSITIONAL_PARAM=72 +OPENING_BRACKET=73 +CLOSING_BRACKET=74 +UNQUOTED_IDENTIFIER=75 +QUOTED_IDENTIFIER=76 +EXPR_LINE_COMMENT=77 +EXPR_MULTILINE_COMMENT=78 +EXPR_WS=79 +EXPLAIN_WS=80 +EXPLAIN_LINE_COMMENT=81 +EXPLAIN_MULTILINE_COMMENT=82 +METADATA=83 +UNQUOTED_SOURCE=84 +FROM_LINE_COMMENT=85 +FROM_MULTILINE_COMMENT=86 +FROM_WS=87 +ID_PATTERN=88 +PROJECT_LINE_COMMENT=89 +PROJECT_MULTILINE_COMMENT=90 +PROJECT_WS=91 +AS=92 +RENAME_LINE_COMMENT=93 +RENAME_MULTILINE_COMMENT=94 +RENAME_WS=95 +ON=96 +WITH=97 +ENRICH_POLICY_NAME=98 +ENRICH_LINE_COMMENT=99 +ENRICH_MULTILINE_COMMENT=100 +ENRICH_WS=101 +ENRICH_FIELD_LINE_COMMENT=102 +ENRICH_FIELD_MULTILINE_COMMENT=103 +ENRICH_FIELD_WS=104 +MVEXPAND_LINE_COMMENT=105 +MVEXPAND_MULTILINE_COMMENT=106 +MVEXPAND_WS=107 +INFO=108 +SHOW_LINE_COMMENT=109 +SHOW_MULTILINE_COMMENT=110 +SHOW_WS=111 +SETTING=112 +SETTING_LINE_COMMENT=113 +SETTTING_MULTILINE_COMMENT=114 +SETTING_WS=115 +LOOKUP_LINE_COMMENT=116 +LOOKUP_MULTILINE_COMMENT=117 +LOOKUP_WS=118 +LOOKUP_FIELD_LINE_COMMENT=119 +LOOKUP_FIELD_MULTILINE_COMMENT=120 +LOOKUP_FIELD_WS=121 +JOIN=122 +USING=123 +JOIN_LINE_COMMENT=124 +JOIN_MULTILINE_COMMENT=125 +JOIN_WS=126 +METRICS_LINE_COMMENT=127 +METRICS_MULTILINE_COMMENT=128 +METRICS_WS=129 +CLOSING_METRICS_LINE_COMMENT=130 +CLOSING_METRICS_MULTILINE_COMMENT=131 +CLOSING_METRICS_WS=132 +CHANGE_POINT_LINE_COMMENT=133 +CHANGE_POINT_MULTILINE_COMMENT=134 +CHANGE_POINT_WS=135 +INSIST_WS=136 +INSIST_LINE_COMMENT=137 +INSIST_MULTILINE_COMMENT=138 'dissect'=1 'drop'=2 'enrich'=3 @@ -145,50 +153,50 @@ CLOSING_METRICS_WS=130 'stats'=15 'where'=16 'lookup'=17 -'|'=28 -'by'=32 -'and'=33 -'asc'=34 -'='=35 -'::'=36 -':'=37 -','=38 -'desc'=39 -'.'=40 -'false'=41 -'first'=42 -'in'=43 -'is'=44 -'last'=45 -'like'=46 -'('=47 -'not'=48 -'null'=49 -'nulls'=50 -'or'=51 -'?'=52 -'rlike'=53 -')'=54 -'true'=55 -'=='=56 -'=~'=57 -'!='=58 -'<'=59 -'<='=60 -'>'=61 -'>='=62 -'+'=63 -'-'=64 -'*'=65 -'/'=66 -'%'=67 -'{'=68 -'}'=69 -']'=72 -'metadata'=81 -'as'=90 -'on'=94 -'with'=95 -'info'=106 -'join'=120 -'USING'=121 +'|'=30 +'by'=34 +'and'=35 +'asc'=36 +'='=37 +'::'=38 +':'=39 +','=40 +'desc'=41 +'.'=42 +'false'=43 +'first'=44 +'in'=45 +'is'=46 +'last'=47 +'like'=48 +'('=49 +'not'=50 +'null'=51 +'nulls'=52 +'or'=53 +'?'=54 +'rlike'=55 +')'=56 +'true'=57 +'=='=58 +'=~'=59 +'!='=60 +'<'=61 +'<='=62 +'>'=63 +'>='=64 +'+'=65 +'-'=66 +'*'=67 +'/'=68 +'%'=69 +'{'=70 +'}'=71 +']'=74 +'metadata'=83 +'as'=92 +'on'=96 +'with'=97 +'info'=108 +'join'=122 +'USING'=123 diff --git a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.ts b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.ts index 142df86b0f10d..cee8e24ef739b 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser.ts @@ -45,119 +45,127 @@ export default class esql_parser extends parser_config { public static readonly STATS = 15; public static readonly WHERE = 16; public static readonly JOIN_LOOKUP = 17; - public static readonly DEV_INLINESTATS = 18; - public static readonly DEV_LOOKUP = 19; - public static readonly DEV_METRICS = 20; - public static readonly DEV_JOIN_FULL = 21; - public static readonly DEV_JOIN_LEFT = 22; - public static readonly DEV_JOIN_RIGHT = 23; - public static readonly UNKNOWN_CMD = 24; - public static readonly LINE_COMMENT = 25; - public static readonly MULTILINE_COMMENT = 26; - public static readonly WS = 27; - public static readonly PIPE = 28; - public static readonly QUOTED_STRING = 29; - public static readonly INTEGER_LITERAL = 30; - public static readonly DECIMAL_LITERAL = 31; - public static readonly BY = 32; - public static readonly AND = 33; - public static readonly ASC = 34; - public static readonly ASSIGN = 35; - public static readonly CAST_OP = 36; - public static readonly COLON = 37; - public static readonly COMMA = 38; - public static readonly DESC = 39; - public static readonly DOT = 40; - public static readonly FALSE = 41; - public static readonly FIRST = 42; - public static readonly IN = 43; - public static readonly IS = 44; - public static readonly LAST = 45; - public static readonly LIKE = 46; - public static readonly LP = 47; - public static readonly NOT = 48; - public static readonly NULL = 49; - public static readonly NULLS = 50; - public static readonly OR = 51; - public static readonly PARAM = 52; - public static readonly RLIKE = 53; - public static readonly RP = 54; - public static readonly TRUE = 55; - public static readonly EQ = 56; - public static readonly CIEQ = 57; - public static readonly NEQ = 58; - public static readonly LT = 59; - public static readonly LTE = 60; - public static readonly GT = 61; - public static readonly GTE = 62; - public static readonly PLUS = 63; - public static readonly MINUS = 64; - public static readonly ASTERISK = 65; - public static readonly SLASH = 66; - public static readonly PERCENT = 67; - public static readonly LEFT_BRACES = 68; - public static readonly RIGHT_BRACES = 69; - public static readonly NAMED_OR_POSITIONAL_PARAM = 70; - public static readonly OPENING_BRACKET = 71; - public static readonly CLOSING_BRACKET = 72; - public static readonly UNQUOTED_IDENTIFIER = 73; - public static readonly QUOTED_IDENTIFIER = 74; - public static readonly EXPR_LINE_COMMENT = 75; - public static readonly EXPR_MULTILINE_COMMENT = 76; - public static readonly EXPR_WS = 77; - public static readonly EXPLAIN_WS = 78; - public static readonly EXPLAIN_LINE_COMMENT = 79; - public static readonly EXPLAIN_MULTILINE_COMMENT = 80; - public static readonly METADATA = 81; - public static readonly UNQUOTED_SOURCE = 82; - public static readonly FROM_LINE_COMMENT = 83; - public static readonly FROM_MULTILINE_COMMENT = 84; - public static readonly FROM_WS = 85; - public static readonly ID_PATTERN = 86; - public static readonly PROJECT_LINE_COMMENT = 87; - public static readonly PROJECT_MULTILINE_COMMENT = 88; - public static readonly PROJECT_WS = 89; - public static readonly AS = 90; - public static readonly RENAME_LINE_COMMENT = 91; - public static readonly RENAME_MULTILINE_COMMENT = 92; - public static readonly RENAME_WS = 93; - public static readonly ON = 94; - public static readonly WITH = 95; - public static readonly ENRICH_POLICY_NAME = 96; - public static readonly ENRICH_LINE_COMMENT = 97; - public static readonly ENRICH_MULTILINE_COMMENT = 98; - public static readonly ENRICH_WS = 99; - public static readonly ENRICH_FIELD_LINE_COMMENT = 100; - public static readonly ENRICH_FIELD_MULTILINE_COMMENT = 101; - public static readonly ENRICH_FIELD_WS = 102; - public static readonly MVEXPAND_LINE_COMMENT = 103; - public static readonly MVEXPAND_MULTILINE_COMMENT = 104; - public static readonly MVEXPAND_WS = 105; - public static readonly INFO = 106; - public static readonly SHOW_LINE_COMMENT = 107; - public static readonly SHOW_MULTILINE_COMMENT = 108; - public static readonly SHOW_WS = 109; - public static readonly SETTING = 110; - public static readonly SETTING_LINE_COMMENT = 111; - public static readonly SETTTING_MULTILINE_COMMENT = 112; - public static readonly SETTING_WS = 113; - public static readonly LOOKUP_LINE_COMMENT = 114; - public static readonly LOOKUP_MULTILINE_COMMENT = 115; - public static readonly LOOKUP_WS = 116; - public static readonly LOOKUP_FIELD_LINE_COMMENT = 117; - public static readonly LOOKUP_FIELD_MULTILINE_COMMENT = 118; - public static readonly LOOKUP_FIELD_WS = 119; - public static readonly JOIN = 120; - public static readonly USING = 121; - public static readonly JOIN_LINE_COMMENT = 122; - public static readonly JOIN_MULTILINE_COMMENT = 123; - public static readonly JOIN_WS = 124; - public static readonly METRICS_LINE_COMMENT = 125; - public static readonly METRICS_MULTILINE_COMMENT = 126; - public static readonly METRICS_WS = 127; - public static readonly CLOSING_METRICS_LINE_COMMENT = 128; - public static readonly CLOSING_METRICS_MULTILINE_COMMENT = 129; - public static readonly CLOSING_METRICS_WS = 130; + public static readonly DEV_CHANGE_POINT = 18; + public static readonly DEV_INLINESTATS = 19; + public static readonly DEV_INSIST = 20; + public static readonly DEV_LOOKUP = 21; + public static readonly DEV_METRICS = 22; + public static readonly DEV_JOIN_FULL = 23; + public static readonly DEV_JOIN_LEFT = 24; + public static readonly DEV_JOIN_RIGHT = 25; + public static readonly UNKNOWN_CMD = 26; + public static readonly LINE_COMMENT = 27; + public static readonly MULTILINE_COMMENT = 28; + public static readonly WS = 29; + public static readonly PIPE = 30; + public static readonly QUOTED_STRING = 31; + public static readonly INTEGER_LITERAL = 32; + public static readonly DECIMAL_LITERAL = 33; + public static readonly BY = 34; + public static readonly AND = 35; + public static readonly ASC = 36; + public static readonly ASSIGN = 37; + public static readonly CAST_OP = 38; + public static readonly COLON = 39; + public static readonly COMMA = 40; + public static readonly DESC = 41; + public static readonly DOT = 42; + public static readonly FALSE = 43; + public static readonly FIRST = 44; + public static readonly IN = 45; + public static readonly IS = 46; + public static readonly LAST = 47; + public static readonly LIKE = 48; + public static readonly LP = 49; + public static readonly NOT = 50; + public static readonly NULL = 51; + public static readonly NULLS = 52; + public static readonly OR = 53; + public static readonly PARAM = 54; + public static readonly RLIKE = 55; + public static readonly RP = 56; + public static readonly TRUE = 57; + public static readonly EQ = 58; + public static readonly CIEQ = 59; + public static readonly NEQ = 60; + public static readonly LT = 61; + public static readonly LTE = 62; + public static readonly GT = 63; + public static readonly GTE = 64; + public static readonly PLUS = 65; + public static readonly MINUS = 66; + public static readonly ASTERISK = 67; + public static readonly SLASH = 68; + public static readonly PERCENT = 69; + public static readonly LEFT_BRACES = 70; + public static readonly RIGHT_BRACES = 71; + public static readonly NAMED_OR_POSITIONAL_PARAM = 72; + public static readonly OPENING_BRACKET = 73; + public static readonly CLOSING_BRACKET = 74; + public static readonly UNQUOTED_IDENTIFIER = 75; + public static readonly QUOTED_IDENTIFIER = 76; + public static readonly EXPR_LINE_COMMENT = 77; + public static readonly EXPR_MULTILINE_COMMENT = 78; + public static readonly EXPR_WS = 79; + public static readonly EXPLAIN_WS = 80; + public static readonly EXPLAIN_LINE_COMMENT = 81; + public static readonly EXPLAIN_MULTILINE_COMMENT = 82; + public static readonly METADATA = 83; + public static readonly UNQUOTED_SOURCE = 84; + public static readonly FROM_LINE_COMMENT = 85; + public static readonly FROM_MULTILINE_COMMENT = 86; + public static readonly FROM_WS = 87; + public static readonly ID_PATTERN = 88; + public static readonly PROJECT_LINE_COMMENT = 89; + public static readonly PROJECT_MULTILINE_COMMENT = 90; + public static readonly PROJECT_WS = 91; + public static readonly AS = 92; + public static readonly RENAME_LINE_COMMENT = 93; + public static readonly RENAME_MULTILINE_COMMENT = 94; + public static readonly RENAME_WS = 95; + public static readonly ON = 96; + public static readonly WITH = 97; + public static readonly ENRICH_POLICY_NAME = 98; + public static readonly ENRICH_LINE_COMMENT = 99; + public static readonly ENRICH_MULTILINE_COMMENT = 100; + public static readonly ENRICH_WS = 101; + public static readonly ENRICH_FIELD_LINE_COMMENT = 102; + public static readonly ENRICH_FIELD_MULTILINE_COMMENT = 103; + public static readonly ENRICH_FIELD_WS = 104; + public static readonly MVEXPAND_LINE_COMMENT = 105; + public static readonly MVEXPAND_MULTILINE_COMMENT = 106; + public static readonly MVEXPAND_WS = 107; + public static readonly INFO = 108; + public static readonly SHOW_LINE_COMMENT = 109; + public static readonly SHOW_MULTILINE_COMMENT = 110; + public static readonly SHOW_WS = 111; + public static readonly SETTING = 112; + public static readonly SETTING_LINE_COMMENT = 113; + public static readonly SETTTING_MULTILINE_COMMENT = 114; + public static readonly SETTING_WS = 115; + public static readonly LOOKUP_LINE_COMMENT = 116; + public static readonly LOOKUP_MULTILINE_COMMENT = 117; + public static readonly LOOKUP_WS = 118; + public static readonly LOOKUP_FIELD_LINE_COMMENT = 119; + public static readonly LOOKUP_FIELD_MULTILINE_COMMENT = 120; + public static readonly LOOKUP_FIELD_WS = 121; + public static readonly JOIN = 122; + public static readonly USING = 123; + public static readonly JOIN_LINE_COMMENT = 124; + public static readonly JOIN_MULTILINE_COMMENT = 125; + public static readonly JOIN_WS = 126; + public static readonly METRICS_LINE_COMMENT = 127; + public static readonly METRICS_MULTILINE_COMMENT = 128; + public static readonly METRICS_WS = 129; + public static readonly CLOSING_METRICS_LINE_COMMENT = 130; + public static readonly CLOSING_METRICS_MULTILINE_COMMENT = 131; + public static readonly CLOSING_METRICS_WS = 132; + public static readonly CHANGE_POINT_LINE_COMMENT = 133; + public static readonly CHANGE_POINT_MULTILINE_COMMENT = 134; + public static readonly CHANGE_POINT_WS = 135; + public static readonly INSIST_WS = 136; + public static readonly INSIST_LINE_COMMENT = 137; + public static readonly INSIST_MULTILINE_COMMENT = 138; public static override readonly EOF = Token.EOF; public static readonly RULE_singleStatement = 0; public static readonly RULE_query = 1; @@ -225,6 +233,8 @@ export default class esql_parser extends parser_config { public static readonly RULE_joinTarget = 63; public static readonly RULE_joinCondition = 64; public static readonly RULE_joinPredicate = 65; + public static readonly RULE_changePointCommand = 66; + public static readonly RULE_insistCommand = 67; public static readonly literalNames: (string | null)[] = [ null, "'dissect'", "'drop'", "'enrich'", "'eval'", "'explain'", @@ -240,6 +250,7 @@ export default class esql_parser extends parser_config { null, null, null, null, null, null, + null, null, "'|'", null, null, null, "'by'", "'and'", @@ -297,7 +308,9 @@ export default class esql_parser extends parser_config { "SHOW", "SORT", "STATS", "WHERE", "JOIN_LOOKUP", + "DEV_CHANGE_POINT", "DEV_INLINESTATS", + "DEV_INSIST", "DEV_LOOKUP", "DEV_METRICS", "DEV_JOIN_FULL", @@ -387,7 +400,13 @@ export default class esql_parser extends parser_config { "METRICS_WS", "CLOSING_METRICS_LINE_COMMENT", "CLOSING_METRICS_MULTILINE_COMMENT", - "CLOSING_METRICS_WS" ]; + "CLOSING_METRICS_WS", + "CHANGE_POINT_LINE_COMMENT", + "CHANGE_POINT_MULTILINE_COMMENT", + "CHANGE_POINT_WS", + "INSIST_WS", + "INSIST_LINE_COMMENT", + "INSIST_MULTILINE_COMMENT" ]; // tslint:disable:no-trailing-whitespace public static readonly ruleNames: string[] = [ "singleStatement", "query", "sourceCommand", "processingCommand", "whereCommand", @@ -403,7 +422,8 @@ export default class esql_parser extends parser_config { "commandOptions", "commandOption", "booleanValue", "numericValue", "decimalValue", "integerValue", "string", "comparisonOperator", "explainCommand", "subqueryExpression", "showCommand", "enrichCommand", "enrichWithClause", "lookupCommand", "inlinestatsCommand", - "joinCommand", "joinTarget", "joinCondition", "joinPredicate", + "joinCommand", "joinTarget", "joinCondition", "joinPredicate", "changePointCommand", + "insistCommand", ]; public get grammarFileName(): string { return "esql_parser.g4"; } public get literalNames(): (string | null)[] { return esql_parser.literalNames; } @@ -426,9 +446,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 132; + this.state = 136; this.query(0); - this.state = 133; + this.state = 137; this.match(esql_parser.EOF); } } @@ -470,11 +490,11 @@ export default class esql_parser extends parser_config { this._ctx = localctx; _prevctx = localctx; - this.state = 136; + this.state = 140; this.sourceCommand(); } this._ctx.stop = this._input.LT(-1); - this.state = 143; + this.state = 147; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 0, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { @@ -487,18 +507,18 @@ export default class esql_parser extends parser_config { { localctx = new CompositeQueryContext(this, new QueryContext(this, _parentctx, _parentState)); this.pushNewRecursionContext(localctx, _startState, esql_parser.RULE_query); - this.state = 138; + this.state = 142; if (!(this.precpred(this._ctx, 1))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 1)"); } - this.state = 139; + this.state = 143; this.match(esql_parser.PIPE); - this.state = 140; + this.state = 144; this.processingCommand(); } } } - this.state = 145; + this.state = 149; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 0, this._ctx); } @@ -523,45 +543,45 @@ export default class esql_parser extends parser_config { let localctx: SourceCommandContext = new SourceCommandContext(this, this._ctx, this.state); this.enterRule(localctx, 4, esql_parser.RULE_sourceCommand); try { - this.state = 152; + this.state = 156; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 1, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 146; + this.state = 150; this.explainCommand(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 147; + this.state = 151; this.fromCommand(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 148; + this.state = 152; this.rowCommand(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 149; + this.state = 153; this.showCommand(); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 150; + this.state = 154; if (!(this.isDevVersion())) { throw this.createFailedPredicateException("this.isDevVersion()"); } - this.state = 151; + this.state = 155; this.metricsCommand(); } break; @@ -586,122 +606,144 @@ export default class esql_parser extends parser_config { let localctx: ProcessingCommandContext = new ProcessingCommandContext(this, this._ctx, this.state); this.enterRule(localctx, 6, esql_parser.RULE_processingCommand); try { - this.state = 171; + this.state = 179; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 2, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 154; + this.state = 158; this.evalCommand(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 155; + this.state = 159; this.whereCommand(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 156; + this.state = 160; this.keepCommand(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 157; + this.state = 161; this.limitCommand(); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 158; + this.state = 162; this.statsCommand(); } break; case 6: this.enterOuterAlt(localctx, 6); { - this.state = 159; + this.state = 163; this.sortCommand(); } break; case 7: this.enterOuterAlt(localctx, 7); { - this.state = 160; + this.state = 164; this.dropCommand(); } break; case 8: this.enterOuterAlt(localctx, 8); { - this.state = 161; + this.state = 165; this.renameCommand(); } break; case 9: this.enterOuterAlt(localctx, 9); { - this.state = 162; + this.state = 166; this.dissectCommand(); } break; case 10: this.enterOuterAlt(localctx, 10); { - this.state = 163; + this.state = 167; this.grokCommand(); } break; case 11: this.enterOuterAlt(localctx, 11); { - this.state = 164; + this.state = 168; this.enrichCommand(); } break; case 12: this.enterOuterAlt(localctx, 12); { - this.state = 165; + this.state = 169; this.mvExpandCommand(); } break; case 13: this.enterOuterAlt(localctx, 13); { - this.state = 166; + this.state = 170; this.joinCommand(); } break; case 14: this.enterOuterAlt(localctx, 14); { - this.state = 167; + this.state = 171; if (!(this.isDevVersion())) { throw this.createFailedPredicateException("this.isDevVersion()"); } - this.state = 168; + this.state = 172; this.inlinestatsCommand(); } break; case 15: this.enterOuterAlt(localctx, 15); { - this.state = 169; + this.state = 173; if (!(this.isDevVersion())) { throw this.createFailedPredicateException("this.isDevVersion()"); } - this.state = 170; + this.state = 174; this.lookupCommand(); } break; + case 16: + this.enterOuterAlt(localctx, 16); + { + this.state = 175; + if (!(this.isDevVersion())) { + throw this.createFailedPredicateException("this.isDevVersion()"); + } + this.state = 176; + this.changePointCommand(); + } + break; + case 17: + this.enterOuterAlt(localctx, 17); + { + this.state = 177; + if (!(this.isDevVersion())) { + throw this.createFailedPredicateException("this.isDevVersion()"); + } + this.state = 178; + this.insistCommand(); + } + break; } } catch (re) { @@ -725,9 +767,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 173; + this.state = 181; this.match(esql_parser.WHERE); - this.state = 174; + this.state = 182; this.booleanExpression(0); } } @@ -765,7 +807,7 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 205; + this.state = 213; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 6, this._ctx) ) { case 1: @@ -774,9 +816,9 @@ export default class esql_parser extends parser_config { this._ctx = localctx; _prevctx = localctx; - this.state = 177; + this.state = 185; this.match(esql_parser.NOT); - this.state = 178; + this.state = 186; this.booleanExpression(8); } break; @@ -785,7 +827,7 @@ export default class esql_parser extends parser_config { localctx = new BooleanDefaultContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 179; + this.state = 187; this.valueExpression(); } break; @@ -794,7 +836,7 @@ export default class esql_parser extends parser_config { localctx = new RegexExpressionContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 180; + this.state = 188; this.regexBooleanExpression(); } break; @@ -803,41 +845,41 @@ export default class esql_parser extends parser_config { localctx = new LogicalInContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 181; + this.state = 189; this.valueExpression(); - this.state = 183; + this.state = 191; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===48) { + if (_la===50) { { - this.state = 182; + this.state = 190; this.match(esql_parser.NOT); } } - this.state = 185; + this.state = 193; this.match(esql_parser.IN); - this.state = 186; + this.state = 194; this.match(esql_parser.LP); - this.state = 187; + this.state = 195; this.valueExpression(); - this.state = 192; + this.state = 200; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===38) { + while (_la===40) { { { - this.state = 188; + this.state = 196; this.match(esql_parser.COMMA); - this.state = 189; + this.state = 197; this.valueExpression(); } } - this.state = 194; + this.state = 202; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 195; + this.state = 203; this.match(esql_parser.RP); } break; @@ -846,21 +888,21 @@ export default class esql_parser extends parser_config { localctx = new IsNullContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 197; + this.state = 205; this.valueExpression(); - this.state = 198; + this.state = 206; this.match(esql_parser.IS); - this.state = 200; + this.state = 208; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===48) { + if (_la===50) { { - this.state = 199; + this.state = 207; this.match(esql_parser.NOT); } } - this.state = 202; + this.state = 210; this.match(esql_parser.NULL); } break; @@ -869,13 +911,13 @@ export default class esql_parser extends parser_config { localctx = new MatchExpressionContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 204; + this.state = 212; this.matchBooleanExpression(); } break; } this._ctx.stop = this._input.LT(-1); - this.state = 215; + this.state = 223; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 8, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { @@ -885,7 +927,7 @@ export default class esql_parser extends parser_config { } _prevctx = localctx; { - this.state = 213; + this.state = 221; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 7, this._ctx) ) { case 1: @@ -893,13 +935,13 @@ export default class esql_parser extends parser_config { localctx = new LogicalBinaryContext(this, new BooleanExpressionContext(this, _parentctx, _parentState)); (localctx as LogicalBinaryContext)._left = _prevctx; this.pushNewRecursionContext(localctx, _startState, esql_parser.RULE_booleanExpression); - this.state = 207; + this.state = 215; if (!(this.precpred(this._ctx, 5))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 5)"); } - this.state = 208; + this.state = 216; (localctx as LogicalBinaryContext)._operator = this.match(esql_parser.AND); - this.state = 209; + this.state = 217; (localctx as LogicalBinaryContext)._right = this.booleanExpression(6); } break; @@ -908,20 +950,20 @@ export default class esql_parser extends parser_config { localctx = new LogicalBinaryContext(this, new BooleanExpressionContext(this, _parentctx, _parentState)); (localctx as LogicalBinaryContext)._left = _prevctx; this.pushNewRecursionContext(localctx, _startState, esql_parser.RULE_booleanExpression); - this.state = 210; + this.state = 218; if (!(this.precpred(this._ctx, 4))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 4)"); } - this.state = 211; + this.state = 219; (localctx as LogicalBinaryContext)._operator = this.match(esql_parser.OR); - this.state = 212; + this.state = 220; (localctx as LogicalBinaryContext)._right = this.booleanExpression(5); } break; } } } - this.state = 217; + this.state = 225; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 8, this._ctx); } @@ -947,48 +989,48 @@ export default class esql_parser extends parser_config { this.enterRule(localctx, 12, esql_parser.RULE_regexBooleanExpression); let _la: number; try { - this.state = 232; + this.state = 240; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 11, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 218; + this.state = 226; this.valueExpression(); - this.state = 220; + this.state = 228; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===48) { + if (_la===50) { { - this.state = 219; + this.state = 227; this.match(esql_parser.NOT); } } - this.state = 222; + this.state = 230; localctx._kind = this.match(esql_parser.LIKE); - this.state = 223; + this.state = 231; localctx._pattern = this.string_(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 225; + this.state = 233; this.valueExpression(); - this.state = 227; + this.state = 235; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===48) { + if (_la===50) { { - this.state = 226; + this.state = 234; this.match(esql_parser.NOT); } } - this.state = 229; + this.state = 237; localctx._kind = this.match(esql_parser.RLIKE); - this.state = 230; + this.state = 238; localctx._pattern = this.string_(); } break; @@ -1016,23 +1058,23 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 234; + this.state = 242; localctx._fieldExp = this.qualifiedName(); - this.state = 237; + this.state = 245; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===36) { + if (_la===38) { { - this.state = 235; + this.state = 243; this.match(esql_parser.CAST_OP); - this.state = 236; + this.state = 244; localctx._fieldType = this.dataType(); } } - this.state = 239; + this.state = 247; this.match(esql_parser.COLON); - this.state = 240; + this.state = 248; localctx._matchQuery = this.constant(); } } @@ -1055,14 +1097,14 @@ export default class esql_parser extends parser_config { let localctx: ValueExpressionContext = new ValueExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 16, esql_parser.RULE_valueExpression); try { - this.state = 247; + this.state = 255; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 13, this._ctx) ) { case 1: localctx = new ValueExpressionDefaultContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 242; + this.state = 250; this.operatorExpression(0); } break; @@ -1070,11 +1112,11 @@ export default class esql_parser extends parser_config { localctx = new ComparisonContext(this, localctx); this.enterOuterAlt(localctx, 2); { - this.state = 243; + this.state = 251; (localctx as ComparisonContext)._left = this.operatorExpression(0); - this.state = 244; + this.state = 252; this.comparisonOperator(); - this.state = 245; + this.state = 253; (localctx as ComparisonContext)._right = this.operatorExpression(0); } break; @@ -1114,7 +1156,7 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 253; + this.state = 261; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 14, this._ctx) ) { case 1: @@ -1123,7 +1165,7 @@ export default class esql_parser extends parser_config { this._ctx = localctx; _prevctx = localctx; - this.state = 250; + this.state = 258; this.primaryExpression(0); } break; @@ -1132,23 +1174,23 @@ export default class esql_parser extends parser_config { localctx = new ArithmeticUnaryContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 251; + this.state = 259; (localctx as ArithmeticUnaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); - if(!(_la===63 || _la===64)) { + if(!(_la===65 || _la===66)) { (localctx as ArithmeticUnaryContext)._operator = this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 252; + this.state = 260; this.operatorExpression(3); } break; } this._ctx.stop = this._input.LT(-1); - this.state = 263; + this.state = 271; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 16, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { @@ -1158,7 +1200,7 @@ export default class esql_parser extends parser_config { } _prevctx = localctx; { - this.state = 261; + this.state = 269; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 15, this._ctx) ) { case 1: @@ -1166,21 +1208,21 @@ export default class esql_parser extends parser_config { localctx = new ArithmeticBinaryContext(this, new OperatorExpressionContext(this, _parentctx, _parentState)); (localctx as ArithmeticBinaryContext)._left = _prevctx; this.pushNewRecursionContext(localctx, _startState, esql_parser.RULE_operatorExpression); - this.state = 255; + this.state = 263; if (!(this.precpred(this._ctx, 2))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 2)"); } - this.state = 256; + this.state = 264; (localctx as ArithmeticBinaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); - if(!(((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 7) !== 0))) { + if(!(((((_la - 67)) & ~0x1F) === 0 && ((1 << (_la - 67)) & 7) !== 0))) { (localctx as ArithmeticBinaryContext)._operator = this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 257; + this.state = 265; (localctx as ArithmeticBinaryContext)._right = this.operatorExpression(3); } break; @@ -1189,28 +1231,28 @@ export default class esql_parser extends parser_config { localctx = new ArithmeticBinaryContext(this, new OperatorExpressionContext(this, _parentctx, _parentState)); (localctx as ArithmeticBinaryContext)._left = _prevctx; this.pushNewRecursionContext(localctx, _startState, esql_parser.RULE_operatorExpression); - this.state = 258; + this.state = 266; if (!(this.precpred(this._ctx, 1))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 1)"); } - this.state = 259; + this.state = 267; (localctx as ArithmeticBinaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); - if(!(_la===63 || _la===64)) { + if(!(_la===65 || _la===66)) { (localctx as ArithmeticBinaryContext)._operator = this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 260; + this.state = 268; (localctx as ArithmeticBinaryContext)._right = this.operatorExpression(2); } break; } } } - this.state = 265; + this.state = 273; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 16, this._ctx); } @@ -1249,7 +1291,7 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 274; + this.state = 282; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 17, this._ctx) ) { case 1: @@ -1258,7 +1300,7 @@ export default class esql_parser extends parser_config { this._ctx = localctx; _prevctx = localctx; - this.state = 267; + this.state = 275; this.constant(); } break; @@ -1267,7 +1309,7 @@ export default class esql_parser extends parser_config { localctx = new DereferenceContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 268; + this.state = 276; this.qualifiedName(); } break; @@ -1276,7 +1318,7 @@ export default class esql_parser extends parser_config { localctx = new FunctionContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 269; + this.state = 277; this.functionExpression(); } break; @@ -1285,17 +1327,17 @@ export default class esql_parser extends parser_config { localctx = new ParenthesizedExpressionContext(this, localctx); this._ctx = localctx; _prevctx = localctx; - this.state = 270; + this.state = 278; this.match(esql_parser.LP); - this.state = 271; + this.state = 279; this.booleanExpression(0); - this.state = 272; + this.state = 280; this.match(esql_parser.RP); } break; } this._ctx.stop = this._input.LT(-1); - this.state = 281; + this.state = 289; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 18, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { @@ -1308,18 +1350,18 @@ export default class esql_parser extends parser_config { { localctx = new InlineCastContext(this, new PrimaryExpressionContext(this, _parentctx, _parentState)); this.pushNewRecursionContext(localctx, _startState, esql_parser.RULE_primaryExpression); - this.state = 276; + this.state = 284; if (!(this.precpred(this._ctx, 1))) { throw this.createFailedPredicateException("this.precpred(this._ctx, 1)"); } - this.state = 277; + this.state = 285; this.match(esql_parser.CAST_OP); - this.state = 278; + this.state = 286; this.dataType(); } } } - this.state = 283; + this.state = 291; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 18, this._ctx); } @@ -1348,64 +1390,64 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 284; + this.state = 292; this.functionName(); - this.state = 285; + this.state = 293; this.match(esql_parser.LP); - this.state = 299; + this.state = 307; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 65: + case 67: { - this.state = 286; + this.state = 294; this.match(esql_parser.ASTERISK); } break; - case 29: - case 30: case 31: - case 41: - case 47: - case 48: + case 32: + case 33: + case 43: case 49: - case 52: - case 55: - case 63: - case 64: - case 70: - case 71: + case 50: + case 51: + case 54: + case 57: + case 65: + case 66: + case 72: case 73: - case 74: + case 75: + case 76: { { - this.state = 287; + this.state = 295; this.booleanExpression(0); - this.state = 292; + this.state = 300; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 19, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 288; + this.state = 296; this.match(esql_parser.COMMA); - this.state = 289; + this.state = 297; this.booleanExpression(0); } } } - this.state = 294; + this.state = 302; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 19, this._ctx); } - this.state = 297; + this.state = 305; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===38) { + if (_la===40) { { - this.state = 295; + this.state = 303; this.match(esql_parser.COMMA); - this.state = 296; + this.state = 304; this.mapExpression(); } } @@ -1413,12 +1455,12 @@ export default class esql_parser extends parser_config { } } break; - case 54: + case 56: break; default: break; } - this.state = 301; + this.state = 309; this.match(esql_parser.RP); } } @@ -1443,7 +1485,7 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 303; + this.state = 311; this.identifierOrParameter(); } } @@ -1469,27 +1511,27 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 305; + this.state = 313; this.match(esql_parser.LEFT_BRACES); - this.state = 306; + this.state = 314; this.entryExpression(); - this.state = 311; + this.state = 319; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===38) { + while (_la===40) { { { - this.state = 307; + this.state = 315; this.match(esql_parser.COMMA); - this.state = 308; + this.state = 316; this.entryExpression(); } } - this.state = 313; + this.state = 321; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 314; + this.state = 322; this.match(esql_parser.RIGHT_BRACES); } } @@ -1514,11 +1556,11 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 316; + this.state = 324; localctx._key = this.string_(); - this.state = 317; + this.state = 325; this.match(esql_parser.COLON); - this.state = 318; + this.state = 326; localctx._value = this.constant(); } } @@ -1544,7 +1586,7 @@ export default class esql_parser extends parser_config { localctx = new ToDataTypeContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 320; + this.state = 328; this.identifier(); } } @@ -1569,9 +1611,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 322; + this.state = 330; this.match(esql_parser.ROW); - this.state = 323; + this.state = 331; this.fields(); } } @@ -1597,23 +1639,23 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 325; + this.state = 333; this.field(); - this.state = 330; + this.state = 338; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 23, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 326; + this.state = 334; this.match(esql_parser.COMMA); - this.state = 327; + this.state = 335; this.field(); } } } - this.state = 332; + this.state = 340; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 23, this._ctx); } @@ -1640,19 +1682,19 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 336; + this.state = 344; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 24, this._ctx) ) { case 1: { - this.state = 333; + this.state = 341; this.qualifiedName(); - this.state = 334; + this.state = 342; this.match(esql_parser.ASSIGN); } break; } - this.state = 338; + this.state = 346; this.booleanExpression(0); } } @@ -1678,34 +1720,34 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 340; + this.state = 348; this.match(esql_parser.FROM); - this.state = 341; + this.state = 349; this.indexPattern(); - this.state = 346; + this.state = 354; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 25, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 342; + this.state = 350; this.match(esql_parser.COMMA); - this.state = 343; + this.state = 351; this.indexPattern(); } } } - this.state = 348; + this.state = 356; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 25, this._ctx); } - this.state = 350; + this.state = 358; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 26, this._ctx) ) { case 1: { - this.state = 349; + this.state = 357; this.metadata(); } break; @@ -1733,19 +1775,19 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 355; + this.state = 363; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 27, this._ctx) ) { case 1: { - this.state = 352; + this.state = 360; this.clusterString(); - this.state = 353; + this.state = 361; this.match(esql_parser.COLON); } break; } - this.state = 357; + this.state = 365; this.indexString(); } } @@ -1771,9 +1813,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 359; + this.state = 367; _la = this._input.LA(1); - if(!(_la===29 || _la===82)) { + if(!(_la===31 || _la===84)) { this._errHandler.recoverInline(this); } else { @@ -1804,9 +1846,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 361; + this.state = 369; _la = this._input.LA(1); - if(!(_la===29 || _la===82)) { + if(!(_la===31 || _la===84)) { this._errHandler.recoverInline(this); } else { @@ -1837,25 +1879,25 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 363; + this.state = 371; this.match(esql_parser.METADATA); - this.state = 364; + this.state = 372; this.match(esql_parser.UNQUOTED_SOURCE); - this.state = 369; + this.state = 377; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 28, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 365; + this.state = 373; this.match(esql_parser.COMMA); - this.state = 366; + this.state = 374; this.match(esql_parser.UNQUOTED_SOURCE); } } } - this.state = 371; + this.state = 379; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 28, this._ctx); } @@ -1883,46 +1925,46 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 372; + this.state = 380; this.match(esql_parser.DEV_METRICS); - this.state = 373; + this.state = 381; this.indexPattern(); - this.state = 378; + this.state = 386; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 29, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 374; + this.state = 382; this.match(esql_parser.COMMA); - this.state = 375; + this.state = 383; this.indexPattern(); } } } - this.state = 380; + this.state = 388; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 29, this._ctx); } - this.state = 382; + this.state = 390; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 30, this._ctx) ) { case 1: { - this.state = 381; + this.state = 389; localctx._aggregates = this.aggFields(); } break; } - this.state = 386; + this.state = 394; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 31, this._ctx) ) { case 1: { - this.state = 384; + this.state = 392; this.match(esql_parser.BY); - this.state = 385; + this.state = 393; localctx._grouping = this.fields(); } break; @@ -1950,9 +1992,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 388; + this.state = 396; this.match(esql_parser.EVAL); - this.state = 389; + this.state = 397; this.fields(); } } @@ -1977,26 +2019,26 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 391; + this.state = 399; this.match(esql_parser.STATS); - this.state = 393; + this.state = 401; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 32, this._ctx) ) { case 1: { - this.state = 392; + this.state = 400; localctx._stats = this.aggFields(); } break; } - this.state = 397; + this.state = 405; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 33, this._ctx) ) { case 1: { - this.state = 395; + this.state = 403; this.match(esql_parser.BY); - this.state = 396; + this.state = 404; localctx._grouping = this.fields(); } break; @@ -2025,23 +2067,23 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 399; + this.state = 407; this.aggField(); - this.state = 404; + this.state = 412; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 34, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 400; + this.state = 408; this.match(esql_parser.COMMA); - this.state = 401; + this.state = 409; this.aggField(); } } } - this.state = 406; + this.state = 414; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 34, this._ctx); } @@ -2068,16 +2110,16 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 407; + this.state = 415; this.field(); - this.state = 410; + this.state = 418; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 35, this._ctx) ) { case 1: { - this.state = 408; + this.state = 416; this.match(esql_parser.WHERE); - this.state = 409; + this.state = 417; this.booleanExpression(0); } break; @@ -2106,23 +2148,23 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 412; + this.state = 420; this.identifierOrParameter(); - this.state = 417; + this.state = 425; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 36, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 413; + this.state = 421; this.match(esql_parser.DOT); - this.state = 414; + this.state = 422; this.identifierOrParameter(); } } } - this.state = 419; + this.state = 427; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 36, this._ctx); } @@ -2150,23 +2192,23 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 420; + this.state = 428; this.identifierPattern(); - this.state = 425; + this.state = 433; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 37, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 421; + this.state = 429; this.match(esql_parser.DOT); - this.state = 422; + this.state = 430; this.identifierPattern(); } } } - this.state = 427; + this.state = 435; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 37, this._ctx); } @@ -2194,23 +2236,23 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 428; + this.state = 436; this.qualifiedNamePattern(); - this.state = 433; + this.state = 441; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 38, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 429; + this.state = 437; this.match(esql_parser.COMMA); - this.state = 430; + this.state = 438; this.qualifiedNamePattern(); } } } - this.state = 435; + this.state = 443; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 38, this._ctx); } @@ -2238,9 +2280,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 436; + this.state = 444; _la = this._input.LA(1); - if(!(_la===73 || _la===74)) { + if(!(_la===75 || _la===76)) { this._errHandler.recoverInline(this); } else { @@ -2268,21 +2310,21 @@ export default class esql_parser extends parser_config { let localctx: IdentifierPatternContext = new IdentifierPatternContext(this, this._ctx, this.state); this.enterRule(localctx, 66, esql_parser.RULE_identifierPattern); try { - this.state = 440; + this.state = 448; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 86: + case 88: this.enterOuterAlt(localctx, 1); { - this.state = 438; + this.state = 446; this.match(esql_parser.ID_PATTERN); } break; - case 52: - case 70: + case 54: + case 72: this.enterOuterAlt(localctx, 2); { - this.state = 439; + this.state = 447; this.parameter(); } break; @@ -2310,14 +2352,14 @@ export default class esql_parser extends parser_config { this.enterRule(localctx, 68, esql_parser.RULE_constant); let _la: number; try { - this.state = 484; + this.state = 492; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 43, this._ctx) ) { case 1: localctx = new NullLiteralContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 442; + this.state = 450; this.match(esql_parser.NULL); } break; @@ -2325,9 +2367,9 @@ export default class esql_parser extends parser_config { localctx = new QualifiedIntegerLiteralContext(this, localctx); this.enterOuterAlt(localctx, 2); { - this.state = 443; + this.state = 451; this.integerValue(); - this.state = 444; + this.state = 452; this.match(esql_parser.UNQUOTED_IDENTIFIER); } break; @@ -2335,7 +2377,7 @@ export default class esql_parser extends parser_config { localctx = new DecimalLiteralContext(this, localctx); this.enterOuterAlt(localctx, 3); { - this.state = 446; + this.state = 454; this.decimalValue(); } break; @@ -2343,7 +2385,7 @@ export default class esql_parser extends parser_config { localctx = new IntegerLiteralContext(this, localctx); this.enterOuterAlt(localctx, 4); { - this.state = 447; + this.state = 455; this.integerValue(); } break; @@ -2351,7 +2393,7 @@ export default class esql_parser extends parser_config { localctx = new BooleanLiteralContext(this, localctx); this.enterOuterAlt(localctx, 5); { - this.state = 448; + this.state = 456; this.booleanValue(); } break; @@ -2359,7 +2401,7 @@ export default class esql_parser extends parser_config { localctx = new InputParameterContext(this, localctx); this.enterOuterAlt(localctx, 6); { - this.state = 449; + this.state = 457; this.parameter(); } break; @@ -2367,7 +2409,7 @@ export default class esql_parser extends parser_config { localctx = new StringLiteralContext(this, localctx); this.enterOuterAlt(localctx, 7); { - this.state = 450; + this.state = 458; this.string_(); } break; @@ -2375,27 +2417,27 @@ export default class esql_parser extends parser_config { localctx = new NumericArrayLiteralContext(this, localctx); this.enterOuterAlt(localctx, 8); { - this.state = 451; + this.state = 459; this.match(esql_parser.OPENING_BRACKET); - this.state = 452; + this.state = 460; this.numericValue(); - this.state = 457; + this.state = 465; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===38) { + while (_la===40) { { { - this.state = 453; + this.state = 461; this.match(esql_parser.COMMA); - this.state = 454; + this.state = 462; this.numericValue(); } } - this.state = 459; + this.state = 467; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 460; + this.state = 468; this.match(esql_parser.CLOSING_BRACKET); } break; @@ -2403,27 +2445,27 @@ export default class esql_parser extends parser_config { localctx = new BooleanArrayLiteralContext(this, localctx); this.enterOuterAlt(localctx, 9); { - this.state = 462; + this.state = 470; this.match(esql_parser.OPENING_BRACKET); - this.state = 463; + this.state = 471; this.booleanValue(); - this.state = 468; + this.state = 476; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===38) { + while (_la===40) { { { - this.state = 464; + this.state = 472; this.match(esql_parser.COMMA); - this.state = 465; + this.state = 473; this.booleanValue(); } } - this.state = 470; + this.state = 478; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 471; + this.state = 479; this.match(esql_parser.CLOSING_BRACKET); } break; @@ -2431,27 +2473,27 @@ export default class esql_parser extends parser_config { localctx = new StringArrayLiteralContext(this, localctx); this.enterOuterAlt(localctx, 10); { - this.state = 473; + this.state = 481; this.match(esql_parser.OPENING_BRACKET); - this.state = 474; + this.state = 482; this.string_(); - this.state = 479; + this.state = 487; this._errHandler.sync(this); _la = this._input.LA(1); - while (_la===38) { + while (_la===40) { { { - this.state = 475; + this.state = 483; this.match(esql_parser.COMMA); - this.state = 476; + this.state = 484; this.string_(); } } - this.state = 481; + this.state = 489; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 482; + this.state = 490; this.match(esql_parser.CLOSING_BRACKET); } break; @@ -2476,22 +2518,22 @@ export default class esql_parser extends parser_config { let localctx: ParameterContext = new ParameterContext(this, this._ctx, this.state); this.enterRule(localctx, 70, esql_parser.RULE_parameter); try { - this.state = 488; + this.state = 496; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 52: + case 54: localctx = new InputParamContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 486; + this.state = 494; this.match(esql_parser.PARAM); } break; - case 70: + case 72: localctx = new InputNamedOrPositionalParamContext(this, localctx); this.enterOuterAlt(localctx, 2); { - this.state = 487; + this.state = 495; this.match(esql_parser.NAMED_OR_POSITIONAL_PARAM); } break; @@ -2518,22 +2560,22 @@ export default class esql_parser extends parser_config { let localctx: IdentifierOrParameterContext = new IdentifierOrParameterContext(this, this._ctx, this.state); this.enterRule(localctx, 72, esql_parser.RULE_identifierOrParameter); try { - this.state = 492; + this.state = 500; this._errHandler.sync(this); switch (this._input.LA(1)) { - case 73: - case 74: + case 75: + case 76: this.enterOuterAlt(localctx, 1); { - this.state = 490; + this.state = 498; this.identifier(); } break; - case 52: - case 70: + case 54: + case 72: this.enterOuterAlt(localctx, 2); { - this.state = 491; + this.state = 499; this.parameter(); } break; @@ -2562,9 +2604,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 494; + this.state = 502; this.match(esql_parser.LIMIT); - this.state = 495; + this.state = 503; this.match(esql_parser.INTEGER_LITERAL); } } @@ -2590,25 +2632,25 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 497; + this.state = 505; this.match(esql_parser.SORT); - this.state = 498; + this.state = 506; this.orderExpression(); - this.state = 503; + this.state = 511; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 46, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 499; + this.state = 507; this.match(esql_parser.COMMA); - this.state = 500; + this.state = 508; this.orderExpression(); } } } - this.state = 505; + this.state = 513; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 46, this._ctx); } @@ -2636,17 +2678,17 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 506; + this.state = 514; this.booleanExpression(0); - this.state = 508; + this.state = 516; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 47, this._ctx) ) { case 1: { - this.state = 507; + this.state = 515; localctx._ordering = this._input.LT(1); _la = this._input.LA(1); - if(!(_la===34 || _la===39)) { + if(!(_la===36 || _la===41)) { localctx._ordering = this._errHandler.recoverInline(this); } else { @@ -2656,17 +2698,17 @@ export default class esql_parser extends parser_config { } break; } - this.state = 512; + this.state = 520; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 48, this._ctx) ) { case 1: { - this.state = 510; + this.state = 518; this.match(esql_parser.NULLS); - this.state = 511; + this.state = 519; localctx._nullOrdering = this._input.LT(1); _la = this._input.LA(1); - if(!(_la===42 || _la===45)) { + if(!(_la===44 || _la===47)) { localctx._nullOrdering = this._errHandler.recoverInline(this); } else { @@ -2699,9 +2741,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 514; + this.state = 522; this.match(esql_parser.KEEP); - this.state = 515; + this.state = 523; this.qualifiedNamePatterns(); } } @@ -2726,9 +2768,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 517; + this.state = 525; this.match(esql_parser.DROP); - this.state = 518; + this.state = 526; this.qualifiedNamePatterns(); } } @@ -2754,25 +2796,25 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 520; + this.state = 528; this.match(esql_parser.RENAME); - this.state = 521; + this.state = 529; this.renameClause(); - this.state = 526; + this.state = 534; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 49, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 522; + this.state = 530; this.match(esql_parser.COMMA); - this.state = 523; + this.state = 531; this.renameClause(); } } } - this.state = 528; + this.state = 536; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 49, this._ctx); } @@ -2799,11 +2841,11 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 529; + this.state = 537; localctx._oldName = this.qualifiedNamePattern(); - this.state = 530; + this.state = 538; this.match(esql_parser.AS); - this.state = 531; + this.state = 539; localctx._newName = this.qualifiedNamePattern(); } } @@ -2828,18 +2870,18 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 533; + this.state = 541; this.match(esql_parser.DISSECT); - this.state = 534; + this.state = 542; this.primaryExpression(0); - this.state = 535; + this.state = 543; this.string_(); - this.state = 537; + this.state = 545; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 50, this._ctx) ) { case 1: { - this.state = 536; + this.state = 544; this.commandOptions(); } break; @@ -2867,11 +2909,11 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 539; + this.state = 547; this.match(esql_parser.GROK); - this.state = 540; + this.state = 548; this.primaryExpression(0); - this.state = 541; + this.state = 549; this.string_(); } } @@ -2896,9 +2938,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 543; + this.state = 551; this.match(esql_parser.MV_EXPAND); - this.state = 544; + this.state = 552; this.qualifiedName(); } } @@ -2924,23 +2966,23 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 546; + this.state = 554; this.commandOption(); - this.state = 551; + this.state = 559; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 51, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 547; + this.state = 555; this.match(esql_parser.COMMA); - this.state = 548; + this.state = 556; this.commandOption(); } } } - this.state = 553; + this.state = 561; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 51, this._ctx); } @@ -2967,11 +3009,11 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 554; + this.state = 562; this.identifier(); - this.state = 555; + this.state = 563; this.match(esql_parser.ASSIGN); - this.state = 556; + this.state = 564; this.constant(); } } @@ -2997,9 +3039,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 558; + this.state = 566; _la = this._input.LA(1); - if(!(_la===41 || _la===55)) { + if(!(_la===43 || _la===57)) { this._errHandler.recoverInline(this); } else { @@ -3027,20 +3069,20 @@ export default class esql_parser extends parser_config { let localctx: NumericValueContext = new NumericValueContext(this, this._ctx, this.state); this.enterRule(localctx, 100, esql_parser.RULE_numericValue); try { - this.state = 562; + this.state = 570; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 52, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 560; + this.state = 568; this.decimalValue(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 561; + this.state = 569; this.integerValue(); } break; @@ -3068,14 +3110,14 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 565; + this.state = 573; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===63 || _la===64) { + if (_la===65 || _la===66) { { - this.state = 564; + this.state = 572; _la = this._input.LA(1); - if(!(_la===63 || _la===64)) { + if(!(_la===65 || _la===66)) { this._errHandler.recoverInline(this); } else { @@ -3085,7 +3127,7 @@ export default class esql_parser extends parser_config { } } - this.state = 567; + this.state = 575; this.match(esql_parser.DECIMAL_LITERAL); } } @@ -3111,14 +3153,14 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 570; + this.state = 578; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===63 || _la===64) { + if (_la===65 || _la===66) { { - this.state = 569; + this.state = 577; _la = this._input.LA(1); - if(!(_la===63 || _la===64)) { + if(!(_la===65 || _la===66)) { this._errHandler.recoverInline(this); } else { @@ -3128,7 +3170,7 @@ export default class esql_parser extends parser_config { } } - this.state = 572; + this.state = 580; this.match(esql_parser.INTEGER_LITERAL); } } @@ -3153,7 +3195,7 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 574; + this.state = 582; this.match(esql_parser.QUOTED_STRING); } } @@ -3179,9 +3221,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 576; + this.state = 584; _la = this._input.LA(1); - if(!(((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 125) !== 0))) { + if(!(((((_la - 58)) & ~0x1F) === 0 && ((1 << (_la - 58)) & 125) !== 0))) { this._errHandler.recoverInline(this); } else { @@ -3211,9 +3253,9 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 578; + this.state = 586; this.match(esql_parser.EXPLAIN); - this.state = 579; + this.state = 587; this.subqueryExpression(); } } @@ -3238,11 +3280,11 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 581; + this.state = 589; this.match(esql_parser.OPENING_BRACKET); - this.state = 582; + this.state = 590; this.query(0); - this.state = 583; + this.state = 591; this.match(esql_parser.CLOSING_BRACKET); } } @@ -3268,9 +3310,9 @@ export default class esql_parser extends parser_config { localctx = new ShowInfoContext(this, localctx); this.enterOuterAlt(localctx, 1); { - this.state = 585; + this.state = 593; this.match(esql_parser.SHOW); - this.state = 586; + this.state = 594; this.match(esql_parser.INFO); } } @@ -3296,46 +3338,46 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 588; + this.state = 596; this.match(esql_parser.ENRICH); - this.state = 589; + this.state = 597; localctx._policyName = this.match(esql_parser.ENRICH_POLICY_NAME); - this.state = 592; + this.state = 600; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 55, this._ctx) ) { case 1: { - this.state = 590; + this.state = 598; this.match(esql_parser.ON); - this.state = 591; + this.state = 599; localctx._matchField = this.qualifiedNamePattern(); } break; } - this.state = 603; + this.state = 611; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 57, this._ctx) ) { case 1: { - this.state = 594; + this.state = 602; this.match(esql_parser.WITH); - this.state = 595; + this.state = 603; this.enrichWithClause(); - this.state = 600; + this.state = 608; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 56, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 596; + this.state = 604; this.match(esql_parser.COMMA); - this.state = 597; + this.state = 605; this.enrichWithClause(); } } } - this.state = 602; + this.state = 610; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 56, this._ctx); } @@ -3365,19 +3407,19 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 608; + this.state = 616; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 58, this._ctx) ) { case 1: { - this.state = 605; + this.state = 613; localctx._newName = this.qualifiedNamePattern(); - this.state = 606; + this.state = 614; this.match(esql_parser.ASSIGN); } break; } - this.state = 610; + this.state = 618; localctx._enrichField = this.qualifiedNamePattern(); } } @@ -3402,13 +3444,13 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 612; + this.state = 620; this.match(esql_parser.DEV_LOOKUP); - this.state = 613; + this.state = 621; localctx._tableName = this.indexPattern(); - this.state = 614; + this.state = 622; this.match(esql_parser.ON); - this.state = 615; + this.state = 623; localctx._matchFields = this.qualifiedNamePatterns(); } } @@ -3433,18 +3475,18 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 617; + this.state = 625; this.match(esql_parser.DEV_INLINESTATS); - this.state = 618; + this.state = 626; localctx._stats = this.aggFields(); - this.state = 621; + this.state = 629; this._errHandler.sync(this); switch ( this._interp.adaptivePredict(this._input, 59, this._ctx) ) { case 1: { - this.state = 619; + this.state = 627; this.match(esql_parser.BY); - this.state = 620; + this.state = 628; localctx._grouping = this.fields(); } break; @@ -3473,21 +3515,21 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 623; + this.state = 631; localctx._type_ = this._input.LT(1); _la = this._input.LA(1); - if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 12713984) !== 0))) { + if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 50462720) !== 0))) { localctx._type_ = this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 624; + this.state = 632; this.match(esql_parser.JOIN); - this.state = 625; + this.state = 633; this.joinTarget(); - this.state = 626; + this.state = 634; this.joinCondition(); } } @@ -3512,7 +3554,7 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 628; + this.state = 636; localctx._index = this.indexPattern(); } } @@ -3538,25 +3580,25 @@ export default class esql_parser extends parser_config { let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 630; + this.state = 638; this.match(esql_parser.ON); - this.state = 631; + this.state = 639; this.joinPredicate(); - this.state = 636; + this.state = 644; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 60, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 632; + this.state = 640; this.match(esql_parser.COMMA); - this.state = 633; + this.state = 641; this.joinPredicate(); } } } - this.state = 638; + this.state = 646; this._errHandler.sync(this); _alt = this._interp.adaptivePredict(this._input, 60, this._ctx); } @@ -3583,7 +3625,7 @@ export default class esql_parser extends parser_config { try { this.enterOuterAlt(localctx, 1); { - this.state = 639; + this.state = 647; this.valueExpression(); } } @@ -3601,6 +3643,88 @@ export default class esql_parser extends parser_config { } return localctx; } + // @RuleVersion(0) + public changePointCommand(): ChangePointCommandContext { + let localctx: ChangePointCommandContext = new ChangePointCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 132, esql_parser.RULE_changePointCommand); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 649; + this.match(esql_parser.DEV_CHANGE_POINT); + this.state = 650; + localctx._value = this.qualifiedName(); + this.state = 653; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 61, this._ctx) ) { + case 1: + { + this.state = 651; + this.match(esql_parser.ON); + this.state = 652; + localctx._key = this.qualifiedName(); + } + break; + } + this.state = 660; + this._errHandler.sync(this); + switch ( this._interp.adaptivePredict(this._input, 62, this._ctx) ) { + case 1: + { + this.state = 655; + this.match(esql_parser.AS); + this.state = 656; + localctx._targetType = this.qualifiedName(); + this.state = 657; + this.match(esql_parser.COMMA); + this.state = 658; + localctx._targetPvalue = this.qualifiedName(); + } + break; + } + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } + // @RuleVersion(0) + public insistCommand(): InsistCommandContext { + let localctx: InsistCommandContext = new InsistCommandContext(this, this._ctx, this.state); + this.enterRule(localctx, 134, esql_parser.RULE_insistCommand); + try { + this.enterOuterAlt(localctx, 1); + { + this.state = 662; + this.match(esql_parser.DEV_INSIST); + this.state = 663; + this.qualifiedNamePatterns(); + } + } + catch (re) { + if (re instanceof RecognitionException) { + localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localctx; + } public sempred(localctx: RuleContext, ruleIndex: number, predIndex: number): boolean { switch (ruleIndex) { @@ -3639,36 +3763,40 @@ export default class esql_parser extends parser_config { return this.isDevVersion(); case 3: return this.isDevVersion(); + case 4: + return this.isDevVersion(); + case 5: + return this.isDevVersion(); } return true; } private booleanExpression_sempred(localctx: BooleanExpressionContext, predIndex: number): boolean { switch (predIndex) { - case 4: + case 6: return this.precpred(this._ctx, 5); - case 5: + case 7: return this.precpred(this._ctx, 4); } return true; } private operatorExpression_sempred(localctx: OperatorExpressionContext, predIndex: number): boolean { switch (predIndex) { - case 6: + case 8: return this.precpred(this._ctx, 2); - case 7: + case 9: return this.precpred(this._ctx, 1); } return true; } private primaryExpression_sempred(localctx: PrimaryExpressionContext, predIndex: number): boolean { switch (predIndex) { - case 8: + case 10: return this.precpred(this._ctx, 1); } return true; } - public static readonly _serializedATN: number[] = [4,1,130,642,2,0,7,0, + public static readonly _serializedATN: number[] = [4,1,138,666,2,0,7,0, 2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9, 2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2, 17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24, @@ -3677,206 +3805,214 @@ export default class esql_parser extends parser_config { 2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2, 46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53, 7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7, - 60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,1,0,1,0,1,0,1,1,1, - 1,1,1,1,1,1,1,1,1,5,1,142,8,1,10,1,12,1,145,9,1,1,2,1,2,1,2,1,2,1,2,1,2, - 3,2,153,8,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3, - 1,3,1,3,3,3,172,8,3,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,184,8,5, - 1,5,1,5,1,5,1,5,1,5,5,5,191,8,5,10,5,12,5,194,9,5,1,5,1,5,1,5,1,5,1,5,3, - 5,201,8,5,1,5,1,5,1,5,3,5,206,8,5,1,5,1,5,1,5,1,5,1,5,1,5,5,5,214,8,5,10, - 5,12,5,217,9,5,1,6,1,6,3,6,221,8,6,1,6,1,6,1,6,1,6,1,6,3,6,228,8,6,1,6, - 1,6,1,6,3,6,233,8,6,1,7,1,7,1,7,3,7,238,8,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8, - 1,8,3,8,248,8,8,1,9,1,9,1,9,1,9,3,9,254,8,9,1,9,1,9,1,9,1,9,1,9,1,9,5,9, - 262,8,9,10,9,12,9,265,9,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,3,10, - 275,8,10,1,10,1,10,1,10,5,10,280,8,10,10,10,12,10,283,9,10,1,11,1,11,1, - 11,1,11,1,11,1,11,5,11,291,8,11,10,11,12,11,294,9,11,1,11,1,11,3,11,298, - 8,11,3,11,300,8,11,1,11,1,11,1,12,1,12,1,13,1,13,1,13,1,13,5,13,310,8,13, - 10,13,12,13,313,9,13,1,13,1,13,1,14,1,14,1,14,1,14,1,15,1,15,1,16,1,16, - 1,16,1,17,1,17,1,17,5,17,329,8,17,10,17,12,17,332,9,17,1,18,1,18,1,18,3, - 18,337,8,18,1,18,1,18,1,19,1,19,1,19,1,19,5,19,345,8,19,10,19,12,19,348, - 9,19,1,19,3,19,351,8,19,1,20,1,20,1,20,3,20,356,8,20,1,20,1,20,1,21,1,21, - 1,22,1,22,1,23,1,23,1,23,1,23,5,23,368,8,23,10,23,12,23,371,9,23,1,24,1, - 24,1,24,1,24,5,24,377,8,24,10,24,12,24,380,9,24,1,24,3,24,383,8,24,1,24, - 1,24,3,24,387,8,24,1,25,1,25,1,25,1,26,1,26,3,26,394,8,26,1,26,1,26,3,26, - 398,8,26,1,27,1,27,1,27,5,27,403,8,27,10,27,12,27,406,9,27,1,28,1,28,1, - 28,3,28,411,8,28,1,29,1,29,1,29,5,29,416,8,29,10,29,12,29,419,9,29,1,30, - 1,30,1,30,5,30,424,8,30,10,30,12,30,427,9,30,1,31,1,31,1,31,5,31,432,8, - 31,10,31,12,31,435,9,31,1,32,1,32,1,33,1,33,3,33,441,8,33,1,34,1,34,1,34, - 1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,5,34,456,8,34,10,34,12, - 34,459,9,34,1,34,1,34,1,34,1,34,1,34,1,34,5,34,467,8,34,10,34,12,34,470, - 9,34,1,34,1,34,1,34,1,34,1,34,1,34,5,34,478,8,34,10,34,12,34,481,9,34,1, - 34,1,34,3,34,485,8,34,1,35,1,35,3,35,489,8,35,1,36,1,36,3,36,493,8,36,1, - 37,1,37,1,37,1,38,1,38,1,38,1,38,5,38,502,8,38,10,38,12,38,505,9,38,1,39, - 1,39,3,39,509,8,39,1,39,1,39,3,39,513,8,39,1,40,1,40,1,40,1,41,1,41,1,41, - 1,42,1,42,1,42,1,42,5,42,525,8,42,10,42,12,42,528,9,42,1,43,1,43,1,43,1, - 43,1,44,1,44,1,44,1,44,3,44,538,8,44,1,45,1,45,1,45,1,45,1,46,1,46,1,46, - 1,47,1,47,1,47,5,47,550,8,47,10,47,12,47,553,9,47,1,48,1,48,1,48,1,48,1, - 49,1,49,1,50,1,50,3,50,563,8,50,1,51,3,51,566,8,51,1,51,1,51,1,52,3,52, - 571,8,52,1,52,1,52,1,53,1,53,1,54,1,54,1,55,1,55,1,55,1,56,1,56,1,56,1, - 56,1,57,1,57,1,57,1,58,1,58,1,58,1,58,3,58,593,8,58,1,58,1,58,1,58,1,58, - 5,58,599,8,58,10,58,12,58,602,9,58,3,58,604,8,58,1,59,1,59,1,59,3,59,609, - 8,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,3,61,622,8, - 61,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,64,1,64,1,64,1,64,5,64,635,8,64, - 10,64,12,64,638,9,64,1,65,1,65,1,65,0,4,2,10,18,20,66,0,2,4,6,8,10,12,14, - 16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62, - 64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108, - 110,112,114,116,118,120,122,124,126,128,130,0,9,1,0,63,64,1,0,65,67,2,0, - 29,29,82,82,1,0,73,74,2,0,34,34,39,39,2,0,42,42,45,45,2,0,41,41,55,55,2, - 0,56,56,58,62,2,0,17,17,22,23,667,0,132,1,0,0,0,2,135,1,0,0,0,4,152,1,0, - 0,0,6,171,1,0,0,0,8,173,1,0,0,0,10,205,1,0,0,0,12,232,1,0,0,0,14,234,1, - 0,0,0,16,247,1,0,0,0,18,253,1,0,0,0,20,274,1,0,0,0,22,284,1,0,0,0,24,303, - 1,0,0,0,26,305,1,0,0,0,28,316,1,0,0,0,30,320,1,0,0,0,32,322,1,0,0,0,34, - 325,1,0,0,0,36,336,1,0,0,0,38,340,1,0,0,0,40,355,1,0,0,0,42,359,1,0,0,0, - 44,361,1,0,0,0,46,363,1,0,0,0,48,372,1,0,0,0,50,388,1,0,0,0,52,391,1,0, - 0,0,54,399,1,0,0,0,56,407,1,0,0,0,58,412,1,0,0,0,60,420,1,0,0,0,62,428, - 1,0,0,0,64,436,1,0,0,0,66,440,1,0,0,0,68,484,1,0,0,0,70,488,1,0,0,0,72, - 492,1,0,0,0,74,494,1,0,0,0,76,497,1,0,0,0,78,506,1,0,0,0,80,514,1,0,0,0, - 82,517,1,0,0,0,84,520,1,0,0,0,86,529,1,0,0,0,88,533,1,0,0,0,90,539,1,0, - 0,0,92,543,1,0,0,0,94,546,1,0,0,0,96,554,1,0,0,0,98,558,1,0,0,0,100,562, - 1,0,0,0,102,565,1,0,0,0,104,570,1,0,0,0,106,574,1,0,0,0,108,576,1,0,0,0, - 110,578,1,0,0,0,112,581,1,0,0,0,114,585,1,0,0,0,116,588,1,0,0,0,118,608, - 1,0,0,0,120,612,1,0,0,0,122,617,1,0,0,0,124,623,1,0,0,0,126,628,1,0,0,0, - 128,630,1,0,0,0,130,639,1,0,0,0,132,133,3,2,1,0,133,134,5,0,0,1,134,1,1, - 0,0,0,135,136,6,1,-1,0,136,137,3,4,2,0,137,143,1,0,0,0,138,139,10,1,0,0, - 139,140,5,28,0,0,140,142,3,6,3,0,141,138,1,0,0,0,142,145,1,0,0,0,143,141, - 1,0,0,0,143,144,1,0,0,0,144,3,1,0,0,0,145,143,1,0,0,0,146,153,3,110,55, - 0,147,153,3,38,19,0,148,153,3,32,16,0,149,153,3,114,57,0,150,151,4,2,1, - 0,151,153,3,48,24,0,152,146,1,0,0,0,152,147,1,0,0,0,152,148,1,0,0,0,152, - 149,1,0,0,0,152,150,1,0,0,0,153,5,1,0,0,0,154,172,3,50,25,0,155,172,3,8, - 4,0,156,172,3,80,40,0,157,172,3,74,37,0,158,172,3,52,26,0,159,172,3,76, - 38,0,160,172,3,82,41,0,161,172,3,84,42,0,162,172,3,88,44,0,163,172,3,90, - 45,0,164,172,3,116,58,0,165,172,3,92,46,0,166,172,3,124,62,0,167,168,4, - 3,2,0,168,172,3,122,61,0,169,170,4,3,3,0,170,172,3,120,60,0,171,154,1,0, - 0,0,171,155,1,0,0,0,171,156,1,0,0,0,171,157,1,0,0,0,171,158,1,0,0,0,171, - 159,1,0,0,0,171,160,1,0,0,0,171,161,1,0,0,0,171,162,1,0,0,0,171,163,1,0, - 0,0,171,164,1,0,0,0,171,165,1,0,0,0,171,166,1,0,0,0,171,167,1,0,0,0,171, - 169,1,0,0,0,172,7,1,0,0,0,173,174,5,16,0,0,174,175,3,10,5,0,175,9,1,0,0, - 0,176,177,6,5,-1,0,177,178,5,48,0,0,178,206,3,10,5,8,179,206,3,16,8,0,180, - 206,3,12,6,0,181,183,3,16,8,0,182,184,5,48,0,0,183,182,1,0,0,0,183,184, - 1,0,0,0,184,185,1,0,0,0,185,186,5,43,0,0,186,187,5,47,0,0,187,192,3,16, - 8,0,188,189,5,38,0,0,189,191,3,16,8,0,190,188,1,0,0,0,191,194,1,0,0,0,192, - 190,1,0,0,0,192,193,1,0,0,0,193,195,1,0,0,0,194,192,1,0,0,0,195,196,5,54, - 0,0,196,206,1,0,0,0,197,198,3,16,8,0,198,200,5,44,0,0,199,201,5,48,0,0, - 200,199,1,0,0,0,200,201,1,0,0,0,201,202,1,0,0,0,202,203,5,49,0,0,203,206, - 1,0,0,0,204,206,3,14,7,0,205,176,1,0,0,0,205,179,1,0,0,0,205,180,1,0,0, - 0,205,181,1,0,0,0,205,197,1,0,0,0,205,204,1,0,0,0,206,215,1,0,0,0,207,208, - 10,5,0,0,208,209,5,33,0,0,209,214,3,10,5,6,210,211,10,4,0,0,211,212,5,51, - 0,0,212,214,3,10,5,5,213,207,1,0,0,0,213,210,1,0,0,0,214,217,1,0,0,0,215, - 213,1,0,0,0,215,216,1,0,0,0,216,11,1,0,0,0,217,215,1,0,0,0,218,220,3,16, - 8,0,219,221,5,48,0,0,220,219,1,0,0,0,220,221,1,0,0,0,221,222,1,0,0,0,222, - 223,5,46,0,0,223,224,3,106,53,0,224,233,1,0,0,0,225,227,3,16,8,0,226,228, - 5,48,0,0,227,226,1,0,0,0,227,228,1,0,0,0,228,229,1,0,0,0,229,230,5,53,0, - 0,230,231,3,106,53,0,231,233,1,0,0,0,232,218,1,0,0,0,232,225,1,0,0,0,233, - 13,1,0,0,0,234,237,3,58,29,0,235,236,5,36,0,0,236,238,3,30,15,0,237,235, - 1,0,0,0,237,238,1,0,0,0,238,239,1,0,0,0,239,240,5,37,0,0,240,241,3,68,34, - 0,241,15,1,0,0,0,242,248,3,18,9,0,243,244,3,18,9,0,244,245,3,108,54,0,245, - 246,3,18,9,0,246,248,1,0,0,0,247,242,1,0,0,0,247,243,1,0,0,0,248,17,1,0, - 0,0,249,250,6,9,-1,0,250,254,3,20,10,0,251,252,7,0,0,0,252,254,3,18,9,3, - 253,249,1,0,0,0,253,251,1,0,0,0,254,263,1,0,0,0,255,256,10,2,0,0,256,257, - 7,1,0,0,257,262,3,18,9,3,258,259,10,1,0,0,259,260,7,0,0,0,260,262,3,18, - 9,2,261,255,1,0,0,0,261,258,1,0,0,0,262,265,1,0,0,0,263,261,1,0,0,0,263, - 264,1,0,0,0,264,19,1,0,0,0,265,263,1,0,0,0,266,267,6,10,-1,0,267,275,3, - 68,34,0,268,275,3,58,29,0,269,275,3,22,11,0,270,271,5,47,0,0,271,272,3, - 10,5,0,272,273,5,54,0,0,273,275,1,0,0,0,274,266,1,0,0,0,274,268,1,0,0,0, - 274,269,1,0,0,0,274,270,1,0,0,0,275,281,1,0,0,0,276,277,10,1,0,0,277,278, - 5,36,0,0,278,280,3,30,15,0,279,276,1,0,0,0,280,283,1,0,0,0,281,279,1,0, - 0,0,281,282,1,0,0,0,282,21,1,0,0,0,283,281,1,0,0,0,284,285,3,24,12,0,285, - 299,5,47,0,0,286,300,5,65,0,0,287,292,3,10,5,0,288,289,5,38,0,0,289,291, - 3,10,5,0,290,288,1,0,0,0,291,294,1,0,0,0,292,290,1,0,0,0,292,293,1,0,0, - 0,293,297,1,0,0,0,294,292,1,0,0,0,295,296,5,38,0,0,296,298,3,26,13,0,297, - 295,1,0,0,0,297,298,1,0,0,0,298,300,1,0,0,0,299,286,1,0,0,0,299,287,1,0, - 0,0,299,300,1,0,0,0,300,301,1,0,0,0,301,302,5,54,0,0,302,23,1,0,0,0,303, - 304,3,72,36,0,304,25,1,0,0,0,305,306,5,68,0,0,306,311,3,28,14,0,307,308, - 5,38,0,0,308,310,3,28,14,0,309,307,1,0,0,0,310,313,1,0,0,0,311,309,1,0, - 0,0,311,312,1,0,0,0,312,314,1,0,0,0,313,311,1,0,0,0,314,315,5,69,0,0,315, - 27,1,0,0,0,316,317,3,106,53,0,317,318,5,37,0,0,318,319,3,68,34,0,319,29, - 1,0,0,0,320,321,3,64,32,0,321,31,1,0,0,0,322,323,5,12,0,0,323,324,3,34, - 17,0,324,33,1,0,0,0,325,330,3,36,18,0,326,327,5,38,0,0,327,329,3,36,18, - 0,328,326,1,0,0,0,329,332,1,0,0,0,330,328,1,0,0,0,330,331,1,0,0,0,331,35, - 1,0,0,0,332,330,1,0,0,0,333,334,3,58,29,0,334,335,5,35,0,0,335,337,1,0, - 0,0,336,333,1,0,0,0,336,337,1,0,0,0,337,338,1,0,0,0,338,339,3,10,5,0,339, - 37,1,0,0,0,340,341,5,6,0,0,341,346,3,40,20,0,342,343,5,38,0,0,343,345,3, - 40,20,0,344,342,1,0,0,0,345,348,1,0,0,0,346,344,1,0,0,0,346,347,1,0,0,0, - 347,350,1,0,0,0,348,346,1,0,0,0,349,351,3,46,23,0,350,349,1,0,0,0,350,351, - 1,0,0,0,351,39,1,0,0,0,352,353,3,42,21,0,353,354,5,37,0,0,354,356,1,0,0, - 0,355,352,1,0,0,0,355,356,1,0,0,0,356,357,1,0,0,0,357,358,3,44,22,0,358, - 41,1,0,0,0,359,360,7,2,0,0,360,43,1,0,0,0,361,362,7,2,0,0,362,45,1,0,0, - 0,363,364,5,81,0,0,364,369,5,82,0,0,365,366,5,38,0,0,366,368,5,82,0,0,367, - 365,1,0,0,0,368,371,1,0,0,0,369,367,1,0,0,0,369,370,1,0,0,0,370,47,1,0, - 0,0,371,369,1,0,0,0,372,373,5,20,0,0,373,378,3,40,20,0,374,375,5,38,0,0, - 375,377,3,40,20,0,376,374,1,0,0,0,377,380,1,0,0,0,378,376,1,0,0,0,378,379, - 1,0,0,0,379,382,1,0,0,0,380,378,1,0,0,0,381,383,3,54,27,0,382,381,1,0,0, - 0,382,383,1,0,0,0,383,386,1,0,0,0,384,385,5,32,0,0,385,387,3,34,17,0,386, - 384,1,0,0,0,386,387,1,0,0,0,387,49,1,0,0,0,388,389,5,4,0,0,389,390,3,34, - 17,0,390,51,1,0,0,0,391,393,5,15,0,0,392,394,3,54,27,0,393,392,1,0,0,0, - 393,394,1,0,0,0,394,397,1,0,0,0,395,396,5,32,0,0,396,398,3,34,17,0,397, - 395,1,0,0,0,397,398,1,0,0,0,398,53,1,0,0,0,399,404,3,56,28,0,400,401,5, - 38,0,0,401,403,3,56,28,0,402,400,1,0,0,0,403,406,1,0,0,0,404,402,1,0,0, - 0,404,405,1,0,0,0,405,55,1,0,0,0,406,404,1,0,0,0,407,410,3,36,18,0,408, - 409,5,16,0,0,409,411,3,10,5,0,410,408,1,0,0,0,410,411,1,0,0,0,411,57,1, - 0,0,0,412,417,3,72,36,0,413,414,5,40,0,0,414,416,3,72,36,0,415,413,1,0, - 0,0,416,419,1,0,0,0,417,415,1,0,0,0,417,418,1,0,0,0,418,59,1,0,0,0,419, - 417,1,0,0,0,420,425,3,66,33,0,421,422,5,40,0,0,422,424,3,66,33,0,423,421, - 1,0,0,0,424,427,1,0,0,0,425,423,1,0,0,0,425,426,1,0,0,0,426,61,1,0,0,0, - 427,425,1,0,0,0,428,433,3,60,30,0,429,430,5,38,0,0,430,432,3,60,30,0,431, - 429,1,0,0,0,432,435,1,0,0,0,433,431,1,0,0,0,433,434,1,0,0,0,434,63,1,0, - 0,0,435,433,1,0,0,0,436,437,7,3,0,0,437,65,1,0,0,0,438,441,5,86,0,0,439, - 441,3,70,35,0,440,438,1,0,0,0,440,439,1,0,0,0,441,67,1,0,0,0,442,485,5, - 49,0,0,443,444,3,104,52,0,444,445,5,73,0,0,445,485,1,0,0,0,446,485,3,102, - 51,0,447,485,3,104,52,0,448,485,3,98,49,0,449,485,3,70,35,0,450,485,3,106, - 53,0,451,452,5,71,0,0,452,457,3,100,50,0,453,454,5,38,0,0,454,456,3,100, - 50,0,455,453,1,0,0,0,456,459,1,0,0,0,457,455,1,0,0,0,457,458,1,0,0,0,458, - 460,1,0,0,0,459,457,1,0,0,0,460,461,5,72,0,0,461,485,1,0,0,0,462,463,5, - 71,0,0,463,468,3,98,49,0,464,465,5,38,0,0,465,467,3,98,49,0,466,464,1,0, - 0,0,467,470,1,0,0,0,468,466,1,0,0,0,468,469,1,0,0,0,469,471,1,0,0,0,470, - 468,1,0,0,0,471,472,5,72,0,0,472,485,1,0,0,0,473,474,5,71,0,0,474,479,3, - 106,53,0,475,476,5,38,0,0,476,478,3,106,53,0,477,475,1,0,0,0,478,481,1, - 0,0,0,479,477,1,0,0,0,479,480,1,0,0,0,480,482,1,0,0,0,481,479,1,0,0,0,482, - 483,5,72,0,0,483,485,1,0,0,0,484,442,1,0,0,0,484,443,1,0,0,0,484,446,1, - 0,0,0,484,447,1,0,0,0,484,448,1,0,0,0,484,449,1,0,0,0,484,450,1,0,0,0,484, - 451,1,0,0,0,484,462,1,0,0,0,484,473,1,0,0,0,485,69,1,0,0,0,486,489,5,52, - 0,0,487,489,5,70,0,0,488,486,1,0,0,0,488,487,1,0,0,0,489,71,1,0,0,0,490, - 493,3,64,32,0,491,493,3,70,35,0,492,490,1,0,0,0,492,491,1,0,0,0,493,73, - 1,0,0,0,494,495,5,9,0,0,495,496,5,30,0,0,496,75,1,0,0,0,497,498,5,14,0, - 0,498,503,3,78,39,0,499,500,5,38,0,0,500,502,3,78,39,0,501,499,1,0,0,0, - 502,505,1,0,0,0,503,501,1,0,0,0,503,504,1,0,0,0,504,77,1,0,0,0,505,503, - 1,0,0,0,506,508,3,10,5,0,507,509,7,4,0,0,508,507,1,0,0,0,508,509,1,0,0, - 0,509,512,1,0,0,0,510,511,5,50,0,0,511,513,7,5,0,0,512,510,1,0,0,0,512, - 513,1,0,0,0,513,79,1,0,0,0,514,515,5,8,0,0,515,516,3,62,31,0,516,81,1,0, - 0,0,517,518,5,2,0,0,518,519,3,62,31,0,519,83,1,0,0,0,520,521,5,11,0,0,521, - 526,3,86,43,0,522,523,5,38,0,0,523,525,3,86,43,0,524,522,1,0,0,0,525,528, - 1,0,0,0,526,524,1,0,0,0,526,527,1,0,0,0,527,85,1,0,0,0,528,526,1,0,0,0, - 529,530,3,60,30,0,530,531,5,90,0,0,531,532,3,60,30,0,532,87,1,0,0,0,533, - 534,5,1,0,0,534,535,3,20,10,0,535,537,3,106,53,0,536,538,3,94,47,0,537, - 536,1,0,0,0,537,538,1,0,0,0,538,89,1,0,0,0,539,540,5,7,0,0,540,541,3,20, - 10,0,541,542,3,106,53,0,542,91,1,0,0,0,543,544,5,10,0,0,544,545,3,58,29, - 0,545,93,1,0,0,0,546,551,3,96,48,0,547,548,5,38,0,0,548,550,3,96,48,0,549, - 547,1,0,0,0,550,553,1,0,0,0,551,549,1,0,0,0,551,552,1,0,0,0,552,95,1,0, - 0,0,553,551,1,0,0,0,554,555,3,64,32,0,555,556,5,35,0,0,556,557,3,68,34, - 0,557,97,1,0,0,0,558,559,7,6,0,0,559,99,1,0,0,0,560,563,3,102,51,0,561, - 563,3,104,52,0,562,560,1,0,0,0,562,561,1,0,0,0,563,101,1,0,0,0,564,566, - 7,0,0,0,565,564,1,0,0,0,565,566,1,0,0,0,566,567,1,0,0,0,567,568,5,31,0, - 0,568,103,1,0,0,0,569,571,7,0,0,0,570,569,1,0,0,0,570,571,1,0,0,0,571,572, - 1,0,0,0,572,573,5,30,0,0,573,105,1,0,0,0,574,575,5,29,0,0,575,107,1,0,0, - 0,576,577,7,7,0,0,577,109,1,0,0,0,578,579,5,5,0,0,579,580,3,112,56,0,580, - 111,1,0,0,0,581,582,5,71,0,0,582,583,3,2,1,0,583,584,5,72,0,0,584,113,1, - 0,0,0,585,586,5,13,0,0,586,587,5,106,0,0,587,115,1,0,0,0,588,589,5,3,0, - 0,589,592,5,96,0,0,590,591,5,94,0,0,591,593,3,60,30,0,592,590,1,0,0,0,592, - 593,1,0,0,0,593,603,1,0,0,0,594,595,5,95,0,0,595,600,3,118,59,0,596,597, - 5,38,0,0,597,599,3,118,59,0,598,596,1,0,0,0,599,602,1,0,0,0,600,598,1,0, - 0,0,600,601,1,0,0,0,601,604,1,0,0,0,602,600,1,0,0,0,603,594,1,0,0,0,603, - 604,1,0,0,0,604,117,1,0,0,0,605,606,3,60,30,0,606,607,5,35,0,0,607,609, - 1,0,0,0,608,605,1,0,0,0,608,609,1,0,0,0,609,610,1,0,0,0,610,611,3,60,30, - 0,611,119,1,0,0,0,612,613,5,19,0,0,613,614,3,40,20,0,614,615,5,94,0,0,615, - 616,3,62,31,0,616,121,1,0,0,0,617,618,5,18,0,0,618,621,3,54,27,0,619,620, - 5,32,0,0,620,622,3,34,17,0,621,619,1,0,0,0,621,622,1,0,0,0,622,123,1,0, - 0,0,623,624,7,8,0,0,624,625,5,120,0,0,625,626,3,126,63,0,626,627,3,128, - 64,0,627,125,1,0,0,0,628,629,3,40,20,0,629,127,1,0,0,0,630,631,5,94,0,0, - 631,636,3,130,65,0,632,633,5,38,0,0,633,635,3,130,65,0,634,632,1,0,0,0, - 635,638,1,0,0,0,636,634,1,0,0,0,636,637,1,0,0,0,637,129,1,0,0,0,638,636, - 1,0,0,0,639,640,3,16,8,0,640,131,1,0,0,0,61,143,152,171,183,192,200,205, - 213,215,220,227,232,237,247,253,261,263,274,281,292,297,299,311,330,336, - 346,350,355,369,378,382,386,393,397,404,410,417,425,433,440,457,468,479, - 484,488,492,503,508,512,526,537,551,562,565,570,592,600,603,608,621,636]; + 60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67, + 1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,5,1,146,8,1,10,1,12,1,149,9,1,1,2,1, + 2,1,2,1,2,1,2,1,2,3,2,157,8,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1, + 3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,3,180,8,3,1,4,1,4,1,4,1,5,1, + 5,1,5,1,5,1,5,1,5,1,5,3,5,192,8,5,1,5,1,5,1,5,1,5,1,5,5,5,199,8,5,10,5, + 12,5,202,9,5,1,5,1,5,1,5,1,5,1,5,3,5,209,8,5,1,5,1,5,1,5,3,5,214,8,5,1, + 5,1,5,1,5,1,5,1,5,1,5,5,5,222,8,5,10,5,12,5,225,9,5,1,6,1,6,3,6,229,8,6, + 1,6,1,6,1,6,1,6,1,6,3,6,236,8,6,1,6,1,6,1,6,3,6,241,8,6,1,7,1,7,1,7,3,7, + 246,8,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,3,8,256,8,8,1,9,1,9,1,9,1,9,3,9, + 262,8,9,1,9,1,9,1,9,1,9,1,9,1,9,5,9,270,8,9,10,9,12,9,273,9,9,1,10,1,10, + 1,10,1,10,1,10,1,10,1,10,1,10,3,10,283,8,10,1,10,1,10,1,10,5,10,288,8,10, + 10,10,12,10,291,9,10,1,11,1,11,1,11,1,11,1,11,1,11,5,11,299,8,11,10,11, + 12,11,302,9,11,1,11,1,11,3,11,306,8,11,3,11,308,8,11,1,11,1,11,1,12,1,12, + 1,13,1,13,1,13,1,13,5,13,318,8,13,10,13,12,13,321,9,13,1,13,1,13,1,14,1, + 14,1,14,1,14,1,15,1,15,1,16,1,16,1,16,1,17,1,17,1,17,5,17,337,8,17,10,17, + 12,17,340,9,17,1,18,1,18,1,18,3,18,345,8,18,1,18,1,18,1,19,1,19,1,19,1, + 19,5,19,353,8,19,10,19,12,19,356,9,19,1,19,3,19,359,8,19,1,20,1,20,1,20, + 3,20,364,8,20,1,20,1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,23,1,23,5,23,376, + 8,23,10,23,12,23,379,9,23,1,24,1,24,1,24,1,24,5,24,385,8,24,10,24,12,24, + 388,9,24,1,24,3,24,391,8,24,1,24,1,24,3,24,395,8,24,1,25,1,25,1,25,1,26, + 1,26,3,26,402,8,26,1,26,1,26,3,26,406,8,26,1,27,1,27,1,27,5,27,411,8,27, + 10,27,12,27,414,9,27,1,28,1,28,1,28,3,28,419,8,28,1,29,1,29,1,29,5,29,424, + 8,29,10,29,12,29,427,9,29,1,30,1,30,1,30,5,30,432,8,30,10,30,12,30,435, + 9,30,1,31,1,31,1,31,5,31,440,8,31,10,31,12,31,443,9,31,1,32,1,32,1,33,1, + 33,3,33,449,8,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34, + 1,34,1,34,5,34,464,8,34,10,34,12,34,467,9,34,1,34,1,34,1,34,1,34,1,34,1, + 34,5,34,475,8,34,10,34,12,34,478,9,34,1,34,1,34,1,34,1,34,1,34,1,34,5,34, + 486,8,34,10,34,12,34,489,9,34,1,34,1,34,3,34,493,8,34,1,35,1,35,3,35,497, + 8,35,1,36,1,36,3,36,501,8,36,1,37,1,37,1,37,1,38,1,38,1,38,1,38,5,38,510, + 8,38,10,38,12,38,513,9,38,1,39,1,39,3,39,517,8,39,1,39,1,39,3,39,521,8, + 39,1,40,1,40,1,40,1,41,1,41,1,41,1,42,1,42,1,42,1,42,5,42,533,8,42,10,42, + 12,42,536,9,42,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,3,44,546,8,44,1, + 45,1,45,1,45,1,45,1,46,1,46,1,46,1,47,1,47,1,47,5,47,558,8,47,10,47,12, + 47,561,9,47,1,48,1,48,1,48,1,48,1,49,1,49,1,50,1,50,3,50,571,8,50,1,51, + 3,51,574,8,51,1,51,1,51,1,52,3,52,579,8,52,1,52,1,52,1,53,1,53,1,54,1,54, + 1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,58,1,58,1,58,1,58,3, + 58,601,8,58,1,58,1,58,1,58,1,58,5,58,607,8,58,10,58,12,58,610,9,58,3,58, + 612,8,58,1,59,1,59,1,59,3,59,617,8,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60, + 1,61,1,61,1,61,1,61,3,61,630,8,61,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1, + 64,1,64,1,64,1,64,5,64,643,8,64,10,64,12,64,646,9,64,1,65,1,65,1,66,1,66, + 1,66,1,66,3,66,654,8,66,1,66,1,66,1,66,1,66,1,66,3,66,661,8,66,1,67,1,67, + 1,67,1,67,0,4,2,10,18,20,68,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30, + 32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78, + 80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120, + 122,124,126,128,130,132,134,0,9,1,0,65,66,1,0,67,69,2,0,31,31,84,84,1,0, + 75,76,2,0,36,36,41,41,2,0,44,44,47,47,2,0,43,43,57,57,2,0,58,58,60,64,2, + 0,17,17,24,25,693,0,136,1,0,0,0,2,139,1,0,0,0,4,156,1,0,0,0,6,179,1,0,0, + 0,8,181,1,0,0,0,10,213,1,0,0,0,12,240,1,0,0,0,14,242,1,0,0,0,16,255,1,0, + 0,0,18,261,1,0,0,0,20,282,1,0,0,0,22,292,1,0,0,0,24,311,1,0,0,0,26,313, + 1,0,0,0,28,324,1,0,0,0,30,328,1,0,0,0,32,330,1,0,0,0,34,333,1,0,0,0,36, + 344,1,0,0,0,38,348,1,0,0,0,40,363,1,0,0,0,42,367,1,0,0,0,44,369,1,0,0,0, + 46,371,1,0,0,0,48,380,1,0,0,0,50,396,1,0,0,0,52,399,1,0,0,0,54,407,1,0, + 0,0,56,415,1,0,0,0,58,420,1,0,0,0,60,428,1,0,0,0,62,436,1,0,0,0,64,444, + 1,0,0,0,66,448,1,0,0,0,68,492,1,0,0,0,70,496,1,0,0,0,72,500,1,0,0,0,74, + 502,1,0,0,0,76,505,1,0,0,0,78,514,1,0,0,0,80,522,1,0,0,0,82,525,1,0,0,0, + 84,528,1,0,0,0,86,537,1,0,0,0,88,541,1,0,0,0,90,547,1,0,0,0,92,551,1,0, + 0,0,94,554,1,0,0,0,96,562,1,0,0,0,98,566,1,0,0,0,100,570,1,0,0,0,102,573, + 1,0,0,0,104,578,1,0,0,0,106,582,1,0,0,0,108,584,1,0,0,0,110,586,1,0,0,0, + 112,589,1,0,0,0,114,593,1,0,0,0,116,596,1,0,0,0,118,616,1,0,0,0,120,620, + 1,0,0,0,122,625,1,0,0,0,124,631,1,0,0,0,126,636,1,0,0,0,128,638,1,0,0,0, + 130,647,1,0,0,0,132,649,1,0,0,0,134,662,1,0,0,0,136,137,3,2,1,0,137,138, + 5,0,0,1,138,1,1,0,0,0,139,140,6,1,-1,0,140,141,3,4,2,0,141,147,1,0,0,0, + 142,143,10,1,0,0,143,144,5,30,0,0,144,146,3,6,3,0,145,142,1,0,0,0,146,149, + 1,0,0,0,147,145,1,0,0,0,147,148,1,0,0,0,148,3,1,0,0,0,149,147,1,0,0,0,150, + 157,3,110,55,0,151,157,3,38,19,0,152,157,3,32,16,0,153,157,3,114,57,0,154, + 155,4,2,1,0,155,157,3,48,24,0,156,150,1,0,0,0,156,151,1,0,0,0,156,152,1, + 0,0,0,156,153,1,0,0,0,156,154,1,0,0,0,157,5,1,0,0,0,158,180,3,50,25,0,159, + 180,3,8,4,0,160,180,3,80,40,0,161,180,3,74,37,0,162,180,3,52,26,0,163,180, + 3,76,38,0,164,180,3,82,41,0,165,180,3,84,42,0,166,180,3,88,44,0,167,180, + 3,90,45,0,168,180,3,116,58,0,169,180,3,92,46,0,170,180,3,124,62,0,171,172, + 4,3,2,0,172,180,3,122,61,0,173,174,4,3,3,0,174,180,3,120,60,0,175,176,4, + 3,4,0,176,180,3,132,66,0,177,178,4,3,5,0,178,180,3,134,67,0,179,158,1,0, + 0,0,179,159,1,0,0,0,179,160,1,0,0,0,179,161,1,0,0,0,179,162,1,0,0,0,179, + 163,1,0,0,0,179,164,1,0,0,0,179,165,1,0,0,0,179,166,1,0,0,0,179,167,1,0, + 0,0,179,168,1,0,0,0,179,169,1,0,0,0,179,170,1,0,0,0,179,171,1,0,0,0,179, + 173,1,0,0,0,179,175,1,0,0,0,179,177,1,0,0,0,180,7,1,0,0,0,181,182,5,16, + 0,0,182,183,3,10,5,0,183,9,1,0,0,0,184,185,6,5,-1,0,185,186,5,50,0,0,186, + 214,3,10,5,8,187,214,3,16,8,0,188,214,3,12,6,0,189,191,3,16,8,0,190,192, + 5,50,0,0,191,190,1,0,0,0,191,192,1,0,0,0,192,193,1,0,0,0,193,194,5,45,0, + 0,194,195,5,49,0,0,195,200,3,16,8,0,196,197,5,40,0,0,197,199,3,16,8,0,198, + 196,1,0,0,0,199,202,1,0,0,0,200,198,1,0,0,0,200,201,1,0,0,0,201,203,1,0, + 0,0,202,200,1,0,0,0,203,204,5,56,0,0,204,214,1,0,0,0,205,206,3,16,8,0,206, + 208,5,46,0,0,207,209,5,50,0,0,208,207,1,0,0,0,208,209,1,0,0,0,209,210,1, + 0,0,0,210,211,5,51,0,0,211,214,1,0,0,0,212,214,3,14,7,0,213,184,1,0,0,0, + 213,187,1,0,0,0,213,188,1,0,0,0,213,189,1,0,0,0,213,205,1,0,0,0,213,212, + 1,0,0,0,214,223,1,0,0,0,215,216,10,5,0,0,216,217,5,35,0,0,217,222,3,10, + 5,6,218,219,10,4,0,0,219,220,5,53,0,0,220,222,3,10,5,5,221,215,1,0,0,0, + 221,218,1,0,0,0,222,225,1,0,0,0,223,221,1,0,0,0,223,224,1,0,0,0,224,11, + 1,0,0,0,225,223,1,0,0,0,226,228,3,16,8,0,227,229,5,50,0,0,228,227,1,0,0, + 0,228,229,1,0,0,0,229,230,1,0,0,0,230,231,5,48,0,0,231,232,3,106,53,0,232, + 241,1,0,0,0,233,235,3,16,8,0,234,236,5,50,0,0,235,234,1,0,0,0,235,236,1, + 0,0,0,236,237,1,0,0,0,237,238,5,55,0,0,238,239,3,106,53,0,239,241,1,0,0, + 0,240,226,1,0,0,0,240,233,1,0,0,0,241,13,1,0,0,0,242,245,3,58,29,0,243, + 244,5,38,0,0,244,246,3,30,15,0,245,243,1,0,0,0,245,246,1,0,0,0,246,247, + 1,0,0,0,247,248,5,39,0,0,248,249,3,68,34,0,249,15,1,0,0,0,250,256,3,18, + 9,0,251,252,3,18,9,0,252,253,3,108,54,0,253,254,3,18,9,0,254,256,1,0,0, + 0,255,250,1,0,0,0,255,251,1,0,0,0,256,17,1,0,0,0,257,258,6,9,-1,0,258,262, + 3,20,10,0,259,260,7,0,0,0,260,262,3,18,9,3,261,257,1,0,0,0,261,259,1,0, + 0,0,262,271,1,0,0,0,263,264,10,2,0,0,264,265,7,1,0,0,265,270,3,18,9,3,266, + 267,10,1,0,0,267,268,7,0,0,0,268,270,3,18,9,2,269,263,1,0,0,0,269,266,1, + 0,0,0,270,273,1,0,0,0,271,269,1,0,0,0,271,272,1,0,0,0,272,19,1,0,0,0,273, + 271,1,0,0,0,274,275,6,10,-1,0,275,283,3,68,34,0,276,283,3,58,29,0,277,283, + 3,22,11,0,278,279,5,49,0,0,279,280,3,10,5,0,280,281,5,56,0,0,281,283,1, + 0,0,0,282,274,1,0,0,0,282,276,1,0,0,0,282,277,1,0,0,0,282,278,1,0,0,0,283, + 289,1,0,0,0,284,285,10,1,0,0,285,286,5,38,0,0,286,288,3,30,15,0,287,284, + 1,0,0,0,288,291,1,0,0,0,289,287,1,0,0,0,289,290,1,0,0,0,290,21,1,0,0,0, + 291,289,1,0,0,0,292,293,3,24,12,0,293,307,5,49,0,0,294,308,5,67,0,0,295, + 300,3,10,5,0,296,297,5,40,0,0,297,299,3,10,5,0,298,296,1,0,0,0,299,302, + 1,0,0,0,300,298,1,0,0,0,300,301,1,0,0,0,301,305,1,0,0,0,302,300,1,0,0,0, + 303,304,5,40,0,0,304,306,3,26,13,0,305,303,1,0,0,0,305,306,1,0,0,0,306, + 308,1,0,0,0,307,294,1,0,0,0,307,295,1,0,0,0,307,308,1,0,0,0,308,309,1,0, + 0,0,309,310,5,56,0,0,310,23,1,0,0,0,311,312,3,72,36,0,312,25,1,0,0,0,313, + 314,5,70,0,0,314,319,3,28,14,0,315,316,5,40,0,0,316,318,3,28,14,0,317,315, + 1,0,0,0,318,321,1,0,0,0,319,317,1,0,0,0,319,320,1,0,0,0,320,322,1,0,0,0, + 321,319,1,0,0,0,322,323,5,71,0,0,323,27,1,0,0,0,324,325,3,106,53,0,325, + 326,5,39,0,0,326,327,3,68,34,0,327,29,1,0,0,0,328,329,3,64,32,0,329,31, + 1,0,0,0,330,331,5,12,0,0,331,332,3,34,17,0,332,33,1,0,0,0,333,338,3,36, + 18,0,334,335,5,40,0,0,335,337,3,36,18,0,336,334,1,0,0,0,337,340,1,0,0,0, + 338,336,1,0,0,0,338,339,1,0,0,0,339,35,1,0,0,0,340,338,1,0,0,0,341,342, + 3,58,29,0,342,343,5,37,0,0,343,345,1,0,0,0,344,341,1,0,0,0,344,345,1,0, + 0,0,345,346,1,0,0,0,346,347,3,10,5,0,347,37,1,0,0,0,348,349,5,6,0,0,349, + 354,3,40,20,0,350,351,5,40,0,0,351,353,3,40,20,0,352,350,1,0,0,0,353,356, + 1,0,0,0,354,352,1,0,0,0,354,355,1,0,0,0,355,358,1,0,0,0,356,354,1,0,0,0, + 357,359,3,46,23,0,358,357,1,0,0,0,358,359,1,0,0,0,359,39,1,0,0,0,360,361, + 3,42,21,0,361,362,5,39,0,0,362,364,1,0,0,0,363,360,1,0,0,0,363,364,1,0, + 0,0,364,365,1,0,0,0,365,366,3,44,22,0,366,41,1,0,0,0,367,368,7,2,0,0,368, + 43,1,0,0,0,369,370,7,2,0,0,370,45,1,0,0,0,371,372,5,83,0,0,372,377,5,84, + 0,0,373,374,5,40,0,0,374,376,5,84,0,0,375,373,1,0,0,0,376,379,1,0,0,0,377, + 375,1,0,0,0,377,378,1,0,0,0,378,47,1,0,0,0,379,377,1,0,0,0,380,381,5,22, + 0,0,381,386,3,40,20,0,382,383,5,40,0,0,383,385,3,40,20,0,384,382,1,0,0, + 0,385,388,1,0,0,0,386,384,1,0,0,0,386,387,1,0,0,0,387,390,1,0,0,0,388,386, + 1,0,0,0,389,391,3,54,27,0,390,389,1,0,0,0,390,391,1,0,0,0,391,394,1,0,0, + 0,392,393,5,34,0,0,393,395,3,34,17,0,394,392,1,0,0,0,394,395,1,0,0,0,395, + 49,1,0,0,0,396,397,5,4,0,0,397,398,3,34,17,0,398,51,1,0,0,0,399,401,5,15, + 0,0,400,402,3,54,27,0,401,400,1,0,0,0,401,402,1,0,0,0,402,405,1,0,0,0,403, + 404,5,34,0,0,404,406,3,34,17,0,405,403,1,0,0,0,405,406,1,0,0,0,406,53,1, + 0,0,0,407,412,3,56,28,0,408,409,5,40,0,0,409,411,3,56,28,0,410,408,1,0, + 0,0,411,414,1,0,0,0,412,410,1,0,0,0,412,413,1,0,0,0,413,55,1,0,0,0,414, + 412,1,0,0,0,415,418,3,36,18,0,416,417,5,16,0,0,417,419,3,10,5,0,418,416, + 1,0,0,0,418,419,1,0,0,0,419,57,1,0,0,0,420,425,3,72,36,0,421,422,5,42,0, + 0,422,424,3,72,36,0,423,421,1,0,0,0,424,427,1,0,0,0,425,423,1,0,0,0,425, + 426,1,0,0,0,426,59,1,0,0,0,427,425,1,0,0,0,428,433,3,66,33,0,429,430,5, + 42,0,0,430,432,3,66,33,0,431,429,1,0,0,0,432,435,1,0,0,0,433,431,1,0,0, + 0,433,434,1,0,0,0,434,61,1,0,0,0,435,433,1,0,0,0,436,441,3,60,30,0,437, + 438,5,40,0,0,438,440,3,60,30,0,439,437,1,0,0,0,440,443,1,0,0,0,441,439, + 1,0,0,0,441,442,1,0,0,0,442,63,1,0,0,0,443,441,1,0,0,0,444,445,7,3,0,0, + 445,65,1,0,0,0,446,449,5,88,0,0,447,449,3,70,35,0,448,446,1,0,0,0,448,447, + 1,0,0,0,449,67,1,0,0,0,450,493,5,51,0,0,451,452,3,104,52,0,452,453,5,75, + 0,0,453,493,1,0,0,0,454,493,3,102,51,0,455,493,3,104,52,0,456,493,3,98, + 49,0,457,493,3,70,35,0,458,493,3,106,53,0,459,460,5,73,0,0,460,465,3,100, + 50,0,461,462,5,40,0,0,462,464,3,100,50,0,463,461,1,0,0,0,464,467,1,0,0, + 0,465,463,1,0,0,0,465,466,1,0,0,0,466,468,1,0,0,0,467,465,1,0,0,0,468,469, + 5,74,0,0,469,493,1,0,0,0,470,471,5,73,0,0,471,476,3,98,49,0,472,473,5,40, + 0,0,473,475,3,98,49,0,474,472,1,0,0,0,475,478,1,0,0,0,476,474,1,0,0,0,476, + 477,1,0,0,0,477,479,1,0,0,0,478,476,1,0,0,0,479,480,5,74,0,0,480,493,1, + 0,0,0,481,482,5,73,0,0,482,487,3,106,53,0,483,484,5,40,0,0,484,486,3,106, + 53,0,485,483,1,0,0,0,486,489,1,0,0,0,487,485,1,0,0,0,487,488,1,0,0,0,488, + 490,1,0,0,0,489,487,1,0,0,0,490,491,5,74,0,0,491,493,1,0,0,0,492,450,1, + 0,0,0,492,451,1,0,0,0,492,454,1,0,0,0,492,455,1,0,0,0,492,456,1,0,0,0,492, + 457,1,0,0,0,492,458,1,0,0,0,492,459,1,0,0,0,492,470,1,0,0,0,492,481,1,0, + 0,0,493,69,1,0,0,0,494,497,5,54,0,0,495,497,5,72,0,0,496,494,1,0,0,0,496, + 495,1,0,0,0,497,71,1,0,0,0,498,501,3,64,32,0,499,501,3,70,35,0,500,498, + 1,0,0,0,500,499,1,0,0,0,501,73,1,0,0,0,502,503,5,9,0,0,503,504,5,32,0,0, + 504,75,1,0,0,0,505,506,5,14,0,0,506,511,3,78,39,0,507,508,5,40,0,0,508, + 510,3,78,39,0,509,507,1,0,0,0,510,513,1,0,0,0,511,509,1,0,0,0,511,512,1, + 0,0,0,512,77,1,0,0,0,513,511,1,0,0,0,514,516,3,10,5,0,515,517,7,4,0,0,516, + 515,1,0,0,0,516,517,1,0,0,0,517,520,1,0,0,0,518,519,5,52,0,0,519,521,7, + 5,0,0,520,518,1,0,0,0,520,521,1,0,0,0,521,79,1,0,0,0,522,523,5,8,0,0,523, + 524,3,62,31,0,524,81,1,0,0,0,525,526,5,2,0,0,526,527,3,62,31,0,527,83,1, + 0,0,0,528,529,5,11,0,0,529,534,3,86,43,0,530,531,5,40,0,0,531,533,3,86, + 43,0,532,530,1,0,0,0,533,536,1,0,0,0,534,532,1,0,0,0,534,535,1,0,0,0,535, + 85,1,0,0,0,536,534,1,0,0,0,537,538,3,60,30,0,538,539,5,92,0,0,539,540,3, + 60,30,0,540,87,1,0,0,0,541,542,5,1,0,0,542,543,3,20,10,0,543,545,3,106, + 53,0,544,546,3,94,47,0,545,544,1,0,0,0,545,546,1,0,0,0,546,89,1,0,0,0,547, + 548,5,7,0,0,548,549,3,20,10,0,549,550,3,106,53,0,550,91,1,0,0,0,551,552, + 5,10,0,0,552,553,3,58,29,0,553,93,1,0,0,0,554,559,3,96,48,0,555,556,5,40, + 0,0,556,558,3,96,48,0,557,555,1,0,0,0,558,561,1,0,0,0,559,557,1,0,0,0,559, + 560,1,0,0,0,560,95,1,0,0,0,561,559,1,0,0,0,562,563,3,64,32,0,563,564,5, + 37,0,0,564,565,3,68,34,0,565,97,1,0,0,0,566,567,7,6,0,0,567,99,1,0,0,0, + 568,571,3,102,51,0,569,571,3,104,52,0,570,568,1,0,0,0,570,569,1,0,0,0,571, + 101,1,0,0,0,572,574,7,0,0,0,573,572,1,0,0,0,573,574,1,0,0,0,574,575,1,0, + 0,0,575,576,5,33,0,0,576,103,1,0,0,0,577,579,7,0,0,0,578,577,1,0,0,0,578, + 579,1,0,0,0,579,580,1,0,0,0,580,581,5,32,0,0,581,105,1,0,0,0,582,583,5, + 31,0,0,583,107,1,0,0,0,584,585,7,7,0,0,585,109,1,0,0,0,586,587,5,5,0,0, + 587,588,3,112,56,0,588,111,1,0,0,0,589,590,5,73,0,0,590,591,3,2,1,0,591, + 592,5,74,0,0,592,113,1,0,0,0,593,594,5,13,0,0,594,595,5,108,0,0,595,115, + 1,0,0,0,596,597,5,3,0,0,597,600,5,98,0,0,598,599,5,96,0,0,599,601,3,60, + 30,0,600,598,1,0,0,0,600,601,1,0,0,0,601,611,1,0,0,0,602,603,5,97,0,0,603, + 608,3,118,59,0,604,605,5,40,0,0,605,607,3,118,59,0,606,604,1,0,0,0,607, + 610,1,0,0,0,608,606,1,0,0,0,608,609,1,0,0,0,609,612,1,0,0,0,610,608,1,0, + 0,0,611,602,1,0,0,0,611,612,1,0,0,0,612,117,1,0,0,0,613,614,3,60,30,0,614, + 615,5,37,0,0,615,617,1,0,0,0,616,613,1,0,0,0,616,617,1,0,0,0,617,618,1, + 0,0,0,618,619,3,60,30,0,619,119,1,0,0,0,620,621,5,21,0,0,621,622,3,40,20, + 0,622,623,5,96,0,0,623,624,3,62,31,0,624,121,1,0,0,0,625,626,5,19,0,0,626, + 629,3,54,27,0,627,628,5,34,0,0,628,630,3,34,17,0,629,627,1,0,0,0,629,630, + 1,0,0,0,630,123,1,0,0,0,631,632,7,8,0,0,632,633,5,122,0,0,633,634,3,126, + 63,0,634,635,3,128,64,0,635,125,1,0,0,0,636,637,3,40,20,0,637,127,1,0,0, + 0,638,639,5,96,0,0,639,644,3,130,65,0,640,641,5,40,0,0,641,643,3,130,65, + 0,642,640,1,0,0,0,643,646,1,0,0,0,644,642,1,0,0,0,644,645,1,0,0,0,645,129, + 1,0,0,0,646,644,1,0,0,0,647,648,3,16,8,0,648,131,1,0,0,0,649,650,5,18,0, + 0,650,653,3,58,29,0,651,652,5,96,0,0,652,654,3,58,29,0,653,651,1,0,0,0, + 653,654,1,0,0,0,654,660,1,0,0,0,655,656,5,92,0,0,656,657,3,58,29,0,657, + 658,5,40,0,0,658,659,3,58,29,0,659,661,1,0,0,0,660,655,1,0,0,0,660,661, + 1,0,0,0,661,133,1,0,0,0,662,663,5,20,0,0,663,664,3,62,31,0,664,135,1,0, + 0,0,63,147,156,179,191,200,208,213,221,223,228,235,240,245,255,261,269, + 271,282,289,300,305,307,319,338,344,354,358,363,377,386,390,394,401,405, + 412,418,425,433,441,448,465,476,487,492,496,500,511,516,520,534,545,559, + 570,573,578,600,608,611,616,629,644,653,660]; private static __ATN: ATN; public static get _ATN(): ATN { @@ -4063,6 +4199,12 @@ export class ProcessingCommandContext extends ParserRuleContext { public lookupCommand(): LookupCommandContext { return this.getTypedRuleContext(LookupCommandContext, 0) as LookupCommandContext; } + public changePointCommand(): ChangePointCommandContext { + return this.getTypedRuleContext(ChangePointCommandContext, 0) as ChangePointCommandContext; + } + public insistCommand(): InsistCommandContext { + return this.getTypedRuleContext(InsistCommandContext, 0) as InsistCommandContext; + } public get ruleIndex(): number { return esql_parser.RULE_processingCommand; } @@ -6660,3 +6802,73 @@ export class JoinPredicateContext extends ParserRuleContext { } } } + + +export class ChangePointCommandContext extends ParserRuleContext { + public _value!: QualifiedNameContext; + public _key!: QualifiedNameContext; + public _targetType!: QualifiedNameContext; + public _targetPvalue!: QualifiedNameContext; + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public DEV_CHANGE_POINT(): TerminalNode { + return this.getToken(esql_parser.DEV_CHANGE_POINT, 0); + } + public qualifiedName_list(): QualifiedNameContext[] { + return this.getTypedRuleContexts(QualifiedNameContext) as QualifiedNameContext[]; + } + public qualifiedName(i: number): QualifiedNameContext { + return this.getTypedRuleContext(QualifiedNameContext, i) as QualifiedNameContext; + } + public ON(): TerminalNode { + return this.getToken(esql_parser.ON, 0); + } + public AS(): TerminalNode { + return this.getToken(esql_parser.AS, 0); + } + public COMMA(): TerminalNode { + return this.getToken(esql_parser.COMMA, 0); + } + public get ruleIndex(): number { + return esql_parser.RULE_changePointCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterChangePointCommand) { + listener.enterChangePointCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitChangePointCommand) { + listener.exitChangePointCommand(this); + } + } +} + + +export class InsistCommandContext extends ParserRuleContext { + constructor(parser?: esql_parser, parent?: ParserRuleContext, invokingState?: number) { + super(parent, invokingState); + this.parser = parser; + } + public DEV_INSIST(): TerminalNode { + return this.getToken(esql_parser.DEV_INSIST, 0); + } + public qualifiedNamePatterns(): QualifiedNamePatternsContext { + return this.getTypedRuleContext(QualifiedNamePatternsContext, 0) as QualifiedNamePatternsContext; + } + public get ruleIndex(): number { + return esql_parser.RULE_insistCommand; + } + public enterRule(listener: esql_parserListener): void { + if(listener.enterInsistCommand) { + listener.enterInsistCommand(this); + } + } + public exitRule(listener: esql_parserListener): void { + if(listener.exitInsistCommand) { + listener.exitInsistCommand(this); + } + } +} diff --git a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser_listener.ts b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser_listener.ts index 6b94cdd8ac0c8..f93d8d7dbb2bb 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser_listener.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/antlr/esql_parser_listener.ts @@ -102,6 +102,8 @@ import { JoinCommandContext } from "./esql_parser.js"; import { JoinTargetContext } from "./esql_parser.js"; import { JoinConditionContext } from "./esql_parser.js"; import { JoinPredicateContext } from "./esql_parser.js"; +import { ChangePointCommandContext } from "./esql_parser.js"; +import { InsistCommandContext } from "./esql_parser.js"; /** @@ -1075,5 +1077,25 @@ export default class esql_parserListener extends ParseTreeListener { * @param ctx the parse tree */ exitJoinPredicate?: (ctx: JoinPredicateContext) => void; + /** + * Enter a parse tree produced by `esql_parser.changePointCommand`. + * @param ctx the parse tree + */ + enterChangePointCommand?: (ctx: ChangePointCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.changePointCommand`. + * @param ctx the parse tree + */ + exitChangePointCommand?: (ctx: ChangePointCommandContext) => void; + /** + * Enter a parse tree produced by `esql_parser.insistCommand`. + * @param ctx the parse tree + */ + enterInsistCommand?: (ctx: InsistCommandContext) => void; + /** + * Exit a parse tree produced by `esql_parser.insistCommand`. + * @param ctx the parse tree + */ + exitInsistCommand?: (ctx: InsistCommandContext) => void; } diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_theme.test.ts b/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_theme.test.ts index ffe77a7a18c26..d7c31b2012abf 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_theme.test.ts +++ b/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_theme.test.ts @@ -103,6 +103,8 @@ describe('ESQL Theme', () => { 'metrics_ws', 'closing_metrics_ws', 'join_ws', + 'change_point_ws', + 'insist_ws', ]; // First, check that every valid exception is actually valid diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_theme.ts b/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_theme.ts index aebe61ba92904..e128018a4524f 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_theme.ts +++ b/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_theme.ts @@ -86,6 +86,8 @@ export const buildESQLTheme = ({ 'nulls_order', 'join_lookup', 'join', + 'dev_change_point', + 'dev_insist', ], euiTheme.colors.accent, true // isBold @@ -154,6 +156,10 @@ export const buildESQLTheme = ({ 'metrics_multiline_comment', 'closing_metrics_line_comment', 'closing_metrics_multiline_comment', + 'change_point_line_comment', + 'change_point_multiline_comment', + 'insist_line_comment', + 'insist_multiline_comment', ], euiTheme.colors.textSubdued ), From 0ae28aa8bc73ce682166ffd5666828b1fdb7c017 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arturo=20Lidue=C3=B1a?= Date: Mon, 17 Feb 2025 11:12:56 +0100 Subject: [PATCH 18/78] [Obs Ai Assistant] Add system message (#209773) Fix: System Message Missing in Inference Plugin Closes #209548 ## Summary A regression was introduced in 8.18 ([#199286](https://github.com/elastic/kibana/pull/199286)), where the system message is no longer passed to the inference plugin and, consequently, the LLM. Currently, only user messages are being sent, which impacts conversation guidance and guardrails. The system message is crucial for steering responses and maintaining contextual integrity. The filtering of the system message happens here: https://github.com/elastic/kibana/blob/771a080ffa99e501e72c9cb98c833795769483ae/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts#L510-L512 Fix Approach - Ensure the `system` message is included as a parameter in `inferenceClient.chatComplete.` ```typescript const options = { connectorId, system, messages: convertMessagesForInference(messages), toolChoice, tools, functionCalling: (simulateFunctionCalling ? 'simulated' : 'native') as FunctionCallingMode, }; if (stream) { return defer(() => this.dependencies.inferenceClient.chatComplete({ ...options, stream: true, }) ).pipe( convertInferenceEventsToStreamingEvents(), instrumentAndCountTokens(name), failOnNonExistingFunctionCall({ functions }), tap((event) => { if ( event.type === StreamingChatResponseEventType.ChatCompletionChunk && this.dependencies.logger.isLevelEnabled('trace') ) { this.dependencies.logger.trace(`Received chunk: ${JSON.stringify(event.message)}`); } }), shareReplay() ) as TStream extends true ? Observable : never; } else { return this.dependencies.inferenceClient.chatComplete({ ...options, stream: false, }) as TStream extends true ? never : Promise; } } ``` - Add an API test to verify that the system message is correctly passed to the LLM. --- .../kbn-ai-assistant/src/chat/chat_body.tsx | 2 +- .../src/chat/chat_item_avatar.tsx | 5 +- .../src/hooks/use_conversation.test.tsx | 58 +--- .../kbn-ai-assistant/src/utils/builders.ts | 16 +- .../src/utils/create_mock_chat_service.ts | 9 +- .../src/utils/get_role_translation.ts | 6 - ..._timeline_items_from_conversation.test.tsx | 51 +--- .../get_timeline_items_from_conversation.tsx | 12 +- .../translations/translations/fr-FR.json | 1 - .../translations/translations/ja-JP.json | 1 - .../translations/translations/zh-CN.json | 1 - .../common/types.ts | 1 + .../public/analytics/schemas/chat_feedback.ts | 2 +- .../public/hooks/use_chat.test.ts | 27 +- .../public/hooks/use_chat.ts | 14 +- .../public/mock.tsx | 10 +- .../public/service/complete.test.ts | 9 +- .../service/create_chat_service.test.ts | 1 + .../public/service/create_chat_service.ts | 22 +- .../service/create_mock_chat_service.ts | 10 +- .../public/storybook_mock.tsx | 10 +- .../public/types.ts | 4 +- .../get_relevant_field_names.ts | 14 +- .../server/routes/chat/route.ts | 4 +- .../server/routes/conversations/route.ts | 26 +- .../server/routes/runtime_types.ts | 35 ++- .../server/service/client/index.test.ts | 80 ++--- .../server/service/client/index.ts | 280 ++++++++---------- .../client/operators/continue_conversation.ts | 23 +- .../operators/get_generated_title.test.ts | 5 +- .../client/operators/get_generated_title.ts | 17 +- .../service/util/replace_system_message.ts | 21 -- .../scripts/evaluation/kibana_client.ts | 19 +- .../server/rule_connector/index.test.ts | 7 - .../server/rule_connector/index.ts | 13 - .../ai_assistant/chat/chat.spec.ts | 10 +- .../ai_assistant/complete/complete.spec.ts | 7 - .../conversations/conversations.spec.ts | 2 + .../knowledge_base_user_instructions.spec.ts | 19 +- .../public_complete/public_complete.spec.ts | 7 - .../tests/conversations/index.spec.ts | 30 +- 41 files changed, 282 insertions(+), 609 deletions(-) delete mode 100644 x-pack/platform/plugins/shared/observability_ai_assistant/server/service/util/replace_system_message.ts diff --git a/x-pack/platform/packages/shared/kbn-ai-assistant/src/chat/chat_body.tsx b/x-pack/platform/packages/shared/kbn-ai-assistant/src/chat/chat_body.tsx index 143cd3367a804..fa75e2dc475d8 100644 --- a/x-pack/platform/packages/shared/kbn-ai-assistant/src/chat/chat_body.tsx +++ b/x-pack/platform/packages/shared/kbn-ai-assistant/src/chat/chat_body.tsx @@ -374,7 +374,7 @@ export function ChatBody({ paddingSize="m" className={animClassName(euiTheme)} > - {connectors.connectors?.length === 0 || messages.length === 1 ? ( + {connectors.connectors?.length === 0 || messages.length === 0 ? ( ; - case MessageRole.System: - return ; - default: return null; } diff --git a/x-pack/platform/packages/shared/kbn-ai-assistant/src/hooks/use_conversation.test.tsx b/x-pack/platform/packages/shared/kbn-ai-assistant/src/hooks/use_conversation.test.tsx index 196553ce55066..ac65d22eff6eb 100644 --- a/x-pack/platform/packages/shared/kbn-ai-assistant/src/hooks/use_conversation.test.tsx +++ b/x-pack/platform/packages/shared/kbn-ai-assistant/src/hooks/use_conversation.test.tsx @@ -116,16 +116,8 @@ describe('useConversation', () => { }); }); - it('returns only the system message', () => { - expect(hookResult.result.current.messages).toEqual([ - { - '@timestamp': expect.any(String), - message: { - content: '', - role: MessageRole.System, - }, - }, - ]); + it('returns empty messages', () => { + expect(hookResult.result.current.messages).toEqual([]); }); it('returns a ready state', () => { @@ -157,15 +149,8 @@ describe('useConversation', () => { }); }); - it('returns the system message and the initial messages', () => { + it('returns the initial messages', () => { expect(hookResult.result.current.messages).toEqual([ - { - '@timestamp': expect.any(String), - message: { - content: '', - role: MessageRole.System, - }, - }, { '@timestamp': expect.any(String), message: { @@ -183,14 +168,8 @@ describe('useConversation', () => { conversation: { id: 'my-conversation-id', }, + systemMessage: 'System', messages: [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: 'System', - }, - }, { '@timestamp': new Date().toISOString(), message: { @@ -218,14 +197,8 @@ describe('useConversation', () => { conversation: { id: 'my-conversation-id', }, + systemMessage: 'System', messages: [ - { - '@timestamp': expect.any(String), - message: { - content: 'System', - role: MessageRole.System, - }, - }, { '@timestamp': expect.any(String), message: { @@ -239,13 +212,6 @@ describe('useConversation', () => { it('sets messages to the messages of the conversation', () => { expect(hookResult.result.current.messages).toEqual([ - { - '@timestamp': expect.any(String), - message: { - content: expect.any(String), - role: MessageRole.System, - }, - }, { '@timestamp': expect.any(String), message: { @@ -255,10 +221,6 @@ describe('useConversation', () => { }, ]); }); - - it('overrides the system message', () => { - expect(hookResult.result.current.messages[0].message.content).toBe(''); - }); }); describe('with a conversation id that fails to load', () => { @@ -282,7 +244,7 @@ describe('useConversation', () => { }); it('resets the messages', () => { - expect(hookResult.result.current.messages.length).toBe(1); + expect(hookResult.result.current.messages.length).toBe(0); }); }); @@ -290,13 +252,6 @@ describe('useConversation', () => { const subject: Subject = new Subject(); let onConversationUpdate: jest.Mock; const expectedMessages = [ - { - '@timestamp': expect.any(String), - message: { - role: MessageRole.System, - content: '', - }, - }, { '@timestamp': expect.any(String), message: { @@ -333,6 +288,7 @@ describe('useConversation', () => { conversation: { id: 'my-conversation-id', }, + systemMessage: '', messages: expectedMessages, }, (request as any).params.body diff --git a/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/builders.ts b/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/builders.ts index 0f614f37642f1..219d243b98993 100644 --- a/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/builders.ts +++ b/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/builders.ts @@ -32,19 +32,6 @@ export function buildMessage(params: BuildMessageProps): Message { ); } -export function buildSystemMessage( - params?: Omit & { - message: DeepPartial>; - } -) { - return buildMessage( - // @ts-expect-error upgrade typescript v5.1.6 - merge({}, params, { - message: { role: MessageRole.System }, - }) - ); -} - export function buildUserMessage( params?: Omit & { message?: DeepPartial>; @@ -117,7 +104,8 @@ export function buildConversation(params?: Partial): Conversation title: '', last_updated: '', }, - messages: [buildSystemMessage()], + systemMessage: '', + messages: [], labels: {}, numeric_labels: {}, namespace: '', diff --git a/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/create_mock_chat_service.ts b/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/create_mock_chat_service.ts index 7913b3ce78957..2256c8ad14944 100644 --- a/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/create_mock_chat_service.ts +++ b/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/create_mock_chat_service.ts @@ -8,7 +8,6 @@ import type { DeeplyMockedKeys } from '@kbn/utility-types-jest'; import { FunctionDefinition, - MessageRole, ObservabilityAIAssistantChatService, } from '@kbn/observability-ai-assistant-plugin/public'; import { BehaviorSubject } from 'rxjs'; @@ -25,13 +24,7 @@ export const createMockChatService = (): MockedChatService => { hasFunction: jest.fn().mockReturnValue(false), hasRenderFunction: jest.fn().mockReturnValue(true), renderFunction: jest.fn(), - getSystemMessage: jest.fn().mockReturnValue({ - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: '', - }, - }), + getSystemMessage: jest.fn().mockReturnValue('system message'), getScopes: jest.fn(), }; return mockChatService; diff --git a/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/get_role_translation.ts b/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/get_role_translation.ts index 95421a089dea0..6e07ae9224091 100644 --- a/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/get_role_translation.ts +++ b/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/get_role_translation.ts @@ -15,12 +15,6 @@ export function getRoleTranslation(role: MessageRole) { }); } - if (role === MessageRole.System) { - return i18n.translate('xpack.aiAssistant.chatTimeline.messages.system.label', { - defaultMessage: 'System', - }); - } - return i18n.translate('xpack.aiAssistant.chatTimeline.messages.elasticAssistant.label', { defaultMessage: 'Elastic Assistant', }); diff --git a/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/get_timeline_items_from_conversation.test.tsx b/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/get_timeline_items_from_conversation.test.tsx index 7dcf9cadb6bbf..5f43204cbb398 100644 --- a/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/get_timeline_items_from_conversation.test.tsx +++ b/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/get_timeline_items_from_conversation.test.tsx @@ -59,13 +59,6 @@ describe('getTimelineItemsFromConversation', () => { }, chatState: ChatState.Ready, messages: [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: 'System', - }, - }, { '@timestamp': new Date().toISOString(), message: { @@ -77,7 +70,7 @@ describe('getTimelineItemsFromConversation', () => { onActionClick: jest.fn(), }); }); - it('excludes the system message', () => { + it('includes the opening message and the user message', () => { expect(items.length).toBe(2); expect(items[0].title).toBe('started a conversation'); }); @@ -113,13 +106,6 @@ describe('getTimelineItemsFromConversation', () => { hasConnector: true, chatState: ChatState.Ready, messages: [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: 'System', - }, - }, { '@timestamp': new Date().toISOString(), message: { @@ -204,13 +190,6 @@ describe('getTimelineItemsFromConversation', () => { hasConnector: true, chatState: ChatState.Ready, messages: [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: 'System', - }, - }, { '@timestamp': new Date().toISOString(), message: { @@ -282,13 +261,6 @@ describe('getTimelineItemsFromConversation', () => { hasConnector: true, chatState: ChatState.Ready, messages: [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: 'System', - }, - }, { '@timestamp': new Date().toISOString(), message: { @@ -364,13 +336,6 @@ describe('getTimelineItemsFromConversation', () => { }, chatState: ChatState.Ready, messages: [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: 'System', - }, - }, { '@timestamp': new Date().toISOString(), message: { @@ -415,13 +380,6 @@ describe('getTimelineItemsFromConversation', () => { hasConnector: true, chatState: ChatState.Ready, messages: [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: 'System', - }, - }, { '@timestamp': new Date().toISOString(), message: { @@ -491,13 +449,6 @@ describe('getTimelineItemsFromConversation', () => { hasConnector: true, chatState: ChatState.Loading, messages: [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: 'System', - }, - }, { '@timestamp': new Date().toISOString(), message: { diff --git a/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/get_timeline_items_from_conversation.tsx b/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/get_timeline_items_from_conversation.tsx index 5160e8b636b6c..dcd1242ee535b 100644 --- a/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/get_timeline_items_from_conversation.tsx +++ b/x-pack/platform/packages/shared/kbn-ai-assistant/src/utils/get_timeline_items_from_conversation.tsx @@ -80,10 +80,6 @@ export function getTimelineItemsfromConversation({ payload: ChatActionClickPayload; }) => void; }): ChatTimelineItem[] { - const messagesWithoutSystem = messages.filter( - (message) => message.message.role !== MessageRole.System - ); - const items: ChatTimelineItem[] = [ { id: v4(), @@ -100,7 +96,7 @@ export function getTimelineItemsfromConversation({ }), role: MessageRole.User, }, - ...messagesWithoutSystem.map((message, index) => { + ...messages.map((message, index) => { const id = v4(); let title: React.ReactNode = ''; @@ -108,10 +104,8 @@ export function getTimelineItemsfromConversation({ let element: React.ReactNode | undefined; const prevFunctionCall = - message.message.name && - messagesWithoutSystem[index - 1] && - messagesWithoutSystem[index - 1].message.function_call - ? messagesWithoutSystem[index - 1].message.function_call + message.message.name && messages[index - 1] && messages[index - 1].message.function_call + ? messages[index - 1].message.function_call : undefined; let role = message.message.function_call?.trigger || message.message.role; diff --git a/x-pack/platform/plugins/private/translations/translations/fr-FR.json b/x-pack/platform/plugins/private/translations/translations/fr-FR.json index 51cbead1f0558..c010294c57fbe 100644 --- a/x-pack/platform/plugins/private/translations/translations/fr-FR.json +++ b/x-pack/platform/plugins/private/translations/translations/fr-FR.json @@ -9747,7 +9747,6 @@ "xpack.aiAssistant.chatTimeline.actions.editPrompt": "Modifier l'invite", "xpack.aiAssistant.chatTimeline.actions.inspectPrompt": "Inspecter l'invite", "xpack.aiAssistant.chatTimeline.messages.elasticAssistant.label": "Assistant d'Elastic", - "xpack.aiAssistant.chatTimeline.messages.system.label": "Système", "xpack.aiAssistant.chatTimeline.messages.user.label": "Vous", "xpack.aiAssistant.checkingKbAvailability": "Vérification de la disponibilité de la base de connaissances", "xpack.aiAssistant.conversationList.dateGroupTitle.lastMonth": "Le mois dernier", diff --git a/x-pack/platform/plugins/private/translations/translations/ja-JP.json b/x-pack/platform/plugins/private/translations/translations/ja-JP.json index 755d1730a1647..5aa19fa1d5d78 100644 --- a/x-pack/platform/plugins/private/translations/translations/ja-JP.json +++ b/x-pack/platform/plugins/private/translations/translations/ja-JP.json @@ -9623,7 +9623,6 @@ "xpack.aiAssistant.chatTimeline.actions.editPrompt": "プロンプトを編集", "xpack.aiAssistant.chatTimeline.actions.inspectPrompt": "プロンプトを検査", "xpack.aiAssistant.chatTimeline.messages.elasticAssistant.label": "Elastic Assistant", - "xpack.aiAssistant.chatTimeline.messages.system.label": "システム", "xpack.aiAssistant.chatTimeline.messages.user.label": "あなた", "xpack.aiAssistant.checkingKbAvailability": "ナレッジベースの利用可能性を確認中", "xpack.aiAssistant.conversationList.dateGroupTitle.lastMonth": "先月", diff --git a/x-pack/platform/plugins/private/translations/translations/zh-CN.json b/x-pack/platform/plugins/private/translations/translations/zh-CN.json index b4549821e6d10..e8291424d5f92 100644 --- a/x-pack/platform/plugins/private/translations/translations/zh-CN.json +++ b/x-pack/platform/plugins/private/translations/translations/zh-CN.json @@ -9469,7 +9469,6 @@ "xpack.aiAssistant.chatTimeline.actions.editPrompt": "编辑提示", "xpack.aiAssistant.chatTimeline.actions.inspectPrompt": "检查提示", "xpack.aiAssistant.chatTimeline.messages.elasticAssistant.label": "Elastic 助手", - "xpack.aiAssistant.chatTimeline.messages.system.label": "系统", "xpack.aiAssistant.chatTimeline.messages.user.label": "您", "xpack.aiAssistant.checkingKbAvailability": "正在检查知识库的可用性", "xpack.aiAssistant.conversationList.dateGroupTitle.lastMonth": "上月", diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/common/types.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/common/types.ts index 210eb08b31e1a..e0f353b252564 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/common/types.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/common/types.ts @@ -63,6 +63,7 @@ export interface Conversation { last_updated: string; token_count?: TokenCount; }; + systemMessage?: string; messages: Message[]; labels: Record; numeric_labels: Record; diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/public/analytics/schemas/chat_feedback.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/public/analytics/schemas/chat_feedback.ts index 7fab15137d933..e737d534f3367 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/public/analytics/schemas/chat_feedback.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/public/analytics/schemas/chat_feedback.ts @@ -12,7 +12,7 @@ import { ObservabilityAIAssistantTelemetryEventType } from '../telemetry_event_t export interface ChatFeedback { feedback: Feedback; - conversation: Omit, 'conversation'> & { + conversation: Omit, 'conversation'> & { conversation: Omit; }; } diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/public/hooks/use_chat.test.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/public/hooks/use_chat.test.ts index 64fcdda7612ae..d760e2dc996ba 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/public/hooks/use_chat.test.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/public/hooks/use_chat.test.ts @@ -32,13 +32,7 @@ const mockChatService: MockedChatService = { hasFunction: jest.fn().mockReturnValue(false), hasRenderFunction: jest.fn().mockReturnValue(true), renderFunction: jest.fn(), - getSystemMessage: jest.fn().mockReturnValue({ - '@timestamp': new Date().toISOString(), - message: { - content: 'system', - role: MessageRole.System, - }, - }), + getSystemMessage: jest.fn().mockReturnValue('system'), getScopes: jest.fn(), }; @@ -88,11 +82,11 @@ describe('useChat', () => { }); }); - it('returns the initial messages including the system message', () => { + it('returns the initial messages', () => { const { messages } = hookResult.result.current; - expect(messages.length).toBe(2); - expect(messages[0].message.role).toBe('system'); - expect(messages[1].message.content).toBe('hello'); + expect(messages.length).toBe(1); + expect(messages[0].message.role).toBe(MessageRole.User); + expect(messages[0].message.content).toBe('hello'); }); it('sets chatState to ready', () => { @@ -166,8 +160,7 @@ describe('useChat', () => { }); it('shows an empty list of messages', () => { - expect(hookResult.result.current.messages.length).toBe(1); - expect(hookResult.result.current.messages[0].message.role).toBe(MessageRole.System); + expect(hookResult.result.current.messages.length).toBe(0); }); it('aborts the running request', () => { @@ -187,7 +180,7 @@ describe('useChat', () => { }); }); - expect(hookResult.result.current.messages[2].message.content).toBe('good'); + expect(hookResult.result.current.messages[1].message.content).toBe('good'); }); }); @@ -222,7 +215,7 @@ describe('useChat', () => { subject.complete(); }); - expect(hookResult.result.current.messages[2].message.content).toBe('goodbye'); + expect(hookResult.result.current.messages[1].message.content).toBe('goodbye'); expect(hookResult.result.current.state).toBe(ChatState.Ready); }); }); @@ -242,7 +235,7 @@ describe('useChat', () => { }); it('shows the partial message and sets chatState to aborted', () => { - expect(hookResult.result.current.messages[2].message.content).toBe('good'); + expect(hookResult.result.current.messages[1].message.content).toBe('good'); expect(hookResult.result.current.state).toBe(ChatState.Aborted); }); @@ -285,7 +278,7 @@ describe('useChat', () => { }); it('shows the partial message and sets chatState to error', () => { - expect(hookResult.result.current.messages[2].message.content).toBe('good'); + expect(hookResult.result.current.messages[1].message.content).toBe('good'); expect(hookResult.result.current.state).toBe(ChatState.Error); }); diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/public/hooks/use_chat.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/public/hooks/use_chat.ts index 86aeb8f519e87..f05ea83a4894b 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/public/hooks/use_chat.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/public/hooks/use_chat.ts @@ -30,13 +30,6 @@ export enum ChatState { Aborted = 'aborted', } -function getWithSystemMessage(messages: Message[], systemMessage: Message) { - return [ - systemMessage, - ...messages.filter((message) => message.message.role !== MessageRole.System), - ]; -} - export interface UseChatResult { messages: Message[]; setMessages: (messages: Message[]) => void; @@ -160,7 +153,8 @@ function useChatWithoutContext({ const next$ = chatService.complete({ getScreenContexts: () => service.getScreenContexts(), connectorId, - messages: getWithSystemMessage(nextMessages, systemMessage), + messages: nextMessages, + systemMessage, persist, disableFunctions: disableFunctions ?? false, signal: abortControllerRef.current.signal, @@ -275,8 +269,8 @@ function useChatWithoutContext({ }, []); const memoizedMessages = useMemo(() => { - return getWithSystemMessage(messages.concat(pendingMessages ?? []), systemMessage); - }, [systemMessage, messages, pendingMessages]); + return messages.concat(pendingMessages ?? []); + }, [messages, pendingMessages]); const setMessagesWithAbort = useCallback((nextMessages: Message[]) => { abortControllerRef.current.abort(); diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/public/mock.tsx b/x-pack/platform/plugins/shared/observability_ai_assistant/public/mock.tsx index 7be61a65e263d..b71e74b1aa1fa 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/public/mock.tsx +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/public/mock.tsx @@ -13,7 +13,7 @@ import type { ChatCompletionChunkEvent, StreamingChatResponseEventWithoutError, } from '../common/conversation_complete'; -import { MessageRole, ScreenContextActionDefinition } from '../common/types'; +import { ScreenContextActionDefinition } from '../common/types'; import type { ObservabilityAIAssistantAPIClient } from './api'; import type { ObservabilityAIAssistantChatService, @@ -40,13 +40,7 @@ export const mockChatService: ObservabilityAIAssistantChatService = { ), hasFunction: () => true, hasRenderFunction: () => true, - getSystemMessage: () => ({ - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: 'System', - }, - }), + getSystemMessage: () => 'System', getScopes: jest.fn(), }; diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/public/service/complete.test.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/public/service/complete.test.ts index dd69c8e309989..b9d2d66d34b38 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/public/service/complete.test.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/public/service/complete.test.ts @@ -28,14 +28,8 @@ const client = { const connectorId = 'foo'; +const systemMessage = 'System message'; const messages: Message[] = [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: 'System message', - }, - }, { '@timestamp': new Date().toISOString(), message: { @@ -97,6 +91,7 @@ describe('complete', () => { client, connectorId, getScreenContexts: () => [], + systemMessage, messages, persist: false, disableFunctions: false, diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/public/service/create_chat_service.test.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/public/service/create_chat_service.test.ts index f059196f2e681..27e4c747b9df6 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/public/service/create_chat_service.test.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/public/service/create_chat_service.test.ts @@ -83,6 +83,7 @@ describe('createChatService', () => { function chat({ signal }: { signal: AbortSignal } = { signal: new AbortController().signal }) { return service.chat('my_test', { signal, + systemMessage: 'system', messages: [], connectorId: '', scopes: ['observability'], diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/public/service/create_chat_service.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/public/service/create_chat_service.ts index e3ccb38319896..a9e268ffbecd0 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/public/service/create_chat_service.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/public/service/create_chat_service.ts @@ -25,7 +25,7 @@ import { } from 'rxjs'; import { BehaviorSubject } from 'rxjs'; import type { AssistantScope } from '@kbn/ai-assistant-common'; -import { ChatCompletionChunkEvent, Message, MessageRole } from '../../common'; +import { ChatCompletionChunkEvent } from '../../common'; import { StreamingChatResponseEventType, type BufferFlushEvent, @@ -186,7 +186,6 @@ class ChatService { async initialize() { this.functionRegistry = new Map(); - const systemMessages: string[] = []; const scopePromise = this.apiClient('GET /internal/observability_ai_assistant/functions', { signal: this.abortSignal, params: { @@ -196,7 +195,7 @@ class ChatService { }, }).then(({ functionDefinitions, systemMessage }) => { functionDefinitions.forEach((fn) => this.functionRegistry.set(fn.name, fn)); - systemMessages.push(systemMessage); + this.systemMessage = systemMessage; }); await Promise.all([ @@ -210,8 +209,6 @@ class ChatService { }), ]); - this.systemMessage = systemMessages.join('\n'); - this.functions$.next(this.getFunctions()); } @@ -278,24 +275,17 @@ class ChatService { return this.renderFunctionRegistry.has(name); }; - public getSystemMessage = (): Message => { - return { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: this.systemMessage, - }, - }; - }; + public getSystemMessage = (): string => this.systemMessage; public chat: ObservabilityAIAssistantChatService['chat'] = ( name: string, - { connectorId, messages, functionCall, functions, signal } + { connectorId, systemMessage, messages, functionCall, functions, signal } ) => { return this.callStreamingApi('POST /internal/observability_ai_assistant/chat', { params: { body: { name, + systemMessage, messages, connectorId, functionCall, @@ -316,6 +306,7 @@ class ChatService { getScreenContexts, connectorId, conversationId, + systemMessage, messages, persist, disableFunctions, @@ -327,6 +318,7 @@ class ChatService { getScreenContexts, connectorId, conversationId, + systemMessage, messages, persist, disableFunctions, diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/public/service/create_mock_chat_service.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/public/service/create_mock_chat_service.ts index 0559d65a14a81..38a3dc2b08a93 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/public/service/create_mock_chat_service.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/public/service/create_mock_chat_service.ts @@ -7,7 +7,7 @@ import type { DeeplyMockedKeys } from '@kbn/utility-types-jest'; import { BehaviorSubject } from 'rxjs'; -import { FunctionDefinition, MessageRole } from '../../common'; +import { FunctionDefinition } from '../../common'; import type { ObservabilityAIAssistantChatService } from '../types'; type MockedChatService = DeeplyMockedKeys; @@ -22,13 +22,7 @@ export const createMockChatService = (): MockedChatService => { hasFunction: jest.fn().mockReturnValue(false), hasRenderFunction: jest.fn().mockReturnValue(true), renderFunction: jest.fn(), - getSystemMessage: jest.fn().mockReturnValue({ - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: 'system', - }, - }), + getSystemMessage: jest.fn().mockReturnValue('system'), getScopes: jest.fn(), }; return mockChatService; diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/public/storybook_mock.tsx b/x-pack/platform/plugins/shared/observability_ai_assistant/public/storybook_mock.tsx index 004ad25aa4a86..5f2b70b1af99b 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/public/storybook_mock.tsx +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/public/storybook_mock.tsx @@ -9,7 +9,7 @@ import { noop } from 'lodash'; import React from 'react'; import { BehaviorSubject, Observable, of } from 'rxjs'; import { AssistantScope } from '@kbn/ai-assistant-common'; -import { ChatCompletionChunkEvent, FunctionDefinition, MessageRole } from '.'; +import { ChatCompletionChunkEvent, FunctionDefinition } from '.'; import type { StreamingChatResponseEventWithoutError } from '../common/conversation_complete'; import type { ObservabilityAIAssistantAPIClient } from './api'; import type { ObservabilityAIAssistantChatService, ObservabilityAIAssistantService } from './types'; @@ -30,13 +30,7 @@ export const createStorybookChatService = (): ObservabilityAIAssistantChatServic ), hasFunction: () => true, hasRenderFunction: () => true, - getSystemMessage: () => ({ - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: 'System', - }, - }), + getSystemMessage: () => 'System', functions$: new BehaviorSubject( [] ) as ObservabilityAIAssistantChatService['functions$'], diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/public/types.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/public/types.ts index 72517df5bffbc..9c4223705e9a8 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/public/types.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/public/types.ts @@ -49,6 +49,7 @@ export interface ObservabilityAIAssistantChatService { chat: ( name: string, options: { + systemMessage: string; messages: Message[]; connectorId: string; functions?: Array>; @@ -61,6 +62,7 @@ export interface ObservabilityAIAssistantChatService { getScreenContexts: () => ObservabilityAIAssistantScreenContext[]; conversationId?: string; connectorId: string; + systemMessage?: string; messages: Message[]; persist: boolean; disableFunctions: @@ -79,7 +81,7 @@ export interface ObservabilityAIAssistantChatService { }) => FunctionDefinition[]; functions$: BehaviorSubject; hasFunction: (name: string) => boolean; - getSystemMessage: () => Message; + getSystemMessage: () => string; hasRenderFunction: (name: string) => boolean; renderFunction: ( name: string, diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/functions/get_dataset_info/get_relevant_field_names.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/functions/get_dataset_info/get_relevant_field_names.ts index d87ded0cd2c5a..f3565f0bb36b1 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/functions/get_dataset_info/get_relevant_field_names.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/functions/get_dataset_info/get_relevant_field_names.ts @@ -100,20 +100,14 @@ export async function getRelevantFieldNames({ await chat('get_relevant_dataset_names', { signal, stream: true, - messages: [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: `You are a helpful assistant for Elastic Observability. + systemMessage: `You are a helpful assistant for Elastic Observability. Your task is to create a list of field names that are relevant to the conversation, using ONLY the list of fields and types provided in the last user message. DO NOT UNDER ANY CIRCUMSTANCES include fields not mentioned in this list.`, - }, - }, - // remove the system message and the function request - ...messages.slice(1, -1), + messages: [ + // remove the function request + ...messages.filter((msg) => !msg.message?.function_call), { '@timestamp': new Date().toISOString(), message: { diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/chat/route.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/chat/route.ts index 1ca0eb9d1dc39..23e7a70cecb31 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/chat/route.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/chat/route.ts @@ -135,6 +135,7 @@ const chatRoute = createObservabilityAIAssistantServerRoute({ body: t.intersection([ t.type({ name: t.string, + systemMessage: t.string, messages: t.array(messageRt), connectorId: t.string, functions: t.array(functionRt), @@ -149,7 +150,7 @@ const chatRoute = createObservabilityAIAssistantServerRoute({ const { params } = resources; const { - body: { name, messages, connectorId, functions, functionCall }, + body: { name, systemMessage, messages, connectorId, functions, functionCall }, } = params; const { client, simulateFunctionCalling, signal, isCloudEnabled } = await initializeChatRequest( @@ -158,6 +159,7 @@ const chatRoute = createObservabilityAIAssistantServerRoute({ const response$ = client.chat(name, { stream: true, + systemMessage, messages, connectorId, signal, diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/conversations/route.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/conversations/route.ts index e320376bc7357..cd2bb5b6331cd 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/conversations/route.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/conversations/route.ts @@ -6,10 +6,23 @@ */ import { notImplemented } from '@hapi/boom'; import * as t from 'io-ts'; -import { Conversation } from '../../../common/types'; +import { Conversation, MessageRole } from '../../../common/types'; import { createObservabilityAIAssistantServerRoute } from '../create_observability_ai_assistant_server_route'; import { conversationCreateRt, conversationUpdateRt } from '../runtime_types'; +// backwards compatibility for messages with system role +const getConversationWithoutSystemMessages = (conversation: Conversation) => { + if (!conversation.systemMessage) { + conversation.systemMessage = + conversation.messages.find((message) => message.message.role === 'system')?.message + ?.content ?? ''; + } + conversation.messages = conversation.messages.filter( + (message) => message.message.role !== MessageRole.System + ); + return conversation; +}; + const getConversationRoute = createObservabilityAIAssistantServerRoute({ endpoint: 'GET /internal/observability_ai_assistant/conversation/{conversationId}', params: t.type({ @@ -31,7 +44,9 @@ const getConversationRoute = createObservabilityAIAssistantServerRoute({ throw notImplemented(); } - return client.get(params.path.conversationId); + const conversation = await client.get(params.path.conversationId); + // conversation without system messages + return getConversationWithoutSystemMessages(conversation); }, }); @@ -56,7 +71,12 @@ const findConversationsRoute = createObservabilityAIAssistantServerRoute({ throw notImplemented(); } - return client.find({ query: params?.body?.query }); + const conversations = await client.find({ query: params?.body?.query }); + + return { + // conversations without system messages + conversations: conversations.map(getConversationWithoutSystemMessages), + }; }, }); diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/runtime_types.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/runtime_types.ts index 68f91f7e09858..cfa0410364efb 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/runtime_types.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/runtime_types.ts @@ -57,21 +57,26 @@ const tokenCountRt = t.type({ total: t.number, }); -export const baseConversationRt: t.Type = t.type({ - '@timestamp': t.string, - conversation: t.intersection([ - t.type({ - title: t.string, - }), - t.partial({ - token_count: tokenCountRt, - }), - ]), - messages: t.array(messageRt), - labels: t.record(t.string, t.string), - numeric_labels: t.record(t.string, t.number), - public: toBooleanRt, -}); +export const baseConversationRt: t.Type = t.intersection([ + t.type({ + '@timestamp': t.string, + conversation: t.intersection([ + t.type({ + title: t.string, + }), + t.partial({ + token_count: tokenCountRt, + }), + ]), + messages: t.array(messageRt), + labels: t.record(t.string, t.string), + numeric_labels: t.record(t.string, t.number), + public: toBooleanRt, + }), + t.partial({ + systemMessage: t.string, + }), +]); export const assistantScopeType = t.union([ t.literal('observability'), diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.test.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.test.ts index 1d9a68ad02482..63861061408d4 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.test.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.test.ts @@ -44,7 +44,7 @@ interface ChunkDelta { type LlmSimulator = ReturnType; -const EXPECTED_STORED_SYSTEM_MESSAGE = `system`; +const EXPECTED_STORED_SYSTEM_MESSAGE = `this is a system message`; const nextTick = () => { return new Promise(process.nextTick); @@ -185,7 +185,7 @@ describe('Observability AI Assistant client', () => { knowledgeBaseServiceMock.getUserInstructions.mockResolvedValue([]); - functionClientMock.getInstructions.mockReturnValue(['system']); + functionClientMock.getInstructions.mockReturnValue([EXPECTED_STORED_SYSTEM_MESSAGE]); functionClientMock.getAdhocInstructions.mockReturnValue([]); return new ObservabilityAIAssistantClient({ @@ -208,18 +208,6 @@ describe('Observability AI Assistant client', () => { }); } - function system(content: string | Omit): Message { - return merge( - { - '@timestamp': new Date().toString(), - message: { - role: MessageRole.System, - }, - }, - typeof content === 'string' ? { message: { content } } : content - ); - } - function user(content: string | Omit): Message { return merge( { @@ -286,7 +274,7 @@ describe('Observability AI Assistant client', () => { stream = observableIntoStream( client.complete({ connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], + messages: [user('How many alerts do I have?')], functionClient: functionClientMock, signal: new AbortController().signal, persist: true, @@ -313,6 +301,8 @@ describe('Observability AI Assistant client', () => { expect.objectContaining({ connectorId: 'foo', stream: false, + system: + 'You are a helpful assistant for Elastic Observability. Assume the following message is the start of a conversation between you and a user; give this conversation a title based on the content below. DO NOT UNDER ANY CIRCUMSTANCES wrap this title in single or double quotes. This title is shown in a list of conversations to the user, so title it for the user, not for you.', functionCalling: 'auto', toolChoice: expect.objectContaining({ function: 'title_conversation', @@ -498,14 +488,8 @@ describe('Observability AI Assistant client', () => { user: { name: 'johndoe', }, + systemMessage: EXPECTED_STORED_SYSTEM_MESSAGE, messages: [ - { - '@timestamp': expect.any(String), - message: { - content: EXPECTED_STORED_SYSTEM_MESSAGE, - role: MessageRole.System, - }, - }, { '@timestamp': expect.any(String), message: { @@ -568,10 +552,7 @@ describe('Observability AI Assistant client', () => { labels: {}, numeric_labels: {}, public: false, - messages: [ - system('This is a system message'), - user('How many alerts do I have?'), - ], + messages: [user('How many alerts do I have?')], }, }, ], @@ -586,7 +567,7 @@ describe('Observability AI Assistant client', () => { stream = observableIntoStream( await client.complete({ connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], + messages: [user('How many alerts do I have?')], functionClient: functionClientMock, signal: new AbortController().signal, conversationId: 'my-conversation-id', @@ -646,14 +627,8 @@ describe('Observability AI Assistant client', () => { user: { name: 'johndoe', }, + systemMessage: EXPECTED_STORED_SYSTEM_MESSAGE, messages: [ - { - '@timestamp': expect.any(String), - message: { - content: EXPECTED_STORED_SYSTEM_MESSAGE, - role: MessageRole.System, - }, - }, { '@timestamp': expect.any(String), message: { @@ -695,7 +670,7 @@ describe('Observability AI Assistant client', () => { stream = observableIntoStream( await client.complete({ connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], + messages: [user('How many alerts do I have?')], functionClient: functionClientMock, signal: new AbortController().signal, title: 'My predefined title', @@ -785,7 +760,7 @@ describe('Observability AI Assistant client', () => { stream = observableIntoStream( await client.complete({ connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], + messages: [user('How many alerts do I have?')], functionClient: functionClientMock, signal: new AbortController().signal, title: 'My predefined title', @@ -846,13 +821,6 @@ describe('Observability AI Assistant client', () => { signal: expect.any(AbortSignal), connectorId: 'foo', messages: [ - { - '@timestamp': expect.any(String), - message: { - role: MessageRole.System, - content: EXPECTED_STORED_SYSTEM_MESSAGE, - }, - }, { '@timestamp': expect.any(String), message: { @@ -985,13 +953,6 @@ describe('Observability AI Assistant client', () => { expect( (internalUserEsClientMock.index.mock.lastCall![0] as any).document.messages ).toEqual([ - { - '@timestamp': expect.any(String), - message: { - content: EXPECTED_STORED_SYSTEM_MESSAGE, - role: MessageRole.System, - }, - }, { '@timestamp': expect.any(String), message: { @@ -1224,7 +1185,7 @@ describe('Observability AI Assistant client', () => { stream = observableIntoStream( await client.complete({ connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], + messages: [user('How many alerts do I have?')], functionClient: functionClientMock, signal: new AbortController().signal, persist: false, @@ -1349,7 +1310,7 @@ describe('Observability AI Assistant client', () => { stream = observableIntoStream( await client.complete({ connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], + messages: [user('How many alerts do I have?')], functionClient: functionClientMock, signal: new AbortController().signal, title: 'My predefined title', @@ -1427,7 +1388,7 @@ describe('Observability AI Assistant client', () => { const stream = observableIntoStream( await client.complete({ connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], + messages: [user('How many alerts do I have?')], functionClient: functionClientMock, signal: new AbortController().signal, persist: false, @@ -1515,7 +1476,7 @@ describe('Observability AI Assistant client', () => { stream = observableIntoStream( await client.complete({ connectorId: 'foo', - messages: [system('This is a system message'), user('How many alerts do I have?')], + messages: [user('How many alerts do I have?')], functionClient: functionClientMock, signal: new AbortController().signal, title: 'My predefined title', @@ -1580,7 +1541,7 @@ describe('Observability AI Assistant client', () => { client .complete({ connectorId: 'foo', - messages: [system('This is a system message'), user('A user message to cause completion')], + messages: [user('A user message to cause completion')], functionClient: functionClientMock, signal: new AbortController().signal, title: 'My predefined title', @@ -1589,9 +1550,7 @@ describe('Observability AI Assistant client', () => { .subscribe(() => {}); // To trigger call to chat await nextTick(); - expect(chatSpy.mock.calls[0][1].messages[0].message.content).toEqual( - EXPECTED_STORED_SYSTEM_MESSAGE - ); + expect(chatSpy.mock.calls[0][1].systemMessage).toEqual(EXPECTED_STORED_SYSTEM_MESSAGE); }); describe('when executing an action', () => { @@ -1608,10 +1567,7 @@ describe('Observability AI Assistant client', () => { const complete$ = await client.complete({ connectorId: 'foo', - messages: [ - system('This is a system message'), - user('Can you call the my_action function?'), - ], + messages: [user('Can you call the my_action function?')], functionClient: new ChatFunctionClient([ { actions: [ diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts index 054f9ced48485..2d3a19444462b 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts @@ -14,7 +14,6 @@ import { context } from '@opentelemetry/api'; import { last, merge, omit } from 'lodash'; import { catchError, - combineLatest, defer, filter, forkJoin, @@ -56,7 +55,6 @@ import { type Message, KnowledgeBaseType, KnowledgeBaseEntryRole, - MessageRole, } from '../../../common/types'; import { withoutTokenCountEvents } from '../../../common/utils/without_token_count_events'; import { CONTEXT_FUNCTION_NAME } from '../../functions/context'; @@ -64,7 +62,6 @@ import type { ChatFunctionClient } from '../chat_function_client'; import { KnowledgeBaseService, RecalledEntry } from '../knowledge_base_service'; import { getAccessQuery } from '../util/get_access_query'; import { getSystemMessageFromInstructions } from '../util/get_system_message_from_instructions'; -import { replaceSystemMessage } from '../util/replace_system_message'; import { failOnNonExistingFunctionCall } from './operators/fail_on_non_existing_function_call'; import { getContextFunctionRequestIfNeeded } from './get_context_function_request_if_needed'; import { LangTracer } from './instrumentation/lang_tracer'; @@ -215,28 +212,6 @@ export class ObservabilityAIAssistantClient { const registeredAdhocInstructions = functionClient.getAdhocInstructions(); const allAdHocInstructions = adHocInstructions.concat(registeredAdhocInstructions); - // from the initial messages, override any system message with - // the one that is based on the instructions (registered, request, kb) - const messagesWithUpdatedSystemMessage$ = userInstructions$.pipe( - map((userInstructions) => { - // this is what we eventually store in the conversation - const messagesWithUpdatedSystemMessage = replaceSystemMessage( - getSystemMessageFromInstructions({ - applicationInstructions: functionClient.getInstructions(), - userInstructions, - adHocInstructions: allAdHocInstructions, - availableFunctionNames: functionClient - .getFunctions() - .map((fn) => fn.definition.name), - }), - initialMessages - ); - - return messagesWithUpdatedSystemMessage; - }), - shareReplay() - ); - // if it is: // - a new conversation // - no predefined title is given @@ -246,35 +221,39 @@ export class ObservabilityAIAssistantClient { const title$ = predefinedTitle || isConversationUpdate || !persist ? of(predefinedTitle || '').pipe(shareReplay()) - : messagesWithUpdatedSystemMessage$.pipe( - switchMap((messages) => - getGeneratedTitle({ - messages, - logger: this.dependencies.logger, - chat: (name, chatParams) => - this.chat(name, { - ...chatParams, - simulateFunctionCalling, - connectorId, - signal, - stream: false, - }), - tracer: completeTracer, - }) - ), - shareReplay() - ); + : getGeneratedTitle({ + messages: initialMessages, + logger: this.dependencies.logger, + chat: (name, chatParams) => + this.chat(name, { + ...chatParams, + simulateFunctionCalling, + connectorId, + signal, + stream: false, + }), + tracer: completeTracer, + }).pipe(shareReplay()); + + const systemMessage$ = userInstructions$.pipe( + map((userInstructions) => { + return getSystemMessageFromInstructions({ + applicationInstructions: functionClient.getInstructions(), + userInstructions, + adHocInstructions: allAdHocInstructions, + availableFunctionNames: functionClient.getFunctions().map((fn) => fn.definition.name), + }); + }), + shareReplay() + ); // we continue the conversation here, after resolving both the materialized // messages and the knowledge base instructions - const nextEvents$ = combineLatest([ - messagesWithUpdatedSystemMessage$, - userInstructions$, - ]).pipe( - switchMap(([messagesWithUpdatedSystemMessage, userInstructions]) => { + const nextEvents$ = forkJoin([systemMessage$, userInstructions$]).pipe( + switchMap(([systemMessage, userInstructions]) => { // if needed, inject a context function request here const contextRequest = functionClient.hasFunction(CONTEXT_FUNCTION_NAME) - ? getContextFunctionRequestIfNeeded(messagesWithUpdatedSystemMessage) + ? getContextFunctionRequestIfNeeded(initialMessages) : undefined; return mergeOperator( @@ -283,14 +262,12 @@ export class ObservabilityAIAssistantClient { // and add it to the conversation ...(contextRequest ? [of(contextRequest)] : []), continueConversation({ - messages: [ - ...messagesWithUpdatedSystemMessage, - ...(contextRequest ? [contextRequest.message] : []), - ], + messages: [...initialMessages, ...(contextRequest ? [contextRequest.message] : [])], chat: (name, chatParams) => { // inject a chat function with predefined parameters return this.chat(name, { ...chatParams, + systemMessage, signal, simulateFunctionCalling, connectorId, @@ -319,7 +296,6 @@ export class ObservabilityAIAssistantClient { nextEvents$, // wait until all dependencies have completed forkJoin([ - messagesWithUpdatedSystemMessage$, // get just the new messages nextEvents$.pipe(withoutTokenCountEvents(), extractMessages()), // count all the token count events emitted during completion @@ -329,101 +305,100 @@ export class ObservabilityAIAssistantClient { ).pipe(extractTokenCount()), // get just the title, and drop the token count events title$.pipe(filter((value): value is string => typeof value === 'string')), + systemMessage$, ]).pipe( - switchMap( - ([messagesWithUpdatedSystemMessage, addedMessages, tokenCountResult, title]) => { - const initialMessagesWithAddedMessages = - messagesWithUpdatedSystemMessage.concat(addedMessages); - - const lastMessage = last(initialMessagesWithAddedMessages); - - // if a function request is at the very end, close the stream to consumer - // without persisting or updating the conversation. we need to wait - // on the function response to have a valid conversation - const isFunctionRequest = !!lastMessage?.message.function_call?.name; - - if (!persist || isFunctionRequest) { - return of(); - } - - if (isConversationUpdate) { - return from(this.getConversationWithMetaFields(conversationId)) - .pipe( - switchMap((conversation) => { - if (!conversation) { - return throwError(() => createConversationNotFoundError()); - } - - const persistedTokenCount = conversation._source?.conversation - .token_count ?? { - prompt: 0, - completion: 0, - total: 0, - }; - - return from( - this.update( - conversationId, - - merge( - {}, - - // base conversation without messages - omit(conversation._source, 'messages'), - - // update messages - { messages: initialMessagesWithAddedMessages }, - - // update token count - { - conversation: { - title: title || conversation._source?.conversation.title, - token_count: { - prompt: persistedTokenCount.prompt + tokenCountResult.prompt, - completion: - persistedTokenCount.completion + tokenCountResult.completion, - total: persistedTokenCount.total + tokenCountResult.total, - }, + switchMap(([addedMessages, tokenCountResult, title, systemMessage]) => { + const initialMessagesWithAddedMessages = initialMessages.concat(addedMessages); + + const lastMessage = last(initialMessagesWithAddedMessages); + + // if a function request is at the very end, close the stream to consumer + // without persisting or updating the conversation. we need to wait + // on the function response to have a valid conversation + const isFunctionRequest = !!lastMessage?.message.function_call?.name; + + if (!persist || isFunctionRequest) { + return of(); + } + + if (isConversationUpdate) { + return from(this.getConversationWithMetaFields(conversationId)) + .pipe( + switchMap((conversation) => { + if (!conversation) { + return throwError(() => createConversationNotFoundError()); + } + + const persistedTokenCount = conversation._source?.conversation + .token_count ?? { + prompt: 0, + completion: 0, + total: 0, + }; + + return from( + this.update( + conversationId, + + merge( + {}, + + // base conversation without messages + omit(conversation._source, 'messages'), + + // update messages and system message + { messages: initialMessagesWithAddedMessages, systemMessage }, + + // update token count + { + conversation: { + title: title || conversation._source?.conversation.title, + token_count: { + prompt: persistedTokenCount.prompt + tokenCountResult.prompt, + completion: + persistedTokenCount.completion + tokenCountResult.completion, + total: persistedTokenCount.total + tokenCountResult.total, }, - } - ) + }, + } ) - ); - }) - ) - .pipe( - map((conversation): ConversationUpdateEvent => { - return { - conversation: conversation.conversation, - type: StreamingChatResponseEventType.ConversationUpdate, - }; - }) - ); - } - - return from( - this.create({ - '@timestamp': new Date().toISOString(), - conversation: { - title, - id: conversationId, - token_count: tokenCountResult, - }, - public: !!isPublic, - labels: {}, - numeric_labels: {}, - messages: initialMessagesWithAddedMessages, - }) - ).pipe( - map((conversation): ConversationCreateEvent => { - return { - conversation: conversation.conversation, - type: StreamingChatResponseEventType.ConversationCreate, - }; - }) - ); + ) + ); + }) + ) + .pipe( + map((conversation): ConversationUpdateEvent => { + return { + conversation: conversation.conversation, + type: StreamingChatResponseEventType.ConversationUpdate, + }; + }) + ); } - ) + + return from( + this.create({ + '@timestamp': new Date().toISOString(), + conversation: { + title, + id: conversationId, + token_count: tokenCountResult, + }, + public: !!isPublic, + labels: {}, + numeric_labels: {}, + systemMessage, + messages: initialMessagesWithAddedMessages, + }) + ).pipe( + map((conversation): ConversationCreateEvent => { + return { + conversation: conversation.conversation, + type: StreamingChatResponseEventType.ConversationCreate, + }; + }) + ); + }) ) ); @@ -466,6 +441,7 @@ export class ObservabilityAIAssistantClient { chat( name: string, { + systemMessage, messages, connectorId, functions, @@ -475,6 +451,7 @@ export class ObservabilityAIAssistantClient { tracer, stream, }: { + systemMessage?: string; messages: Message[]; connectorId: string; functions?: Array<{ name: string; description: string; parameters?: CompatibleJSONSchema }>; @@ -508,11 +485,8 @@ export class ObservabilityAIAssistantClient { const options = { connectorId, - system: messages.find((message) => message.message.role === MessageRole.System)?.message - .content, - messages: convertMessagesForInference( - messages.filter((message) => message.message.role !== MessageRole.System) - ), + system: systemMessage, + messages: convertMessagesForInference(messages), toolChoice, tools, functionCalling: (simulateFunctionCalling ? 'simulated' : 'auto') as FunctionCallingMode, @@ -548,7 +522,7 @@ export class ObservabilityAIAssistantClient { } } - find = async (options?: { query?: string }): Promise<{ conversations: Conversation[] }> => { + find = async (options?: { query?: string }): Promise => { const response = await this.dependencies.esClient.asInternalUser.search({ index: resourceNames.aliases.conversations, allow_no_indices: true, @@ -568,9 +542,7 @@ export class ObservabilityAIAssistantClient { size: 100, }); - return { - conversations: response.hits.hits.map((hit) => hit._source!), - }; + return response.hits.hits.map((hit) => hit._source!); }; update = async ( diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/operators/continue_conversation.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/operators/continue_conversation.ts index ba19aca714eb4..a78f0b4aa70be 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/operators/continue_conversation.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/operators/continue_conversation.ts @@ -35,8 +35,6 @@ import { withoutTokenCountEvents } from '../../../../common/utils/without_token_ import type { ChatFunctionClient } from '../../chat_function_client'; import type { AutoAbortedChatFunction } from '../../types'; import { createServerSideFunctionResponseError } from '../../util/create_server_side_function_response_error'; -import { getSystemMessageFromInstructions } from '../../util/get_system_message_from_instructions'; -import { replaceSystemMessage } from '../../util/replace_system_message'; import { LangTracer } from '../instrumentation/lang_tracer'; import { catchFunctionNotFoundError } from './catch_function_not_found_error'; import { extractMessages } from './extract_messages'; @@ -213,20 +211,7 @@ export function continueConversation({ disableFunctions, }); - const registeredAdhocInstructions = functionClient.getAdhocInstructions(); - const allAdHocInstructions = adHocInstructions.concat(registeredAdhocInstructions); - - const messagesWithUpdatedSystemMessage = replaceSystemMessage( - getSystemMessageFromInstructions({ - applicationInstructions: functionClient.getInstructions(), - userInstructions, - adHocInstructions: allAdHocInstructions, - availableFunctionNames: definitions.map((def) => def.name), - }), - initialMessages - ); - - const lastMessage = last(messagesWithUpdatedSystemMessage)?.message; + const lastMessage = last(initialMessages)?.message; const isUserMessage = lastMessage?.role === MessageRole.User; return executeNextStep().pipe(handleEvents()); @@ -239,7 +224,7 @@ export function continueConversation({ : 'user_message'; return chat(operationName, { - messages: messagesWithUpdatedSystemMessage, + messages: initialMessages, functions: definitions, tracer, connectorId, @@ -314,7 +299,7 @@ export function continueConversation({ args: lastMessage.function_call!.arguments, chat, functionClient, - messages: messagesWithUpdatedSystemMessage, + messages: initialMessages, signal, logger, tracer, @@ -337,7 +322,7 @@ export function continueConversation({ return EMPTY; } return continueConversation({ - messages: messagesWithUpdatedSystemMessage.concat(extractedMessages), + messages: initialMessages.concat(extractedMessages), chat, functionCallsLeft: nextFunctionCallsLeft, functionClient, diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/operators/get_generated_title.test.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/operators/get_generated_title.test.ts index 42453f8d407b6..776881378ce99 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/operators/get_generated_title.test.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/operators/get_generated_title.test.ts @@ -92,10 +92,9 @@ describe('getGeneratedTitle', () => { await lastValueFrom(title$); const [name, params] = chatSpy.mock.calls[0]; - expect(name).toEqual('generate_title'); - expect(params.messages.length).toBe(2); - expect(params.messages[1].message.content).toContain('A message'); + expect(params.messages.length).toBe(1); + expect(params.messages[0].message.content).toContain('A message'); }); it('strips quotes from the title', async () => { diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/operators/get_generated_title.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/operators/get_generated_title.ts index 3f1b9f43cd35f..20d6c1217aa6d 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/operators/get_generated_title.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/operators/get_generated_title.ts @@ -36,23 +36,16 @@ export function getGeneratedTitle({ }): Observable { return from( chat('generate_title', { + systemMessage: + 'You are a helpful assistant for Elastic Observability. Assume the following message is the start of a conversation between you and a user; give this conversation a title based on the content below. DO NOT UNDER ANY CIRCUMSTANCES wrap this title in single or double quotes. This title is shown in a list of conversations to the user, so title it for the user, not for you.', messages: [ - { - '@timestamp': new Date().toString(), - message: { - role: MessageRole.System, - content: `You are a helpful assistant for Elastic Observability. Assume the following message is the start of a conversation between you and a user; give this conversation a title based on the content below. DO NOT UNDER ANY CIRCUMSTANCES wrap this title in single or double quotes. This title is shown in a list of conversations to the user, so title it for the user, not for you.`, - }, - }, { '@timestamp': new Date().toISOString(), message: { role: MessageRole.User, - content: messages - .filter((msg) => msg.message.role !== MessageRole.System) - .reduce((acc, curr) => { - return `${acc} ${curr.message.role}: ${curr.message.content}`; - }, 'Generate a title, using the title_conversation_function, based on the following conversation:\n\n'), + content: messages.reduce((acc, curr) => { + return `${acc} ${curr.message.role}: ${curr.message.content}`; + }, 'Generate a title, using the title_conversation_function, based on the following conversation:\n\n'), }, }, ], diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/util/replace_system_message.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/util/replace_system_message.ts deleted file mode 100644 index c8c3b251c53e5..0000000000000 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/util/replace_system_message.ts +++ /dev/null @@ -1,21 +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 { Message, MessageRole } from '../../../common'; - -export function replaceSystemMessage(systemMessage: string, messages: Message[]): Message[] { - return [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: systemMessage, - }, - }, - ...messages.filter((msg) => msg.message.role !== MessageRole.System), - ]; -} diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/kibana_client.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/kibana_client.ts index 7b078d4cb5fc9..b10c583a5bcdf 100644 --- a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/kibana_client.ts +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/scripts/evaluation/kibana_client.ts @@ -73,7 +73,7 @@ type CompleteFunction = (params: CompleteFunctionParams) => Promise<{ }>; export interface ChatClient { - chat: (message: StringOrMessageList) => Promise; + chat: (message: StringOrMessageList, system: string) => Promise; complete: CompleteFunction; evaluate: ( {}: { conversationId?: string; messages: InnerMessage[]; errors: ChatCompletionErrorEvent[] }, @@ -349,11 +349,13 @@ export class KibanaClient { async function chat( name: string, { + systemMessage, messages, functions, functionCall, connectorIdOverride, }: { + systemMessage: string; messages: Message[]; functions: FunctionDefinition[]; functionCall?: string; @@ -367,6 +369,7 @@ export class KibanaClient { const params: ObservabilityAIAssistantAPIClientRequestParamsOf<'POST /internal/observability_ai_assistant/chat'>['params']['body'] = { name, + systemMessage, messages, connectorId: connectorIdOverride || connectorId, functions: functions.map((fn) => pick(fn, 'name', 'description', 'parameters')), @@ -403,14 +406,14 @@ export class KibanaClient { const results: EvaluationResult[] = []; return { - chat: async (message) => { + chat: async (message, systemMessage) => { const messages = [ ...this.getMessages(message).map((msg) => ({ message: msg, '@timestamp': new Date().toISOString(), })), ]; - return chat('chat', { messages, functions: [] }); + return chat('chat', { systemMessage, messages, functions: [] }); }, complete: async ({ messages: messagesArg, @@ -515,20 +518,14 @@ export class KibanaClient { evaluate: async ({ messages, conversationId, errors }, criteria) => { const message = await chat('evaluate', { connectorIdOverride: evaluationConnectorId, - messages: [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: `You are a critical assistant for evaluating conversations with the Elastic Observability AI Assistant, + systemMessage: `You are a critical assistant for evaluating conversations with the Elastic Observability AI Assistant, which helps our users make sense of their Observability data. Your goal is to verify whether a conversation between the user and the assistant matches the given criteria. For each criterion, calculate a score. Explain your score, by describing what the assistant did right, and describing and quoting what the assistant did wrong, where it could improve, and what the root cause was in case of a failure.`, - }, - }, + messages: [ { '@timestamp': new Date().toString(), message: { diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/index.test.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/index.test.ts index e2c0f97d14a0d..c2e5456bd9511 100644 --- a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/index.test.ts +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/index.test.ts @@ -21,13 +21,6 @@ import { MessageRole } from '@kbn/observability-ai-assistant-plugin/public'; import { AlertDetailsContextualInsightsService } from '@kbn/observability-plugin/server/services'; const buildConversation = (contentMessage: string) => [ - { - '@timestamp': expect.any(String), - message: { - role: MessageRole.System, - content: '', - }, - }, { '@timestamp': expect.any(String), message: { diff --git a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/index.ts b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/index.ts index 207e4e9488354..5a11a5b9bfb97 100644 --- a/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/index.ts +++ b/x-pack/solutions/observability/plugins/observability_ai_assistant_app/server/rule_connector/index.ts @@ -34,7 +34,6 @@ import { import { concatenateChatCompletionChunks } from '@kbn/observability-ai-assistant-plugin/common/utils/concatenate_chat_completion_chunks'; import { CompatibleJSONSchema } from '@kbn/observability-ai-assistant-plugin/common/functions/types'; import { AlertDetailsContextualInsightsService } from '@kbn/observability-plugin/server/services'; -import { getSystemMessageFromInstructions } from '@kbn/observability-ai-assistant-plugin/server/service/util/get_system_message_from_instructions'; import { AdHocInstruction } from '@kbn/observability-ai-assistant-plugin/common/types'; import { EXECUTE_CONNECTOR_FUNCTION_NAME } from '@kbn/observability-ai-assistant-plugin/server/functions/execute_connector'; import { ObservabilityAIAssistantClient } from '@kbn/observability-ai-assistant-plugin/server'; @@ -315,18 +314,6 @@ If available, include the link of the conversation at the end of your answer.` kibanaPublicUrl: (await resources.plugins.core.start()).http.basePath.publicBaseUrl, instructions: [backgroundInstruction], messages: [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: getSystemMessageFromInstructions({ - availableFunctionNames: functionClient.getFunctions().map((fn) => fn.definition.name), - applicationInstructions: functionClient.getInstructions(), - userInstructions: [], - adHocInstructions: functionClient.getAdhocInstructions(), - }), - }, - }, { '@timestamp': new Date().toISOString(), message: { diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/chat/chat.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/chat/chat.spec.ts index 67ec6e4a4693e..0f602dd836d51 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/chat/chat.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/chat/chat.spec.ts @@ -20,13 +20,6 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon const observabilityAIAssistantAPIClient = getService('observabilityAIAssistantApi'); const messages: Message[] = [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: 'You are a helpful assistant', - }, - }, { '@timestamp': new Date().toISOString(), message: { @@ -63,6 +56,7 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon params: { body: { name: 'my_api_call', + systemMessage: 'You are a helpful assistant', messages, connectorId: 'does not exist', functions: [], @@ -98,6 +92,7 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon .on('error', reject) .send({ name: 'my_api_call', + systemMessage: 'You are a helpful assistant', messages, connectorId, functions: [], @@ -154,6 +149,7 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon params: { body: { name: 'my_api_call', + systemMessage: 'You are a helpful assistant', messages, connectorId, functions: [], diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/complete.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/complete.spec.ts index 1cca90f96ab83..5d77326cdc49b 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/complete.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/complete/complete.spec.ts @@ -36,13 +36,6 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon const observabilityAIAssistantAPIClient = getService('observabilityAIAssistantApi'); const messages: Message[] = [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: 'You are a helpful assistant', - }, - }, { '@timestamp': new Date().toISOString(), message: { diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/conversations/conversations.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/conversations/conversations.spec.ts index a7e6772c7761f..9fe2f83b35a2e 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/conversations/conversations.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/conversations/conversations.spec.ts @@ -25,6 +25,7 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon }, labels: {}, numeric_labels: {}, + systemMessage: 'this is a system message', messages: [ { '@timestamp': new Date().toISOString(), @@ -135,6 +136,7 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon }, labels: conversationCreate.labels, numeric_labels: conversationCreate.numeric_labels, + systemMessage: conversationCreate.systemMessage, messages: conversationCreate.messages, namespace: 'default', public: conversationCreate.public, diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts index a1068a1a66ccf..5f9092d338af0 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_user_instructions.spec.ts @@ -286,13 +286,6 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon .completeAfterIntercept(); const messages: Message[] = [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: 'You are a helpful assistant', - }, - }, { '@timestamp': new Date().toISOString(), message: { @@ -353,10 +346,7 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon it('adds the instruction to the system prompt', async () => { const conversation = await getConversationForUser('editor'); - const systemMessage = conversation.messages.find( - (message) => message.message.role === MessageRole.System - )!; - expect(systemMessage.message.content).to.contain(userInstructionText); + expect(conversation.systemMessage).to.contain(userInstructionText); }); it('does not add the instruction to the context', async () => { @@ -375,12 +365,9 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon it('does not add the instruction conversation for other users', async () => { const conversation = await getConversationForUser('admin'); - const systemMessage = conversation.messages.find( - (message) => message.message.role === MessageRole.System - )!; - expect(systemMessage.message.content).to.not.contain(userInstructionText); - expect(conversation.messages.length).to.be(5); + expect(conversation.systemMessage).to.not.contain(userInstructionText); + expect(conversation.messages.length).to.be(4); }); }); diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/public_complete/public_complete.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/public_complete/public_complete.spec.ts index cc0ed3e3f40aa..6dabb460bf599 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/public_complete/public_complete.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/public_complete/public_complete.spec.ts @@ -27,13 +27,6 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon const observabilityAIAssistantAPIClient = getService('observabilityAIAssistantApi'); const messages: Message[] = [ - { - '@timestamp': new Date().toISOString(), - message: { - role: MessageRole.System, - content: 'You are a helpful assistant', - }, - }, { '@timestamp': new Date().toISOString(), message: { diff --git a/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts b/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts index c87e0d76dff3a..c6fcf5dfc471a 100644 --- a/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts +++ b/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts @@ -93,14 +93,6 @@ export default function ApiTest({ getService, getPageObjects }: FtrProviderConte body: { conversation: { messages: [ - { - '@timestamp': '2024-04-18T14:28:50.118Z', - message: { - role: MessageRole.System, - content: - 'You are a helpful assistant for Elastic Observability. Your goal is to help the Elastic Observability users to quickly assess what is happening in their observed systems. You can help them visualise and analyze data, investigate their systems, perform root cause analysis or identify optimisation opportunities.\n\nIt\'s very important to not assume what the user is meaning. Ask them for clarification if needed.\n\nIf you are unsure about which function should be used and with what arguments, ask the user for clarification or confirmation.\n\nIn KQL ("kqlFilter")) escaping happens with double quotes, not single quotes. Some characters that need escaping are: \':()\\ /". Always put a field value in double quotes. Best: service.name:"opbeans-go". Wrong: service.name:opbeans-go. This is very important!\n\nYou can use Github-flavored Markdown in your responses. If a function returns an array, consider using a Markdown table to format the response.\n\nNote that ES|QL (the Elasticsearch Query Language which is a new piped language) is the preferred query language.\n\nYou MUST use the "query" function when the user wants to:\n- visualize data\n- run any arbitrary query\n- breakdown or filter ES|QL queries that are displayed on the current page\n- convert queries from another language to ES|QL\n- asks general questions about ES|QL\n\nDO NOT UNDER ANY CIRCUMSTANCES generate ES|QL queries or explain anything about the ES|QL query language yourself.\nDO NOT UNDER ANY CIRCUMSTANCES try to correct an ES|QL query yourself - always use the "query" function for this.\n\nDO NOT UNDER ANY CIRCUMSTANCES USE ES|QL syntax (`service.name == "foo"`) with "kqlFilter" (`service.name:"foo"`).\n\nEven if the "context" function was used before that, follow it up with the "query" function. If a query fails, do not attempt to correct it yourself. Again you should call the "query" function,\neven if it has been called before.\n\nWhen the "visualize_query" function has been called, a visualization has been displayed to the user. DO NOT UNDER ANY CIRCUMSTANCES follow up a "visualize_query" function call with your own visualization attempt.\nIf the "execute_query" function has been called, summarize these results for the user. The user does not see a visualization in this case.\n\nYou MUST use the get_dataset_info function function before calling the "query" or "changes" function.\n\nIf a function requires an index, you MUST use the results from the dataset info functions.\n\n\n\nThe user is able to change the language which they want you to reply in on the settings page of the AI Assistant for Observability, which can be found in the Stack Management app under the option AI Assistants.\nIf the user asks how to change the language, reply in the same language the user asked in.You do not have a working memory. If the user expects you to remember the previous conversations, tell them they can set up the knowledge base.', - }, - }, { '@timestamp': '2024-04-18T14:29:01.615Z', message: { @@ -308,19 +300,17 @@ export default function ApiTest({ getService, getPageObjects }: FtrProviderConte expect(response.body.conversations[0].conversation.title).to.be('My title'); - const { messages } = response.body.conversations[0]; + const { messages, systemMessage } = response.body.conversations[0]; + + expect(messages.length).to.eql(4); - expect(messages.length).to.eql(5); + const [firstUserMessage, contextRequest, contextResponse, assistantResponse] = + messages.map((msg) => msg.message); - const [ - systemMessage, - firstUserMessage, - contextRequest, - contextResponse, - assistantResponse, - ] = messages.map((msg) => msg.message); + const systemMessageContent = + 'You are a helpful assistant for Elastic Observability. Your goal is to help the Elastic Observability users to quickly assess what is happening in their observed systems. You can help them visualise and analyze data, investigate their systems, perform root cause analysis or identify optimisation opportunities.\n\n It\'s very important to not assume what the user is meaning. Ask them for clarification if needed.\n\n If you are unsure about which function should be used and with what arguments, ask the user for clarification or confirmation.\n\n In KQL ("kqlFilter")) escaping happens with double quotes, not single quotes. Some characters that need escaping are: \':()\\ /". Always put a field value in double quotes. Best: service.name:"opbeans-go". Wrong: service.name:opbeans-go. This is very important!\n\n You can use Github-flavored Markdown in your responses. If a function returns an array, consider using a Markdown table to format the response.\n\n Note that ES|QL (the Elasticsearch Query Language which is a new piped language) is the preferred query language.\n\n If you want to call a function or tool, only call it a single time per message. Wait until the function has been executed and its results\n returned to you, before executing the same tool or another tool again if needed.\n\n DO NOT UNDER ANY CIRCUMSTANCES USE ES|QL syntax (`service.name == "foo"`) with "kqlFilter" (`service.name:"foo"`).\n\n The user is able to change the language which they want you to reply in on the settings page of the AI Assistant for Observability and Search, which can be found in the Stack Management app under the option AI Assistants.\n If the user asks how to change the language, reply in the same language the user asked in.\n\nYou MUST use the "query" function when the user wants to:\n - visualize data\n - run any arbitrary query\n - breakdown or filter ES|QL queries that are displayed on the current page\n - convert queries from another language to ES|QL\n - asks general questions about ES|QL\n\n DO NOT UNDER ANY CIRCUMSTANCES generate ES|QL queries or explain anything about the ES|QL query language yourself.\n DO NOT UNDER ANY CIRCUMSTANCES try to correct an ES|QL query yourself - always use the "query" function for this.\n\n If the user asks for a query, and one of the dataset info functions was called and returned no results, you should still call the query function to generate an example query.\n\n Even if the "query" function was used before that, follow it up with the "query" function. If a query fails, do not attempt to correct it yourself. Again you should call the "query" function,\n even if it has been called before.\n\n When the "visualize_query" function has been called, a visualization has been displayed to the user. DO NOT UNDER ANY CIRCUMSTANCES follow up a "visualize_query" function call with your own visualization attempt.\n If the "execute_query" function has been called, summarize these results for the user. The user does not see a visualization in this case.\n\nYou MUST use the "get_dataset_info" function before calling the "query" or the "changes" functions.\n\nIf a function requires an index, you MUST use the results from the dataset info functions.\n\nYou do not have a working memory. If the user expects you to remember the previous conversations, tell them they can set up the knowledge base.\n\nWhen asked questions about the Elastic stack or products, You should use the retrieve_elastic_doc function before answering,\n to retrieve documentation related to the question. Consider that the documentation returned by the function\n is always more up to date and accurate than any own internal knowledge you might have.'; - expect(systemMessage.role).to.eql('system'); + expect(systemMessage).to.eql(systemMessageContent); expect(firstUserMessage.content).to.eql('hello'); @@ -380,7 +370,7 @@ export default function ApiTest({ getService, getPageObjects }: FtrProviderConte endpoint: 'POST /internal/observability_ai_assistant/conversations', }); - const messages = response.body.conversations[0].messages.slice(5); + const messages = response.body.conversations[0].messages.slice(4); expect(messages.length).to.eql(4); @@ -400,7 +390,7 @@ export default function ApiTest({ getService, getPageObjects }: FtrProviderConte content: 'My second response', }); - expect(response.body.conversations[0].messages.length).to.eql(9); + expect(response.body.conversations[0].messages.length).to.eql(8); }); }); From cd502acea12979979497f62897be663044ade3aa Mon Sep 17 00:00:00 2001 From: Ievgen Sorokopud Date: Mon, 17 Feb 2025 11:25:33 +0100 Subject: [PATCH 19/78] [Rules migration][Integration test] Install APIs (#11232) (#211339) ## Summary [Internal link](https://github.com/elastic/security-team/issues/10820) to the feature details Part of https://github.com/elastic/security-team/issues/11232 This PR covers SIEM Migrations Install API (route: `POST /internal/siem_migrations/rules/{migration_id}/install`) integration test: * install all installable custom migration rules * install all installable migration rules matched with prebuilt rules * install and enable all installable migration rules * install migration rules by ids * install rules of non-existing migration - nothing should be installed * Error handling: an error if body payload is not passed --- .../trial_license_complete_tier/index.ts | 1 + .../trial_license_complete_tier/install.ts | 216 ++++++++++++++++++ .../siem_migrations/utils/mocks.ts | 24 +- .../siem_migrations/utils/rules.ts | 24 ++ 4 files changed, 253 insertions(+), 12 deletions(-) create mode 100644 x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/install.ts diff --git a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/index.ts b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/index.ts index c5d53b96bafb1..e8c70cbd7a7c4 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/index.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/index.ts @@ -10,6 +10,7 @@ export default function ({ loadTestFile }: FtrProviderContext) { describe('@ess SecuritySolution SIEM Migrations', () => { loadTestFile(require.resolve('./create')); loadTestFile(require.resolve('./get')); + loadTestFile(require.resolve('./install')); loadTestFile(require.resolve('./stats')); loadTestFile(require.resolve('./update')); }); diff --git a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/install.ts b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/install.ts new file mode 100644 index 0000000000000..684db1939e279 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/install.ts @@ -0,0 +1,216 @@ +/* + * 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 expect from 'expect'; +import { v4 as uuidv4 } from 'uuid'; +import { ElasticRule } from '@kbn/security-solution-plugin/common/siem_migrations/model/rule_migration.gen'; +import { RuleTranslationResult } from '@kbn/security-solution-plugin/common/siem_migrations/constants'; +import { RuleResponse } from '@kbn/security-solution-plugin/common/api/detection_engine'; +import { deleteAllRules } from '../../../../../common/utils/security_solution'; +import { + RuleMigrationDocument, + createMigrationRules, + defaultElasticRule, + deleteAllMigrationRules, + getMigrationRuleDocuments, + migrationRulesRouteHelpersFactory, + statsOverrideCallbackFactory, +} from '../../utils'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; +import { + createPrebuiltRuleAssetSavedObjects, + createRuleAssetSavedObject, + deleteAllPrebuiltRuleAssets, + deleteAllTimelines, +} from '../../../detections_response/utils'; + +export default ({ getService }: FtrProviderContext) => { + const es = getService('es'); + const log = getService('log'); + const supertest = getService('supertest'); + const securitySolutionApi = getService('securitySolutionApi'); + const migrationRulesRoutes = migrationRulesRouteHelpersFactory(supertest); + + describe('@ess @serverless @serverlessQA Install API', () => { + beforeEach(async () => { + await deleteAllRules(supertest, log); + await deleteAllTimelines(es, log); + await deleteAllPrebuiltRuleAssets(es, log); + await deleteAllMigrationRules(es); + }); + + it('should install all installable custom migration rules', async () => { + const migrationId = uuidv4(); + + const overrideCallback = (index: number): Partial => { + const title = `Rule - ${index}`; + const elasticRule = { ...defaultElasticRule, title }; + return { + migration_id: migrationId, + elastic_rule: elasticRule, + translation_result: index < 2 ? RuleTranslationResult.FULL : undefined, + }; + }; + + const migrationRuleDocuments = getMigrationRuleDocuments(5, overrideCallback); + await createMigrationRules(es, migrationRuleDocuments); + + const installResponse = await migrationRulesRoutes.install({ migrationId, payload: {} }); + expect(installResponse.body).toEqual({ installed: 2 }); + + // fetch installed migration rules information + const response = await migrationRulesRoutes.get({ migrationId }); + const installedMigrationRules = response.body.data.reduce((acc, item) => { + if (item.elastic_rule?.id) { + acc.push(item.elastic_rule); + } + return acc; + }, [] as ElasticRule[]); + expect(installedMigrationRules.length).toEqual(2); + + // fetch installed rules + const { body: rulesResponse } = await securitySolutionApi + .findRules({ query: {} }) + .expect(200); + + const expectedRulesData = expect.arrayContaining( + installedMigrationRules.map((migrationRule) => + expect.objectContaining({ + id: migrationRule.id, + name: migrationRule.title, + }) + ) + ); + + expect(rulesResponse.data).toEqual(expectedRulesData); + + // Installed rules should be disabled + rulesResponse.data.forEach((rule: RuleResponse) => { + expect(rule.enabled).toEqual(false); + }); + }); + + it('should install all installable migration rules matched with prebuilt rules', async () => { + const ruleAssetSavedObject = createRuleAssetSavedObject({ rule_id: 'rule-1', version: 1 }); + await createPrebuiltRuleAssetSavedObjects(es, [ruleAssetSavedObject]); + + const migrationId = uuidv4(); + + const overrideCallback = (index: number): Partial => { + const { query_language: queryLanguage, query, ...rest } = defaultElasticRule; + return { + migration_id: migrationId, + elastic_rule: index < 2 ? { ...rest, prebuilt_rule_id: 'rule-1' } : undefined, + translation_result: index < 2 ? RuleTranslationResult.FULL : undefined, + }; + }; + const migrationRuleDocuments = getMigrationRuleDocuments(4, overrideCallback); + await createMigrationRules(es, migrationRuleDocuments); + + const installResponse = await migrationRulesRoutes.install({ migrationId, payload: {} }); + expect(installResponse.body).toEqual({ installed: 2 }); + + // fetch installed rules + const { body: rulesResponse } = await securitySolutionApi + .findRules({ query: {} }) + .expect(200); + + const expectedInstalledRules = expect.arrayContaining([ + expect.objectContaining(ruleAssetSavedObject['security-rule']), + ]); + expect(rulesResponse.data.length).toEqual(1); + expect(rulesResponse.data).toEqual(expectedInstalledRules); + + // Installed rules should be disabled + rulesResponse.data.forEach((rule: RuleResponse) => { + expect(rule.enabled).toEqual(false); + }); + }); + + it('should install and enable all installable migration rules', async () => { + const migrationId = uuidv4(); + + const overrideCallback = statsOverrideCallbackFactory({ + migrationId, + completed: 2, + fullyTranslated: 2, + }); + const migrationRuleDocuments = getMigrationRuleDocuments(2, overrideCallback); + await createMigrationRules(es, migrationRuleDocuments); + + const installResponse = await migrationRulesRoutes.install({ + migrationId, + payload: { enabled: true }, + }); + expect(installResponse.body).toEqual({ installed: 2 }); + + // fetch installed rules + const { body: rulesResponse } = await securitySolutionApi + .findRules({ query: {} }) + .expect(200); + + expect(rulesResponse.data.length).toEqual(2); + + // Installed rules should be enabled + rulesResponse.data.forEach((rule: RuleResponse) => { + expect(rule.enabled).toEqual(true); + }); + }); + + it('should install migration rules by ids', async () => { + const migrationId = uuidv4(); + + const overrideCallback = statsOverrideCallbackFactory({ + migrationId, + completed: 5, + fullyTranslated: 5, + }); + const migrationRuleDocuments = getMigrationRuleDocuments(5, overrideCallback); + const createdDocumentIds = await createMigrationRules(es, migrationRuleDocuments); + + // Migration rules to install by ids + const ids = createdDocumentIds.slice(0, 3); + + const installResponse = await migrationRulesRoutes.install({ + migrationId, + payload: { ids, enabled: true }, + }); + expect(installResponse.body).toEqual({ installed: 3 }); + + // fetch installed rules + const { body: rulesResponse } = await securitySolutionApi + .findRules({ query: {} }) + .expect(200); + + expect(rulesResponse.data.length).toEqual(3); + + // Installed rules should be enabled + rulesResponse.data.forEach((rule: RuleResponse) => { + expect(rule.enabled).toEqual(true); + }); + }); + + it('should return zero installed rules as a response for the non-existing migration', async () => { + const migrationId = uuidv4(); + const installResponse = await migrationRulesRoutes.install({ migrationId, payload: {} }); + expect(installResponse.body).toEqual({ installed: 0 }); + }); + + it('should return an error if body payload is not passed', async () => { + const migrationId = uuidv4(); + const installResponse = await migrationRulesRoutes.install({ + migrationId, + expectStatusCode: 400, + }); + expect(installResponse.body).toEqual({ + statusCode: 400, + error: 'Bad Request', + message: '[request body]: Expected object, received null', + }); + }); + }); +}; diff --git a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/mocks.ts b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/mocks.ts index ee75f3e4a5dd3..184e19f8d0c9c 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/mocks.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/mocks.ts @@ -101,20 +101,20 @@ export const getMigrationRuleDocuments = ( export const statsOverrideCallbackFactory = ({ migrationId, - failed, - pending, - processing, - completed, - fullyTranslated, - partiallyTranslated, + failed = 0, + pending = 0, + processing = 0, + completed = 0, + fullyTranslated = 0, + partiallyTranslated = 0, }: { migrationId: string; - failed: number; - pending: number; - processing: number; - completed: number; - fullyTranslated: number; - partiallyTranslated: number; + failed?: number; + pending?: number; + processing?: number; + completed?: number; + fullyTranslated?: number; + partiallyTranslated?: number; }) => { const overrideCallback = (index: number): Partial => { let translationResult; diff --git a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/rules.ts b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/rules.ts index 07e845805cda2..1ac078b045467 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/rules.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/rules.ts @@ -15,6 +15,7 @@ import { replaceParams } from '@kbn/openapi-common/shared'; import { SIEM_RULE_MIGRATIONS_ALL_STATS_PATH, SIEM_RULE_MIGRATIONS_PATH, + SIEM_RULE_MIGRATION_INSTALL_PATH, SIEM_RULE_MIGRATION_PATH, SIEM_RULE_MIGRATION_STATS_PATH, SIEM_RULE_MIGRATION_TRANSLATION_STATS_PATH, @@ -25,6 +26,7 @@ import { GetRuleMigrationRequestQuery, GetRuleMigrationResponse, GetRuleMigrationStatsResponse, + InstallMigrationRulesResponse, UpdateRuleMigrationResponse, } from '@kbn/security-solution-plugin/common/siem_migrations/model/api/rules/rule_migration.gen'; import { API_VERSIONS } from '@kbn/security-solution-plugin/common/constants'; @@ -58,6 +60,11 @@ export interface UpdateRulesParams extends MigrationRequestParams { payload?: any; } +export interface InstallRulesParams extends MigrationRequestParams { + /** Optional payload to send */ + payload?: any; +} + export const migrationRulesRouteHelpersFactory = (supertest: SuperTest.Agent) => { return { get: async ({ @@ -112,6 +119,23 @@ export const migrationRulesRouteHelpersFactory = (supertest: SuperTest.Agent) => return response; }, + install: async ({ + migrationId, + payload, + expectStatusCode = 200, + }: InstallRulesParams): Promise<{ body: InstallMigrationRulesResponse }> => { + const response = await supertest + .post(replaceParams(SIEM_RULE_MIGRATION_INSTALL_PATH, { migration_id: migrationId })) + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, API_VERSIONS.internal.v1) + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .send(payload); + + assertStatusCode(expectStatusCode, response); + + return response; + }, + stats: async ({ migrationId, expectStatusCode = 200, From 55f451fe9e2ada9d26ba324e852693396e0fcb5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Luis=20Gonz=C3=A1lez?= Date: Mon, 17 Feb 2025 11:59:55 +0100 Subject: [PATCH 20/78] [Search] Offer self-managed connector as only option (#211206) ## Summary Removing Set up clock. Making Self-managed the only way to create a connector for ECH 9.0 ![CleanShot 2025-02-17 at 10 52 39@2x](https://github.com/user-attachments/assets/f37d989e-cfeb-4657-a480-faa8443e0543) ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The `release_note:breaking` label should be applied in these situations. - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [ ] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) ### Identify risks Does this PR introduce any risks? For example, consider risks like hard to test bugs, performance regression, potential of data loss. Describe the risk, its severity, and mitigation for each identified risk. Invite stakeholders and evaluate how to proceed before merging. - [ ] [See some risk examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) - [ ] ... --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Elastic Machine --- .../translations/translations/fr-FR.json | 4 -- .../translations/translations/ja-JP.json | 4 -- .../translations/translations/zh-CN.json | 4 -- .../connector_description_popover.tsx | 61 +++++++++++----- .../create_connector/create_connector.tsx | 18 ++--- .../create_connector/start_step.tsx | 72 ------------------- 6 files changed, 47 insertions(+), 116 deletions(-) diff --git a/x-pack/platform/plugins/private/translations/translations/fr-FR.json b/x-pack/platform/plugins/private/translations/translations/fr-FR.json index c010294c57fbe..9b0cd93bbf0e9 100644 --- a/x-pack/platform/plugins/private/translations/translations/fr-FR.json +++ b/x-pack/platform/plugins/private/translations/translations/fr-FR.json @@ -16690,13 +16690,9 @@ "xpack.enterpriseSearch.createConnector.startStep.euiFormRow.connectorLabel": "Connecteur", "xpack.enterpriseSearch.createConnector.startStep.euiFormRow.connectorNameLabel": "Nom du connecteur", "xpack.enterpriseSearch.createConnector.startStep.euiFormRow.descriptionLabel": "Description", - "xpack.enterpriseSearch.createConnector.startStep.euiRadio.elasticManagedLabel": "Géré par Elastic", - "xpack.enterpriseSearch.createConnector.startStep.euiRadio.selfManagedLabel": "Autogéré", "xpack.enterpriseSearch.createConnector.startStep.h4.configureIndexAndAPILabel": "Configurer l'index et la clé d’API", "xpack.enterpriseSearch.createConnector.startStep.h4.deploymentLabel": "Déploiement", - "xpack.enterpriseSearch.createConnector.startStep.h4.setUpLabel": "Installation", "xpack.enterpriseSearch.createConnector.startStep.p.thisProcessWillCreateLabel": "Ce processus créera un nouvel index, une clé d'API et un ID de connecteur. Cela est facultatif, mais vous pouvez également utiliser votre propre configuration.", - "xpack.enterpriseSearch.createConnector.startStep.p.whereDoYouWantLabel": "Où souhaitez-vous stocker le connecteur et comment souhaitez-vous le gérer ?", "xpack.enterpriseSearch.createConnector.startStep.p.youWillStartTheLabel": "Vous devrez démarrer le processus de création manuelle d'un nouvel index, d'une clé d'API et d'un ID de connecteur de robot d'indexation. Cela est facultatif, mais vous pouvez également utiliser votre propre configuration.", "xpack.enterpriseSearch.createConnector.startStep.startLabel": "Début", "xpack.enterpriseSearch.defaultSettingsFlyout.body.description.ingestPipelinesLink.link": "pipelines d'ingestion", diff --git a/x-pack/platform/plugins/private/translations/translations/ja-JP.json b/x-pack/platform/plugins/private/translations/translations/ja-JP.json index 5aa19fa1d5d78..72b86723f8af7 100644 --- a/x-pack/platform/plugins/private/translations/translations/ja-JP.json +++ b/x-pack/platform/plugins/private/translations/translations/ja-JP.json @@ -16552,13 +16552,9 @@ "xpack.enterpriseSearch.createConnector.startStep.euiFormRow.connectorLabel": "コネクター", "xpack.enterpriseSearch.createConnector.startStep.euiFormRow.connectorNameLabel": "コネクター名", "xpack.enterpriseSearch.createConnector.startStep.euiFormRow.descriptionLabel": "説明", - "xpack.enterpriseSearch.createConnector.startStep.euiRadio.elasticManagedLabel": "Elasticマネージド", - "xpack.enterpriseSearch.createConnector.startStep.euiRadio.selfManagedLabel": "自己管理", "xpack.enterpriseSearch.createConnector.startStep.h4.configureIndexAndAPILabel": "インデックスとAPIキーを構成", "xpack.enterpriseSearch.createConnector.startStep.h4.deploymentLabel": "デプロイ", - "xpack.enterpriseSearch.createConnector.startStep.h4.setUpLabel": "設定", "xpack.enterpriseSearch.createConnector.startStep.p.thisProcessWillCreateLabel": "このプロセスにより、新しいインデックス、APIキー、コネクターIDが作成されます。任意で、独自の構成を使用することもできます。", - "xpack.enterpriseSearch.createConnector.startStep.p.whereDoYouWantLabel": "コネクターを保存する場所と管理する方法", "xpack.enterpriseSearch.createConnector.startStep.p.youWillStartTheLabel": "新しいインデックス、APIキー、WebクローラーコネクターIDの作成プロセスを手動で開始します。任意で、独自の構成を使用することもできます。", "xpack.enterpriseSearch.createConnector.startStep.startLabel": "開始", "xpack.enterpriseSearch.defaultSettingsFlyout.body.description.ingestPipelinesLink.link": "インジェストパイプライン", diff --git a/x-pack/platform/plugins/private/translations/translations/zh-CN.json b/x-pack/platform/plugins/private/translations/translations/zh-CN.json index e8291424d5f92..c23ba90effe34 100644 --- a/x-pack/platform/plugins/private/translations/translations/zh-CN.json +++ b/x-pack/platform/plugins/private/translations/translations/zh-CN.json @@ -16275,13 +16275,9 @@ "xpack.enterpriseSearch.createConnector.startStep.euiFormRow.connectorLabel": "连接器", "xpack.enterpriseSearch.createConnector.startStep.euiFormRow.connectorNameLabel": "连接器名称", "xpack.enterpriseSearch.createConnector.startStep.euiFormRow.descriptionLabel": "描述", - "xpack.enterpriseSearch.createConnector.startStep.euiRadio.elasticManagedLabel": "Elastic 托管", - "xpack.enterpriseSearch.createConnector.startStep.euiRadio.selfManagedLabel": "自管型", "xpack.enterpriseSearch.createConnector.startStep.h4.configureIndexAndAPILabel": "配置索引和 API 密钥", "xpack.enterpriseSearch.createConnector.startStep.h4.deploymentLabel": "部署", - "xpack.enterpriseSearch.createConnector.startStep.h4.setUpLabel": "设置", "xpack.enterpriseSearch.createConnector.startStep.p.thisProcessWillCreateLabel": "此过程将创建一个新索引、API 密钥和连接器 ID。(可选)您也可以提供自己的配置。", - "xpack.enterpriseSearch.createConnector.startStep.p.whereDoYouWantLabel": "您希望将连接器存储在什么位置?您希望如何管理连接器?", "xpack.enterpriseSearch.createConnector.startStep.p.youWillStartTheLabel": "您将手动开始创建新索引、API 密钥和网络爬虫连接器 ID 的过程。(可选)您也可以提供自己的配置。", "xpack.enterpriseSearch.createConnector.startStep.startLabel": "启动", "xpack.enterpriseSearch.defaultSettingsFlyout.body.description.ingestPipelinesLink.link": "采集管道", diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/create_connector/components/connector_description_popover.tsx b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/create_connector/components/connector_description_popover.tsx index 101cc1493fb7f..f80089cb79c2d 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/create_connector/components/connector_description_popover.tsx +++ b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/create_connector/components/connector_description_popover.tsx @@ -91,11 +91,13 @@ const connectorClientPopoverPanels = [ export interface ConnectorDescriptionPopoverProps { isNative: boolean; showIsOnlySelfManaged: boolean; + isElasticManagedDiscontinued?: boolean; } export const ConnectorDescriptionPopover: React.FC = ({ isNative, showIsOnlySelfManaged, + isElasticManagedDiscontinued, }) => { const [isPopoverOpen, setIsPopoverOpen] = useState(false); const panels = isNative ? nativePopoverPanels : connectorClientPopoverPanels; @@ -126,28 +128,49 @@ export const ConnectorDescriptionPopover: React.FC - {((isNative && !isAgentlessEnabled) || showIsOnlySelfManaged) && ( + {((isNative && !isAgentlessEnabled) || showIsOnlySelfManaged) && + !isElasticManagedDiscontinued && ( + <> + + + + + + + + )} + {isElasticManagedDiscontinued && ( <> )} - {isNative && !isAgentlessEnabled && ( + {isNative && !isAgentlessEnabled && !isElasticManagedDiscontinued && ( <> diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/create_connector/create_connector.tsx b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/create_connector/create_connector.tsx index d9df123fcbe9a..20eb98fa17114 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/create_connector/create_connector.tsx +++ b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/create_connector/create_connector.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { useEffect, useState } from 'react'; +import React, { useState } from 'react'; import { css } from '@emotion/react'; @@ -56,25 +56,17 @@ export const CreateConnector: React.FC = () => { const { overlays } = useKibana().services; const { http } = useValues(HttpLogic); - const { application, history, isAgentlessEnabled } = useValues(KibanaLogic); + const { application, history } = useValues(KibanaLogic); const { error } = useValues(AddConnectorApiLogic); const { euiTheme } = useEuiTheme(); - const [selfManagePreference, setSelfManagePreference] = useState('native'); + const [selfManagePreference, setSelfManagePreference] = + useState('selfManaged'); const { selectedConnector, currentStep, isFormDirty } = useValues(NewConnectorLogic); const { setCurrentStep } = useActions(NewConnectorLogic); const stepStates = generateStepState(currentStep); - useEffect(() => { - if ( - (selectedConnector && !selectedConnector.isNative && selfManagePreference === 'native') || - !isAgentlessEnabled - ) { - setSelfManagePreference('selfManaged'); - } - }, [selectedConnector]); - const getSteps = (selfManaged: boolean): EuiContainedStepProps[] => { return [ { @@ -209,7 +201,7 @@ export const CreateConnector: React.FC = () => { background-size: contain; background-repeat: no-repeat; background-position: bottom center; - min-height: 550px; + min-height: 466px; border: 1px solid ${euiTheme.colors.lightShade}; `} > diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/create_connector/start_step.tsx b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/create_connector/start_step.tsx index f1e9957cd6f3a..93172e3a5c2ac 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/create_connector/start_step.tsx +++ b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/create_connector/start_step.tsx @@ -17,18 +17,15 @@ import { EuiForm, EuiFormRow, EuiPanel, - EuiRadio, EuiSpacer, EuiText, useIsWithinBreakpoints, EuiTitle, - useGeneratedHtmlId, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import * as Constants from '../../../../shared/constants'; -import { KibanaLogic } from '../../../../shared/kibana'; import { isValidIndexName } from '../../../utils/validate_index_name'; import { GeneratedConfigFields } from '../../connector_detail/components/generated_config_fields'; @@ -36,7 +33,6 @@ import { ConnectorViewLogic } from '../../connector_detail/connector_view_logic' import { NewConnectorLogic } from '../../new_index/method_connector/new_connector_logic'; import { ChooseConnector } from './components/choose_connector'; -import { ConnectorDescriptionPopover } from './components/connector_description_popover'; import { ManualConfiguration } from './components/manual_configuration'; import { SelfManagePreference } from './create_connector'; @@ -52,12 +48,9 @@ export const StartStep: React.FC = ({ title, selfManagePreference, setCurrentStep, - onSelfManagePreferenceChange, error, }) => { const isMediumDevice = useIsWithinBreakpoints(['xs', 's', 'm', 'l']); - const elasticManagedRadioButtonId = useGeneratedHtmlId({ prefix: 'elasticManagedRadioButton' }); - const selfManagedRadioButtonId = useGeneratedHtmlId({ prefix: 'selfManagedRadioButton' }); const { rawName, @@ -66,12 +59,10 @@ export const StartStep: React.FC = ({ generatedConfigData, isGenerateLoading, isCreateLoading, - isFormDirty, } = useValues(NewConnectorLogic); const { setRawName, createConnector, generateConnectorName, setFormDirty } = useActions(NewConnectorLogic); const { connector } = useValues(ConnectorViewLogic); - const { isAgentlessEnabled } = useValues(KibanaLogic); const handleNameChange = (e: ChangeEvent) => { setRawName(e.target.value); @@ -183,69 +174,6 @@ export const StartStep: React.FC = ({ {/* Set up */} - - - -

- {i18n.translate('xpack.enterpriseSearch.createConnector.startStep.h4.setUpLabel', { - defaultMessage: 'Setup', - })} -

-
- - -

- {i18n.translate( - 'xpack.enterpriseSearch.createConnector.startStep.p.whereDoYouWantLabel', - { - defaultMessage: 'Choose how to deploy and manage your connector:', - } - )} -

-
- - - - onSelfManagePreferenceChange('native')} - name="setUp" - /> - - - - -     - - onSelfManagePreferenceChange('selfManaged')} - name="setUp" - /> - - - - - -
-
{selfManagePreference === 'selfManaged' ? ( Date: Mon, 17 Feb 2025 12:36:43 +0100 Subject: [PATCH 21/78] SKA: Fix kebab-case issues in obs-ux-management packages (#211312) ## Summary This PR aims at relocating some of the Kibana modules (plugins and packages) into a new folder structure, according to the _Sustainable Kibana Architecture_ initiative. > [!IMPORTANT] > * We kindly ask you to: > * Manually fix the errors in the error section below (if there are any). > * Search for the `packages[\/\\]` and `plugins[\/\\]` patterns in the source code (Babel and Eslint config files), and update them appropriately. > * Manually review `.buildkite/scripts/pipelines/pull_request/pipeline.ts` to ensure that any CI pipeline customizations continue to be correctly applied after the changed path names > * Review all of the updated files, specially the `.ts` and `.js` files listed in the sections below, as some of them contain relative paths that have been updated. > * Think of potential impact of the move, including tooling and configuration files that can be pointing to the relocated modules. E.g.: > * customised eslint rules > * docs pointing to source code > [!NOTE] > * This PR has been auto-generated. > * Any manual contributions will be lost if the 'relocate' script is re-run. > * Try to obtain the missing reviews / approvals before applying manual fixes, and/or keep your changes in a .patch / git stash. > * Please use [#sustainable_kibana_architecture](https://elastic.slack.com/archives/C07TCKTA22E) Slack channel for feedback. Are you trying to rebase this PR to solve merge conflicts? Please follow the steps describe [here](https://elastic.slack.com/archives/C07TCKTA22E/p1734019532879269?thread_ts=1734019339.935419&cid=C07TCKTA22E). #### 4 packages(s) are going to be relocated: | Id | Target folder | | -- | ------------- | | `@kbn/alerting-rule-utils` | `x-pack/platform/packages/shared/alerting-rule-utils` | | `@kbn/observability-alert-details` | `x-pack/solutions/observability/packages/alert-details` | | `@kbn/observability-alerting-test-data` | `x-pack/solutions/observability/packages/alerting-test-data` | | `@kbn/observability-get-padded-alert-time-range-util` | `x-pack/solutions/observability/packages/get-padded-alert-time-range-util` |
Updated references ``` ./.i18nrc.json ./package.json ./packages/kbn-ts-projects/config-paths.json ./src/platform/packages/private/kbn-repo-packages/package-map.json ./tsconfig.base.json ./x-pack/platform/packages/shared/alerting-rule-utils/jest.config.js ./x-pack/solutions/observability/packages/alert-details/jest.config.js ./x-pack/solutions/observability/packages/alerting-test-data/jest.config.js ./x-pack/solutions/observability/packages/get-padded-alert-time-range-util/jest.config.js ./yarn.lock .github/CODEOWNERS ```
Updated relative paths ``` x-pack/platform/packages/shared/alerting-rule-utils/jest.config.js:10 x-pack/platform/packages/shared/alerting-rule-utils/tsconfig.json:2 x-pack/solutions/observability/packages/alert-details/jest.config.js:10 x-pack/solutions/observability/packages/alert-details/tsconfig.json:2 x-pack/solutions/observability/packages/alerting-test-data/jest.config.js:10 x-pack/solutions/observability/packages/alerting-test-data/tsconfig.json:2 x-pack/solutions/observability/packages/get-padded-alert-time-range-util/jest.config.js:10 x-pack/solutions/observability/packages/get-padded-alert-time-range-util/tsconfig.json:2 ```
--- .github/CODEOWNERS | 8 ++++---- .i18nrc.json | 2 +- package.json | 8 ++++---- tsconfig.base.json | 16 ++++++++-------- .../README.md | 0 .../index.ts | 0 .../jest.config.js | 2 +- .../kibana.jsonc | 0 .../package.json | 0 .../src/get_ecs_groups.test.ts | 0 .../src/get_ecs_groups.ts | 0 .../tsconfig.json | 0 .../{alert_details => alert-details}/README.md | 0 .../{alert_details => alert-details}/index.ts | 0 .../jest.config.js | 2 +- .../kibana.jsonc | 0 .../package.json | 0 .../alert_active_time_range_annotation.tsx | 0 .../src/components/alert_annotation.tsx | 0 .../components/alert_threshold_annotation.tsx | 0 .../alert_threshold_time_range_rect.tsx | 0 .../src/hooks/use_alerts_history.test.tsx | 0 .../src/hooks/use_alerts_history.ts | 0 .../tsconfig.json | 0 .../README.md | 0 .../index.ts | 0 .../jest.config.js | 2 +- .../kibana.jsonc | 0 .../package.json | 0 .../src/constants.ts | 0 .../src/create_apm_error_count_threshold_rule.ts | 0 .../create_apm_failed_transaction_rate_rule.ts | 0 .../src/create_custom_threshold_rule.ts | 0 .../src/create_data_view.ts | 0 .../src/create_index_connector.ts | 0 .../src/create_rule.ts | 0 .../src/get_kibana_url.ts | 0 .../src/run.ts | 0 .../src/scenarios/custom_threshold_log_count.ts | 0 .../custom_threshold_log_count_groupby.ts | 0 .../custom_threshold_log_count_nodata.ts | 0 .../src/scenarios/custom_threshold_metric_avg.ts | 0 .../custom_threshold_metric_avg_groupby.ts | 0 .../custom_threshold_metric_avg_nodata.ts | 0 .../src/scenarios/index.ts | 0 .../tsconfig.json | 0 .../README.md | 0 .../index.ts | 0 .../jest.config.js | 2 +- .../kibana.jsonc | 0 .../package.json | 0 .../src/get_padded_alert_time_range.test.ts | 0 .../src/get_padded_alert_time_range.ts | 0 .../tsconfig.json | 0 yarn.lock | 8 ++++---- 55 files changed, 25 insertions(+), 25 deletions(-) rename x-pack/platform/packages/shared/{alerting_rule_utils => alerting-rule-utils}/README.md (100%) rename x-pack/platform/packages/shared/{alerting_rule_utils => alerting-rule-utils}/index.ts (100%) rename x-pack/platform/packages/shared/{alerting_rule_utils => alerting-rule-utils}/jest.config.js (81%) rename x-pack/platform/packages/shared/{alerting_rule_utils => alerting-rule-utils}/kibana.jsonc (100%) rename x-pack/platform/packages/shared/{alerting_rule_utils => alerting-rule-utils}/package.json (100%) rename x-pack/platform/packages/shared/{alerting_rule_utils => alerting-rule-utils}/src/get_ecs_groups.test.ts (100%) rename x-pack/platform/packages/shared/{alerting_rule_utils => alerting-rule-utils}/src/get_ecs_groups.ts (100%) rename x-pack/platform/packages/shared/{alerting_rule_utils => alerting-rule-utils}/tsconfig.json (100%) rename x-pack/solutions/observability/packages/{alert_details => alert-details}/README.md (100%) rename x-pack/solutions/observability/packages/{alert_details => alert-details}/index.ts (100%) rename x-pack/solutions/observability/packages/{alert_details => alert-details}/jest.config.js (96%) rename x-pack/solutions/observability/packages/{alert_details => alert-details}/kibana.jsonc (100%) rename x-pack/solutions/observability/packages/{alert_details => alert-details}/package.json (100%) rename x-pack/solutions/observability/packages/{alert_details => alert-details}/src/components/alert_active_time_range_annotation.tsx (100%) rename x-pack/solutions/observability/packages/{alert_details => alert-details}/src/components/alert_annotation.tsx (100%) rename x-pack/solutions/observability/packages/{alert_details => alert-details}/src/components/alert_threshold_annotation.tsx (100%) rename x-pack/solutions/observability/packages/{alert_details => alert-details}/src/components/alert_threshold_time_range_rect.tsx (100%) rename x-pack/solutions/observability/packages/{alert_details => alert-details}/src/hooks/use_alerts_history.test.tsx (100%) rename x-pack/solutions/observability/packages/{alert_details => alert-details}/src/hooks/use_alerts_history.ts (100%) rename x-pack/solutions/observability/packages/{alert_details => alert-details}/tsconfig.json (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/README.md (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/index.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/jest.config.js (95%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/kibana.jsonc (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/package.json (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/src/constants.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/src/create_apm_error_count_threshold_rule.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/src/create_apm_failed_transaction_rate_rule.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/src/create_custom_threshold_rule.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/src/create_data_view.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/src/create_index_connector.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/src/create_rule.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/src/get_kibana_url.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/src/run.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/src/scenarios/custom_threshold_log_count.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/src/scenarios/custom_threshold_log_count_groupby.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/src/scenarios/custom_threshold_log_count_nodata.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/src/scenarios/custom_threshold_metric_avg.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/src/scenarios/custom_threshold_metric_avg_groupby.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/src/scenarios/custom_threshold_metric_avg_nodata.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/src/scenarios/index.ts (100%) rename x-pack/solutions/observability/packages/{alerting_test_data => alerting-test-data}/tsconfig.json (100%) rename x-pack/solutions/observability/packages/{get_padded_alert_time_range_util => get-padded-alert-time-range-util}/README.md (100%) rename x-pack/solutions/observability/packages/{get_padded_alert_time_range_util => get-padded-alert-time-range-util}/index.ts (100%) rename x-pack/solutions/observability/packages/{get_padded_alert_time_range_util => get-padded-alert-time-range-util}/jest.config.js (92%) rename x-pack/solutions/observability/packages/{get_padded_alert_time_range_util => get-padded-alert-time-range-util}/kibana.jsonc (100%) rename x-pack/solutions/observability/packages/{get_padded_alert_time_range_util => get-padded-alert-time-range-util}/package.json (100%) rename x-pack/solutions/observability/packages/{get_padded_alert_time_range_util => get-padded-alert-time-range-util}/src/get_padded_alert_time_range.test.ts (100%) rename x-pack/solutions/observability/packages/{get_padded_alert_time_range_util => get-padded-alert-time-range-util}/src/get_padded_alert_time_range.ts (100%) rename x-pack/solutions/observability/packages/{get_padded_alert_time_range_util => get-padded-alert-time-range-util}/tsconfig.json (100%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 07fc3d445e5c2..3b0c9db5810fd 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -805,7 +805,7 @@ x-pack/platform/packages/shared/ai-assistant/icon @elastic/appex-sharedux x-pack/platform/packages/shared/ai-infra/inference-common @elastic/appex-ai-infra x-pack/platform/packages/shared/ai-infra/inference-langchain @elastic/appex-ai-infra x-pack/platform/packages/shared/ai-infra/product-doc-common @elastic/appex-ai-infra -x-pack/platform/packages/shared/alerting_rule_utils @elastic/obs-ux-management-team +x-pack/platform/packages/shared/alerting-rule-utils @elastic/obs-ux-management-team x-pack/platform/packages/shared/file-upload-common @elastic/ml-ui x-pack/platform/packages/shared/index-lifecycle-management/index_lifecycle_management_common_shared @elastic/kibana-management x-pack/platform/packages/shared/index-management/index_management_shared_types @elastic/kibana-management @@ -917,9 +917,9 @@ x-pack/platform/plugins/shared/stack_connectors @elastic/response-ops x-pack/platform/plugins/shared/task_manager @elastic/response-ops x-pack/platform/plugins/shared/timelines @elastic/security-threat-hunting-investigations x-pack/platform/plugins/shared/triggers_actions_ui @elastic/response-ops -x-pack/solutions/observability/packages/alert_details @elastic/obs-ux-management-team -x-pack/solutions/observability/packages/alerting_test_data @elastic/obs-ux-management-team -x-pack/solutions/observability/packages/get_padded_alert_time_range_util @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/alert-details @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/alerting-test-data @elastic/obs-ux-management-team +x-pack/solutions/observability/packages/get-padded-alert-time-range-util @elastic/obs-ux-management-team x-pack/solutions/observability/packages/kbn-alerts-grouping @elastic/response-ops x-pack/solutions/observability/packages/kbn-custom-integrations @elastic/obs-ux-logs-team x-pack/solutions/observability/packages/kbn-investigation-shared @elastic/obs-ux-management-team diff --git a/.i18nrc.json b/.i18nrc.json index 573db00934f08..1cffd1c23f767 100644 --- a/.i18nrc.json +++ b/.i18nrc.json @@ -21,7 +21,7 @@ "domDragDrop": "src/platform/packages/shared/kbn-dom-drag-drop", "controls": "src/platform/plugins/shared/controls", "data": "src/platform/plugins/shared/data", - "observabilityAlertDetails": "x-pack/solutions/observability/packages/alert_details", + "observabilityAlertDetails": "x-pack/solutions/observability/packages/alert-details", "dataViews": "src/platform/plugins/shared/data_views", "defaultNavigation": ["packages/default-nav", "src/platform/packages/private/default-nav"], "devTools": "src/platform/plugins/shared/dev_tools", diff --git a/package.json b/package.json index 5e69dfd7cb554..af85bbf3e3a16 100644 --- a/package.json +++ b/package.json @@ -174,7 +174,7 @@ "@kbn/alerting-example-plugin": "link:x-pack/examples/alerting_example", "@kbn/alerting-fixture-plugin": "link:x-pack/test/functional_with_es_ssl/plugins/alerts", "@kbn/alerting-plugin": "link:x-pack/platform/plugins/shared/alerting", - "@kbn/alerting-rule-utils": "link:x-pack/platform/packages/shared/alerting_rule_utils", + "@kbn/alerting-rule-utils": "link:x-pack/platform/packages/shared/alerting-rule-utils", "@kbn/alerting-state-types": "link:x-pack/platform/packages/private/kbn-alerting-state-types", "@kbn/alerting-types": "link:src/platform/packages/shared/kbn-alerting-types", "@kbn/alerts-as-data-utils": "link:src/platform/packages/shared/kbn-alerts-as-data-utils", @@ -701,10 +701,10 @@ "@kbn/observability-ai-assistant-plugin": "link:x-pack/platform/plugins/shared/observability_ai_assistant", "@kbn/observability-ai-common": "link:x-pack/solutions/observability/packages/observability-ai/observability-ai-common", "@kbn/observability-ai-server": "link:x-pack/solutions/observability/packages/observability-ai/observability-ai-server", - "@kbn/observability-alert-details": "link:x-pack/solutions/observability/packages/alert_details", - "@kbn/observability-alerting-test-data": "link:x-pack/solutions/observability/packages/alerting_test_data", + "@kbn/observability-alert-details": "link:x-pack/solutions/observability/packages/alert-details", + "@kbn/observability-alerting-test-data": "link:x-pack/solutions/observability/packages/alerting-test-data", "@kbn/observability-fixtures-plugin": "link:x-pack/test/cases_api_integration/common/plugins/observability", - "@kbn/observability-get-padded-alert-time-range-util": "link:x-pack/solutions/observability/packages/get_padded_alert_time_range_util", + "@kbn/observability-get-padded-alert-time-range-util": "link:x-pack/solutions/observability/packages/get-padded-alert-time-range-util", "@kbn/observability-logs-explorer-plugin": "link:x-pack/solutions/observability/plugins/observability_logs_explorer", "@kbn/observability-onboarding-plugin": "link:x-pack/solutions/observability/plugins/observability_onboarding", "@kbn/observability-plugin": "link:x-pack/solutions/observability/plugins/observability", diff --git a/tsconfig.base.json b/tsconfig.base.json index e70ed8130396e..2515856bd6ca8 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -48,8 +48,8 @@ "@kbn/alerting-fixture-plugin/*": ["x-pack/test/functional_with_es_ssl/plugins/alerts/*"], "@kbn/alerting-plugin": ["x-pack/platform/plugins/shared/alerting"], "@kbn/alerting-plugin/*": ["x-pack/platform/plugins/shared/alerting/*"], - "@kbn/alerting-rule-utils": ["x-pack/platform/packages/shared/alerting_rule_utils"], - "@kbn/alerting-rule-utils/*": ["x-pack/platform/packages/shared/alerting_rule_utils/*"], + "@kbn/alerting-rule-utils": ["x-pack/platform/packages/shared/alerting-rule-utils"], + "@kbn/alerting-rule-utils/*": ["x-pack/platform/packages/shared/alerting-rule-utils/*"], "@kbn/alerting-state-types": ["x-pack/platform/packages/private/kbn-alerting-state-types"], "@kbn/alerting-state-types/*": ["x-pack/platform/packages/private/kbn-alerting-state-types/*"], "@kbn/alerting-types": ["src/platform/packages/shared/kbn-alerting-types"], @@ -1344,14 +1344,14 @@ "@kbn/observability-ai-common/*": ["x-pack/solutions/observability/packages/observability-ai/observability-ai-common/*"], "@kbn/observability-ai-server": ["x-pack/solutions/observability/packages/observability-ai/observability-ai-server"], "@kbn/observability-ai-server/*": ["x-pack/solutions/observability/packages/observability-ai/observability-ai-server/*"], - "@kbn/observability-alert-details": ["x-pack/solutions/observability/packages/alert_details"], - "@kbn/observability-alert-details/*": ["x-pack/solutions/observability/packages/alert_details/*"], - "@kbn/observability-alerting-test-data": ["x-pack/solutions/observability/packages/alerting_test_data"], - "@kbn/observability-alerting-test-data/*": ["x-pack/solutions/observability/packages/alerting_test_data/*"], + "@kbn/observability-alert-details": ["x-pack/solutions/observability/packages/alert-details"], + "@kbn/observability-alert-details/*": ["x-pack/solutions/observability/packages/alert-details/*"], + "@kbn/observability-alerting-test-data": ["x-pack/solutions/observability/packages/alerting-test-data"], + "@kbn/observability-alerting-test-data/*": ["x-pack/solutions/observability/packages/alerting-test-data/*"], "@kbn/observability-fixtures-plugin": ["x-pack/test/cases_api_integration/common/plugins/observability"], "@kbn/observability-fixtures-plugin/*": ["x-pack/test/cases_api_integration/common/plugins/observability/*"], - "@kbn/observability-get-padded-alert-time-range-util": ["x-pack/solutions/observability/packages/get_padded_alert_time_range_util"], - "@kbn/observability-get-padded-alert-time-range-util/*": ["x-pack/solutions/observability/packages/get_padded_alert_time_range_util/*"], + "@kbn/observability-get-padded-alert-time-range-util": ["x-pack/solutions/observability/packages/get-padded-alert-time-range-util"], + "@kbn/observability-get-padded-alert-time-range-util/*": ["x-pack/solutions/observability/packages/get-padded-alert-time-range-util/*"], "@kbn/observability-logs-explorer-plugin": ["x-pack/solutions/observability/plugins/observability_logs_explorer"], "@kbn/observability-logs-explorer-plugin/*": ["x-pack/solutions/observability/plugins/observability_logs_explorer/*"], "@kbn/observability-onboarding-plugin": ["x-pack/solutions/observability/plugins/observability_onboarding"], diff --git a/x-pack/platform/packages/shared/alerting_rule_utils/README.md b/x-pack/platform/packages/shared/alerting-rule-utils/README.md similarity index 100% rename from x-pack/platform/packages/shared/alerting_rule_utils/README.md rename to x-pack/platform/packages/shared/alerting-rule-utils/README.md diff --git a/x-pack/platform/packages/shared/alerting_rule_utils/index.ts b/x-pack/platform/packages/shared/alerting-rule-utils/index.ts similarity index 100% rename from x-pack/platform/packages/shared/alerting_rule_utils/index.ts rename to x-pack/platform/packages/shared/alerting-rule-utils/index.ts diff --git a/x-pack/platform/packages/shared/alerting_rule_utils/jest.config.js b/x-pack/platform/packages/shared/alerting-rule-utils/jest.config.js similarity index 81% rename from x-pack/platform/packages/shared/alerting_rule_utils/jest.config.js rename to x-pack/platform/packages/shared/alerting-rule-utils/jest.config.js index 120294e177a35..2abb1a27e80a6 100644 --- a/x-pack/platform/packages/shared/alerting_rule_utils/jest.config.js +++ b/x-pack/platform/packages/shared/alerting-rule-utils/jest.config.js @@ -8,5 +8,5 @@ module.exports = { preset: '@kbn/test', rootDir: '../../../../..', - roots: ['/x-pack/platform/packages/shared/alerting_rule_utils'], + roots: ['/x-pack/platform/packages/shared/alerting-rule-utils'], }; diff --git a/x-pack/platform/packages/shared/alerting_rule_utils/kibana.jsonc b/x-pack/platform/packages/shared/alerting-rule-utils/kibana.jsonc similarity index 100% rename from x-pack/platform/packages/shared/alerting_rule_utils/kibana.jsonc rename to x-pack/platform/packages/shared/alerting-rule-utils/kibana.jsonc diff --git a/x-pack/platform/packages/shared/alerting_rule_utils/package.json b/x-pack/platform/packages/shared/alerting-rule-utils/package.json similarity index 100% rename from x-pack/platform/packages/shared/alerting_rule_utils/package.json rename to x-pack/platform/packages/shared/alerting-rule-utils/package.json diff --git a/x-pack/platform/packages/shared/alerting_rule_utils/src/get_ecs_groups.test.ts b/x-pack/platform/packages/shared/alerting-rule-utils/src/get_ecs_groups.test.ts similarity index 100% rename from x-pack/platform/packages/shared/alerting_rule_utils/src/get_ecs_groups.test.ts rename to x-pack/platform/packages/shared/alerting-rule-utils/src/get_ecs_groups.test.ts diff --git a/x-pack/platform/packages/shared/alerting_rule_utils/src/get_ecs_groups.ts b/x-pack/platform/packages/shared/alerting-rule-utils/src/get_ecs_groups.ts similarity index 100% rename from x-pack/platform/packages/shared/alerting_rule_utils/src/get_ecs_groups.ts rename to x-pack/platform/packages/shared/alerting-rule-utils/src/get_ecs_groups.ts diff --git a/x-pack/platform/packages/shared/alerting_rule_utils/tsconfig.json b/x-pack/platform/packages/shared/alerting-rule-utils/tsconfig.json similarity index 100% rename from x-pack/platform/packages/shared/alerting_rule_utils/tsconfig.json rename to x-pack/platform/packages/shared/alerting-rule-utils/tsconfig.json diff --git a/x-pack/solutions/observability/packages/alert_details/README.md b/x-pack/solutions/observability/packages/alert-details/README.md similarity index 100% rename from x-pack/solutions/observability/packages/alert_details/README.md rename to x-pack/solutions/observability/packages/alert-details/README.md diff --git a/x-pack/solutions/observability/packages/alert_details/index.ts b/x-pack/solutions/observability/packages/alert-details/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/alert_details/index.ts rename to x-pack/solutions/observability/packages/alert-details/index.ts diff --git a/x-pack/solutions/observability/packages/alert_details/jest.config.js b/x-pack/solutions/observability/packages/alert-details/jest.config.js similarity index 96% rename from x-pack/solutions/observability/packages/alert_details/jest.config.js rename to x-pack/solutions/observability/packages/alert-details/jest.config.js index b7c6f40e5bd51..ccdc72ec05af7 100644 --- a/x-pack/solutions/observability/packages/alert_details/jest.config.js +++ b/x-pack/solutions/observability/packages/alert-details/jest.config.js @@ -8,5 +8,5 @@ module.exports = { preset: '@kbn/test', rootDir: '../../../../..', - roots: ['/x-pack/solutions/observability/packages/alert_details'], + roots: ['/x-pack/solutions/observability/packages/alert-details'], }; diff --git a/x-pack/solutions/observability/packages/alert_details/kibana.jsonc b/x-pack/solutions/observability/packages/alert-details/kibana.jsonc similarity index 100% rename from x-pack/solutions/observability/packages/alert_details/kibana.jsonc rename to x-pack/solutions/observability/packages/alert-details/kibana.jsonc diff --git a/x-pack/solutions/observability/packages/alert_details/package.json b/x-pack/solutions/observability/packages/alert-details/package.json similarity index 100% rename from x-pack/solutions/observability/packages/alert_details/package.json rename to x-pack/solutions/observability/packages/alert-details/package.json diff --git a/x-pack/solutions/observability/packages/alert_details/src/components/alert_active_time_range_annotation.tsx b/x-pack/solutions/observability/packages/alert-details/src/components/alert_active_time_range_annotation.tsx similarity index 100% rename from x-pack/solutions/observability/packages/alert_details/src/components/alert_active_time_range_annotation.tsx rename to x-pack/solutions/observability/packages/alert-details/src/components/alert_active_time_range_annotation.tsx diff --git a/x-pack/solutions/observability/packages/alert_details/src/components/alert_annotation.tsx b/x-pack/solutions/observability/packages/alert-details/src/components/alert_annotation.tsx similarity index 100% rename from x-pack/solutions/observability/packages/alert_details/src/components/alert_annotation.tsx rename to x-pack/solutions/observability/packages/alert-details/src/components/alert_annotation.tsx diff --git a/x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_annotation.tsx b/x-pack/solutions/observability/packages/alert-details/src/components/alert_threshold_annotation.tsx similarity index 100% rename from x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_annotation.tsx rename to x-pack/solutions/observability/packages/alert-details/src/components/alert_threshold_annotation.tsx diff --git a/x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_time_range_rect.tsx b/x-pack/solutions/observability/packages/alert-details/src/components/alert_threshold_time_range_rect.tsx similarity index 100% rename from x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_time_range_rect.tsx rename to x-pack/solutions/observability/packages/alert-details/src/components/alert_threshold_time_range_rect.tsx diff --git a/x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.test.tsx b/x-pack/solutions/observability/packages/alert-details/src/hooks/use_alerts_history.test.tsx similarity index 100% rename from x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.test.tsx rename to x-pack/solutions/observability/packages/alert-details/src/hooks/use_alerts_history.test.tsx diff --git a/x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.ts b/x-pack/solutions/observability/packages/alert-details/src/hooks/use_alerts_history.ts similarity index 100% rename from x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.ts rename to x-pack/solutions/observability/packages/alert-details/src/hooks/use_alerts_history.ts diff --git a/x-pack/solutions/observability/packages/alert_details/tsconfig.json b/x-pack/solutions/observability/packages/alert-details/tsconfig.json similarity index 100% rename from x-pack/solutions/observability/packages/alert_details/tsconfig.json rename to x-pack/solutions/observability/packages/alert-details/tsconfig.json diff --git a/x-pack/solutions/observability/packages/alerting_test_data/README.md b/x-pack/solutions/observability/packages/alerting-test-data/README.md similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/README.md rename to x-pack/solutions/observability/packages/alerting-test-data/README.md diff --git a/x-pack/solutions/observability/packages/alerting_test_data/index.ts b/x-pack/solutions/observability/packages/alerting-test-data/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/index.ts rename to x-pack/solutions/observability/packages/alerting-test-data/index.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/jest.config.js b/x-pack/solutions/observability/packages/alerting-test-data/jest.config.js similarity index 95% rename from x-pack/solutions/observability/packages/alerting_test_data/jest.config.js rename to x-pack/solutions/observability/packages/alerting-test-data/jest.config.js index 6a296e9d22c0d..02b19c9b924e2 100644 --- a/x-pack/solutions/observability/packages/alerting_test_data/jest.config.js +++ b/x-pack/solutions/observability/packages/alerting-test-data/jest.config.js @@ -8,5 +8,5 @@ module.exports = { preset: '@kbn/test', rootDir: '../../../../..', - roots: ['/x-pack/solutions/observability/packages/alerting_test_data'], + roots: ['/x-pack/solutions/observability/packages/alerting-test-data'], }; diff --git a/x-pack/solutions/observability/packages/alerting_test_data/kibana.jsonc b/x-pack/solutions/observability/packages/alerting-test-data/kibana.jsonc similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/kibana.jsonc rename to x-pack/solutions/observability/packages/alerting-test-data/kibana.jsonc diff --git a/x-pack/solutions/observability/packages/alerting_test_data/package.json b/x-pack/solutions/observability/packages/alerting-test-data/package.json similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/package.json rename to x-pack/solutions/observability/packages/alerting-test-data/package.json diff --git a/x-pack/solutions/observability/packages/alerting_test_data/src/constants.ts b/x-pack/solutions/observability/packages/alerting-test-data/src/constants.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/src/constants.ts rename to x-pack/solutions/observability/packages/alerting-test-data/src/constants.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_error_count_threshold_rule.ts b/x-pack/solutions/observability/packages/alerting-test-data/src/create_apm_error_count_threshold_rule.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_error_count_threshold_rule.ts rename to x-pack/solutions/observability/packages/alerting-test-data/src/create_apm_error_count_threshold_rule.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts b/x-pack/solutions/observability/packages/alerting-test-data/src/create_apm_failed_transaction_rate_rule.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts rename to x-pack/solutions/observability/packages/alerting-test-data/src/create_apm_failed_transaction_rate_rule.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts b/x-pack/solutions/observability/packages/alerting-test-data/src/create_custom_threshold_rule.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts rename to x-pack/solutions/observability/packages/alerting-test-data/src/create_custom_threshold_rule.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts b/x-pack/solutions/observability/packages/alerting-test-data/src/create_data_view.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts rename to x-pack/solutions/observability/packages/alerting-test-data/src/create_data_view.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/src/create_index_connector.ts b/x-pack/solutions/observability/packages/alerting-test-data/src/create_index_connector.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/src/create_index_connector.ts rename to x-pack/solutions/observability/packages/alerting-test-data/src/create_index_connector.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/src/create_rule.ts b/x-pack/solutions/observability/packages/alerting-test-data/src/create_rule.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/src/create_rule.ts rename to x-pack/solutions/observability/packages/alerting-test-data/src/create_rule.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/src/get_kibana_url.ts b/x-pack/solutions/observability/packages/alerting-test-data/src/get_kibana_url.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/src/get_kibana_url.ts rename to x-pack/solutions/observability/packages/alerting-test-data/src/get_kibana_url.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/src/run.ts b/x-pack/solutions/observability/packages/alerting-test-data/src/run.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/src/run.ts rename to x-pack/solutions/observability/packages/alerting-test-data/src/run.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts b/x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts rename to x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts b/x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_groupby.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts rename to x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_groupby.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts b/x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_nodata.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts rename to x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_nodata.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts b/x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts rename to x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts b/x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_groupby.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts rename to x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_groupby.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts b/x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_nodata.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts rename to x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_nodata.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/index.ts b/x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/index.ts rename to x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/index.ts diff --git a/x-pack/solutions/observability/packages/alerting_test_data/tsconfig.json b/x-pack/solutions/observability/packages/alerting-test-data/tsconfig.json similarity index 100% rename from x-pack/solutions/observability/packages/alerting_test_data/tsconfig.json rename to x-pack/solutions/observability/packages/alerting-test-data/tsconfig.json diff --git a/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/README.md b/x-pack/solutions/observability/packages/get-padded-alert-time-range-util/README.md similarity index 100% rename from x-pack/solutions/observability/packages/get_padded_alert_time_range_util/README.md rename to x-pack/solutions/observability/packages/get-padded-alert-time-range-util/README.md diff --git a/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/index.ts b/x-pack/solutions/observability/packages/get-padded-alert-time-range-util/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/get_padded_alert_time_range_util/index.ts rename to x-pack/solutions/observability/packages/get-padded-alert-time-range-util/index.ts diff --git a/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/jest.config.js b/x-pack/solutions/observability/packages/get-padded-alert-time-range-util/jest.config.js similarity index 92% rename from x-pack/solutions/observability/packages/get_padded_alert_time_range_util/jest.config.js rename to x-pack/solutions/observability/packages/get-padded-alert-time-range-util/jest.config.js index 6941925a188e2..422d4c195600d 100644 --- a/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/jest.config.js +++ b/x-pack/solutions/observability/packages/get-padded-alert-time-range-util/jest.config.js @@ -8,5 +8,5 @@ module.exports = { preset: '@kbn/test', rootDir: '../../../../..', - roots: ['/x-pack/solutions/observability/packages/get_padded_alert_time_range_util'], + roots: ['/x-pack/solutions/observability/packages/get-padded-alert-time-range-util'], }; diff --git a/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/kibana.jsonc b/x-pack/solutions/observability/packages/get-padded-alert-time-range-util/kibana.jsonc similarity index 100% rename from x-pack/solutions/observability/packages/get_padded_alert_time_range_util/kibana.jsonc rename to x-pack/solutions/observability/packages/get-padded-alert-time-range-util/kibana.jsonc diff --git a/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/package.json b/x-pack/solutions/observability/packages/get-padded-alert-time-range-util/package.json similarity index 100% rename from x-pack/solutions/observability/packages/get_padded_alert_time_range_util/package.json rename to x-pack/solutions/observability/packages/get-padded-alert-time-range-util/package.json diff --git a/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.test.ts b/x-pack/solutions/observability/packages/get-padded-alert-time-range-util/src/get_padded_alert_time_range.test.ts similarity index 100% rename from x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.test.ts rename to x-pack/solutions/observability/packages/get-padded-alert-time-range-util/src/get_padded_alert_time_range.test.ts diff --git a/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts b/x-pack/solutions/observability/packages/get-padded-alert-time-range-util/src/get_padded_alert_time_range.ts similarity index 100% rename from x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts rename to x-pack/solutions/observability/packages/get-padded-alert-time-range-util/src/get_padded_alert_time_range.ts diff --git a/x-pack/solutions/observability/packages/get_padded_alert_time_range_util/tsconfig.json b/x-pack/solutions/observability/packages/get-padded-alert-time-range-util/tsconfig.json similarity index 100% rename from x-pack/solutions/observability/packages/get_padded_alert_time_range_util/tsconfig.json rename to x-pack/solutions/observability/packages/get-padded-alert-time-range-util/tsconfig.json diff --git a/yarn.lock b/yarn.lock index c26130007f476..522ccc9aff4f3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3965,7 +3965,7 @@ version "0.0.0" uid "" -"@kbn/alerting-rule-utils@link:x-pack/platform/packages/shared/alerting_rule_utils": +"@kbn/alerting-rule-utils@link:x-pack/platform/packages/shared/alerting-rule-utils": version "0.0.0" uid "" @@ -6557,11 +6557,11 @@ version "0.0.0" uid "" -"@kbn/observability-alert-details@link:x-pack/solutions/observability/packages/alert_details": +"@kbn/observability-alert-details@link:x-pack/solutions/observability/packages/alert-details": version "0.0.0" uid "" -"@kbn/observability-alerting-test-data@link:x-pack/solutions/observability/packages/alerting_test_data": +"@kbn/observability-alerting-test-data@link:x-pack/solutions/observability/packages/alerting-test-data": version "0.0.0" uid "" @@ -6569,7 +6569,7 @@ version "0.0.0" uid "" -"@kbn/observability-get-padded-alert-time-range-util@link:x-pack/solutions/observability/packages/get_padded_alert_time_range_util": +"@kbn/observability-get-padded-alert-time-range-util@link:x-pack/solutions/observability/packages/get-padded-alert-time-range-util": version "0.0.0" uid "" From 8eb0552a2c695669824a93680883a0284a945ea2 Mon Sep 17 00:00:00 2001 From: "elastic-vault-github-plugin-prod[bot]" <150874479+elastic-vault-github-plugin-prod[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2025 13:18:22 +0100 Subject: [PATCH 22/78] [main] Sync bundled packages with Package Storage (#211272) Automated by https://buildkite.com/elastic/package-storage-infra-kibana-discover-release-branches/builds/2284 Co-authored-by: elasticmachine Co-authored-by: Julia Bardi <90178898+juliaElastic@users.noreply.github.com> --- fleet_packages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fleet_packages.json b/fleet_packages.json index 3e56b96136622..339bba0f1da71 100644 --- a/fleet_packages.json +++ b/fleet_packages.json @@ -52,7 +52,7 @@ }, { "name": "synthetics", - "version": "1.2.2" + "version": "1.3.0" }, { "name": "security_detection_engine", From 67f6fd3ec87eb41cfdbc89cee9a5cfa9f1bf2061 Mon Sep 17 00:00:00 2001 From: Robert Jaszczurek <92210485+rbrtj@users.noreply.github.com> Date: Mon, 17 Feb 2025 13:22:33 +0100 Subject: [PATCH 23/78] [Discover] Display a warning and a tooltip for the `_score` column in the grid (#211013) Resolves: https://github.com/elastic/kibana/issues/167271 https://github.com/user-attachments/assets/f21be330-a85d-471c-a6c3-d172ff7a15d2 --- .../src/components/data_table.tsx | 4 ++ .../components/data_table_column_header.tsx | 39 +++++++++++++++++++ .../src/components/data_table_columns.tsx | 30 +++++++++++++- .../kbn-unified-data-table/src/constants.ts | 2 + 4 files changed, 74 insertions(+), 1 deletion(-) diff --git a/src/platform/packages/shared/kbn-unified-data-table/src/components/data_table.tsx b/src/platform/packages/shared/kbn-unified-data-table/src/components/data_table.tsx index 7d8f976b0c5be..28f8fb6e1cd97 100644 --- a/src/platform/packages/shared/kbn-unified-data-table/src/components/data_table.tsx +++ b/src/platform/packages/shared/kbn-unified-data-table/src/components/data_table.tsx @@ -580,6 +580,8 @@ export const UnifiedDataTable = ({ onSort, }); + const { columns: sortedColumns } = sorting ?? {}; + const displayedRows = useMemo(() => { if (!sortedRows) { return []; @@ -890,6 +892,7 @@ export const UnifiedDataTable = ({ headerRowHeightLines, customGridColumnsConfiguration, onResize, + sortedColumns, }), [ cellActionsHandling, @@ -913,6 +916,7 @@ export const UnifiedDataTable = ({ valueToStringConverter, visibleCellActions, visibleColumns, + sortedColumns, ] ); diff --git a/src/platform/packages/shared/kbn-unified-data-table/src/components/data_table_column_header.tsx b/src/platform/packages/shared/kbn-unified-data-table/src/components/data_table_column_header.tsx index 76b8f9bfb3365..6b3987a10a70d 100644 --- a/src/platform/packages/shared/kbn-unified-data-table/src/components/data_table_column_header.tsx +++ b/src/platform/packages/shared/kbn-unified-data-table/src/components/data_table_column_header.tsx @@ -136,3 +136,42 @@ export const DataTableTimeColumnHeader = ({
); }; + +export const DataTableScoreColumnHeader = ({ + isSorted, + showColumnTokens, + columnName, + columnsMeta, + dataView, + headerRowHeight, + columnDisplayName, +}: DataTableColumnHeaderProps & { isSorted?: boolean }) => { + const tooltipContent = i18n.translate('unifiedDataTable.tableHeader.scoreFieldIconTooltip', { + defaultMessage: 'In order to retrieve values for _score, you must sort by it.', + }); + const { euiTheme } = useEuiTheme(); + + return ( + + {showColumnTokens && isSorted && ( + + )} + {!isSorted && ( + + + + )} + + + ); +}; diff --git a/src/platform/packages/shared/kbn-unified-data-table/src/components/data_table_columns.tsx b/src/platform/packages/shared/kbn-unified-data-table/src/components/data_table_columns.tsx index c419e2353ee8d..465775aabe059 100644 --- a/src/platform/packages/shared/kbn-unified-data-table/src/components/data_table_columns.tsx +++ b/src/platform/packages/shared/kbn-unified-data-table/src/components/data_table_columns.tsx @@ -14,6 +14,7 @@ import { type EuiDataGridColumnCellAction, EuiScreenReaderOnly, EuiListGroupItemProps, + type EuiDataGridColumnSortingConfig, } from '@elastic/eui'; import type { DataView } from '@kbn/data-views-plugin/public'; import { getDataViewFieldOrCreateFromColumnMeta } from '@kbn/data-view-utils'; @@ -30,10 +31,15 @@ import { defaultTimeColumnWidth, ROWS_HEIGHT_OPTIONS, DEFAULT_CONTROL_COLUMN_WIDTH, + SCORE_COLUMN_NAME, } from '../constants'; import { buildCopyColumnNameButton, buildCopyColumnValuesButton } from './build_copy_column_button'; import { buildEditFieldButton } from './build_edit_field_button'; -import { DataTableColumnHeader, DataTableTimeColumnHeader } from './data_table_column_header'; +import { + DataTableColumnHeader, + DataTableScoreColumnHeader, + DataTableTimeColumnHeader, +} from './data_table_column_header'; import { UnifiedDataTableProps } from './data_table'; export const getColumnDisplayName = ( @@ -56,6 +62,7 @@ export const getColumnDisplayName = ( const DataTableColumnHeaderMemoized = React.memo(DataTableColumnHeader); const DataTableTimeColumnHeaderMemoized = React.memo(DataTableTimeColumnHeader); +const DataTableScoreColumnHeaderMemoized = React.memo(DataTableScoreColumnHeader); export const OPEN_DETAILS = 'openDetails'; export const SELECT_ROW = 'select'; @@ -118,6 +125,7 @@ function buildEuiGridColumn({ customGridColumnsConfiguration, columnDisplay, onResize, + sortedColumns, }: { numberOfColumns: number; columnName: string; @@ -141,6 +149,7 @@ function buildEuiGridColumn({ customGridColumnsConfiguration?: CustomGridColumnsConfiguration; columnDisplay?: string; onResize: UnifiedDataTableProps['onResize']; + sortedColumns?: EuiDataGridColumnSortingConfig[]; }) { const dataViewField = getDataViewFieldOrCreateFromColumnMeta({ dataView, @@ -178,6 +187,8 @@ function buildEuiGridColumn({ columnDisplay ); + const isSorted = sortedColumns?.some((column) => column.id === columnName); + let cellActions: EuiDataGridColumnCellAction[]; if (columnCellActions?.length && cellActionsHandling === 'replace') { @@ -270,6 +281,20 @@ function buildEuiGridColumn({ } } + if (column.id === SCORE_COLUMN_NAME) { + column.display = ( + + ); + } + if (columnWidth > 0) { column.initialWidth = Number(columnWidth); } @@ -309,6 +334,7 @@ export function getEuiGridColumns({ headerRowHeightLines, customGridColumnsConfiguration, onResize, + sortedColumns, }: { columns: string[]; columnsCellActions?: EuiDataGridColumnCellAction[][]; @@ -333,6 +359,7 @@ export function getEuiGridColumns({ headerRowHeightLines: number; customGridColumnsConfiguration?: CustomGridColumnsConfiguration; onResize: UnifiedDataTableProps['onResize']; + sortedColumns?: EuiDataGridColumnSortingConfig[]; }) { const getColWidth = (column: string) => settings?.columns?.[column]?.width ?? 0; const headerRowHeight = deserializeHeaderRowHeight(headerRowHeightLines); @@ -362,6 +389,7 @@ export function getEuiGridColumns({ customGridColumnsConfiguration, columnDisplay: settings?.columns?.[column]?.display, onResize, + sortedColumns, }) ); } diff --git a/src/platform/packages/shared/kbn-unified-data-table/src/constants.ts b/src/platform/packages/shared/kbn-unified-data-table/src/constants.ts index 48fbcad0ce9a5..9fb8aae7a8835 100644 --- a/src/platform/packages/shared/kbn-unified-data-table/src/constants.ts +++ b/src/platform/packages/shared/kbn-unified-data-table/src/constants.ts @@ -11,6 +11,8 @@ import type { EuiDataGridStyle } from '@elastic/eui'; export const DEFAULT_CONTROL_COLUMN_WIDTH = 24; +export const SCORE_COLUMN_NAME = '_score'; + export const DEFAULT_ROWS_PER_PAGE = 100; export const MAX_LOADED_GRID_ROWS = 10000; export const ROWS_PER_PAGE_OPTIONS = [10, 25, 50, DEFAULT_ROWS_PER_PAGE, 250, 500]; From 80ea2be300b5eff8fd5f2098a95a951ee87901d7 Mon Sep 17 00:00:00 2001 From: Elena Shostak <165678770+elena-shostak@users.noreply.github.com> Date: Mon, 17 Feb 2025 19:28:39 +0700 Subject: [PATCH 24/78] [CodeQL] Added notification to slack on job failure (#210962) ## Summary Added notification to slack on job failure. __Closes: https://github.com/elastic/kibana/issues/210957__ --------- Co-authored-by: Elastic Machine --- .github/workflows/codeql.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f1a3510a7f24f..9b5674e546a16 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -31,7 +31,6 @@ jobs: with: languages: ${{ matrix.language }} config-file: ./.github/codeql/codeql-config.yml - debug: ${{ matrix.branch != '7.17' }} # TODO: Possibly required to follow all call paths, however, when enabled, the step below runs out of memory. # Possible workarounds: Apply for access to the GitHub beta where we can use beefier machines, or run it ourselves on Buildkite @@ -65,11 +64,20 @@ jobs: category: "/language:${{matrix.language}}" ref: ${{ env.CHECKOUT_REF }} sha: ${{ env.CHECKOUT_SHA }} + - name: Notify to slack on failure + if: ${{ failure() }} + uses: slackapi/slack-github-action@v2.0.0 + with: + method: chat.postMessage + token: ${{ secrets.CODE_SCANNING_SLACK_TOKEN }} + payload: | + channel: ${{ secrets.CODE_SCANNING_SLACK_CHANNEL_ID }} + text: ":broken_heart: CodeQL analysis failed for ${{ github.repository }} on ${{ env.CHECKOUT_SHA }}." alert: name: Alert runs-on: ubuntu-latest needs: analyze - if: github.repository == 'elastic/kibana' # Hack: Do not run on forks + if: ${{ github.repository == 'elastic/kibana' && success() }} # Hack: Do not run on forks steps: - name: Checkout kibana-operations uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 From 0adce7a3dbdfc8d6a6bbdff3765da1d05e12c0fb Mon Sep 17 00:00:00 2001 From: Ievgen Sorokopud Date: Mon, 17 Feb 2025 13:31:30 +0100 Subject: [PATCH 25/78] [Rules migration][Integration test] Get Prebuilt Rules APIs (#11232) (#211403) ## Summary [Internal link](https://github.com/elastic/security-team/issues/10820) to the feature details Part of https://github.com/elastic/security-team/issues/11232 This PR covers SIEM Migrations Get prebuilt rules API (route: `GET /internal/siem_migrations/rules/{migration_id}/prebuilt_rules`) integration test: * get all prebuilt rules matched by migration rules * return empty response when migration rules did not match prebuilt rules --- .../get_prebuilt_rules.ts | 84 +++++++++++++++++++ .../trial_license_complete_tier/index.ts | 1 + .../siem_migrations/utils/rules.ts | 18 ++++ 3 files changed, 103 insertions(+) create mode 100644 x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/get_prebuilt_rules.ts diff --git a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/get_prebuilt_rules.ts b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/get_prebuilt_rules.ts new file mode 100644 index 0000000000000..aa73189eca4cd --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/get_prebuilt_rules.ts @@ -0,0 +1,84 @@ +/* + * 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 expect from 'expect'; +import { v4 as uuidv4 } from 'uuid'; +import { RuleTranslationResult } from '@kbn/security-solution-plugin/common/siem_migrations/constants'; +import { deleteAllRules } from '../../../../../common/utils/security_solution'; +import { + RuleMigrationDocument, + createMigrationRules, + defaultElasticRule, + deleteAllMigrationRules, + getMigrationRuleDocuments, + migrationRulesRouteHelpersFactory, +} from '../../utils'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; +import { + createPrebuiltRuleAssetSavedObjects, + createRuleAssetSavedObject, + deleteAllPrebuiltRuleAssets, + deleteAllTimelines, +} from '../../../detections_response/utils'; + +export default ({ getService }: FtrProviderContext) => { + const es = getService('es'); + const log = getService('log'); + const supertest = getService('supertest'); + const migrationRulesRoutes = migrationRulesRouteHelpersFactory(supertest); + + describe('@ess @serverless @serverlessQA Get Prebuilt Rules API', () => { + beforeEach(async () => { + await deleteAllRules(supertest, log); + await deleteAllTimelines(es, log); + await deleteAllPrebuiltRuleAssets(es, log); + await deleteAllMigrationRules(es); + + // Add some prebuilt rules + const ruleAssetSavedObjects = [ + createRuleAssetSavedObject({ rule_id: 'rule-1', version: 1 }), + createRuleAssetSavedObject({ rule_id: 'rule-2', version: 1 }), + createRuleAssetSavedObject({ rule_id: 'rule-3', version: 1 }), + createRuleAssetSavedObject({ rule_id: 'rule-4', version: 1 }), + createRuleAssetSavedObject({ rule_id: 'rule-5', version: 1 }), + ]; + await createPrebuiltRuleAssetSavedObjects(es, ruleAssetSavedObjects); + }); + + it('should return all prebuilt rules matched by migration rules', async () => { + const migrationId = uuidv4(); + + const overrideCallback = (index: number): Partial => { + const { query_language: queryLanguage, query, ...rest } = defaultElasticRule; + return { + migration_id: migrationId, + elastic_rule: index < 2 ? { ...rest, prebuilt_rule_id: `rule-${index + 1}` } : undefined, + translation_result: index < 2 ? RuleTranslationResult.FULL : undefined, + }; + }; + const migrationRuleDocuments = getMigrationRuleDocuments(4, overrideCallback); + await createMigrationRules(es, migrationRuleDocuments); + + const response = await migrationRulesRoutes.getPrebuiltRules({ migrationId }); + + const prebuiltRulesIds = Object.keys(response.body).sort(); + expect(prebuiltRulesIds).toEqual(['rule-1', 'rule-2']); + }); + + it('should return empty response when migration rules did not match prebuilt rules', async () => { + const migrationId = uuidv4(); + + const migrationRuleDocuments = getMigrationRuleDocuments(10, () => ({ + migration_id: migrationId, + })); + await createMigrationRules(es, migrationRuleDocuments); + + const response = await migrationRulesRoutes.getPrebuiltRules({ migrationId }); + expect(response.body).toEqual({}); + }); + }); +}; diff --git a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/index.ts b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/index.ts index e8c70cbd7a7c4..afce2e4e03ec4 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/index.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/rules/trial_license_complete_tier/index.ts @@ -9,6 +9,7 @@ import { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('@ess SecuritySolution SIEM Migrations', () => { loadTestFile(require.resolve('./create')); + loadTestFile(require.resolve('./get_prebuilt_rules')); loadTestFile(require.resolve('./get')); loadTestFile(require.resolve('./install')); loadTestFile(require.resolve('./stats')); diff --git a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/rules.ts b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/rules.ts index 1ac078b045467..35836af0116d5 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/rules.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/siem_migrations/utils/rules.ts @@ -15,6 +15,7 @@ import { replaceParams } from '@kbn/openapi-common/shared'; import { SIEM_RULE_MIGRATIONS_ALL_STATS_PATH, SIEM_RULE_MIGRATIONS_PATH, + SIEM_RULE_MIGRATIONS_PREBUILT_RULES_PATH, SIEM_RULE_MIGRATION_INSTALL_PATH, SIEM_RULE_MIGRATION_PATH, SIEM_RULE_MIGRATION_STATS_PATH, @@ -23,6 +24,7 @@ import { import { CreateRuleMigrationResponse, GetAllStatsRuleMigrationResponse, + GetRuleMigrationPrebuiltRulesResponse, GetRuleMigrationRequestQuery, GetRuleMigrationResponse, GetRuleMigrationStatsResponse, @@ -184,5 +186,21 @@ export const migrationRulesRouteHelpersFactory = (supertest: SuperTest.Agent) => return response; }, + + getPrebuiltRules: async ({ + migrationId, + expectStatusCode = 200, + }: MigrationRequestParams): Promise<{ body: GetRuleMigrationPrebuiltRulesResponse }> => { + const response = await supertest + .get(replaceParams(SIEM_RULE_MIGRATIONS_PREBUILT_RULES_PATH, { migration_id: migrationId })) + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, API_VERSIONS.internal.v1) + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .send(); + + assertStatusCode(expectStatusCode, response); + + return response; + }, }; }; From 95b3f6e14da782208dc701c46e7c8bbd77cc55e1 Mon Sep 17 00:00:00 2001 From: Kevin Lacabane Date: Mon, 17 Feb 2025 13:35:20 +0100 Subject: [PATCH 26/78] [streams] lifecycle - ingestion and total docs metadata (#210301) Adds avg ingestion per day, total doc count and ingestion rate graph to the lifecycle view. We use the dataset quality plugin to compute these values. I've added a query string to optionally retrieve the creation date of a data stream in the `data_streams/stats` endpoint. ![Screenshot 2025-02-11 at 17 39 13](https://github.com/user-attachments/assets/9242ecbc-ebee-43da-b742-fbc0d0997bc2) ----- @elastic/obs-ux-logs-team the change in dataset quality involves the optional retrieval of the data streams creation date in the `/stats` endpoint. There are other ways in dataset quality to get these informations but they rely on queries to compute the data. In our case these queries will always be unbounded and using the `/stats` would be more efficient as it relies on cluster state. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../dataset_quality/common/api_types.ts | 1 + .../shared/dataset_quality/public/index.ts | 4 + .../data_streams_stats_client.ts | 7 +- .../get_data_streams_creation_date.ts | 45 +++++ .../server/routes/data_streams/routes.ts | 37 ++-- .../server/services/data_stream.ts | 2 +- .../get_mock_streams_app_context.tsx | 3 +- .../plugins/streams_app/kibana.jsonc | 1 + .../helpers/format_bytes.ts | 10 ++ .../helpers/ingestion_rate_query.ts | 55 ++++++ .../hooks/use_data_stream_stats.tsx | 58 ++++++ .../stream_detail_lifecycle/index.tsx | 57 ++++-- .../ingestion_rate.tsx | 169 ++++++++++++++++++ .../stream_detail_lifecycle/metadata.tsx | 48 ++++- .../stream_detail_lifecycle/summary.tsx | 2 +- .../plugins/streams_app/public/plugin.ts | 7 +- .../streams_app/public/services/types.ts | 7 +- .../plugins/streams_app/tsconfig.json | 5 +- .../tests/data_streams/stats.spec.ts | 16 +- 19 files changed, 493 insertions(+), 41 deletions(-) create mode 100644 x-pack/platform/plugins/shared/dataset_quality/server/routes/data_streams/get_data_streams_creation_date.ts create mode 100644 x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/helpers/format_bytes.ts create mode 100644 x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/helpers/ingestion_rate_query.ts create mode 100644 x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/hooks/use_data_stream_stats.tsx create mode 100644 x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/ingestion_rate.tsx diff --git a/x-pack/platform/plugins/shared/dataset_quality/common/api_types.ts b/x-pack/platform/plugins/shared/dataset_quality/common/api_types.ts index 7c64375e43fd5..b156368f9d15b 100644 --- a/x-pack/platform/plugins/shared/dataset_quality/common/api_types.ts +++ b/x-pack/platform/plugins/shared/dataset_quality/common/api_types.ts @@ -32,6 +32,7 @@ export const dataStreamStatRt = rt.intersection([ lastActivity: rt.number, integration: rt.string, totalDocs: rt.number, + creationDate: rt.number, }), ]); diff --git a/x-pack/platform/plugins/shared/dataset_quality/public/index.ts b/x-pack/platform/plugins/shared/dataset_quality/public/index.ts index 339be1ec1de9b..943707b252ce0 100644 --- a/x-pack/platform/plugins/shared/dataset_quality/public/index.ts +++ b/x-pack/platform/plugins/shared/dataset_quality/public/index.ts @@ -9,8 +9,12 @@ import type { PluginInitializerContext } from '@kbn/core/public'; import { DatasetQualityConfig } from '../common/plugin_config'; import { DatasetQualityPlugin } from './plugin'; +export type { DataStreamStatServiceResponse } from '../common/data_streams_stats'; export type { DatasetQualityPluginSetup, DatasetQualityPluginStart } from './types'; +export { DataStreamsStatsService } from './services/data_streams_stats/data_streams_stats_service'; +export type { IDataStreamsStatsClient } from './services/data_streams_stats/types'; + export function plugin(context: PluginInitializerContext) { return new DatasetQualityPlugin(context); } diff --git a/x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/data_streams_stats_client.ts b/x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/data_streams_stats_client.ts index deb97678b65ac..f389bbe80c8b2 100644 --- a/x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/data_streams_stats_client.ts +++ b/x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/data_streams_stats_client.ts @@ -41,12 +41,15 @@ export class DataStreamsStatsClient implements IDataStreamsStatsClient { public async getDataStreamsStats( params: GetDataStreamsStatsQuery ): Promise { - const types = params.types.length === 0 ? KNOWN_TYPES : params.types; + const types = + 'types' in params + ? rison.encodeArray(params.types.length === 0 ? KNOWN_TYPES : params.types) + : undefined; const response = await this.http .get('/internal/dataset_quality/data_streams/stats', { query: { ...params, - types: rison.encodeArray(types), + types, }, }) .catch((error) => { diff --git a/x-pack/platform/plugins/shared/dataset_quality/server/routes/data_streams/get_data_streams_creation_date.ts b/x-pack/platform/plugins/shared/dataset_quality/server/routes/data_streams/get_data_streams_creation_date.ts new file mode 100644 index 0000000000000..c86b7ffad02fb --- /dev/null +++ b/x-pack/platform/plugins/shared/dataset_quality/server/routes/data_streams/get_data_streams_creation_date.ts @@ -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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ElasticsearchClient } from '@kbn/core/server'; +import { dataStreamService } from '../../services'; + +export async function getDataStreamsCreationDate({ + esClient, + dataStreams, +}: { + esClient: ElasticsearchClient; + dataStreams: string[]; +}) { + const matchingStreams = await dataStreamService.getMatchingDataStreams(esClient, dataStreams); + const streamByIndex = matchingStreams.reduce((acc, { name, indices }) => { + if (indices[0]) acc[indices[0].index_name] = name; + return acc; + }, {} as Record); + + const indices = Object.keys(streamByIndex); + if (indices.length === 0) { + return {}; + } + // While _cat api is not recommended for application use this is the only way + // to retrieve the creation date in serverless for now. We should change this + // once a proper approach exists (see elastic/elasticsearch-serverless#3010) + const catIndices = await esClient.cat.indices({ + index: indices, + h: ['creation.date', 'index'], + format: 'json', + }); + + return catIndices.reduce((acc, index) => { + const creationDate = index['creation.date']; + const indexName = index.index!; + const stream = streamByIndex[indexName]; + + acc[stream] = creationDate ? Number(creationDate) : undefined; + return acc; + }, {} as Record); +} diff --git a/x-pack/platform/plugins/shared/dataset_quality/server/routes/data_streams/routes.ts b/x-pack/platform/plugins/shared/dataset_quality/server/routes/data_streams/routes.ts index a12048d9235d8..a986321125980 100644 --- a/x-pack/platform/plugins/shared/dataset_quality/server/routes/data_streams/routes.ts +++ b/x-pack/platform/plugins/shared/dataset_quality/server/routes/data_streams/routes.ts @@ -6,6 +6,7 @@ */ import * as t from 'io-ts'; +import { toBooleanRt } from '@kbn/io-ts-utils'; import { CheckAndLoadIntegrationResponse, DataStreamDetails, @@ -38,15 +39,14 @@ import { getDegradedFieldValues } from './get_degraded_field_values'; import { getDegradedFields } from './get_degraded_fields'; import { getNonAggregatableDataStreams } from './get_non_aggregatable_data_streams'; import { updateFieldLimit } from './update_field_limit'; +import { getDataStreamsCreationDate } from './get_data_streams_creation_date'; const statsRoute = createDatasetQualityServerRoute({ endpoint: 'GET /internal/dataset_quality/data_streams/stats', params: t.type({ query: t.intersection([ - t.type({ types: typesRt }), - t.partial({ - datasetQuery: t.string, - }), + t.union([t.type({ types: typesRt }), t.type({ datasetQuery: t.string })]), + t.partial({ includeCreationDate: toBooleanRt }), ]), }), options: { @@ -81,15 +81,25 @@ const statsRoute = createDatasetQualityServerRoute({ return dataStream.userPrivileges.canMonitor; }); - const dataStreamsStats = isServerless - ? await getDataStreamsMeteringStats({ - esClient: esClientAsSecondaryAuthUser, - dataStreams: privilegedDataStreams.map((stream) => stream.name), - }) - : await getDataStreamsStats({ - esClient, - dataStreams: privilegedDataStreams.map((stream) => stream.name), - }); + const dataStreamsNames = privilegedDataStreams.map((stream) => stream.name); + const [dataStreamsStats, dataStreamsCreationDate] = await Promise.all([ + isServerless + ? getDataStreamsMeteringStats({ + esClient: esClientAsSecondaryAuthUser, + dataStreams: dataStreamsNames, + }) + : getDataStreamsStats({ + esClient, + dataStreams: dataStreamsNames, + }), + + params.query.includeCreationDate + ? getDataStreamsCreationDate({ + esClient: esClientAsSecondaryAuthUser, + dataStreams: dataStreamsNames, + }) + : ({} as Record), + ]); return { datasetUserPrivileges, @@ -97,6 +107,7 @@ const statsRoute = createDatasetQualityServerRoute({ dataStream.size = dataStreamsStats[dataStream.name]?.size; dataStream.sizeBytes = dataStreamsStats[dataStream.name]?.sizeBytes; dataStream.totalDocs = dataStreamsStats[dataStream.name]?.totalDocs; + dataStream.creationDate = dataStreamsCreationDate[dataStream.name]; return dataStream; }), diff --git a/x-pack/platform/plugins/shared/dataset_quality/server/services/data_stream.ts b/x-pack/platform/plugins/shared/dataset_quality/server/services/data_stream.ts index e54f0f33f375a..857768853b4cd 100644 --- a/x-pack/platform/plugins/shared/dataset_quality/server/services/data_stream.ts +++ b/x-pack/platform/plugins/shared/dataset_quality/server/services/data_stream.ts @@ -15,7 +15,7 @@ import { reduceAsyncChunks } from '../utils/reduce_async_chunks'; class DataStreamService { public async getMatchingDataStreams( esClient: ElasticsearchClient, - datasetName: string + datasetName: string | string[] ): Promise { try { const { data_streams: dataStreamsInfo } = await esClient.indices.getDataStream({ diff --git a/x-pack/solutions/observability/plugins/streams_app/.storybook/get_mock_streams_app_context.tsx b/x-pack/solutions/observability/plugins/streams_app/.storybook/get_mock_streams_app_context.tsx index d86c0723e038a..5e57ea3250907 100644 --- a/x-pack/solutions/observability/plugins/streams_app/.storybook/get_mock_streams_app_context.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/.storybook/get_mock_streams_app_context.tsx @@ -15,6 +15,7 @@ import type { SharePublicStart } from '@kbn/share-plugin/public/plugin'; import { NavigationPublicStart } from '@kbn/navigation-plugin/public/types'; import type { SavedObjectTaggingPluginStart } from '@kbn/saved-objects-tagging-plugin/public'; import { fieldsMetadataPluginPublicMock } from '@kbn/fields-metadata-plugin/public/mocks'; +import { DataStreamsStatsClient } from '@kbn/dataset-quality-plugin/public/services/data_streams_stats/data_streams_stats_client'; import type { StreamsAppKibanaContext } from '../public/hooks/use_kibana'; export function getMockStreamsAppContext(): StreamsAppKibanaContext { @@ -38,7 +39,7 @@ export function getMockStreamsAppContext(): StreamsAppKibanaContext { }, }, services: { - query: jest.fn(), + dataStreamsClient: Promise.resolve({} as unknown as DataStreamsStatsClient), }, isServerless: false, }; diff --git a/x-pack/solutions/observability/plugins/streams_app/kibana.jsonc b/x-pack/solutions/observability/plugins/streams_app/kibana.jsonc index ebc3c57c63abc..71f2c0ac4e590 100644 --- a/x-pack/solutions/observability/plugins/streams_app/kibana.jsonc +++ b/x-pack/solutions/observability/plugins/streams_app/kibana.jsonc @@ -19,6 +19,7 @@ "savedObjectsTagging", "navigation", "fieldsMetadata", + "datasetQuality" ], "requiredBundles": [ "kibanaReact" diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/helpers/format_bytes.ts b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/helpers/format_bytes.ts new file mode 100644 index 0000000000000..4cc666058b677 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/helpers/format_bytes.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. + */ + +import { formatNumber } from '@elastic/eui'; + +export const formatBytes = (value: number) => formatNumber(value, '0.0 b'); diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/helpers/ingestion_rate_query.ts b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/helpers/ingestion_rate_query.ts new file mode 100644 index 0000000000000..3e752562be7f7 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/helpers/ingestion_rate_query.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import datemath from '@kbn/datemath'; + +export const ingestionRateQuery = ({ + index, + start, + end, + timestampField = '@timestamp', + bucketCount = 10, +}: { + index: string; + start: string; + end: string; + timestampField?: string; + bucketCount?: number; +}) => { + const startDate = datemath.parse(start); + const endDate = datemath.parse(end); + if (!startDate || !endDate) { + throw new Error(`Expected a valid start and end date but got [start: ${start} | end: ${end}]`); + } + + const intervalInSeconds = Math.max( + Math.round(endDate.diff(startDate, 'seconds') / bucketCount), + 1 + ); + + return { + index, + track_total_hits: false, + body: { + size: 0, + query: { + bool: { + filter: [{ range: { [timestampField]: { gte: start, lte: end } } }], + }, + }, + aggs: { + docs_count: { + date_histogram: { + field: timestampField, + fixed_interval: `${intervalInSeconds}s`, + min_doc_count: 0, + }, + }, + }, + }, + }; +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/hooks/use_data_stream_stats.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/hooks/use_data_stream_stats.tsx new file mode 100644 index 0000000000000..9125aba411d93 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/hooks/use_data_stream_stats.tsx @@ -0,0 +1,58 @@ +/* + * 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 { IngestStreamGetResponse } from '@kbn/streams-schema'; +import { DataStreamStatServiceResponse } from '@kbn/dataset-quality-plugin/public'; +import { useKibana } from '../../../hooks/use_kibana'; +import { useStreamsAppFetch } from '../../../hooks/use_streams_app_fetch'; + +export type DataStreamStats = DataStreamStatServiceResponse['dataStreamsStats'][number] & { + bytesPerDoc: number; + bytesPerDay: number; +}; + +export const useDataStreamStats = ({ definition }: { definition?: IngestStreamGetResponse }) => { + const { + services: { dataStreamsClient }, + } = useKibana(); + + const statsFetch = useStreamsAppFetch(async () => { + if (!definition) { + return; + } + + const client = await dataStreamsClient; + const { + dataStreamsStats: [dsStats], + } = await client.getDataStreamsStats({ + datasetQuery: definition.stream.name, + includeCreationDate: true, + }); + + if (!dsStats || !dsStats.creationDate || !dsStats.sizeBytes) { + return undefined; + } + const daysSinceCreation = Math.max( + 1, + Math.round(moment().diff(moment(dsStats.creationDate), 'days')) + ); + + return { + ...dsStats, + bytesPerDay: dsStats.sizeBytes / daysSinceCreation, + bytesPerDoc: dsStats.totalDocs ? dsStats.sizeBytes / dsStats.totalDocs : 0, + }; + }, [dataStreamsClient, definition]); + + return { + stats: statsFetch.value, + isLoading: statsFetch.loading, + refresh: statsFetch.refresh, + error: statsFetch.error, + }; +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/index.tsx index 726c3c389d43b..0c13f7df110e1 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/index.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { EuiFlexGroup, EuiFlexItem, EuiPanel } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiSpacer } from '@elastic/eui'; import React, { useMemo, useState } from 'react'; import { IngestStreamGetResponse, @@ -27,6 +27,8 @@ import { useKibana } from '../../hooks/use_kibana'; import { EditLifecycleModal, LifecycleEditAction } from './modal'; import { RetentionSummary } from './summary'; import { RetentionMetadata } from './metadata'; +import { IngestionRate } from './ingestion_rate'; +import { useDataStreamStats } from './hooks/use_data_stream_stats'; import { getFormattedError } from '../../util/errors'; function useLifecycleState({ @@ -112,6 +114,13 @@ export function StreamDetailLifecycle({ setUpdateInProgress, } = useLifecycleState({ definition, isServerless }); + const { + stats, + isLoading: isLoadingStats, + refresh: refreshStats, + error: statsError, + } = useDataStreamStats({ definition }); + const { signal } = useAbortController(); if (!definition) { @@ -176,24 +185,38 @@ export function StreamDetailLifecycle({ ilmLocator={ilmLocator} /> - + + + + + + + + setOpenEditModal(action)} + isLoadingStats={isLoadingStats} + stats={stats} + statsError={statsError} + /> + + + + + + + - - - - - - - setOpenEditModal(action)} - /> - - + - + ); } diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/ingestion_rate.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/ingestion_rate.tsx new file mode 100644 index 0000000000000..3ffda07c2be46 --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/ingestion_rate.tsx @@ -0,0 +1,169 @@ +/* + * 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 React from 'react'; +import { lastValueFrom } from 'rxjs'; +import { IKibanaSearchRequest, IKibanaSearchResponse } from '@kbn/search-types'; +import { i18n } from '@kbn/i18n'; +import { IngestStreamGetResponse } from '@kbn/streams-schema'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiLoadingChart, + EuiPanel, + EuiSpacer, + EuiText, +} from '@elastic/eui'; +import { AreaSeries, Axis, Chart, Settings } from '@elastic/charts'; +import { useDateRange } from '@kbn/observability-utils-browser/hooks/use_date_range'; +import { useKibana } from '../../hooks/use_kibana'; +import { DataStreamStats } from './hooks/use_data_stream_stats'; +import { useStreamsAppFetch } from '../../hooks/use_streams_app_fetch'; +import { ingestionRateQuery } from './helpers/ingestion_rate_query'; +import { formatBytes } from './helpers/format_bytes'; +import { StreamsAppSearchBar } from '../streams_app_search_bar'; + +export function IngestionRate({ + definition, + stats, + isLoadingStats, + refreshStats, +}: { + definition?: IngestStreamGetResponse; + stats?: DataStreamStats; + isLoadingStats: boolean; + refreshStats: () => void; +}) { + const { + dependencies: { + start: { data }, + }, + } = useKibana(); + const { timeRange, setTimeRange } = useDateRange({ data }); + + const { + loading: isLoadingIngestionRate, + value: ingestionRate, + error: ingestionRateError, + } = useStreamsAppFetch( + async ({ signal }) => { + if (!definition || isLoadingStats || !stats?.bytesPerDay) { + return; + } + + const { rawResponse } = await lastValueFrom( + data.search.search< + IKibanaSearchRequest, + IKibanaSearchResponse<{ + aggregations: { docs_count: { buckets: Array<{ key: string; doc_count: number }> } }; + }> + >( + { + params: ingestionRateQuery({ + start: timeRange.from, + end: timeRange.to, + index: definition.stream.name, + }), + }, + { abortSignal: signal } + ) + ); + + return rawResponse.aggregations.docs_count.buckets.map(({ key, doc_count: docCount }) => ({ + key, + value: docCount * stats.bytesPerDoc, + })); + }, + [data.search, definition, stats, isLoadingStats, timeRange] + ); + + return ( + <> + + + + +
+ {i18n.translate('xpack.streams.streamDetailLifecycle.ingestionRatePanel', { + defaultMessage: 'Ingestion rate', + })} +
+
+
+ + + { + if (!isUpdate) { + refreshStats(); + return; + } + + if (dateRange) { + setTimeRange({ + from: dateRange.from, + to: dateRange?.to, + mode: dateRange.mode, + }); + } + }} + /> + +
+
+ + + + {ingestionRateError ? ( + + Failed to load ingestion rate + + ) : isLoadingIngestionRate || isLoadingStats || !ingestionRate ? ( + + + + ) : ( + + + + + moment(value).format('YYYY-MM-DD')} + gridLine={{ visible: false }} + /> + formatBytes(value)} + gridLine={{ visible: true }} + /> + + )} + + ); +} diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/metadata.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/metadata.tsx index 3de494f070d5e..67e6b2f4acc7c 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/metadata.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/metadata.tsx @@ -26,6 +26,7 @@ import { EuiFlexItem, EuiHorizontalRule, EuiLink, + EuiLoadingSpinner, EuiPanel, EuiPopover, EuiText, @@ -33,21 +34,28 @@ import { import { i18n } from '@kbn/i18n'; import { LifecycleEditAction } from './modal'; import { useStreamsAppRouter } from '../../hooks/use_streams_app_router'; +import { DataStreamStats } from './hooks/use_data_stream_stats'; +import { formatBytes } from './helpers/format_bytes'; export function RetentionMetadata({ definition, ilmLocator, lifecycleActions, openEditModal, + stats, + isLoadingStats, + statsError, }: { definition: IngestStreamGetResponse; ilmLocator?: LocatorPublic; lifecycleActions: Array<{ name: string; action: LifecycleEditAction }>; openEditModal: (action: LifecycleEditAction) => void; + stats?: DataStreamStats; + isLoadingStats: boolean; + statsError?: Error; }) { const [isMenuOpen, { toggle: toggleMenu, off: closeMenu }] = useBoolean(false); const router = useStreamsAppRouter(); - const lifecycle = definition.effective_lifecycle; const contextualMenu = @@ -171,6 +179,38 @@ export function RetentionMetadata({ } /> + + + ) : stats.bytesPerDay ? ( + formatIngestionRate(stats.bytesPerDay) + ) : ( + '-' + ) + } + /> + + + ) : ( + stats.totalDocs + ) + } + /> ); } @@ -197,3 +237,9 @@ function MetadataRow({ ); } + +const formatIngestionRate = (bytesPerDay: number) => { + const perDay = formatBytes(bytesPerDay); + const perMonth = formatBytes(bytesPerDay * 30); + return `${perDay} / Day - ${perMonth} / Month`; +}; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/summary.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/summary.tsx index 7b3c37649dacb..c867e317d239c 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/summary.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/summary.tsx @@ -21,7 +21,7 @@ export function RetentionSummary({ definition }: { definition: IngestStreamGetRe const summary = useMemo(() => summaryText(definition), [definition]); return ( - +
{i18n.translate('xpack.streams.streamDetailLifecycle.retentionSummaryLabel', { diff --git a/x-pack/solutions/observability/plugins/streams_app/public/plugin.ts b/x-pack/solutions/observability/plugins/streams_app/public/plugin.ts index c6aec1005cc09..dbe50f39b6308 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/plugin.ts +++ b/x-pack/solutions/observability/plugins/streams_app/public/plugin.ts @@ -18,6 +18,7 @@ import { } from '@kbn/core/public'; import type { Logger } from '@kbn/logging'; import { STREAMS_APP_ID } from '@kbn/deeplinks-observability/constants'; +import { DataStreamsStatsService } from '@kbn/dataset-quality-plugin/public'; import type { ConfigSchema, StreamsAppPublicSetup, @@ -119,7 +120,11 @@ export class StreamsAppPlugin coreSetup.getStartServices(), ]); - const services: StreamsAppServices = {}; + const services: StreamsAppServices = { + dataStreamsClient: new DataStreamsStatsService() + .start({ http: coreStart.http }) + .getClient(), + }; return renderApp({ coreStart, diff --git a/x-pack/solutions/observability/plugins/streams_app/public/services/types.ts b/x-pack/solutions/observability/plugins/streams_app/public/services/types.ts index 7f75493d2525c..69f51c04df1e6 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/services/types.ts +++ b/x-pack/solutions/observability/plugins/streams_app/public/services/types.ts @@ -5,5 +5,8 @@ * 2.0. */ -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface StreamsAppServices {} +import { IDataStreamsStatsClient } from '@kbn/dataset-quality-plugin/public'; + +export interface StreamsAppServices { + dataStreamsClient: Promise; +} diff --git a/x-pack/solutions/observability/plugins/streams_app/tsconfig.json b/x-pack/solutions/observability/plugins/streams_app/tsconfig.json index 6bfe3e0e6a4d9..3ed3937f15180 100644 --- a/x-pack/solutions/observability/plugins/streams_app/tsconfig.json +++ b/x-pack/solutions/observability/plugins/streams_app/tsconfig.json @@ -55,6 +55,9 @@ "@kbn/deeplinks-analytics", "@kbn/dashboard-plugin", "@kbn/react-kibana-mount", - "@kbn/fields-metadata-plugin" + "@kbn/fields-metadata-plugin", + "@kbn/datemath", + "@kbn/dataset-quality-plugin", + "@kbn/search-types" ] } diff --git a/x-pack/test/dataset_quality_api_integration/tests/data_streams/stats.spec.ts b/x-pack/test/dataset_quality_api_integration/tests/data_streams/stats.spec.ts index c7d44c26b230b..c4f183e0dc8e5 100644 --- a/x-pack/test/dataset_quality_api_integration/tests/data_streams/stats.spec.ts +++ b/x-pack/test/dataset_quality_api_integration/tests/data_streams/stats.spec.ts @@ -21,13 +21,15 @@ export default function ApiTest({ getService }: FtrProviderContext) { async function callApiAs( user: DatasetQualityApiClientKey, - types: Array<'logs' | 'metrics' | 'traces' | 'synthetics'> = ['logs'] + types: Array<'logs' | 'metrics' | 'traces' | 'synthetics'> = ['logs'], + includeCreationDate = false ) { return await datasetQualityApiClient[user]({ endpoint: 'GET /internal/dataset_quality/data_streams/stats', params: { query: { types: rison.encodeArray(types), + includeCreationDate, }, }, }); @@ -152,6 +154,18 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(stats.body.dataStreamsStats[0].totalDocs).greaterThan(0); }); + it('does not return creation date by default', async () => { + const stats = await callApiAs('datasetQualityMonitorUser'); + expect(stats.body.dataStreamsStats[0].size).not.empty(); + expect(stats.body.dataStreamsStats[0].creationDate).to.be(undefined); + }); + + it('returns creation date when specified', async () => { + const stats = await callApiAs('datasetQualityMonitorUser', ['logs'], true); + expect(stats.body.dataStreamsStats[0].size).not.empty(); + expect(stats.body.dataStreamsStats[0].creationDate).greaterThan(0); + }); + after(async () => { await logsSynthtrace.clean(); await cleanLogIndexTemplate({ esClient: es }); From 79dfa2e764601de6d632f7f8f5a0425c2a077015 Mon Sep 17 00:00:00 2001 From: Anton Dosov Date: Mon, 17 Feb 2025 13:53:03 +0100 Subject: [PATCH 27/78] Favorite a dashboard from within (#201596) - Adds "stardust" effect suggested by @andreadelrio here https://github.com/elastic/kibana/issues/200315#issuecomment-2599109888 both to Dashboard And ESQL star https://github.com/user-attachments/assets/96babced-7ffd-446b-a94a-e9681c627e44 https://github.com/user-attachments/assets/44273f8b-6ff6-4753-9ccf-d62a0feca12d - Adds favorite button to dashboard page next to the breadcrumb (should look good for both old and new nav) ![Screenshot 2025-02-10 at 15 31 15](https://github.com/user-attachments/assets/6639d97d-34d3-459f-acc1-4b726f76d6a2) ![Screenshot 2025-02-10 at 15 31 21](https://github.com/user-attachments/assets/669c248c-af64-4189-95d9-84ed91ec58a4) ![Screenshot 2025-02-10 at 15 32 42](https://github.com/user-attachments/assets/433a634c-c050-4e7b-a612-8ce3bc5ebc26) ![Screenshot 2025-02-10 at 15 32 46](https://github.com/user-attachments/assets/eb205f38-9d7a-47d4-90c3-de04d2930c69) --- .../esql_starred_queries_service.test.tsx | 6 +- .../esql_starred_queries_service.tsx | 78 +++++----- .../content_editor/src/services.tsx | 8 +- .../src/components/activity_view.test.tsx | 11 +- .../favorites/favorites_public/index.ts | 2 +- .../src/components/favorite_button.tsx | 65 ++++----- .../src/components/stardust_wrapper.tsx | 137 ++++++++++++++++++ .../favorites_public/src/favorites_query.tsx | 2 +- .../src/__jest__/tests.helpers.tsx | 17 ++- .../src/components/item_details.tsx | 3 +- .../src/query_client.tsx | 28 ++++ .../table_list_view_table/src/services.tsx | 78 +++++----- .../user_profiles/src/queries.ts | 1 + .../user_profiles/src/services.tsx | 11 +- .../kibana_mount/mount_point_portal.test.tsx | 37 ++++- .../react/kibana_mount/mount_point_portal.tsx | 9 +- .../dashboard_listing/dashboard_listing.tsx | 46 +++--- .../dashboard_top_nav/_dashboard_top_nav.scss | 1 + .../dashboard_favorite_button.tsx | 38 +++++ .../internal_dashboard_top_nav.tsx | 21 +++ .../public/services/dashboard_query_client.ts | 18 +++ .../apps/dashboard/group1/favorite.ts | 17 +++ 22 files changed, 473 insertions(+), 161 deletions(-) create mode 100644 src/platform/packages/shared/content-management/favorites/favorites_public/src/components/stardust_wrapper.tsx create mode 100644 src/platform/packages/shared/content-management/table_list_view_table/src/query_client.tsx create mode 100644 src/platform/plugins/shared/dashboard/public/dashboard_top_nav/dashboard_favorite_button.tsx create mode 100644 src/platform/plugins/shared/dashboard/public/services/dashboard_query_client.ts diff --git a/src/platform/packages/private/kbn-esql-editor/src/editor_footer/esql_starred_queries_service.test.tsx b/src/platform/packages/private/kbn-esql-editor/src/editor_footer/esql_starred_queries_service.test.tsx index 558705048f5ef..bba4ef46febc5 100644 --- a/src/platform/packages/private/kbn-esql-editor/src/editor_footer/esql_starred_queries_service.test.tsx +++ b/src/platform/packages/private/kbn-esql-editor/src/editor_footer/esql_starred_queries_service.test.tsx @@ -161,7 +161,7 @@ describe('EsqlStarredQueriesService', () => { await service.addStarredQuery(query); const buttonWithTooltip = service.renderStarredButton(query); - const button = buttonWithTooltip.props.children; + const button = buttonWithTooltip.props.children.props.children; expect(button.props.title).toEqual('Remove ES|QL query from Starred'); expect(button.props.iconType).toEqual('starFilled'); }); @@ -176,7 +176,7 @@ describe('EsqlStarredQueriesService', () => { await service.addStarredQuery(query); const buttonWithTooltip = service.renderStarredButton(query); - const button = buttonWithTooltip.props.children; + const button = buttonWithTooltip.props.children.props.children; expect(button.props.title).toEqual('Remove ES|QL query from Starred'); button.props.onClick(); @@ -194,7 +194,7 @@ describe('EsqlStarredQueriesService', () => { await service.addStarredQuery(query); const buttonWithTooltip = service.renderStarredButton(query); - const button = buttonWithTooltip.props.children; + const button = buttonWithTooltip.props.children.props.children; button.props.onClick(); expect(service.discardModalVisibility$.value).toEqual(false); diff --git a/src/platform/packages/private/kbn-esql-editor/src/editor_footer/esql_starred_queries_service.tsx b/src/platform/packages/private/kbn-esql-editor/src/editor_footer/esql_starred_queries_service.tsx index ad271ad588acc..4bc0581d76eac 100644 --- a/src/platform/packages/private/kbn-esql-editor/src/editor_footer/esql_starred_queries_service.tsx +++ b/src/platform/packages/private/kbn-esql-editor/src/editor_footer/esql_starred_queries_service.tsx @@ -14,7 +14,7 @@ import type { CoreStart } from '@kbn/core/public'; import type { UsageCollectionStart } from '@kbn/usage-collection-plugin/public'; import type { Storage } from '@kbn/kibana-utils-plugin/public'; import { EuiButtonIcon } from '@elastic/eui'; -import { FavoritesClient } from '@kbn/content-management-favorites-public'; +import { FavoritesClient, StardustWrapper } from '@kbn/content-management-favorites-public'; import { FAVORITES_LIMIT as ESQL_STARRED_QUERIES_LIMIT } from '@kbn/content-management-favorites-common'; import { type QueryHistoryItem, getTrimmedQuery } from '../history_local_storage'; import { TooltipWrapper } from './tooltip_wrapper'; @@ -68,6 +68,7 @@ export class EsqlStarredQueriesService { private client: FavoritesClient; private starredQueries: StarredQueryItem[] = []; private queryToEdit: string = ''; + private queryToAdd: string = ''; private storage: Storage; queries$: BehaviorSubject; discardModalVisibility$: BehaviorSubject = new BehaviorSubject(false); @@ -203,43 +204,48 @@ export class EsqlStarredQueriesService { )} condition={!isStarred && this.checkIfStarredQueriesLimitReached()} > - { - this.queryToEdit = trimmedQueryString; - if (isStarred) { - // show the discard modal only if the user has not dismissed it - if (!this.storage.get(STARRED_QUERIES_DISCARD_KEY)) { - this.discardModalVisibility$.next(true); + {/* show startdust effect only after starring the query and not on the initial load */} + + { + this.queryToEdit = trimmedQueryString; + if (isStarred) { + // show the discard modal only if the user has not dismissed it + if (!this.storage.get(STARRED_QUERIES_DISCARD_KEY)) { + this.discardModalVisibility$.next(true); + } else { + await this.removeStarredQuery(item.queryString); + } } else { - await this.removeStarredQuery(item.queryString); + this.queryToAdd = trimmedQueryString; + await this.addStarredQuery(item); + this.queryToAdd = ''; } - } else { - await this.addStarredQuery(item); - } - }} - data-test-subj="ESQLFavoriteButton" - /> + }} + data-test-subj="ESQLFavoriteButton" + /> + ); } diff --git a/src/platform/packages/shared/content-management/content_editor/src/services.tsx b/src/platform/packages/shared/content-management/content_editor/src/services.tsx index 7170940665188..1ea20f0b3b09b 100644 --- a/src/platform/packages/shared/content-management/content_editor/src/services.tsx +++ b/src/platform/packages/shared/content-management/content_editor/src/services.tsx @@ -13,6 +13,7 @@ import { UserProfilesProvider, useUserProfilesServices, } from '@kbn/content-management-user-profiles'; +import { QueryClientProvider, useQueryClient } from '@tanstack/react-query'; import type { EuiComboBoxProps } from '@elastic/eui'; import type { AnalyticsServiceStart } from '@kbn/core-analytics-browser'; @@ -138,18 +139,21 @@ export const ContentEditorKibanaProvider: FC< }, [savedObjectsTagging?.ui.components.TagList]); const userProfilesServices = useUserProfilesServices(); + const queryClient = useQueryClient(); const openFlyout = useCallback( (node: ReactNode, options: OverlayFlyoutOpenOptions) => { return coreOpenFlyout( toMountPoint( - {node}, + + {node} + , startServices ), options ); }, - [coreOpenFlyout, startServices, userProfilesServices] + [coreOpenFlyout, startServices, userProfilesServices, queryClient] ); return ( diff --git a/src/platform/packages/shared/content-management/content_insights/content_insights_public/src/components/activity_view.test.tsx b/src/platform/packages/shared/content-management/content_insights/content_insights_public/src/components/activity_view.test.tsx index a27d6466b2ef5..ad8483d6fafe1 100644 --- a/src/platform/packages/shared/content-management/content_insights/content_insights_public/src/components/activity_view.test.tsx +++ b/src/platform/packages/shared/content-management/content_insights/content_insights_public/src/components/activity_view.test.tsx @@ -11,7 +11,7 @@ import React from 'react'; import { render, screen, waitFor } from '@testing-library/react'; import { UserProfilesProvider } from '@kbn/content-management-user-profiles'; import { I18nProvider } from '@kbn/i18n-react'; - +import { QueryClientProvider, QueryClient } from '@tanstack/react-query'; import { ActivityView as ActivityViewComponent, ActivityViewProps } from './activity_view'; const mockGetUserProfile = jest.fn(async (uid: string) => ({ @@ -21,12 +21,15 @@ const mockGetUserProfile = jest.fn(async (uid: string) => ({ user: { username: uid, full_name: uid.toLocaleUpperCase() }, })); +const queryClient = new QueryClient(); const ActivityView = (props: ActivityViewProps) => { return ( - - - + + + + + ); }; diff --git a/src/platform/packages/shared/content-management/favorites/favorites_public/index.ts b/src/platform/packages/shared/content-management/favorites/favorites_public/index.ts index 30b80ef953af4..93792a71a186f 100644 --- a/src/platform/packages/shared/content-management/favorites/favorites_public/index.ts +++ b/src/platform/packages/shared/content-management/favorites/favorites_public/index.ts @@ -16,5 +16,5 @@ export { type FavoriteButtonProps, cssFavoriteHoverWithinEuiTableRow, } from './src/components/favorite_button'; - +export { StardustWrapper } from './src/components/stardust_wrapper'; export { FavoritesEmptyState } from './src/components/favorites_empty_state'; diff --git a/src/platform/packages/shared/content-management/favorites/favorites_public/src/components/favorite_button.tsx b/src/platform/packages/shared/content-management/favorites/favorites_public/src/components/favorite_button.tsx index c7e512f7782f6..be9cd0a6c2d2e 100644 --- a/src/platform/packages/shared/content-management/favorites/favorites_public/src/components/favorite_button.tsx +++ b/src/platform/packages/shared/content-management/favorites/favorites_public/src/components/favorite_button.tsx @@ -12,8 +12,9 @@ import { i18n } from '@kbn/i18n'; import classNames from 'classnames'; import { EuiButtonIcon, euiCanAnimate, EuiThemeComputed } from '@elastic/eui'; import { css } from '@emotion/react'; -import { useFavorites, useRemoveFavorite, useAddFavorite } from '../favorites_query'; +import { useAddFavorite, useFavorites, useRemoveFavorite } from '../favorites_query'; import { useFavoritesClient } from '../favorites_context'; +import { StardustWrapper } from './stardust_wrapper'; export interface FavoriteButtonProps { id: string; @@ -31,49 +32,45 @@ export const FavoriteButton = ({ id, className }: FavoriteButtonProps) => { if (!data) return null; const isFavorite = data.favoriteIds.includes(id); + const isFavoriteOptimistic = isFavorite || addFavorite.isLoading; - if (isFavorite) { - const title = i18n.translate('contentManagement.favorites.unfavoriteButtonLabel', { - defaultMessage: 'Remove from Starred', - }); + const title = isFavoriteOptimistic + ? i18n.translate('contentManagement.favorites.unfavoriteButtonLabel', { + defaultMessage: 'Remove from Starred', + }) + : i18n.translate('contentManagement.favorites.favoriteButtonLabel', { + defaultMessage: 'Add to Starred', + }); - return ( + return ( + { - favoritesClient?.reportRemoveFavoriteClick(); - removeFavorite.mutate({ id }); - }} - className={classNames(className, 'cm-favorite-button', { - 'cm-favorite-button--active': !removeFavorite.isLoading, - })} - data-test-subj="unfavoriteButton" - /> - ); - } else { - const title = i18n.translate('contentManagement.favorites.favoriteButtonLabel', { - defaultMessage: 'Add to Starred', - }); - return ( - { - favoritesClient?.reportAddFavoriteClick(); - addFavorite.mutate({ id }); + if (addFavorite.isLoading || removeFavorite.isLoading) return; + + if (isFavorite) { + favoritesClient?.reportRemoveFavoriteClick(); + removeFavorite.mutate({ id }); + } else { + favoritesClient?.reportAddFavoriteClick(); + addFavorite.mutate({ id }); + } }} - className={classNames(className, 'cm-favorite-button', { - 'cm-favorite-button--empty': !addFavorite.isLoading, + className={classNames('cm-favorite-button', { + 'cm-favorite-button--active': isFavorite && !removeFavorite.isLoading, + 'cm-favorite-button--empty': !isFavorite && !addFavorite.isLoading, })} - data-test-subj="favoriteButton" + data-test-subj={isFavorite ? 'unfavoriteButton' : 'favoriteButton'} /> - ); - } + + ); }; /** diff --git a/src/platform/packages/shared/content-management/favorites/favorites_public/src/components/stardust_wrapper.tsx b/src/platform/packages/shared/content-management/favorites/favorites_public/src/components/stardust_wrapper.tsx new file mode 100644 index 0000000000000..7395f730bdef4 --- /dev/null +++ b/src/platform/packages/shared/content-management/favorites/favorites_public/src/components/stardust_wrapper.tsx @@ -0,0 +1,137 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import React, { PropsWithChildren } from 'react'; +import classNames from 'classnames'; +import { euiCanAnimate, useEuiTheme } from '@elastic/eui'; +import { css } from '@emotion/react'; + +const buttonSize = 24; // 24px is the default size for EuiButtonIcon xs, TODO: calculate from theme? +const stardustRadius = 8; +const stardustSize = buttonSize + stardustRadius; // should be larger than the button size to nicely overlap +const stardustOffset = (stardustSize - buttonSize) / 2; + +const stardustContainerStyles = css` + @keyframes popping { + 0% { + transform: scale(0, 0); + } + 40% { + transform: scale(0, 0); + } + 75% { + transform: scale(1.3, 1.3); + } + 100% { + transform: scale(1, 1); + } + } + + @keyframes sparkles-width { + 0% { + stroke-width: 0; + } + 15% { + stroke-width: 8; + } + 100% { + stroke-width: 0; + } + } + + @keyframes sparkles-size { + 0% { + transform: scale(0.2, 0.2); + } + 5% { + transform: scale(0.2, 0.2); + } + 85% { + transform: scale(2, 2); + } + } + + ${euiCanAnimate} { + &.stardust-active { + svg { + animation: popping 0.5s 1; + } + + .stardust { + animation: sparkles-size 0.65s 1; + + circle { + animation: sparkles-width 0.65s 1; + } + } + } + } + + .stardust { + pointer-events: none; + position: absolute; + top: -${stardustOffset}px; + left: -${stardustOffset}px; + } + + circle { + stroke-dashoffset: 8; + stroke-dasharray: 1 9; + stroke-width: 0; + } +`; + +/* Disable the animation on the button icon to not overcrowd the stardust effect */ +const euiButtonIconStylesDisableAnimation = css` + ${euiCanAnimate} { + button.euiButtonIcon { + &:active, + &:hover, + &:focus { + animation: none; + transform: none; + background-color: transparent; + } + } + } +`; + +export const StardustWrapper = ({ + active, + className, + children, +}: PropsWithChildren<{ className?: string; active: boolean }>) => { + const { euiTheme } = useEuiTheme(); + + return ( +
+ {children} + + + +
+ ); +}; diff --git a/src/platform/packages/shared/content-management/favorites/favorites_public/src/favorites_query.tsx b/src/platform/packages/shared/content-management/favorites/favorites_public/src/favorites_query.tsx index 63e8ad3a7ef75..e10a1d76326e3 100644 --- a/src/platform/packages/shared/content-management/favorites/favorites_public/src/favorites_query.tsx +++ b/src/platform/packages/shared/content-management/favorites/favorites_public/src/favorites_query.tsx @@ -31,7 +31,7 @@ export const useFavorites = ({ enabled = true }: { enabled?: boolean } = { enabl return useQuery( favoritesKeys.byType(favoritesClient?.getFavoriteType() ?? 'never'), () => favoritesClient!.getFavorites(), - { enabled } + { enabled, staleTime: 5 * 60 * 1000 } ); }; diff --git a/src/platform/packages/shared/content-management/table_list_view_table/src/__jest__/tests.helpers.tsx b/src/platform/packages/shared/content-management/table_list_view_table/src/__jest__/tests.helpers.tsx index 7dcff19fdecb5..7a0da5d4a5e3c 100644 --- a/src/platform/packages/shared/content-management/table_list_view_table/src/__jest__/tests.helpers.tsx +++ b/src/platform/packages/shared/content-management/table_list_view_table/src/__jest__/tests.helpers.tsx @@ -12,6 +12,7 @@ import type { ComponentType } from 'react'; import { from } from 'rxjs'; import { ContentEditorProvider } from '@kbn/content-management-content-editor'; import { UserProfilesProvider, UserProfilesServices } from '@kbn/content-management-user-profiles'; +import { MaybeQueryClientProvider } from '../query_client'; import { TagList } from '../mocks'; import { TableListViewProvider, Services } from '../services'; @@ -46,13 +47,15 @@ export function WithServices

( return (props: P) => { const services = getMockServices(overrides); return ( - - undefined}> - - - - - + + + undefined}> + + + + + + ); }; } diff --git a/src/platform/packages/shared/content-management/table_list_view_table/src/components/item_details.tsx b/src/platform/packages/shared/content-management/table_list_view_table/src/components/item_details.tsx index 42677612c7c45..ef86e6d35413c 100644 --- a/src/platform/packages/shared/content-management/table_list_view_table/src/components/item_details.tsx +++ b/src/platform/packages/shared/content-management/table_list_view_table/src/components/item_details.tsx @@ -100,7 +100,8 @@ export function ItemDetails({ diff --git a/src/platform/packages/shared/content-management/table_list_view_table/src/query_client.tsx b/src/platform/packages/shared/content-management/table_list_view_table/src/query_client.tsx new file mode 100644 index 0000000000000..1e9d9c087b4f0 --- /dev/null +++ b/src/platform/packages/shared/content-management/table_list_view_table/src/query_client.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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import React from 'react'; +import { defaultContext, QueryClient, QueryClientProvider } from '@tanstack/react-query'; + +const defaultTableQueryClient = new QueryClient({ + defaultOptions: { queries: { retry: false } }, +}); + +/** + * Attempts to reuse existing query client otherwise fallbacks to a default one. + */ +export function MaybeQueryClientProvider({ children }: React.PropsWithChildren) { + const client = React.useContext(defaultContext); + + if (client) { + return <>{children}; + } + + return {children}; +} diff --git a/src/platform/packages/shared/content-management/table_list_view_table/src/services.tsx b/src/platform/packages/shared/content-management/table_list_view_table/src/services.tsx index 7ae90d29a74ba..eec5c84c700c9 100644 --- a/src/platform/packages/shared/content-management/table_list_view_table/src/services.tsx +++ b/src/platform/packages/shared/content-management/table_list_view_table/src/services.tsx @@ -33,6 +33,7 @@ import { FavoritesClientPublic, FavoritesContextProvider, } from '@kbn/content-management-favorites-public'; +import { MaybeQueryClientProvider } from './query_client'; import { TAG_MANAGEMENT_APP_URL } from './constants'; import type { Tag } from './types'; @@ -258,50 +259,55 @@ export const TableListViewKibanaProvider: FC< return ( - - - - { - notifications.toasts.addDanger({ title: toMountPoint(title, startServices), text }); - }} + + + + - - application.getUrlForApp('management', { - path: `/kibana/settings?query=savedObjects:listingLimit`, - }) - } + { notifications.toasts.addDanger({ title: toMountPoint(title, startServices), text, }); }} - searchQueryParser={searchQueryParser} - DateFormatterComp={(props) => } - currentAppId$={application.currentAppId$} - navigateToUrl={application.navigateToUrl} - isTaggingEnabled={() => Boolean(savedObjectsTagging)} - isFavoritesEnabled={async () => services.favorites?.isAvailable() ?? false} - getTagList={getTagList} - TagList={TagList} - itemHasTags={itemHasTags} - getTagIdsFromReferences={getTagIdsFromReferences} - getTagManagementUrl={() => core.http.basePath.prepend(TAG_MANAGEMENT_APP_URL)} - isKibanaVersioningEnabled={services.isKibanaVersioningEnabled ?? false} > - {children} - - - - - + + application.getUrlForApp('management', { + path: `/kibana/settings?query=savedObjects:listingLimit`, + }) + } + notifyError={(title, text) => { + notifications.toasts.addDanger({ + title: toMountPoint(title, startServices), + text, + }); + }} + searchQueryParser={searchQueryParser} + DateFormatterComp={(props) => } + currentAppId$={application.currentAppId$} + navigateToUrl={application.navigateToUrl} + isTaggingEnabled={() => Boolean(savedObjectsTagging)} + isFavoritesEnabled={async () => services.favorites?.isAvailable() ?? false} + getTagList={getTagList} + TagList={TagList} + itemHasTags={itemHasTags} + getTagIdsFromReferences={getTagIdsFromReferences} + getTagManagementUrl={() => core.http.basePath.prepend(TAG_MANAGEMENT_APP_URL)} + isKibanaVersioningEnabled={services.isKibanaVersioningEnabled ?? false} + > + {children} + + + + + + ); }; diff --git a/src/platform/packages/shared/content-management/user_profiles/src/queries.ts b/src/platform/packages/shared/content-management/user_profiles/src/queries.ts index 7a54ada15d3c4..b18ffa0d82211 100644 --- a/src/platform/packages/shared/content-management/user_profiles/src/queries.ts +++ b/src/platform/packages/shared/content-management/user_profiles/src/queries.ts @@ -32,6 +32,7 @@ export const useUserProfiles = (uids: string[], opts?: { enabled?: boolean }) => const query = useQuery({ queryKey: userProfileKeys.bulkGet(uids), queryFn: () => bulkGetUserProfiles(uids), + staleTime: Infinity, enabled: opts?.enabled ?? true, }); return query; diff --git a/src/platform/packages/shared/content-management/user_profiles/src/services.tsx b/src/platform/packages/shared/content-management/user_profiles/src/services.tsx index 8053727d1bb2d..e64d7a1fa9840 100644 --- a/src/platform/packages/shared/content-management/user_profiles/src/services.tsx +++ b/src/platform/packages/shared/content-management/user_profiles/src/services.tsx @@ -7,16 +7,11 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import type { UserProfileServiceStart } from '@kbn/core-user-profile-browser'; import React, { FC, PropsWithChildren, useCallback, useContext, useMemo } from 'react'; import type { UserProfile } from '@kbn/user-profile-components'; import { createBatcher } from './utils/batcher'; -export const queryClient = new QueryClient({ - defaultOptions: { queries: { retry: false, staleTime: 30 * 60 * 1000 } }, -}); - export interface UserProfilesKibanaDependencies { core: { userProfile: { @@ -36,11 +31,7 @@ export const UserProfilesProvider: FC> = children, ...services }) => { - return ( - - {children} - - ); + return {children}; }; export const UserProfilesKibanaProvider: FC> = ({ diff --git a/src/platform/packages/shared/react/kibana_mount/mount_point_portal.test.tsx b/src/platform/packages/shared/react/kibana_mount/mount_point_portal.test.tsx index b30920c914e4b..22af351115a1a 100644 --- a/src/platform/packages/shared/react/kibana_mount/mount_point_portal.test.tsx +++ b/src/platform/packages/shared/react/kibana_mount/mount_point_portal.test.tsx @@ -10,13 +10,13 @@ import React, { FC } from 'react'; import { mount, ReactWrapper } from 'enzyme'; import type { MountPoint, UnmountCallback } from '@kbn/core-mount-utils-browser'; -import { MountPointPortal } from './mount_point_portal'; +import { MountPointPortal, MountPointPortalProps } from './mount_point_portal'; import { act } from 'react-dom/test-utils'; describe('MountPointPortal', () => { let portalTarget: HTMLElement; let mountPoint: MountPoint; - let setMountPoint: jest.Mock<(mountPoint: MountPoint) => void>; + let setMountPoint: MountPointPortalProps['setMountPoint']; let dom: ReactWrapper; const refresh = () => { @@ -38,7 +38,9 @@ describe('MountPointPortal', () => { beforeEach(() => { portalTarget = document.createElement('div'); document.body.append(portalTarget); - setMountPoint = jest.fn().mockImplementation((mp) => (mountPoint = mp)); + setMountPoint = jest.fn().mockImplementation((mp) => { + mountPoint = mp; + }); }); afterEach(() => { @@ -143,6 +145,35 @@ describe('MountPointPortal', () => { expect(portalTarget.innerHTML).toBe(''); }); + it('calls cleanup function when the component is unmounted', async () => { + const cleanup = jest.fn(); + dom = mount( + { + mountPoint = mp!; + return cleanup; + }} + > + portal content + + ); + + act(() => { + mountPoint(portalTarget); + }); + + await refresh(); + + expect(portalTarget.innerHTML).toBe('portal content'); + + dom.unmount(); + + await refresh(); + + expect(portalTarget.innerHTML).toBe(''); + expect(cleanup).toHaveBeenCalledTimes(1); + }); + it('updates the content of the portal element when the content of MountPointPortal changes', async () => { const Wrapper: FC<{ setMount: (mountPoint: MountPoint | undefined) => void; diff --git a/src/platform/packages/shared/react/kibana_mount/mount_point_portal.tsx b/src/platform/packages/shared/react/kibana_mount/mount_point_portal.tsx index 590862d3d20cd..2e42afe71b544 100644 --- a/src/platform/packages/shared/react/kibana_mount/mount_point_portal.tsx +++ b/src/platform/packages/shared/react/kibana_mount/mount_point_portal.tsx @@ -14,9 +14,11 @@ import type { MountPoint } from '@kbn/core-mount-utils-browser'; import { useIfMounted } from './utils'; export interface MountPointPortalProps { - setMountPoint: (mountPoint: MountPoint | undefined) => void; + setMountPoint: SetMountPointFn; children: React.ReactNode; } +type SetMountPointFn = (mountPoint: MountPoint | undefined) => UnsetMountPointFn | void; +type UnsetMountPointFn = () => void; /** * Utility component to portal a part of a react application into the provided `MountPoint`. @@ -31,7 +33,7 @@ export const MountPointPortal: FC> = ({ const ifMounted = useIfMounted(); useEffect(() => { - setMountPoint((element) => { + const unsetMountPoint = setMountPoint((element) => { ifMounted(() => { el.current = element; setShouldRender(true); @@ -52,6 +54,9 @@ export const MountPointPortal: FC> = ({ setShouldRender(false); el.current = undefined; }); + if (unsetMountPoint) { + unsetMountPoint(); + } setMountPoint(undefined); }; }, [setMountPoint, ifMounted]); diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_listing/dashboard_listing.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_listing/dashboard_listing.tsx index dbbca1c9237d1..f440b35a4610c 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_listing/dashboard_listing.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_listing/dashboard_listing.tsx @@ -14,6 +14,7 @@ import { TableListView } from '@kbn/content-management-table-list-view'; import { TableListViewKibanaProvider } from '@kbn/content-management-table-list-view-table'; import { FormattedRelative, I18nProvider } from '@kbn/i18n-react'; import { useExecutionContext } from '@kbn/kibana-react-plugin/public'; +import { QueryClientProvider } from '@tanstack/react-query'; import { DASHBOARD_APP_ID } from '../plugin_constants'; import { DASHBOARD_CONTENT_ID } from '../utils/telemetry_constants'; @@ -23,6 +24,7 @@ import { serverlessService, usageCollectionService, } from '../services/kibana_services'; +import { dashboardQueryClient } from '../services/dashboard_query_client'; import { DashboardUnsavedListing } from './dashboard_unsaved_listing'; import { useDashboardListingTable } from './hooks/use_dashboard_listing_table'; import { DashboardListingProps, DashboardSavedObjectUserContent } from './types'; @@ -61,27 +63,29 @@ export const DashboardListing = ({ return ( - - {...tableListViewTableProps}> - <> - {children} - - - - + + + {...tableListViewTableProps}> + <> + {children} + + + + + ); }; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/_dashboard_top_nav.scss b/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/_dashboard_top_nav.scss index 0d3f80ae79fec..3d39da0edebd7 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/_dashboard_top_nav.scss +++ b/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/_dashboard_top_nav.scss @@ -1,6 +1,7 @@ .kbnBody { .dshTitleBreadcrumbs__updateIcon { margin-left: $euiSizeXS; + margin-top: calc(-1 * $euiSizeXS / 2); cursor: pointer; } diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/dashboard_favorite_button.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/dashboard_favorite_button.tsx new file mode 100644 index 0000000000000..7976cda6228d6 --- /dev/null +++ b/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/dashboard_favorite_button.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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import React, { useMemo } from 'react'; +import { + FavoriteButton, + FavoritesClient, + FavoritesContextProvider, +} from '@kbn/content-management-favorites-public'; +import { QueryClientProvider } from '@tanstack/react-query'; +import { DASHBOARD_APP_ID } from '../plugin_constants'; +import { DASHBOARD_CONTENT_ID } from '../utils/telemetry_constants'; +import { coreServices, usageCollectionService } from '../services/kibana_services'; +import { dashboardQueryClient } from '../services/dashboard_query_client'; + +export const DashboardFavoriteButton = ({ dashboardId }: { dashboardId?: string }) => { + const dashboardFavoritesClient = useMemo(() => { + return new FavoritesClient(DASHBOARD_APP_ID, DASHBOARD_CONTENT_ID, { + http: coreServices.http, + userProfile: coreServices.userProfile, + usageCollection: usageCollectionService, + }); + }, []); + + return ( + + + {dashboardId && } + + + ); +}; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/internal_dashboard_top_nav.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/internal_dashboard_top_nav.tsx index f51c322bd0d61..315858d0feeb3 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/internal_dashboard_top_nav.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/internal_dashboard_top_nav.tsx @@ -26,6 +26,7 @@ import { getManagedContentBadge } from '@kbn/managed-content-badge'; import { TopNavMenuBadgeProps, TopNavMenuProps } from '@kbn/navigation-plugin/public'; import { useBatchedPublishingSubjects } from '@kbn/presentation-publishing'; import { LazyLabsFlyout, withSuspense } from '@kbn/presentation-util-plugin/public'; +import { MountPointPortal } from '@kbn/react-kibana-mount'; import { UI_SETTINGS } from '../../common'; import { useDashboardApi } from '../dashboard_api/use_dashboard_api'; @@ -33,6 +34,7 @@ import { dashboardManagedBadge, getDashboardBreadcrumb, getDashboardTitle, + topNavStrings, unsavedChangesBadgeStrings, } from '../dashboard_app/_dashboard_app_strings'; import { useDashboardMountContext } from '../dashboard_app/hooks/dashboard_mount_context'; @@ -53,6 +55,7 @@ import { import { getDashboardCapabilities } from '../utils/get_dashboard_capabilities'; import './_dashboard_top_nav.scss'; import { getFullEditPath } from '../utils/urls'; +import { DashboardFavoriteButton } from './dashboard_favorite_button'; export interface InternalDashboardTopNavProps { customLeadingBreadCrumbs?: EuiBreadcrumb[]; @@ -152,6 +155,9 @@ export function InternalDashboardTopNav({ <> {dashboardTitle} | undefined) => { + if (mountPoint) { + return coreServices.chrome.setBreadcrumbsAppendExtension({ + content: mountPoint, + order: 0, + }); + } + }, + [] + ); + return (

: null} {showBorderBottom && } + + +

); } diff --git a/src/platform/plugins/shared/dashboard/public/services/dashboard_query_client.ts b/src/platform/plugins/shared/dashboard/public/services/dashboard_query_client.ts new file mode 100644 index 0000000000000..c039c779b1075 --- /dev/null +++ b/src/platform/plugins/shared/dashboard/public/services/dashboard_query_client.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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { QueryClient } from '@tanstack/react-query'; + +export const dashboardQueryClient = new QueryClient({ + defaultOptions: { + queries: { + retry: false, + }, + }, +}); diff --git a/x-pack/test/functional/apps/dashboard/group1/favorite.ts b/x-pack/test/functional/apps/dashboard/group1/favorite.ts index 3fdc206b1252e..a9f12eef37d44 100644 --- a/x-pack/test/functional/apps/dashboard/group1/favorite.ts +++ b/x-pack/test/functional/apps/dashboard/group1/favorite.ts @@ -107,5 +107,22 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await testSubjects.click('allTab'); await listingTable.expectItemsCount('dashboard', 1); }); + + it('can favorite a dashboard from the dashboard view', async () => { + await listingTable.clickItemLink('dashboard', 'A-Dashboard'); + await dashboard.waitForRenderComplete(); + await testSubjects.click('favoriteButton'); + await testSubjects.exists('unfavoriteButton'); + + await dashboard.gotoDashboardListingURL({ + args: { + basePath: '/s/custom_space', + ensureCurrentUrl: false, + shouldLoginIfPrompted: false, + }, + }); + await testSubjects.exists('tabbedTableFilter'); + await listingTable.expectItemsCount('dashboard', 1); + }); }); } From 82f7aa3b190dadf3eaa0541a5cacaf2984df55d4 Mon Sep 17 00:00:00 2001 From: Vitalii Dmyterko <92328789+vitaliidm@users.noreply.github.com> Date: Mon, 17 Feb 2025 12:56:05 +0000 Subject: [PATCH 28/78] [Security Solution][Detection Engine] removes flaky comment from FTR test (#211209) ## Summary - addresses https://github.com/elastic/kibana/issues/179693 - no failures for a very long time - likely cause of flakiness was fixed earlier https://github.com/elastic/kibana/issues/179704#issuecomment-2659128455 Not failures reported in https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/5888 flaky runner too --- .../basic_license_essentials_tier/alert_status/alert_status.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/alerts/basic_license_essentials_tier/alert_status/alert_status.ts b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/alerts/basic_license_essentials_tier/alert_status/alert_status.ts index bf2e5831c10f7..888810e914a3d 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/alerts/basic_license_essentials_tier/alert_status/alert_status.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/detections_response/detection_engine/alerts/basic_license_essentials_tier/alert_status/alert_status.ts @@ -44,7 +44,6 @@ export default ({ getService }: FtrProviderContext) => { const path = dataPathBuilder.getPath('auditbeat/hosts'); describe('@ess @serverless change alert status endpoints', () => { - // Flakey: See https://github.com/elastic/kibana/issues/179704 describe('validation checks', () => { describe('update by ids', () => { it('should not give errors when querying and the alerts index does not exist yet', async () => { From 0c69f75a3795e69aa7084911eeacc5b4cc0166f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Luis=20Gonz=C3=A1lez?= Date: Mon, 17 Feb 2025 14:03:11 +0100 Subject: [PATCH 29/78] [Search] Providing all connectors to the search results (#211213) ## Summary All search connectors are provided to the top global search bar from the Enterprise Search plugin. Taking users to the connectors creation flow in Search where only self-managed will be the option available and preselected by default tackled in this another PR https://github.com/elastic/kibana/pull/211206 Additionally we should not provide the same connectors coming from Integrations in order to avoid duplicated listed connectors as displayed in the screenshot, this should be done in this related issue: https://github.com/elastic/search-team/issues/9287 ![CleanShot 2025-02-14 at 13 14 08@2x](https://github.com/user-attachments/assets/ef34867a-49fe-47ca-9dda-02e76e20d792) ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The `release_note:breaking` label should be applied in these situations. - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [ ] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) ### Identify risks Does this PR introduce any risks? For example, consider risks like hard to test bugs, performance regression, potential of data loss. Describe the risk, its severity, and mitigation for each identified risk. Invite stakeholders and evaluate how to proceed before merging. - [ ] [See some risk examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) - [ ] ... --------- Co-authored-by: Elastic Machine Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../enterprise_search/server/plugin.ts | 3 +- .../utils/search_result_provider.test.ts | 31 ++++++++++++------- .../server/utils/search_result_provider.ts | 30 +++--------------- 3 files changed, 25 insertions(+), 39 deletions(-) diff --git a/x-pack/solutions/search/plugins/enterprise_search/server/plugin.ts b/x-pack/solutions/search/plugins/enterprise_search/server/plugin.ts index 43592796844cf..c9ce96e7a2c5e 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/server/plugin.ts +++ b/x-pack/solutions/search/plugins/enterprise_search/server/plugin.ts @@ -117,7 +117,6 @@ export class EnterpriseSearchPlugin implements Plugin { title: 'Customized connector', type: 'Elasticsearch', url: { - path: `${ENTERPRISE_SEARCH_CONTENT_PLUGIN.URL}/connectors/select_connector?connector_type=connector_client&service_type=`, + path: `${ENTERPRISE_SEARCH_CONTENT_PLUGIN.URL}/connectors/select_connector`, + prependBasePath: true, + }, + }; + + const mongodbConnectorResult = { + icon: 'mongodb.svg', + id: 'mongodb', + score: 75, + title: 'MongoDB', + type: 'Elasticsearch', + url: { + path: `${ENTERPRISE_SEARCH_CONTENT_PLUGIN.URL}/connectors/select_connector`, prependBasePath: true, }, }; @@ -95,8 +107,7 @@ describe('Search search provider', () => { { hasConnectors: true, } as any, - connectors, - false + connectors ); beforeEach(() => {}); @@ -132,7 +143,7 @@ describe('Search search provider', () => { mockSearchProviderContext ) ).toBe('(a|)', { - a: expect.arrayContaining([{ ...customizedConnectorResult, score: 80 }]), + a: expect.arrayContaining([{ ...mongodbConnectorResult, score: 80 }]), }); }); }); @@ -142,8 +153,7 @@ describe('Search search provider', () => { { hasConnectors: false, } as any, - connectors, - false + connectors ); getTestScheduler().run(({ expectObservable }) => { expectObservable( @@ -203,8 +213,7 @@ describe('Search search provider', () => { { hasConnectors: false, } as any, - connectors, - false + connectors ); getTestScheduler().run(({ expectObservable }) => { expectObservable( @@ -223,8 +232,7 @@ describe('Search search provider', () => { { hasConnectors: false, } as any, - connectors, - false + connectors ); getTestScheduler().run(({ expectObservable }) => { expectObservable( @@ -244,8 +252,7 @@ describe('Search search provider', () => { { hasConnectors: true, } as any, - connectors, - true + connectors ); getTestScheduler().run(({ expectObservable }) => { expectObservable( diff --git a/x-pack/solutions/search/plugins/enterprise_search/server/utils/search_result_provider.ts b/x-pack/solutions/search/plugins/enterprise_search/server/utils/search_result_provider.ts index 49fd7d4330187..5d72a6811a7af 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/server/utils/search_result_provider.ts +++ b/x-pack/solutions/search/plugins/enterprise_search/server/utils/search_result_provider.ts @@ -12,11 +12,7 @@ import { i18n } from '@kbn/i18n'; import { ConnectorServerSideDefinition } from '@kbn/search-connectors'; import { ConfigType } from '..'; -import { - ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE, - ENTERPRISE_SEARCH_CONTENT_PLUGIN, - AI_SEARCH_PLUGIN, -} from '../../common/constants'; +import { ENTERPRISE_SEARCH_CONTENT_PLUGIN, AI_SEARCH_PLUGIN } from '../../common/constants'; type ServiceDefinition = | ConnectorServerSideDefinition @@ -31,30 +27,18 @@ type ServiceDefinition = export function toSearchResult({ iconPath, - isCloud, - isNative, name, score, serviceType, url, }: { iconPath?: string; - isCloud: boolean; - isNative?: boolean; name: string; score: number; serviceType: string; url?: string; }) { - const isCrawler = serviceType === ENTERPRISE_SEARCH_CONNECTOR_CRAWLER_SERVICE_TYPE; - const connectorTypeParam = !isCrawler - ? isCloud && isNative - ? 'native' - : 'connector_client' - : null; - const newUrl = isCrawler - ? `${ENTERPRISE_SEARCH_CONTENT_PLUGIN.URL}/crawlers/new_crawler` - : `${ENTERPRISE_SEARCH_CONTENT_PLUGIN.URL}/connectors/select_connector?connector_type=${connectorTypeParam}&service_type=${serviceType}`; + const newUrl = `${ENTERPRISE_SEARCH_CONTENT_PLUGIN.URL}/connectors/select_connector`; return { icon: iconPath || 'logoEnterpriseSearch', @@ -71,8 +55,7 @@ export function toSearchResult({ export function getSearchResultProvider( config: ConfigType, - connectorTypes: ConnectorServerSideDefinition[], - isCloud: boolean + connectorTypes: ConnectorServerSideDefinition[] ): GlobalSearchResultProvider { return { find: ({ term, types, tags }, { aborted$, maxResults }, { core: { capabilities } }) => { @@ -89,9 +72,8 @@ export function getSearchResultProvider( if (!caps.catalogue.enterpriseSearch) { return []; } - const selfManagedConnectors = connectorTypes.filter((connector) => !connector.isNative); const services: ServiceDefinition[] = [ - ...(config.hasConnectors ? selfManagedConnectors : []), + ...(config.hasConnectors ? connectorTypes : []), { keywords: ['esre', 'search'], @@ -104,7 +86,7 @@ export function getSearchResultProvider( ]; const result = services .map((service) => { - const { isNative, iconPath, name, keywords, serviceType } = service; + const { iconPath, name, keywords, serviceType } = service; const url = 'url' in service ? service.url : undefined; let score = 0; const searchTerm = (term || '').toLowerCase(); @@ -124,8 +106,6 @@ export function getSearchResultProvider( } return toSearchResult({ iconPath, - isCloud, - isNative, name, score, serviceType, From 08400b1f4225bcc20b3c28262432ba269e117750 Mon Sep 17 00:00:00 2001 From: Dzmitry Lemechko Date: Mon, 17 Feb 2025 14:46:44 +0100 Subject: [PATCH 30/78] [kbn-scout][maps] waitForRenderComplete (#211265) ## Summary This PR add a method to wait for map to be loaded to replace generic `renderable.waitForRender()`. While investigating the recent test failure on CI I found out that for maps case we can simplify the logic with few facts: - before start waiting for render to complete, we need to wait for main container `#maps-plugin` to be in DOM. It takes 2-3 seconds. - there is always a single div block with `data-render-complete` attribute, and there is a comment in source code stating `See if the "data-render-complete" attribute is "true". If so we're done!` which means we can simply wait for `div[data-dom-id][data-render-complete="true"]` https://github.com/elastic/kibana/blob/6de2ef0e6dee8f1aefc3f6f3d716431d433d9dc9/x-pack/platform/plugins/shared/maps/public/connected_components/map_container/map_container.tsx#L103-L116 `renderable.waitForRender()` is a good waiter, but probably for dashboard with multiple panels. --- .../src/playwright/page_objects/maps_page.ts | 13 ++++++++++++- .../maps/ui_tests/tests/full_screen_mode.spec.ts | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/kbn-scout/src/playwright/page_objects/maps_page.ts b/packages/kbn-scout/src/playwright/page_objects/maps_page.ts index bff713088b45c..94eb713368f8c 100644 --- a/packages/kbn-scout/src/playwright/page_objects/maps_page.ts +++ b/packages/kbn-scout/src/playwright/page_objects/maps_page.ts @@ -9,10 +9,21 @@ import { ScoutPage } from '..'; +const DEFAULT_MAP_LOADING_TIMEOUT = 10_000; + export class MapsPage { constructor(private readonly page: ScoutPage) {} async gotoNewMap() { - await this.page.gotoApp('maps/map'); + return this.page.gotoApp('maps/map'); + } + + async waitForRenderComplete() { + // first wait for the top level container to be present + await this.page.locator('div#maps-plugin').waitFor({ timeout: DEFAULT_MAP_LOADING_TIMEOUT }); + // then wait for the map to be fully rendered + return this.page + .locator('div[data-dom-id][data-render-complete="true"]') + .waitFor({ timeout: DEFAULT_MAP_LOADING_TIMEOUT }); } } diff --git a/x-pack/platform/plugins/shared/maps/ui_tests/tests/full_screen_mode.spec.ts b/x-pack/platform/plugins/shared/maps/ui_tests/tests/full_screen_mode.spec.ts index e6f4d89ef1db1..07a179ad5116a 100644 --- a/x-pack/platform/plugins/shared/maps/ui_tests/tests/full_screen_mode.spec.ts +++ b/x-pack/platform/plugins/shared/maps/ui_tests/tests/full_screen_mode.spec.ts @@ -22,7 +22,7 @@ test.describe( test.beforeEach(async ({ browserAuth, pageObjects }) => { await browserAuth.loginAsViewer(); await pageObjects.maps.gotoNewMap(); - await pageObjects.renderable.waitForRender(); + await pageObjects.maps.waitForRenderComplete(); }); test('Full screen mode', async ({ page }) => { From 745784f32a528705c04343f3c8a619b3caf939f2 Mon Sep 17 00:00:00 2001 From: Charlotte Alexandra Wilson Date: Mon, 17 Feb 2025 14:19:09 +0000 Subject: [PATCH 31/78] Delete 'ServiceEntityStoreEnabled' Flag usages (#211066) ## Summary This PR deletes all usages of ServiceEntityStoreEnabled feature flag. The feature flag itself has been left in `experimental_features.ts` --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../common/entity_analytics/utils.test.ts | 22 ----------------- .../common/entity_analytics/utils.ts | 5 ---- .../hooks.test.ts | 2 +- .../hooks/use_entities_list_filters.test.ts | 2 +- .../entity_store/entity_store_data_client.ts | 4 ---- .../risk_score/calculate_risk_scores.test.ts | 24 ------------------- .../risk_score/calculate_risk_scores.ts | 4 +--- .../tasks/risk_scoring_task.test.ts | 10 ++++++-- .../configs/ess.config.ts | 7 +----- .../configs/serverless.config.ts | 1 - 10 files changed, 12 insertions(+), 69 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/utils.test.ts index b1d8024bd107d..4a878669c6f61 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/utils.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/utils.test.ts @@ -21,40 +21,18 @@ describe('utils', () => { }); describe('getDisabledEntityTypes', () => { - it('should return disabled entity types when serviceEntityStoreEnabled is false', () => { - const experimentalFeatures: ExperimentalFeatures = { - ...mockedExperimentalFeatures, - serviceEntityStoreEnabled: false, - assetInventoryStoreEnabled: true, - }; - const disabledEntityTypes = getDisabledEntityTypes(experimentalFeatures); - expect(disabledEntityTypes).toEqual([EntityType.service]); - }); - it('should return disabled entity types when assetInventoryStoreEnabled is false', () => { const experimentalFeatures: ExperimentalFeatures = { ...mockedExperimentalFeatures, - serviceEntityStoreEnabled: true, assetInventoryStoreEnabled: false, }; const disabledEntityTypes = getDisabledEntityTypes(experimentalFeatures); expect(disabledEntityTypes).toEqual([EntityType.universal]); }); - it('should return both disabled entity types when both features are false', () => { - const experimentalFeatures: ExperimentalFeatures = { - ...mockedExperimentalFeatures, - serviceEntityStoreEnabled: false, - assetInventoryStoreEnabled: false, - }; - const disabledEntityTypes = getDisabledEntityTypes(experimentalFeatures); - expect(disabledEntityTypes).toEqual([EntityType.service, EntityType.universal]); - }); - it('should return no disabled entity types when both features are true', () => { const experimentalFeatures: ExperimentalFeatures = { ...mockedExperimentalFeatures, - serviceEntityStoreEnabled: true, assetInventoryStoreEnabled: true, }; const disabledEntityTypes = getDisabledEntityTypes(experimentalFeatures); diff --git a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/utils.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/utils.ts index 74299eacc0afe..062f0909b0231 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/utils.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/utils.ts @@ -13,13 +13,8 @@ export const getDisabledEntityTypes = ( experimentalFeatures: ExperimentalFeatures ): EntityType[] => { const disabledEntityTypes: EntityType[] = []; - const isServiceEntityStoreEnabled = experimentalFeatures.serviceEntityStoreEnabled; const isUniversalEntityStoreEnabled = experimentalFeatures.assetInventoryStoreEnabled; - if (!isServiceEntityStoreEnabled) { - disabledEntityTypes.push(EntityType.service); - } - if (!isUniversalEntityStoreEnabled) { disabledEntityTypes.push(EntityType.universal); } diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/hooks.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/hooks.test.ts index 93e5f9aa2bae9..89996b6db4551 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/hooks.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/asset_criticality_file_uploader/hooks.test.ts @@ -17,7 +17,7 @@ const mockedUseKibana = mockUseKibana(); const mockedTelemetry = createTelemetryServiceMock(); jest.mock('../../../common/hooks/use_experimental_features', () => ({ - useEnableExperimental: () => ({ ...mockedExperimentalFeatures, serviceEntityStoreEnabled: true }), + useEnableExperimental: () => ({ ...mockedExperimentalFeatures }), })); jest.mock('../../../common/lib/kibana', () => { diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_filters.test.ts b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_filters.test.ts index d7e7be44c0aa3..32eb1268d5598 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_filters.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/hooks/use_entities_list_filters.test.ts @@ -16,7 +16,7 @@ import { mockGlobalState } from '../../../../common/mock'; const mockedExperimentalFeatures = mockGlobalState.app.enableExperimental; jest.mock('../../../../common/hooks/use_experimental_features', () => ({ - useEnableExperimental: () => ({ ...mockedExperimentalFeatures, serviceEntityStoreEnabled: true }), + useEnableExperimental: () => ({ ...mockedExperimentalFeatures }), })); jest.mock('../../../../common/hooks/use_global_filter_query'); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts index 073296dd2bd06..5c863d356a3a1 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts @@ -316,10 +316,6 @@ export class EntityStoreDataClient { throw new Error('Universal entity store is not enabled'); } - if (entityType === EntityType.service && !experimentalFeatures.serviceEntityStoreEnabled) { - throw new Error('Service entity store is not enabled'); - } - if (!this.options.taskManager) { throw new Error('Task Manager is not available'); } diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.test.ts index 5829d190fb2bb..5408501ae0e38 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.test.ts @@ -204,30 +204,6 @@ describe('calculateRiskScores()', () => { expect(response.scores.service).toHaveLength(2); }); - it('calculates risk score for service when the experimental flag is enabled', async () => { - const response = await calculateRiskScores({ - ...params, - experimentalFeatures: { - ...mockGlobalState.app.enableExperimental, - serviceEntityStoreEnabled: true, - }, - }); - - expect(response.scores.service).toHaveLength(2); - }); - - it('does NOT calculates risk score for service when the experimental flag is disabled', async () => { - const response = await calculateRiskScores({ - ...params, - experimentalFeatures: { - ...mockGlobalState.app.enableExperimental, - serviceEntityStoreEnabled: false, - }, - }); - - expect(response.scores.service).toHaveLength(0); - }); - it('returns scores in the expected format', async () => { const { scores: { host: hostScores }, diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts index d6685a04b6c33..267a05a23b7f5 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/calculate_risk_scores.ts @@ -311,9 +311,7 @@ export const calculateRiskScores = async ({ const userBuckets = response.aggregations.user?.buckets ?? []; const hostBuckets = response.aggregations.host?.buckets ?? []; - const serviceBuckets = experimentalFeatures.serviceEntityStoreEnabled - ? response.aggregations.service?.buckets ?? [] - : []; + const serviceBuckets = response.aggregations.service?.buckets ?? []; const afterKeys = { host: response.aggregations.host?.after_key, diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts index 28b6ce0214bab..20035065746bc 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/risk_score/tasks/risk_scoring_task.test.ts @@ -348,10 +348,16 @@ describe('Risk Scoring Task', () => { // add additional mock responses for the additional identifier calls mockRiskScoreService.calculateAndPersistScores .mockResolvedValueOnce({ + // first call - host entity type after_keys: { host: { 'user.name': 'value' } }, scores_written: 5, errors: [], - }) + }) // second call - user entity type + .mockResolvedValueOnce({ + after_keys: {}, + scores_written: 5, + errors: [], + }) // third call - service entity type .mockResolvedValueOnce({ after_keys: {}, scores_written: 5, @@ -369,7 +375,7 @@ describe('Risk Scoring Task', () => { entityAnalyticsConfig, experimentalFeatures: mockExperimentalFeatures, }); - expect(mockRiskScoreService.calculateAndPersistScores).toHaveBeenCalledTimes(4); + expect(mockRiskScoreService.calculateAndPersistScores).toHaveBeenCalledTimes(5); expect(mockRiskScoreService.calculateAndPersistScores).toHaveBeenCalledWith( expect.objectContaining({ diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/ess.config.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/ess.config.ts index a7617f75514d1..73492f96f3b31 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/ess.config.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/ess.config.ts @@ -15,12 +15,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { ...functionalConfig.getAll(), kbnTestServer: { ...functionalConfig.get('kbnTestServer'), - serverArgs: [ - ...functionalConfig.get('kbnTestServer.serverArgs'), - `--xpack.securitySolution.enableExperimental=${JSON.stringify([ - 'serviceEntityStoreEnabled', - ])}`, - ], + serverArgs: [...functionalConfig.get('kbnTestServer.serverArgs')], }, testFiles: [require.resolve('..')], junit: { diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/serverless.config.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/serverless.config.ts index 66045b8005c61..70bb6197364eb 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/serverless.config.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/serverless.config.ts @@ -9,7 +9,6 @@ import { createTestConfig } from '../../../../../config/serverless/config.base'; export default createTestConfig({ kbnTestServerArgs: [ - `--xpack.securitySolution.enableExperimental=${JSON.stringify(['serviceEntityStoreEnabled'])}`, `--xpack.securitySolutionServerless.productTypes=${JSON.stringify([ { product_line: 'security', product_tier: 'complete' }, { product_line: 'endpoint', product_tier: 'complete' }, From 0dfa21571b7e8d2a9c6fe55d899750ba2e23e5f9 Mon Sep 17 00:00:00 2001 From: Elena Shostak <165678770+elena-shostak@users.noreply.github.com> Date: Mon, 17 Feb 2025 22:27:07 +0700 Subject: [PATCH 32/78] jsonpath-plus minor upgrade (#211425) ## Summary `yarn.lock` update to respect the recent minor of `jsonpath-plus`. It is a transitive package of `oas`. ``` oas@^25.3.0: ..... jsonpath-plus "^10.0.0" ``` --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 522ccc9aff4f3..635a8a2be7ec9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23244,9 +23244,9 @@ jsonify@~0.0.0: integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= jsonpath-plus@^10.0.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-10.2.0.tgz#84d680544d9868579cc7c8f59bbe153a5aad54c4" - integrity sha512-T9V+8iNYKFL2n2rF+w02LBOT2JjDnTjioaNFrxRy0Bv1y/hNsqR/EBK7Ojy2ythRHwmz2cRIls+9JitQGZC/sw== + version "10.3.0" + resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-10.3.0.tgz#59e22e4fa2298c68dfcd70659bb47f0cad525238" + integrity sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA== dependencies: "@jsep-plugin/assignment" "^1.3.0" "@jsep-plugin/regex" "^1.0.4" From aa681551b03132ab470561a226a1ce42c0b6e5bb Mon Sep 17 00:00:00 2001 From: Jedr Blaszyk Date: Mon, 17 Feb 2025 16:48:34 +0100 Subject: [PATCH 33/78] [Integration] Hide elastic_connectors package (#211419) ## Summary Hide `elastic_conenctors` package by default. This excludes the package from: - integration page - search results #### Verification Without the change package shows up as the integration, and search results. With the change it's correctly excluded. --- .../shared/fleet/server/services/epm/filtered_packages.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x-pack/platform/plugins/shared/fleet/server/services/epm/filtered_packages.ts b/x-pack/platform/plugins/shared/fleet/server/services/epm/filtered_packages.ts index 4f18f6fbfddb8..b2f02a20f6496 100644 --- a/x-pack/platform/plugins/shared/fleet/server/services/epm/filtered_packages.ts +++ b/x-pack/platform/plugins/shared/fleet/server/services/epm/filtered_packages.ts @@ -10,7 +10,7 @@ import { FLEET_SERVER_PACKAGE } from '../../../common/constants'; export function getFilteredSearchPackages() { const shouldFilterFleetServer = appContextService.getConfig()?.internal?.fleetServerStandalone; - const filtered: string[] = ['profiler_collector', 'profiler_symbolizer']; + const filtered: string[] = ['profiler_collector', 'profiler_symbolizer', 'elastic_connectors']; // Do not allow to search for Fleet server integration if configured to use standalone fleet server if (shouldFilterFleetServer) { filtered.push(FLEET_SERVER_PACKAGE); @@ -22,7 +22,7 @@ export function getFilteredSearchPackages() { } export function getFilteredInstallPackages() { - const filtered: string[] = []; + const filtered: string[] = ['elastic_connectors']; const excludePackages = appContextService.getConfig()?.internal?.registry?.excludePackages ?? []; From cbaddbe2b2da7c8c90cb91dac001a1a087d365d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Luis=20Gonz=C3=A1lez?= Date: Mon, 17 Feb 2025 16:56:16 +0100 Subject: [PATCH 34/78] [Search] Consuming plugs and web EUI icons and removing custom ones (#211416) ## Summary `plugs` and `web` new icons are available since `EUI 99.2.0` . As agreed removing the custom temporary instances and consuming them from EUI instead. ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The `release_note:breaking` label should be applied in these situations. - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [ ] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) ### Identify risks Does this PR introduce any risks? For example, consider risks like hard to test bugs, performance regression, potential of data loss. Describe the risk, its severity, and mitigation for each identified risk. Invite stakeholders and evaluate how to proceed before merging. - [ ] [See some risk examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) - [ ] ... Co-authored-by: Elastic Machine --- .../search/packages/shared-ui/index.ts | 1 - .../shared-ui/src/icons/EuiIconPlugs.tsx | 32 ------------------- .../shared-ui/src/icons/EuiIconWeb.tsx | 32 ------------------- .../packages/shared-ui/src/icons/index.ts | 8 ----- .../connector_detail/connector_stats.tsx | 3 +- .../components/choose_connector.tsx | 3 +- .../connector_description_popover.tsx | 8 ++--- ...astic_managed_web_crawler_empty_prompt.tsx | 6 ++-- .../self_managed_web_crawler_empty_prompt.tsx | 8 ++--- .../connectors/edit_service_type.tsx | 3 +- ...lastic_managed_connectors_empty_prompt.tsx | 10 ++---- .../self_managed_connectors_empty_prompt.tsx | 12 +++---- ...stic_managed_web_crawlers_empty_prompt.tsx | 6 ++-- ...self_managed_web_crawlers_empty_prompt.tsx | 8 ++--- 14 files changed, 27 insertions(+), 113 deletions(-) delete mode 100644 x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconPlugs.tsx delete mode 100644 x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconWeb.tsx delete mode 100644 x-pack/solutions/search/packages/shared-ui/src/icons/index.ts diff --git a/x-pack/solutions/search/packages/shared-ui/index.ts b/x-pack/solutions/search/packages/shared-ui/index.ts index 5db02d31b4f97..66b35fc503371 100644 --- a/x-pack/solutions/search/packages/shared-ui/index.ts +++ b/x-pack/solutions/search/packages/shared-ui/index.ts @@ -9,4 +9,3 @@ export * from './src/connector_icon'; export * from './src/decorative_horizontal_stepper'; export * from './src/form_info_field/form_info_field'; export * from './src/search_empty_prompt'; -export * from './src/icons'; diff --git a/x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconPlugs.tsx b/x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconPlugs.tsx deleted file mode 100644 index ce7af9b282747..0000000000000 --- a/x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconPlugs.tsx +++ /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. - */ - -// Temporary custom asset while it's available in EUI - -import * as React from 'react'; -import type { SVGProps } from 'react'; -interface SVGRProps { - title?: string; - titleId?: string; -} -export const EuiIconPlugs = ({ title, titleId, ...props }: SVGProps & SVGRProps) => ( - - {title ? {title} : null} - - -); diff --git a/x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconWeb.tsx b/x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconWeb.tsx deleted file mode 100644 index 32200171345bf..0000000000000 --- a/x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconWeb.tsx +++ /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. - */ - -// Temporary custom asset while it's available in EUI - -import * as React from 'react'; -import type { SVGProps } from 'react'; -interface SVGRProps { - title?: string; - titleId?: string; -} -export const EuiIconWeb = ({ title, titleId, ...props }: SVGProps & SVGRProps) => ( - - {title ? {title} : null} - - -); diff --git a/x-pack/solutions/search/packages/shared-ui/src/icons/index.ts b/x-pack/solutions/search/packages/shared-ui/src/icons/index.ts deleted file mode 100644 index 6d4485a3296cf..0000000000000 --- a/x-pack/solutions/search/packages/shared-ui/src/icons/index.ts +++ /dev/null @@ -1,8 +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 * from './EuiIconPlugs'; -export * from './EuiIconWeb'; diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connector_detail/connector_stats.tsx b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connector_detail/connector_stats.tsx index fb22247de46ad..d963901168b40 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connector_detail/connector_stats.tsx +++ b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connector_detail/connector_stats.tsx @@ -28,7 +28,6 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { useKibana } from '@kbn/kibana-react-plugin/public'; import { Connector, ConnectorStatus, ElasticsearchIndex } from '@kbn/search-connectors'; -import { EuiIconPlugs } from '@kbn/search-shared-ui'; import { KibanaDeps } from '../../../../../common/types'; import { generateEncodedPath } from '../../../shared/encode_path_params'; @@ -403,7 +402,7 @@ export const ConnectorStats: React.FC = ({ = ({ 'xpack.enterpriseSearch.createConnector.chooseConnectorSelectable.euiComboBox.accessibleScreenReaderLabelLabel', { defaultMessage: 'Select a data source for your connector to use.' } )} - prepend={} + prepend={} singleSelection fullWidth placeholder={i18n.translate( diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/create_connector/components/connector_description_popover.tsx b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/create_connector/components/connector_description_popover.tsx index f80089cb79c2d..912d7ee7a0f03 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/create_connector/components/connector_description_popover.tsx +++ b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/create_connector/components/connector_description_popover.tsx @@ -23,8 +23,6 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { EuiIconPlugs } from '@kbn/search-shared-ui'; - import { KibanaLogic } from '../../../../../shared/kibana'; const nativePopoverPanels = [ @@ -41,7 +39,7 @@ const nativePopoverPanels = [ 'xpack.enterpriseSearch.connectorDescriptionPopover.connectorDescriptionBadge.native.configureConnectorLabel', { defaultMessage: 'Configure your connector using our Kibana UI' } ), - icons: [, ], + icons: [, ], id: 'native-configure-connector', }, ]; @@ -64,7 +62,7 @@ const connectorClientPopoverPanels = [ } ), icons: [ - , + , , , ], @@ -80,7 +78,7 @@ const connectorClientPopoverPanels = [ icons: [ , , - , + , , , ], diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/elastic_managed_web_crawler_empty_prompt.tsx b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/elastic_managed_web_crawler_empty_prompt.tsx index 9e42c5114544a..82595dbe050e9 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/elastic_managed_web_crawler_empty_prompt.tsx +++ b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/elastic_managed_web_crawler_empty_prompt.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiIcon, EuiPanel, EuiText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { SearchEmptyPrompt, DecorativeHorizontalStepper, EuiIconWeb } from '@kbn/search-shared-ui'; +import { SearchEmptyPrompt, DecorativeHorizontalStepper } from '@kbn/search-shared-ui'; import { BACK_BUTTON_LABEL, COMING_SOON_LABEL } from '../../../shared/constants'; import { KibanaLogic } from '../../../shared/kibana'; @@ -21,7 +21,7 @@ export const ElasticManagedWebCrawlerEmptyPrompt: React.FC = () => { label: BACK_BUTTON_LABEL, onClickBack: () => KibanaLogic.values.navigateToUrl(CRAWLERS_PATH), }} - icon={EuiIconWeb} + icon="web" title={i18n.translate('xpack.enterpriseSearch.elasticManagedWebCrawlerEmpty.title', { defaultMessage: 'Elastic managed web crawlers', })} @@ -85,7 +85,7 @@ export const ElasticManagedWebCrawlerEmptyPrompt: React.FC = () => { justifyContent="center" > - + diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/self_managed_web_crawler_empty_prompt.tsx b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/self_managed_web_crawler_empty_prompt.tsx index c6b80703c77cb..6b98c066b0f1b 100644 --- a/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/self_managed_web_crawler_empty_prompt.tsx +++ b/x-pack/solutions/search/plugins/enterprise_search/public/applications/enterprise_search_content/components/connectors/self_managed_web_crawler_empty_prompt.tsx @@ -17,14 +17,14 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { SearchEmptyPrompt, DecorativeHorizontalStepper, EuiIconWeb } from '@kbn/search-shared-ui'; +import { SearchEmptyPrompt, DecorativeHorizontalStepper } from '@kbn/search-shared-ui'; import { GithubIcon } from '../../../shared/icons/github_icon'; export const SelfManagedWebCrawlerEmptyPrompt: React.FC = () => { return ( { justifyContent="center" > - + @@ -148,7 +148,7 @@ export const SelfManagedWebCrawlerEmptyPrompt: React.FC = () => { - + diff --git a/x-pack/solutions/search/plugins/serverless_search/public/application/components/connectors/edit_service_type.tsx b/x-pack/solutions/search/plugins/serverless_search/public/application/components/connectors/edit_service_type.tsx index 8c7927887836d..196747533bb4d 100644 --- a/x-pack/solutions/search/plugins/serverless_search/public/application/components/connectors/edit_service_type.tsx +++ b/x-pack/solutions/search/plugins/serverless_search/public/application/components/connectors/edit_service_type.tsx @@ -20,7 +20,6 @@ import { EuiTextTruncate, EuiBadgeGroup, } from '@elastic/eui'; -import { EuiIconPlugs } from '@kbn/search-shared-ui'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import { Connector as BaseConnector } from '@kbn/search-connectors'; import { css } from '@emotion/react'; @@ -233,7 +232,7 @@ export const EditServiceType: React.FC = ({ connector, isD connector.service_type ? connectorTypes.find((conn) => conn.serviceType === connector.service_type) ?.iconPath ?? '' - : EuiIconPlugs + : 'plugs' } size="l" /> diff --git a/x-pack/solutions/search/plugins/serverless_search/public/application/components/connectors/elastic_managed_connectors_empty_prompt.tsx b/x-pack/solutions/search/plugins/serverless_search/public/application/components/connectors/elastic_managed_connectors_empty_prompt.tsx index 2212d4f4c0efe..97a2a5a60df33 100644 --- a/x-pack/solutions/search/plugins/serverless_search/public/application/components/connectors/elastic_managed_connectors_empty_prompt.tsx +++ b/x-pack/solutions/search/plugins/serverless_search/public/application/components/connectors/elastic_managed_connectors_empty_prompt.tsx @@ -9,11 +9,7 @@ import React from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiIcon, EuiText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { ConnectorIcon } from '@kbn/search-shared-ui'; -import { - SearchEmptyPrompt, - DecorativeHorizontalStepper, - EuiIconPlugs, -} from '@kbn/search-shared-ui'; +import { SearchEmptyPrompt, DecorativeHorizontalStepper } from '@kbn/search-shared-ui'; import { SERVERLESS_ES_CONNECTORS_ID } from '@kbn/deeplinks-search/constants'; import { BACK_LABEL, COMING_SOON_LABEL } from '../../../../common/i18n_string'; import { useKibanaServices } from '../../hooks/use_kibana'; @@ -35,7 +31,7 @@ export const ElasticManagedConnectorsEmptyPrompt: React.FC = () => { label: BACK_LABEL, onClickBack: () => navigateToApp(SERVERLESS_ES_CONNECTORS_ID), }} - icon={EuiIconPlugs} + icon="plugs" title={i18n.translate('xpack.serverlessSearch.elasticManagedConnectorEmpty.title', { defaultMessage: 'Elastic managed connectors', })} @@ -114,7 +110,7 @@ export const ElasticManagedConnectorsEmptyPrompt: React.FC = () => { justifyContent="center" > - + diff --git a/x-pack/solutions/search/plugins/serverless_search/public/application/components/connectors/self_managed_connectors_empty_prompt.tsx b/x-pack/solutions/search/plugins/serverless_search/public/application/components/connectors/self_managed_connectors_empty_prompt.tsx index 2a0cea83d451d..6ae33eac16074 100644 --- a/x-pack/solutions/search/plugins/serverless_search/public/application/components/connectors/self_managed_connectors_empty_prompt.tsx +++ b/x-pack/solutions/search/plugins/serverless_search/public/application/components/connectors/self_managed_connectors_empty_prompt.tsx @@ -18,11 +18,7 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { ConnectorIcon } from '@kbn/search-shared-ui'; -import { - SearchEmptyPrompt, - DecorativeHorizontalStepper, - EuiIconPlugs, -} from '@kbn/search-shared-ui'; +import { SearchEmptyPrompt, DecorativeHorizontalStepper } from '@kbn/search-shared-ui'; import { docLinks } from '../../../../common/doc_links'; import { useConnectorTypes } from '../../hooks/api/use_connector_types'; import { useCreateConnector } from '../../hooks/api/use_create_connector'; @@ -38,7 +34,7 @@ export const SelfManagedConnectorsEmptyPrompt: React.FC = () => { return ( { justifyContent="center" > - + @@ -177,7 +173,7 @@ export const SelfManagedConnectorsEmptyPrompt: React.FC = () => { - + diff --git a/x-pack/solutions/search/plugins/serverless_search/public/application/components/web_crawlers/elastic_managed_web_crawlers_empty_prompt.tsx b/x-pack/solutions/search/plugins/serverless_search/public/application/components/web_crawlers/elastic_managed_web_crawlers_empty_prompt.tsx index 6f6cdb767591b..0c75b87054472 100644 --- a/x-pack/solutions/search/plugins/serverless_search/public/application/components/web_crawlers/elastic_managed_web_crawlers_empty_prompt.tsx +++ b/x-pack/solutions/search/plugins/serverless_search/public/application/components/web_crawlers/elastic_managed_web_crawlers_empty_prompt.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiIcon, EuiPanel, EuiText } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { SearchEmptyPrompt, DecorativeHorizontalStepper, EuiIconWeb } from '@kbn/search-shared-ui'; +import { SearchEmptyPrompt, DecorativeHorizontalStepper } from '@kbn/search-shared-ui'; import { SERVERLESS_ES_WEB_CRAWLERS_ID } from '@kbn/deeplinks-search/constants'; import { BACK_LABEL, COMING_SOON_LABEL } from '../../../../common/i18n_string'; import { useKibanaServices } from '../../hooks/use_kibana'; @@ -23,7 +23,7 @@ export const ElasticManagedWebCrawlersEmptyPrompt = () => { label: BACK_LABEL, onClickBack: () => navigateToApp(SERVERLESS_ES_WEB_CRAWLERS_ID), }} - icon={EuiIconWeb} + icon="web" title={i18n.translate('xpack.serverlessSearch.elasticManagedWebCrawlerEmpty.title', { defaultMessage: 'Elastic managed web crawlers', })} @@ -87,7 +87,7 @@ export const ElasticManagedWebCrawlersEmptyPrompt = () => { justifyContent="center" > - + diff --git a/x-pack/solutions/search/plugins/serverless_search/public/application/components/web_crawlers/self_managed_web_crawlers_empty_prompt.tsx b/x-pack/solutions/search/plugins/serverless_search/public/application/components/web_crawlers/self_managed_web_crawlers_empty_prompt.tsx index cbf258da0946c..05377641bbad0 100644 --- a/x-pack/solutions/search/plugins/serverless_search/public/application/components/web_crawlers/self_managed_web_crawlers_empty_prompt.tsx +++ b/x-pack/solutions/search/plugins/serverless_search/public/application/components/web_crawlers/self_managed_web_crawlers_empty_prompt.tsx @@ -15,7 +15,7 @@ import { EuiText, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { SearchEmptyPrompt, DecorativeHorizontalStepper, EuiIconWeb } from '@kbn/search-shared-ui'; +import { SearchEmptyPrompt, DecorativeHorizontalStepper } from '@kbn/search-shared-ui'; import { FormattedMessage } from '@kbn/i18n-react'; import { useAssetBasePath } from '../../hooks/use_asset_base_path'; @@ -25,7 +25,7 @@ export const SelfManagedWebCrawlersEmptyPrompt = () => { return ( { justifyContent="center" > - + @@ -149,7 +149,7 @@ export const SelfManagedWebCrawlersEmptyPrompt = () => { - + From a91e4fcd088dcdf93775bc9d9d9d77e3eec8ea59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Louv-Jansen?= Date: Mon, 17 Feb 2025 17:08:53 +0100 Subject: [PATCH 35/78] Bump backport to v9.6.6 (#211424) This bumps backport to 9.6.6. Most notably fixes an issue with Handlebars templates and stripping markdown comments: https://github.com/sorenlouv/backport/compare/v9.6.4...v9.6.6 Also bumped here: https://github.com/elastic/kibana-github-actions/pull/55 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index af85bbf3e3a16..5cd35f520c8e3 100644 --- a/package.json +++ b/package.json @@ -1708,7 +1708,7 @@ "babel-plugin-transform-react-remove-prop-types": "^0.4.24", "babel-plugin-transform-require-default": "^0.1.7", "babel-plugin-transform-typescript-metadata": "^0.3.2", - "backport": "^9.6.4", + "backport": "^9.6.6", "blob-polyfill": "^7.0.20220408", "buildkite-test-collector": "^1.7.0", "callsites": "^3.1.0", diff --git a/yarn.lock b/yarn.lock index 635a8a2be7ec9..7ac6c3536f8bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14456,10 +14456,10 @@ babel-runtime@6.x: core-js "^2.4.0" regenerator-runtime "^0.11.0" -backport@^9.6.4: - version "9.6.4" - resolved "https://registry.yarnpkg.com/backport/-/backport-9.6.4.tgz#ea45ab97f32ebca1564269f92a6fc56eda703cdc" - integrity sha512-cTaItWSGoO33vOD/br/Di2KFesgHyE6UWuc0GN0IiFk13UqEadeURq3UOQptARyQC3Nz56Us5QYNJ3E5L61zYg== +backport@^9.6.6: + version "9.6.6" + resolved "https://registry.yarnpkg.com/backport/-/backport-9.6.6.tgz#ab7d0a1720eb5cd3ccef51cd79f1872bb9ed409c" + integrity sha512-X/2vWZNZP5wvbfWaxtLsXSbnOxANgoCh84IZavTS2X2/6X/si3cpUL0ky1fh+70bK5O8PI+3Fopp5srmeqHB1g== dependencies: "@octokit/rest" "^19.0.7" axios "^1.6.2" From d6b250b806e740e6d2080f777d6f39eb58f59ec9 Mon Sep 17 00:00:00 2001 From: Ania Kowalska <63072419+akowalska622@users.noreply.github.com> Date: Mon, 17 Feb 2025 17:10:39 +0100 Subject: [PATCH 36/78] [Discover] Allow command/ctrl click for "New" action in top nav (#210982) ## Summary Closes #198887 [A-la-carte](https://akowalska622-pr-210982-allow-cmd-click-new-action.kbndev.co/) to click around Allows to convert button into anchor tag if `href` is passed to the element. Allows to use modifier key to open view in a new tab, without loosing the current view. ![Cmd+click](https://github.com/user-attachments/assets/90499445-cdc4-4385-8273-2e83267e52e9) ### Checklist Reviewers should verify this PR satisfies this list as well. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The `release_note:breaking` label should be applied in these situations. - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [ ] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) ### Identify risks Does this PR introduce any risks? For example, consider risks like hard to test bugs, performance regression, potential of data loss. Describe the risk, its severity, and mitigation for each identified risk. Invite stakeholders and evaluate how to proceed before merging. - [ ] [See some risk examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) - [ ] ... --- .../convert_to_top_nav_item.test.ts | 2 ++ .../app_menu_actions/convert_to_top_nav_item.ts | 1 + .../top_nav/app_menu_actions/get_new_search.tsx | 3 +++ .../main/components/top_nav/use_top_nav_links.tsx | 14 ++++++++++++-- .../public/top_nav_menu/top_nav_menu_item.tsx | 10 ++++++++-- 5 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/app_menu_actions/convert_to_top_nav_item.test.ts b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/app_menu_actions/convert_to_top_nav_item.test.ts index 2fb65563cddfb..9aa19c8544189 100644 --- a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/app_menu_actions/convert_to_top_nav_item.test.ts +++ b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/app_menu_actions/convert_to_top_nav_item.test.ts @@ -26,6 +26,7 @@ describe('convertAppMenuItemToTopNavItem', () => { testId: 'action-1', iconType: 'share', onClick: jest.fn(), + href: '/test-href', }, }; @@ -42,6 +43,7 @@ describe('convertAppMenuItemToTopNavItem', () => { run: expect.any(Function), iconType: 'share', iconOnly: true, + href: '/test-href', }); }); diff --git a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/app_menu_actions/convert_to_top_nav_item.ts b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/app_menu_actions/convert_to_top_nav_item.ts index 2ff2d531d77cf..e7da00ba6a3f0 100644 --- a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/app_menu_actions/convert_to_top_nav_item.ts +++ b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/app_menu_actions/convert_to_top_nav_item.ts @@ -50,5 +50,6 @@ export function convertAppMenuItemToTopNavItem({ ...(appMenuItem.type === AppMenuActionType.primary ? { iconType: appMenuItem.controlProps.iconType, iconOnly: true } : {}), + ...(appMenuItem.controlProps.href ? { href: appMenuItem.controlProps.href } : {}), }; } diff --git a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/app_menu_actions/get_new_search.tsx b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/app_menu_actions/get_new_search.tsx index a27b1f5753e20..c66cbfc3c254d 100644 --- a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/app_menu_actions/get_new_search.tsx +++ b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/app_menu_actions/get_new_search.tsx @@ -12,8 +12,10 @@ import { i18n } from '@kbn/i18n'; export const getNewSearchAppMenuItem = ({ onNewSearch, + newSearchUrl, }: { onNewSearch: () => void; + newSearchUrl?: string; }): AppMenuActionPrimary => { return { id: AppMenuActionId.new, @@ -24,6 +26,7 @@ export const getNewSearchAppMenuItem = ({ }), iconType: 'plus', testId: 'discoverNewButton', + href: newSearchUrl, onClick: () => { onNewSearch(); }, diff --git a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/use_top_nav_links.tsx b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/use_top_nav_links.tsx index d52d02cf50607..05a685265b34e 100644 --- a/src/platform/plugins/shared/discover/public/application/main/components/top_nav/use_top_nav_links.tsx +++ b/src/platform/plugins/shared/discover/public/application/main/components/top_nav/use_top_nav_links.tsx @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { useMemo } from 'react'; +import { useEffect, useMemo, useState } from 'react'; import { i18n } from '@kbn/i18n'; import type { DataView } from '@kbn/data-views-plugin/public'; import type { TopNavMenuData } from '@kbn/navigation-plugin/public'; @@ -52,6 +52,15 @@ export const useTopNavLinks = ({ topNavCustomization: TopNavCustomization | undefined; shouldShowESQLToDataViewTransitionModal: boolean; }): TopNavMenuData[] => { + const [newSearchUrl, setNewSearchUrl] = useState(undefined); + useEffect(() => { + const fetchData = async () => { + const url = await services.locator.getUrl({}); + setNewSearchUrl(url); + }; + fetchData(); + }, [services]); + const discoverParams: AppMenuDiscoverParams = useMemo( () => ({ isEsqlMode, @@ -90,6 +99,7 @@ export const useTopNavLinks = ({ if (!defaultMenu?.newItem?.disabled) { const newSearchMenuItem = getNewSearchAppMenuItem({ + newSearchUrl, onNewSearch: () => { services.locator.navigate({}); }, @@ -114,7 +124,7 @@ export const useTopNavLinks = ({ } return items; - }, [discoverParams, state, services, defaultMenu, onOpenInspector]); + }, [discoverParams, state, services, defaultMenu, onOpenInspector, newSearchUrl]); const getAppMenuAccessor = useProfileAccessor('getAppMenu'); const appMenuRegistry = useMemo(() => { diff --git a/src/platform/plugins/shared/navigation/public/top_nav_menu/top_nav_menu_item.tsx b/src/platform/plugins/shared/navigation/public/top_nav_menu/top_nav_menu_item.tsx index 4de18dff9a6de..c4172c8cfd598 100644 --- a/src/platform/plugins/shared/navigation/public/top_nav_menu/top_nav_menu_item.tsx +++ b/src/platform/plugins/shared/navigation/public/top_nav_menu/top_nav_menu_item.tsx @@ -68,9 +68,14 @@ export function TopNavMenuItem(props: TopNavMenuItemProps) { } } - function handleClick(e: MouseEvent) { + const isModifiedEvent = (event: MouseEvent) => + !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey); + + function handleClick(event: MouseEvent) { if (isDisabled()) return; - props.run(e.currentTarget); + if (props.href && isModifiedEvent(event)) return; + + props.run(event.currentTarget); if (props.isMobileMenu) { props.closePopover(); } @@ -80,6 +85,7 @@ export function TopNavMenuItem(props: TopNavMenuItemProps) { isDisabled: isDisabled(), onClick: handleClick, isLoading: props.isLoading, + href: props.href, iconType: props.iconType, iconSide: props.iconSide, 'data-test-subj': props.testId, From 24dbf7ecfd6e5aaa9e34e514f2afd801ef566808 Mon Sep 17 00:00:00 2001 From: James Gowdy Date: Mon, 17 Feb 2025 16:38:05 +0000 Subject: [PATCH 37/78] [ML] File upload: Adding link to full file upload tool (#211443) Adds a link to the original file upload page from file upload lite help text. ![image](https://github.com/user-attachments/assets/12c9799f-95e6-4fa4-81f3-d997a689677a) --- .../public/lite/file_upload_lite_view.tsx | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/x-pack/platform/plugins/private/data_visualizer/public/lite/file_upload_lite_view.tsx b/x-pack/platform/plugins/private/data_visualizer/public/lite/file_upload_lite_view.tsx index 3fd14229cfd44..554b3c96b95fe 100644 --- a/x-pack/platform/plugins/private/data_visualizer/public/lite/file_upload_lite_view.tsx +++ b/x-pack/platform/plugins/private/data_visualizer/public/lite/file_upload_lite_view.tsx @@ -13,6 +13,7 @@ import { EuiFlyoutBody, EuiFlyoutFooter, EuiFlyoutHeader, + EuiLink, EuiLoadingSpinner, EuiSpacer, EuiText, @@ -38,6 +39,7 @@ import { IndexInput } from './index_input'; import { OverallUploadStatus } from './overall_upload_status'; import { ImportErrors } from './import_errors'; import { DataViewIllustration } from './data_view_illustration'; +import { useDataVisualizerKibana } from '../application/kibana_context'; interface Props { dataStart: DataPublicPluginStart; @@ -63,6 +65,12 @@ export const FileUploadLiteView: FC = ({ indexSettings, onClose, }) => { + const { + services: { + application: { navigateToApp }, + }, + } = useDataVisualizerKibana(); + const [indexName, setIndexName] = useState(''); const [indexValidationStatus, setIndexValidationStatus] = useState(STATUS.NOT_STARTED); @@ -88,6 +96,11 @@ export const FileUploadLiteView: FC = ({ [uploadStatus.fileClashes] ); + const fullFileUpload = useCallback( + () => navigateToApp('home', { path: '#/tutorial_directory/fileDataViz' }), + [navigateToApp] + ); + useEffect(() => { return () => { fm.destroy(); @@ -131,6 +144,23 @@ export const FileUploadLiteView: FC = ({ id="xpack.dataVisualizer.file.uploadView.uploadFileDescription" defaultMessage="Upload your file, analyze its data, and import the data into an Elasticsearch index. The data can also be automatically vectorized using semantic text." /> + +
+ + + + + ), + }} + />

From df67a09afab22521dfa9ff3ec3a4f624a039c462 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Louv-Jansen?= Date: Mon, 17 Feb 2025 18:20:50 +0100 Subject: [PATCH 38/78] [Obs AI Assistant] Add KB re-indexing when encountering `semantic_text` bug (#210386) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes https://github.com/elastic/kibana/issues/210204 This will automatically re-index the knowledge base if upon adding a KB entry there is this error: > The [sparse_vector] field type is not supported on indices created on versions 8.0 to 8.10 That error means that semantic_text is not supported in the given index, and it should therefore be re-indexed. **How to test this PR:** **8.10** - `git checkout -B 8.10 origin/8.10` - Start Kibana: - `nvm use && yarn kbn bootstrap && yarn start` - Start ES - `nvm use && yarn es snapshot --license trial --E path.data="/Users/sorenlouv/elastic/kbn_es_data/upgrade_testing"` **8.19** - `git checkout -B 8.19 origin/8.x` - Start Kibana: - `nvm use && yarn kbn bootstrap && yarn start` - Start ES - `nvm use && yarn es snapshot --license trial --E path.data="/Users/sorenlouv/elastic/kbn_es_data/upgrade_testing"` - Install Knowledge base - Try adding an item to KB (it should fail ❌️) **9.1.0** - `gh pr checkout 210386` - Start Kibana: - `nvm use && yarn kbn bootstrap && yarn start` - Start ES - `nvm use && yarn es snapshot --license trial --E path.data="/Users/sorenlouv/elastic/kbn_es_data/upgrade_testing"` - Try adding an item to KB (it should succeed ✅️) **TODO:** - Add an upgrade test that covers this flow --------- Co-authored-by: Viduni Wickramarachchi --- .../server/config.ts | 1 + .../server/plugin.ts | 21 +- ...rvability_ai_assistant_route_repository.ts | 2 + .../server/routes/knowledge_base/route.ts | 4 +- .../server/routes/top_level/route.ts | 28 +++ .../server/service/client/index.ts | 19 +- ...ts.ts => create_or_update_index_assets.ts} | 72 ++++-- .../server/service/index.ts | 8 +- .../service/knowledge_base_service/index.ts | 39 ++- .../reindex_knowledge_base.ts | 113 +++++++++ ...egister_kb_semantic_text_migration_task.ts | 228 ++++++++++++++++++ ...ter_migrate_knowledge_base_entries_task.ts | 186 -------------- x-pack/test/api_integration/config.ts | 2 +- .../observability/ai_assistant/.gitignore | 2 + .../apis/observability/ai_assistant/index.ts | 5 +- ...add_semantic_text_field_migration.spec.ts} | 4 +- .../knowledge_base_reindex.spec.ts | 154 ++++++++++++ .../knowledge_base/snapshot_kb_8.10.zip | Bin 0 -> 2350359 bytes .../default_configs/stateful.config.base.ts | 7 + 19 files changed, 667 insertions(+), 228 deletions(-) create mode 100644 x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/top_level/route.ts rename x-pack/platform/plugins/shared/observability_ai_assistant/server/service/{setup_conversation_and_kb_index_assets.ts => create_or_update_index_assets.ts} (65%) create mode 100644 x-pack/platform/plugins/shared/observability_ai_assistant/server/service/knowledge_base_service/reindex_knowledge_base.ts create mode 100644 x-pack/platform/plugins/shared/observability_ai_assistant/server/service/task_manager_definitions/register_kb_semantic_text_migration_task.ts delete mode 100644 x-pack/platform/plugins/shared/observability_ai_assistant/server/service/task_manager_definitions/register_migrate_knowledge_base_entries_task.ts create mode 100644 x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/.gitignore rename x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/{knowledge_base_migration.spec.ts => knowledge_base_add_semantic_text_field_migration.spec.ts} (98%) create mode 100644 x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_reindex.spec.ts create mode 100644 x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/snapshot_kb_8.10.zip diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/config.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/config.ts index 2f36d27889c14..6669c991fe2bd 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/config.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/config.ts @@ -11,6 +11,7 @@ export const config = schema.object({ enabled: schema.boolean({ defaultValue: true }), scope: schema.maybe(schema.oneOf([schema.literal('observability'), schema.literal('search')])), enableKnowledgeBase: schema.boolean({ defaultValue: true }), + disableKbSemanticTextMigration: schema.boolean({ defaultValue: false }), }); export type ObservabilityAIAssistantConfig = TypeOf; diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/plugin.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/plugin.ts index 7ff878bfa7a9d..fd2e8d0d4b45e 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/plugin.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/plugin.ts @@ -31,7 +31,8 @@ import { registerFunctions } from './functions'; import { recallRankingEvent } from './analytics/recall_ranking'; import { initLangtrace } from './service/client/instrumentation/init_langtrace'; import { aiAssistantCapabilities } from '../common/capabilities'; -import { registerMigrateKnowledgeBaseEntriesTask } from './service/task_manager_definitions/register_migrate_knowledge_base_entries_task'; +import { registerAndScheduleKbSemanticTextMigrationTask } from './service/task_manager_definitions/register_kb_semantic_text_migration_task'; +import { updateExistingIndexAssets } from './service/create_or_update_index_assets'; export class ObservabilityAIAssistantPlugin implements @@ -128,14 +129,22 @@ export class ObservabilityAIAssistantPlugin config: this.config, })); - registerMigrateKnowledgeBaseEntriesTask({ + // Update existing index assets (mappings, templates, etc). This will not create assets if they do not exist. + updateExistingIndexAssets({ logger: this.logger.get('index_assets'), core }).catch((e) => + this.logger.error(`Index assets could not be updated: ${e.message}`) + ); + + // register task to migrate knowledge base entries to include semantic_text field + registerAndScheduleKbSemanticTextMigrationTask({ core, taskManager: plugins.taskManager, - logger: this.logger, + logger: this.logger.get('kb_semantic_text_migration_task'), config: this.config, - }).catch((e) => { - this.logger.error(`Knowledge base migration was not successfully: ${e.message}`); - }); + }).catch((e) => + this.logger.error( + `Knowledge base semantic_text migration task could not be registered: ${e.message}` + ) + ); service.register(registerFunctions); diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts index 846a05797f975..ffdf9939ad7de 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts @@ -10,9 +10,11 @@ import { connectorRoutes } from './connectors/route'; import { conversationRoutes } from './conversations/route'; import { functionRoutes } from './functions/route'; import { knowledgeBaseRoutes } from './knowledge_base/route'; +import { topLevelRoutes } from './top_level/route'; export function getGlobalObservabilityAIAssistantServerRouteRepository() { return { + ...topLevelRoutes, ...chatRoutes, ...conversationRoutes, ...connectorRoutes, diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/knowledge_base/route.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/knowledge_base/route.ts index 1597d43ce52b9..e9c7078c0062e 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/knowledge_base/route.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/knowledge_base/route.ts @@ -101,7 +101,7 @@ const resetKnowledgeBase = createObservabilityAIAssistantServerRoute({ }); const semanticTextMigrationKnowledgeBase = createObservabilityAIAssistantServerRoute({ - endpoint: 'POST /internal/observability_ai_assistant/kb/semantic_text_migration', + endpoint: 'POST /internal/observability_ai_assistant/kb/migrations/kb_semantic_text', security: { authz: { requiredPrivileges: ['ai_assistant'], @@ -114,7 +114,7 @@ const semanticTextMigrationKnowledgeBase = createObservabilityAIAssistantServerR throw notImplemented(); } - return client.migrateKnowledgeBaseToSemanticText(); + return client.reIndexKnowledgeBaseAndPopulateSemanticTextField(); }, }); diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/top_level/route.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/top_level/route.ts new file mode 100644 index 0000000000000..dc817f378263f --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/top_level/route.ts @@ -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 { createOrUpdateIndexAssets } from '../../service/create_or_update_index_assets'; +import { createObservabilityAIAssistantServerRoute } from '../create_observability_ai_assistant_server_route'; + +const createOrUpdateIndexAssetsRoute = createObservabilityAIAssistantServerRoute({ + endpoint: 'POST /internal/observability_ai_assistant/index_assets', + security: { + authz: { + requiredPrivileges: ['ai_assistant'], + }, + }, + handler: async (resources): Promise => { + return createOrUpdateIndexAssets({ + logger: resources.logger, + core: resources.plugins.core.setup, + }); + }, +}); + +export const topLevelRoutes = { + ...createOrUpdateIndexAssetsRoute, +}; diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts index 2d3a19444462b..bb2064a3dbb6b 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts @@ -72,9 +72,9 @@ import { extractTokenCount } from './operators/extract_token_count'; import { getGeneratedTitle } from './operators/get_generated_title'; import { instrumentAndCountTokens } from './operators/instrument_and_count_tokens'; import { - runSemanticTextKnowledgeBaseMigration, - scheduleSemanticTextMigration, -} from '../task_manager_definitions/register_migrate_knowledge_base_entries_task'; + reIndexKnowledgeBaseAndPopulateSemanticTextField, + scheduleKbSemanticTextMigrationTask, +} from '../task_manager_definitions/register_kb_semantic_text_migration_task'; import { ObservabilityAIAssistantPluginStartDependencies } from '../../types'; import { ObservabilityAIAssistantConfig } from '../../config'; import { getElserModelId } from '../knowledge_base_service/get_elser_model_id'; @@ -660,12 +660,11 @@ export class ObservabilityAIAssistantClient { core .getStartServices() - .then(([_, pluginsStart]) => { - logger.debug('Schedule semantic text migration task'); - return scheduleSemanticTextMigration(pluginsStart); - }) + .then(([_, pluginsStart]) => + scheduleKbSemanticTextMigrationTask({ taskManager: pluginsStart.taskManager, logger }) + ) .catch((error) => { - logger.error(`Failed to run semantic text migration task: ${error}`); + logger.error(`Failed to schedule semantic text migration task: ${error}`); }); return res; @@ -676,8 +675,8 @@ export class ObservabilityAIAssistantClient { return this.dependencies.knowledgeBaseService.reset(esClient); }; - migrateKnowledgeBaseToSemanticText = () => { - return runSemanticTextKnowledgeBaseMigration({ + reIndexKnowledgeBaseAndPopulateSemanticTextField = () => { + return reIndexKnowledgeBaseAndPopulateSemanticTextField({ esClient: this.dependencies.esClient, logger: this.dependencies.logger, config: this.dependencies.config, diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/setup_conversation_and_kb_index_assets.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/create_or_update_index_assets.ts similarity index 65% rename from x-pack/platform/plugins/shared/observability_ai_assistant/server/service/setup_conversation_and_kb_index_assets.ts rename to x-pack/platform/plugins/shared/observability_ai_assistant/server/service/create_or_update_index_assets.ts index b56628ce4b7ee..85a0e9ba8e42a 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/setup_conversation_and_kb_index_assets.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/create_or_update_index_assets.ts @@ -6,13 +6,39 @@ */ import { createConcreteWriteIndex, getDataStreamAdapter } from '@kbn/alerting-plugin/server'; -import type { CoreSetup, Logger } from '@kbn/core/server'; +import type { CoreSetup, ElasticsearchClient, Logger } from '@kbn/core/server'; import type { ObservabilityAIAssistantPluginStartDependencies } from '../types'; import { conversationComponentTemplate } from './conversation_component_template'; import { kbComponentTemplate } from './kb_component_template'; import { resourceNames } from '.'; -export async function setupConversationAndKbIndexAssets({ +export async function updateExistingIndexAssets({ + logger, + core, +}: { + logger: Logger; + core: CoreSetup; +}) { + const [coreStart] = await core.getStartServices(); + const { asInternalUser } = coreStart.elasticsearch.client; + + const hasKbIndex = await asInternalUser.indices.exists({ + index: resourceNames.aliases.kb, + }); + + const hasConversationIndex = await asInternalUser.indices.exists({ + index: resourceNames.aliases.conversations, + }); + + if (!hasKbIndex && !hasConversationIndex) { + logger.debug('Index assets do not exist. Aborting updating index assets'); + return; + } + + await createOrUpdateIndexAssets({ logger, core }); +} + +export async function createOrUpdateIndexAssets({ logger, core, }: { @@ -56,7 +82,7 @@ export async function setupConversationAndKbIndexAssets({ alias: conversationAliasName, pattern: `${conversationAliasName}*`, basePattern: `${conversationAliasName}*`, - name: `${conversationAliasName}-000001`, + name: resourceNames.concreteIndexName.conversations, template: resourceNames.indexTemplate.conversations, }, dataStreamAdapter: getDataStreamAdapter({ useDataStreamForAlerts: false }), @@ -86,20 +112,7 @@ export async function setupConversationAndKbIndexAssets({ }); // Knowledge base: write index - const kbAliasName = resourceNames.aliases.kb; - await createConcreteWriteIndex({ - esClient: asInternalUser, - logger, - totalFieldsLimit: 10000, - indexPatterns: { - alias: kbAliasName, - pattern: `${kbAliasName}*`, - basePattern: `${kbAliasName}*`, - name: `${kbAliasName}-000001`, - template: resourceNames.indexTemplate.kb, - }, - dataStreamAdapter: getDataStreamAdapter({ useDataStreamForAlerts: false }), - }); + await createKbConcreteIndex({ logger, esClient: coreStart.elasticsearch.client }); logger.info('Successfully set up index assets'); } catch (error) { @@ -107,3 +120,28 @@ export async function setupConversationAndKbIndexAssets({ logger.debug(error); } } + +export async function createKbConcreteIndex({ + logger, + esClient, +}: { + logger: Logger; + esClient: { + asInternalUser: ElasticsearchClient; + }; +}) { + const kbAliasName = resourceNames.aliases.kb; + return createConcreteWriteIndex({ + esClient: esClient.asInternalUser, + logger, + totalFieldsLimit: 10000, + indexPatterns: { + alias: kbAliasName, + pattern: `${kbAliasName}*`, + basePattern: `${kbAliasName}*`, + name: resourceNames.concreteIndexName.kb, + template: resourceNames.indexTemplate.kb, + }, + dataStreamAdapter: getDataStreamAdapter({ useDataStreamForAlerts: false }), + }); +} diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/index.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/index.ts index dcd79f5d57873..adc7ea2822747 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/index.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/index.ts @@ -17,7 +17,7 @@ import { ObservabilityAIAssistantClient } from './client'; import { KnowledgeBaseService } from './knowledge_base_service'; import type { RegistrationCallback, RespondFunctionResources } from './types'; import { ObservabilityAIAssistantConfig } from '../config'; -import { setupConversationAndKbIndexAssets } from './setup_conversation_and_kb_index_assets'; +import { createOrUpdateIndexAssets } from './create_or_update_index_assets'; function getResourceName(resource: string) { return `.kibana-observability-ai-assistant-${resource}`; @@ -40,11 +40,15 @@ export const resourceNames = { conversations: getResourceName('index-template-conversations'), kb: getResourceName('index-template-kb'), }, + concreteIndexName: { + conversations: getResourceName('conversations-000001'), + kb: getResourceName('kb-000001'), + }, }; const createIndexAssetsOnce = once( (logger: Logger, core: CoreSetup) => - pRetry(() => setupConversationAndKbIndexAssets({ logger, core })) + pRetry(() => createOrUpdateIndexAssets({ logger, core })) ); export class ObservabilityAIAssistantService { diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/knowledge_base_service/index.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/knowledge_base_service/index.ts index a73be984920c4..aea384b4c0aa6 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/knowledge_base_service/index.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/knowledge_base_service/index.ts @@ -28,6 +28,11 @@ import { import { recallFromSearchConnectors } from './recall_from_search_connectors'; import { ObservabilityAIAssistantPluginStartDependencies } from '../../types'; import { ObservabilityAIAssistantConfig } from '../../config'; +import { + isKnowledgeBaseIndexWriteBlocked, + isSemanticTextUnsupportedError, +} from './reindex_knowledge_base'; +import { scheduleKbSemanticTextMigrationTask } from '../task_manager_definitions/register_kb_semantic_text_migration_task'; interface Dependencies { core: CoreSetup; @@ -406,7 +411,9 @@ export class KnowledgeBaseService { } try { - await this.dependencies.esClient.asInternalUser.index({ + await this.dependencies.esClient.asInternalUser.index< + Omit & { namespace: string } + >({ index: resourceNames.aliases.kb, id, document: { @@ -418,10 +425,40 @@ export class KnowledgeBaseService { }, refresh: 'wait_for', }); + this.dependencies.logger.debug(`Entry added to knowledge base`); } catch (error) { + this.dependencies.logger.debug(`Failed to add entry to knowledge base ${error}`); if (isInferenceEndpointMissingOrUnavailable(error)) { throwKnowledgeBaseNotReady(error.body); } + + if (isSemanticTextUnsupportedError(error)) { + this.dependencies.core + .getStartServices() + .then(([_, pluginsStart]) => { + return scheduleKbSemanticTextMigrationTask({ + taskManager: pluginsStart.taskManager, + logger: this.dependencies.logger, + runSoon: true, + }); + }) + .catch((e) => { + this.dependencies.logger.error( + `Failed to schedule knowledge base semantic text migration task: ${e}` + ); + }); + + throw serverUnavailable( + 'The knowledge base is currently being re-indexed. Please try again later' + ); + } + + if (isKnowledgeBaseIndexWriteBlocked(error)) { + throw new Error( + `Writes to the knowledge base are currently blocked due to an Elasticsearch write index block. This is most likely due to an ongoing re-indexing operation. Please try again later. Error: ${error.message}` + ); + } + throw error; } }; diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/knowledge_base_service/reindex_knowledge_base.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/knowledge_base_service/reindex_knowledge_base.ts new file mode 100644 index 0000000000000..7b65576a1e6da --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/knowledge_base_service/reindex_knowledge_base.ts @@ -0,0 +1,113 @@ +/* + * 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 { errors as EsErrors } from '@elastic/elasticsearch'; +import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { Logger } from '@kbn/logging'; +import { resourceNames } from '..'; +import { createKbConcreteIndex } from '../create_or_update_index_assets'; + +export async function reIndexKnowledgeBase({ + logger, + esClient, +}: { + logger: Logger; + esClient: { + asInternalUser: ElasticsearchClient; + }; +}): Promise { + logger.debug('Initiating knowledge base re-indexing...'); + + try { + const originalIndex = resourceNames.concreteIndexName.kb; + const tempIndex = `${resourceNames.aliases.kb}-000002`; + + const indexSettingsResponse = await esClient.asInternalUser.indices.getSettings({ + index: originalIndex, + }); + + const indexSettings = indexSettingsResponse[originalIndex].settings; + const createdVersion = parseInt(indexSettings?.index?.version?.created ?? '', 10); + + // Check if the index was created before version 8.11 + const versionThreshold = 8110000; // Version 8.11.0 + if (createdVersion >= versionThreshold) { + logger.warn( + `Knowledge base index "${originalIndex}" was created in version ${createdVersion}, and does not require re-indexing. Semantic text field is already supported. Aborting` + ); + return; + } + + logger.info( + `Knowledge base index was created in ${createdVersion} and must be re-indexed in order to support semantic_text field. Re-indexing now...` + ); + + // Create temporary index + logger.debug(`Creating temporary index "${tempIndex}"...`); + await esClient.asInternalUser.indices.delete({ index: tempIndex }, { ignore: [404] }); + await esClient.asInternalUser.indices.create({ index: tempIndex }); + + // Perform reindex to temporary index + logger.debug(`Re-indexing knowledge base to temporary index "${tempIndex}"...`); + await esClient.asInternalUser.reindex({ + body: { + source: { index: originalIndex }, + dest: { index: tempIndex }, + }, + refresh: true, + wait_for_completion: true, + }); + + // Delete and re-create original index + logger.debug(`Deleting original index "${originalIndex}" and re-creating it...`); + await esClient.asInternalUser.indices.delete({ index: originalIndex }); + await createKbConcreteIndex({ logger, esClient }); + + // Perform reindex back to original index + logger.debug(`Re-indexing knowledge base back to original index "${originalIndex}"...`); + await esClient.asInternalUser.reindex({ + body: { + source: { index: tempIndex }, + dest: { index: originalIndex }, + }, + refresh: true, + wait_for_completion: true, + }); + + // Delete temporary index + logger.debug(`Deleting temporary index "${tempIndex}"...`); + await esClient.asInternalUser.indices.delete({ index: tempIndex }); + + logger.info( + 'Re-indexing knowledge base completed successfully. Semantic text field is now supported.' + ); + } catch (error) { + throw new Error(`Failed to reindex knowledge base: ${error.message}`); + } +} + +export function isKnowledgeBaseIndexWriteBlocked(error: any) { + return ( + error instanceof EsErrors.ResponseError && + error.message.includes( + `cluster_block_exception: index [${resourceNames.concreteIndexName.kb}] blocked` + ) + ); +} + +export function isSemanticTextUnsupportedError(error: Error) { + const semanticTextUnsupportedError = + 'The [sparse_vector] field type is not supported on indices created on versions 8.0 to 8.10'; + + const isSemanticTextUnspported = + error instanceof EsErrors.ResponseError && + (error.message.includes(semanticTextUnsupportedError) || + // @ts-expect-error + error.meta?.body?.error?.caused_by?.reason.includes(semanticTextUnsupportedError)); + + return isSemanticTextUnspported; +} diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/task_manager_definitions/register_kb_semantic_text_migration_task.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/task_manager_definitions/register_kb_semantic_text_migration_task.ts new file mode 100644 index 0000000000000..29dd1418b2818 --- /dev/null +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/task_manager_definitions/register_kb_semantic_text_migration_task.ts @@ -0,0 +1,228 @@ +/* + * 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 { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import pLimit from 'p-limit'; +import { TaskManagerSetupContract } from '@kbn/task-manager-plugin/server'; +import type { CoreSetup, CoreStart, Logger } from '@kbn/core/server'; +import pRetry from 'p-retry'; +import { KnowledgeBaseEntry } from '../../../common'; +import { resourceNames } from '..'; +import { getElserModelStatus } from '../inference_endpoint'; +import { ObservabilityAIAssistantPluginStartDependencies } from '../../types'; +import { ObservabilityAIAssistantConfig } from '../../config'; +import { reIndexKnowledgeBase } from '../knowledge_base_service/reindex_knowledge_base'; + +const TASK_ID = 'obs-ai-assistant:knowledge-base-migration-task-id'; +const TASK_TYPE = 'obs-ai-assistant:knowledge-base-migration'; + +// This task will re-index all knowledge base entries without `semantic_text` field +// to ensure the field is populated with the correct embeddings. +// After the migration we will no longer need to use the `ml.tokens` field. +export async function registerAndScheduleKbSemanticTextMigrationTask({ + taskManager, + logger, + core, + config, +}: { + taskManager: TaskManagerSetupContract; + logger: Logger; + core: CoreSetup; + config: ObservabilityAIAssistantConfig; +}) { + const [coreStart, pluginsStart] = await core.getStartServices(); + + // register task + registerKbSemanticTextMigrationTask({ taskManager, logger, coreStart, config }); + + // schedule task + await scheduleKbSemanticTextMigrationTask({ taskManager: pluginsStart.taskManager, logger }); +} + +function registerKbSemanticTextMigrationTask({ + taskManager, + logger, + coreStart, + config, +}: { + taskManager: TaskManagerSetupContract; + logger: Logger; + coreStart: CoreStart; + config: ObservabilityAIAssistantConfig; +}) { + try { + logger.debug(`Register task "${TASK_TYPE}"`); + taskManager.registerTaskDefinitions({ + [TASK_TYPE]: { + title: 'Add support for semantic_text in Knowledge Base', + description: `This task will reindex the knowledge base and populate the semantic_text fields for all entries without it.`, + timeout: '1h', + maxAttempts: 5, + createTaskRunner() { + return { + async run() { + logger.debug(`Run task: "${TASK_TYPE}"`); + const esClient = coreStart.elasticsearch.client; + + const hasKbIndex = await esClient.asInternalUser.indices.exists({ + index: resourceNames.aliases.kb, + }); + + if (!hasKbIndex) { + logger.debug('Knowledge base index does not exist. Skipping migration.'); + return; + } + + if (config.disableKbSemanticTextMigration) { + logger.info( + 'Semantic text migration is disabled via config "xpack.observabilityAIAssistant.disableKbSemanticTextMigration=true". Skipping migration.' + ); + return; + } + + await reIndexKnowledgeBaseAndPopulateSemanticTextField({ esClient, logger, config }); + }, + }; + }, + }, + }); + } catch (error) { + logger.error(`Failed to register task "${TASK_TYPE}". Error: ${error}`); + } +} + +export async function scheduleKbSemanticTextMigrationTask({ + taskManager, + logger, + runSoon = false, +}: { + taskManager: ObservabilityAIAssistantPluginStartDependencies['taskManager']; + logger: Logger; + runSoon?: boolean; +}) { + logger.debug('Schedule migration task'); + await taskManager.ensureScheduled({ + id: TASK_ID, + taskType: TASK_TYPE, + scope: ['aiAssistant'], + params: {}, + state: {}, + }); + + if (runSoon) { + logger.debug('Run migration task soon'); + await taskManager.runSoon(TASK_ID); + } +} + +export async function reIndexKnowledgeBaseAndPopulateSemanticTextField({ + esClient, + logger, + config, +}: { + esClient: { asInternalUser: ElasticsearchClient }; + logger: Logger; + config: ObservabilityAIAssistantConfig; +}) { + logger.debug('Starting migration...'); + + try { + await reIndexKnowledgeBase({ logger, esClient }); + await populateSemanticTextFieldRecursively({ esClient, logger, config }); + } catch (e) { + logger.error(`Migration failed: ${e.message}`); + } + + logger.debug('Migration succeeded'); +} + +async function populateSemanticTextFieldRecursively({ + esClient, + logger, + config, +}: { + esClient: { asInternalUser: ElasticsearchClient }; + logger: Logger; + config: ObservabilityAIAssistantConfig; +}) { + logger.debug('Populating semantic_text field for entries without it'); + + const response = await esClient.asInternalUser.search({ + size: 100, + track_total_hits: true, + index: [resourceNames.aliases.kb], + query: { + bool: { + must_not: { + exists: { + field: 'semantic_text', + }, + }, + }, + }, + _source: { + excludes: ['ml.tokens'], + }, + }); + + if (response.hits.hits.length === 0) { + logger.debug('No remaining entries to migrate'); + return; + } + + logger.debug(`Found ${response.hits.hits.length} entries to migrate`); + + await waitForModel({ esClient, logger, config }); + + // Limit the number of concurrent requests to avoid overloading the cluster + const limiter = pLimit(10); + const promises = response.hits.hits.map((hit) => { + return limiter(() => { + if (!hit._source || !hit._id) { + return; + } + + return esClient.asInternalUser.update({ + refresh: 'wait_for', + index: resourceNames.aliases.kb, + id: hit._id, + body: { + doc: { + ...hit._source, + semantic_text: hit._source.text, + }, + }, + }); + }); + }); + + await Promise.all(promises); + + logger.debug(`Populated ${promises.length} entries`); + await populateSemanticTextFieldRecursively({ esClient, logger, config }); +} + +async function waitForModel({ + esClient, + logger, + config, +}: { + esClient: { asInternalUser: ElasticsearchClient }; + logger: Logger; + config: ObservabilityAIAssistantConfig; +}) { + return pRetry( + async () => { + const { ready } = await getElserModelStatus({ esClient, logger, config }); + if (!ready) { + logger.debug('Elser model is not yet ready. Retrying...'); + throw new Error('Elser model is not yet ready'); + } + }, + { retries: 30, factor: 2, maxTimeout: 30_000 } + ); +} diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/task_manager_definitions/register_migrate_knowledge_base_entries_task.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/task_manager_definitions/register_migrate_knowledge_base_entries_task.ts deleted file mode 100644 index b75074dc7ea54..0000000000000 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/task_manager_definitions/register_migrate_knowledge_base_entries_task.ts +++ /dev/null @@ -1,186 +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 { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; -import pLimit from 'p-limit'; -import { TaskManagerSetupContract } from '@kbn/task-manager-plugin/server'; -import type { CoreSetup, Logger } from '@kbn/core/server'; -import pRetry from 'p-retry'; -import { KnowledgeBaseEntry } from '../../../common'; -import { resourceNames } from '..'; -import { getElserModelStatus } from '../inference_endpoint'; -import { ObservabilityAIAssistantPluginStartDependencies } from '../../types'; -import { ObservabilityAIAssistantConfig } from '../../config'; -import { setupConversationAndKbIndexAssets } from '../setup_conversation_and_kb_index_assets'; - -const TASK_ID = 'obs-ai-assistant:knowledge-base-migration-task-id'; -const TASK_TYPE = 'obs-ai-assistant:knowledge-base-migration'; - -// This task will re-index all knowledge base entries without `semantic_text` field -// to ensure the field is populated with the correct embeddings. -// After the migration we will no longer need to use the `ml.tokens` field. -export async function registerMigrateKnowledgeBaseEntriesTask({ - taskManager, - logger, - core, - config, -}: { - taskManager: TaskManagerSetupContract; - logger: Logger; - core: CoreSetup; - config: ObservabilityAIAssistantConfig; -}) { - const [coreStart, pluginsStart] = await core.getStartServices(); - - try { - logger.debug(`Register task "${TASK_TYPE}"`); - taskManager.registerTaskDefinitions({ - [TASK_TYPE]: { - title: 'Migrate AI Assistant Knowledge Base', - description: `Migrates AI Assistant knowledge base entries`, - timeout: '1h', - maxAttempts: 5, - createTaskRunner() { - return { - async run() { - logger.debug(`Run task: "${TASK_TYPE}"`); - const esClient = coreStart.elasticsearch.client; - - const hasKbIndex = await esClient.asInternalUser.indices.exists({ - index: resourceNames.aliases.kb, - }); - - if (!hasKbIndex) { - logger.debug( - 'Knowledge base index does not exist. Skipping semantic text migration.' - ); - return; - } - - // update fields and mappings - await setupConversationAndKbIndexAssets({ logger, core }); - - // run migration - await runSemanticTextKnowledgeBaseMigration({ esClient, logger, config }); - }, - }; - }, - }, - }); - } catch (error) { - logger.error(`Failed to register task "${TASK_TYPE}". Error: ${error}`); - } - - try { - logger.debug(`Scheduled task: "${TASK_TYPE}"`); - await scheduleSemanticTextMigration(pluginsStart); - } catch (error) { - logger.error(`Failed to schedule task "${TASK_TYPE}". Error: ${error}`); - } -} - -export function scheduleSemanticTextMigration( - pluginsStart: ObservabilityAIAssistantPluginStartDependencies -) { - return pluginsStart.taskManager.ensureScheduled({ - id: TASK_ID, - taskType: TASK_TYPE, - scope: ['aiAssistant'], - params: {}, - state: {}, - }); -} - -export async function runSemanticTextKnowledgeBaseMigration({ - esClient, - logger, - config, -}: { - esClient: { asInternalUser: ElasticsearchClient }; - logger: Logger; - config: ObservabilityAIAssistantConfig; -}) { - logger.debug('Knowledge base migration: Running migration'); - - try { - const response = await esClient.asInternalUser.search({ - size: 100, - track_total_hits: true, - index: [resourceNames.aliases.kb], - query: { - bool: { - must_not: { - exists: { - field: 'semantic_text', - }, - }, - }, - }, - _source: { - excludes: ['ml.tokens'], - }, - }); - - if (response.hits.hits.length === 0) { - logger.debug('Knowledge base migration: No remaining entries to migrate'); - return; - } - - logger.debug(`Knowledge base migration: Found ${response.hits.hits.length} entries to migrate`); - - await waitForModel({ esClient, logger, config }); - - // Limit the number of concurrent requests to avoid overloading the cluster - const limiter = pLimit(10); - const promises = response.hits.hits.map((hit) => { - return limiter(() => { - if (!hit._source || !hit._id) { - return; - } - - return esClient.asInternalUser.update({ - refresh: 'wait_for', - index: resourceNames.aliases.kb, - id: hit._id, - body: { - doc: { - ...hit._source, - semantic_text: hit._source.text, - }, - }, - }); - }); - }); - - await Promise.all(promises); - logger.debug(`Knowledge base migration: Migrated ${promises.length} entries`); - await runSemanticTextKnowledgeBaseMigration({ esClient, logger, config }); - } catch (e) { - logger.error(`Knowledge base migration failed: ${e.message}`); - } -} - -async function waitForModel({ - esClient, - logger, - config, -}: { - esClient: { asInternalUser: ElasticsearchClient }; - logger: Logger; - config: ObservabilityAIAssistantConfig; -}) { - return pRetry( - async () => { - const { ready } = await getElserModelStatus({ esClient, logger, config }); - if (!ready) { - logger.debug('Elser model is not yet ready. Retrying...'); - throw new Error('Elser model is not yet ready'); - } - }, - { retries: 30, factor: 2, maxTimeout: 30_000 } - ); -} diff --git a/x-pack/test/api_integration/config.ts b/x-pack/test/api_integration/config.ts index 9834d7c1fc603..e30e5778b8f99 100644 --- a/x-pack/test/api_integration/config.ts +++ b/x-pack/test/api_integration/config.ts @@ -40,7 +40,7 @@ export async function getApiIntegrationConfig({ readConfigFile }: FtrConfigProvi serverArgs: [ ...xPackFunctionalTestsConfig.get('esTestCluster.serverArgs'), 'node.attr.name=apiIntegrationTestNode', - 'path.repo=/tmp/repo,/tmp/repo_1,/tmp/repo_2,/tmp/cloud-snapshots/', + `path.repo=/tmp/repo,/tmp/repo_1,/tmp/repo_2,/tmp/cloud-snapshots/`, ], }, }; diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/.gitignore b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/.gitignore new file mode 100644 index 0000000000000..d555c9d94945b --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/.gitignore @@ -0,0 +1,2 @@ +# unzipped snapshot folder +knowledge_base/snapshot_kb_8.10/ \ No newline at end of file diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/index.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/index.ts index 3f756ecd11247..1d3d41ddb4400 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/index.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/index.ts @@ -20,7 +20,10 @@ export default function aiAssistantApiIntegrationTests({ loadTestFile(require.resolve('./complete/functions/summarize.spec.ts')); loadTestFile(require.resolve('./public_complete/public_complete.spec.ts')); loadTestFile(require.resolve('./knowledge_base/knowledge_base_setup.spec.ts')); - loadTestFile(require.resolve('./knowledge_base/knowledge_base_migration.spec.ts')); + loadTestFile( + require.resolve('./knowledge_base/knowledge_base_add_semantic_text_field_migration.spec.ts') + ); + loadTestFile(require.resolve('./knowledge_base/knowledge_base_reindex.spec.ts')); loadTestFile(require.resolve('./knowledge_base/knowledge_base_status.spec.ts')); loadTestFile(require.resolve('./knowledge_base/knowledge_base.spec.ts')); loadTestFile(require.resolve('./knowledge_base/knowledge_base_user_instructions.spec.ts')); diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_migration.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_add_semantic_text_field_migration.spec.ts similarity index 98% rename from x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_migration.spec.ts rename to x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_add_semantic_text_field_migration.spec.ts index b1d6f82345ca7..3390cd3ef35c4 100644 --- a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_migration.spec.ts +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_add_semantic_text_field_migration.spec.ts @@ -98,7 +98,7 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon describe('after migrating', () => { before(async () => { const { status } = await observabilityAIAssistantAPIClient.editor({ - endpoint: 'POST /internal/observability_ai_assistant/kb/semantic_text_migration', + endpoint: 'POST /internal/observability_ai_assistant/kb/migrations/kb_semantic_text', }); expect(status).to.be(200); }); @@ -137,7 +137,7 @@ export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderCon it('returns entries correctly via API', async () => { const { status } = await observabilityAIAssistantAPIClient.editor({ - endpoint: 'POST /internal/observability_ai_assistant/kb/semantic_text_migration', + endpoint: 'POST /internal/observability_ai_assistant/kb/migrations/kb_semantic_text', }); expect(status).to.be(200); diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_reindex.spec.ts b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_reindex.spec.ts new file mode 100644 index 0000000000000..79c6b963a852e --- /dev/null +++ b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/knowledge_base_reindex.spec.ts @@ -0,0 +1,154 @@ +/* + * 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 expect from '@kbn/expect'; +import { resourceNames } from '@kbn/observability-ai-assistant-plugin/server/service'; +import AdmZip from 'adm-zip'; +import path from 'path'; +import { AI_ASSISTANT_SNAPSHOT_REPO_PATH } from '../../../../default_configs/stateful.config.base'; +import type { DeploymentAgnosticFtrProviderContext } from '../../../../ftr_provider_context'; +import { + deleteKnowledgeBaseModel, + importTinyElserModel, + deleteInferenceEndpoint, + setupKnowledgeBase, + waitForKnowledgeBaseReady, +} from './helpers'; + +export default function ApiTest({ getService }: DeploymentAgnosticFtrProviderContext) { + const observabilityAIAssistantAPIClient = getService('observabilityAIAssistantApi'); + const es = getService('es'); + const ml = getService('ml'); + const retry = getService('retry'); + const log = getService('log'); + + describe('when the knowledge base index was created before 8.11', function () { + // Intentionally skipped in all serverless environnments (local and MKI) + // because the migration scenario being tested is not relevant to MKI and Serverless. + this.tags(['skipServerless']); + + before(async () => { + const zipFilePath = `${AI_ASSISTANT_SNAPSHOT_REPO_PATH}.zip`; + log.debug(`Unzipping ${zipFilePath} to ${AI_ASSISTANT_SNAPSHOT_REPO_PATH}`); + new AdmZip(zipFilePath).extractAllTo(path.dirname(AI_ASSISTANT_SNAPSHOT_REPO_PATH), true); + + await importTinyElserModel(ml); + await setupKnowledgeBase(observabilityAIAssistantAPIClient); + await waitForKnowledgeBaseReady({ observabilityAIAssistantAPIClient, log, retry }); + }); + + beforeEach(async () => { + await deleteKbIndex(); + await restoreKbSnapshot(); + await createOrUpdateIndexAssets(); + }); + + after(async () => { + await deleteKbIndex(); + await createOrUpdateIndexAssets(); + await deleteKnowledgeBaseModel(ml); + await deleteInferenceEndpoint({ es }); + }); + + it('has an index created version earlier than 8.11', async () => { + await retry.try(async () => { + expect(await getKbIndexCreatedVersion()).to.be.lessThan(8110000); + }); + }); + + function createKnowledgeBaseEntry() { + const knowledgeBaseEntry = { + id: 'my-doc-id-1', + title: 'My title', + text: 'My content', + }; + + return observabilityAIAssistantAPIClient.editor({ + endpoint: 'POST /internal/observability_ai_assistant/kb/entries/save', + params: { body: knowledgeBaseEntry }, + }); + } + + it('cannot add new entries to KB', async () => { + const { status, body } = await createKnowledgeBaseEntry(); + + // @ts-expect-error + expect(body.message).to.eql( + 'The knowledge base is currently being re-indexed. Please try again later' + ); + + expect(status).to.be(503); + }); + + it('can add new entries after re-indexing', async () => { + await runKbSemanticTextMigration(); + + await retry.try(async () => { + const { status } = await createKnowledgeBaseEntry(); + expect(status).to.be(200); + }); + }); + }); + + async function getKbIndexCreatedVersion() { + const indexSettings = await es.indices.getSettings({ + index: resourceNames.concreteIndexName.kb, + }); + + const { settings } = Object.values(indexSettings)[0]; + return parseInt(settings?.index?.version?.created ?? '', 10); + } + + async function deleteKbIndex() { + log.debug('Deleting KB index'); + + await es.indices.delete( + { index: resourceNames.concreteIndexName.kb, ignore_unavailable: true }, + { ignore: [404] } + ); + } + + async function restoreKbSnapshot() { + log.debug( + `Restoring snapshot of ${resourceNames.concreteIndexName.kb} from ${AI_ASSISTANT_SNAPSHOT_REPO_PATH}` + ); + const snapshotRepoName = 'snapshot-repo-8-10'; + const snapshotName = 'my_snapshot'; + await es.snapshot.createRepository({ + name: snapshotRepoName, + repository: { + type: 'fs', + settings: { location: AI_ASSISTANT_SNAPSHOT_REPO_PATH }, + }, + }); + + await es.snapshot.restore({ + repository: snapshotRepoName, + snapshot: snapshotName, + wait_for_completion: true, + body: { + indices: resourceNames.concreteIndexName.kb, + }, + }); + + await es.snapshot.deleteRepository({ name: snapshotRepoName }); + } + + async function createOrUpdateIndexAssets() { + const { status } = await observabilityAIAssistantAPIClient.editor({ + endpoint: 'POST /internal/observability_ai_assistant/index_assets', + }); + expect(status).to.be(200); + } + + async function runKbSemanticTextMigration() { + const { status } = await observabilityAIAssistantAPIClient.editor({ + endpoint: 'POST /internal/observability_ai_assistant/kb/migrations/kb_semantic_text', + }); + expect(status).to.be(200); + } +} diff --git a/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/snapshot_kb_8.10.zip b/x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/snapshot_kb_8.10.zip new file mode 100644 index 0000000000000000000000000000000000000000..0e65dd1848246e9012ec3f0ba50b7ac38a651dab GIT binary patch literal 2350359 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 z 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

@dEZ$(g4Bsq$Gs!rAU&NnmN{l3rh{Qtk_eWx2( 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

-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�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%0A)${=;)L4f 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

J_Fd_pIq1pS~C8fcvp;a48}kV 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

^w_nImKq1aHIjZlpgp*j4F6$!(F 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%0Af2 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 L2k3Yo*86399KPW>KKaY`Ksv-MeMy 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�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
|Iq_mc+HU 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�%qHY?N6~s(Y^>7%D(vELo2a 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�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Ë?I=NB)Dlm`f`4u=wob~5z3E=rfu{T6dEE5Po2*r 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 z

NaCuwHFaw2OKWd*?SQwJZkK8UbAE7U>##p<{8STNI=s{cklt?GRwPr4jZd zq2^)`p6=gx#H1?yN^i0F4lyrDSyMcs?)H$*`e$^zzg2`mG!l#l5}i0Fmb9?(H@K

bUK5{Kd??Xe=FB0oR7v7voF4 zK?g-g`fe8c-AaCnS|%~cbSp6m!KVrJpqc`Hh1cX+>(cdyFjr`M{BSyj$i;JC{-(h_ zP)&&Oz{Mdy)ygjuv#EoMLv86CVIU2sKMknb3@V zr3@`|?IkMd%4mi1ihgz6xGl{1=wngfamWFuzyr}3K%{|Q`wx# zlQ{WBJT0jnQjy=klaM&Hv^l<_2aMw~ylXI%2{eg*G0NVu%0utbFXFYJb47r56& zjysjj4H;X>`f#w4k**0NHlFzA_*EfNHZ$Qi>O!iJ54lKh1wc#t(r^3kzY*t<;-SE|=~3jcKRB=-L3u&}IK>3CtbnoQWDl`q8n9v@lYYLs za}ybgC$m@l3%7D$-|qXwlfY3uHLxWts~dv+J;$(x$y;E`To}!#kOK~%O8Nn`}0j}}U43ZD&<5F3C!W$?}nFV`Tgv~31`410aF*RT$c zuVS9+Vk8qy@dI@W%bP;fwMu|&_Mk1QH6pzUNu+>c;8)_L2JT)eI0PT--;}&-)`r#T z5i;(jWfRSnr$`Y=Q(}_i9#|v9(sW@K$T^jL5qQwcw`Eot?vSd0Rx{<#XI?)nqnMX? zSQ$(Z$P9x7kVP|v1AzKzR;FJW`psq6WhiJ2_E1EJE_qarKQdm-95(a0QPy~OOMFqB z{mqj`O7Xo&BFxvi33$|Pn_{1dDnI&CbKXsS65}h#NIq9>P97bDMX{tA(}H6LTl78GVT=~9w|S?VEf^*-;?%nn|Ip%b+oPbLeoYt z>_-Sl3uYeHDVJDJ0^3gP)G;T=oLycD9o9$wU`-C*cgrj4tS(DJ1GqlRSW`G|etqI@ zHt#PCd?HY%w^3@J?7j;{ru^AWcHs#XmTVxlZA#Z()GqyqWx5IwsvJ6@alIq00%u7y-3$L3nZxL5z<8(9!>B{Lh|g+NZ8p@8CP z@_XgY&un1$Xo4OkS7=5f5FFYApMrv`L5ZEXpLn@_dP-IyYiffUw9j5&XjO+41n|Tct7ufam?3G# zD0Yz1ZeoV2X)dq4eGyGNL?&khnhw!|J!@u15I`sp?S@y8Y@`wXxtJnGAyfY>uS3Il zK7X}?*4YpJ&SjZ9lUE#eaFyemd_-CDXL8b(UsEiYfQka9}xJ?VaB%$wCGw)iS&`9S{p&X=?ZOO znL!=txztx-x~!PTjy5kPk!RPaQnhze`7bM}s-Tsq)v1{KvRSTb6lbKQA^aE-FOAut zVbznnNkC(Al(HxO0YJV=wcNViIT&urnxBIGX^LbA1RiGG>bFND+gg;2=mHO5w=bU` z1Q^3traS2a70Lt}6F68<>p3<}I4hg+Ty~1&G(27pbNWsWuWV*{mCnZ`9@`{NWj|j( z&>!M+^+oMxJ5(A!uk8CUxs*Q*tF{lmI~`Q1=Qh)q#e-ja&92SO&o~I)QXRjHMIktY zO_S^GoRMGIFsDqW9!|PMB=f+nsDrx{4qTE^+hQ?T;Sg*|(1jkK9Fm+(__f3-ftF1B#u~iqQqL7F2Do zq%aXLPRBueZl3_+0hHO`PlmB~+TgP$EqRKG$V zrt)Cm2`3RFE!-<2aO5PCzJO~7Gax_q+#{*gM2eAqsiC#L)&oHlS}y?d)Q$WLcBz?T zK-He$O7@4mI?q7ONM8@*QK<6a&lEs7vZczIMKuA^|KXthoa7;nOh#3ZYvLfbqf<06 zN#h{mR<~kjMDt=P?MC&j1-#dc4PfP4W?#r0j~&B1E(&TttA7ihkOxjGeGo-- ze3b2)grgK51%ewD*{Ong`$9VNv$YlQEb3#D0CFXOrl0OmubYNX913M|QR}tzvDFvn z+6wk?diP^j-+;$y?vw314L5QBnhg4!9%piuqFO757sGc@e(LcE#%+vTYLm?Vq_iQV zpR%ktSsqu%qsHP}DG%}nya}X^k$AKiF7xLg%0lr`G5aAy8S*fcA906y!6hA=%lw*h zD4|VjR3q;0n>@#$PBLxrh22koc9^=Rt_=eY7?Z?_N%U$xWwdRQXBJ03BMzk+mH%!e z^RpuXKmFI>(t1RMjz~FgyB)A`Y%&8d54GLm4e;CgSrMyM_Fn(;rNF)wNcIghDHe|| zL6l#`^Br?yO@ePahG9+=aumpt_xZISA>QTHc{SlMxRaYh`(-)g8CY5ezZos+U zJiE=I)Z8OB#-EakSYNxo)LuiyAx^KYJuoqgiiLIfF__OUR4(@WbiRWs*bY3!+2Ot- z3f<>YO>OOnqhCF4t-)L31;5_q%=13&Ry_*8he5G0pL0b{rhLU8(?z4plAL_0GNum8DZwSk%R$oKKw=I^6l^w_q(f!jXu1Otx_k>5)WHLl zJh!~aZER;iUMd9oW@29r%Rb8==fes>QKg90&9X0OAw&?g!Xa0|?6E_r%db^M4VON? zckgH2;7*>{dT&c4g8teWni|=-G_^f(k4IU?W|`3Fdj*aB^CZ*s^K%8QCi8fRa^Ws( z^!J?=!*gCjtc0dBAB;b>E{JraQUY*9axk5_^6MgFg9Gci5d0B7eMmlfn%>7(A(@dN zcWdTJ8V@xX<}o`&wE?@mE;Ak5?}1`nZI0it^ifIM|3tK6x$)WUgBKVH9>bFB+oXy} zQFuzNH748pF=U5$71I*Fdf_Ii?fZ~9WQGGQYzcsbmw`|BMd>6hAWwu4tG;}zta0WJ zX;#Fp#jsXlJHePRbWTceXl=URv0T6|O$%qP1NRCn@bL==@Vcg;;q!m*O{)J^EbPM3 z@wN_A;?ed&#rpWr)ZZCg{779)#dcaZ;NpcEW4?mB-hY(#=q3oVl;Pl4=0NUG+?#2J zR-p5;r`lZjt3Xb#J7doNd{It-QPq4FZoX%1)Ko_!ekdfw(b#9CmOqM2UA*uOp_H9# zKtN9ef>WX$#1LRB$D699jH*egb^7x3_mT8FC7U-2-6kj^Qf6NT909+y*>F~)?kBk} za7TM8w(PAw=d;e46C&;DvonYy`3Ij1@bLhy`lO#IVM_2*7qNm9lJ7f`XE*Pd!egQr zD@wv_o{59X!{UXGO6jn9(?~$)1#9!4gbH{C*Y6!+j z^$>YJn@OMii2Ptw&rXR8fF@q6nb$-nCl<#?kK$w}BDR>TxZ{X<`8QuZsVk_1Ni#Bh?= zD7eHYt^&zj{&;b`HH}obJa;Nx$(ME+L1dr8V99l6XR8Rq;ELF8`cQ=GE!ejcrGU`r zU&D!MEn36r3s(?2)nVJm&^HgYKC6wAckm+!$*f4ZoOCtzmwxBE0bX3|k{5e?HOZ?X zlJiClU;hZX_>+aUETP1=qMQ8aKzrUW=}AEMW+2U1o}CAubMXl9lS^&Hnkkb0gR~b``OH=mm==<+WaWfocVuWfKZ} zb?C1$GR$QTbUF)(YTpkcZ53Avf7Z@XiB)_=k$04Ni>gBeL#iASK83$8BVS1d7>XtY zsx`5)ET5bnv`3M^*{Z$ z*W|L=*bEKJ=O=FQO-5m`i1d>Zsi_3ThZ@>5Sd0U2+=7a#H1vURC`hTB2jVFjGHPUH zY#WP#9(2{{Hto&ds1O!J?ELb?q9?C}RJq@T zp=R)MO2l27`+_FXg%-aThWC;lufZucI)JIRcex&uipzg$_>W)qi# z*!j^O74!&9kB{4MBc`vVe}RTC52NL3?r_^cS6oV)Zptp32{!IQyc6Bp#B{ZpTq?6W zA&6UYpuCTW3HgG|39hc?rPF9ET)b}YgzFy;!%d2IzR{1)0_5`stL5yJi4(nkW5v-Y zT12qNna}PWS8dx#+r5&C(}!=o7uWt%quCexdhD0JKD z`sMGfpD1(DBN~O@bF>CxUYH_ijJS2X{Lpi}RoM3;?BUlPF4$(t?X#+piNV$Iuy{=R z)zOcT(96Y}pqI9oa!mCClAT&01g)kd^0#cUeDj}>%0A?S|+$vj=OE_HG(wUvB)Qd7?Z|(3;|Vh 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%0A?P??cd^sVCC1d2ylm8td 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%0DJ<_n^|FhW~EM^XW4CG3IVk{ ziR6a@dmcpfRSx18p`eWtS!Fzfosbycc+WAI)6N6rP73=M1xV4^GH9*W91(rP?Hy;i zgx3Ny)X+4I3&~*toqkrpQSa;4s0uX)uqDZ};*FBZ(}P|fX+yCWi|dUVp8AIIkM$I# zd{cuOb1@tVL6S}IOc>&qDtD1?tQ*kt7U?26@(Rwx@Nsp7e$)j^@Gs2U9_elSAz{8! zTnDidEMFN>>k4KQlQzk>RH%KNG6RN2T6iwcLOwy{@7|&wOgcL&w}-CYJhvJ2=$K?* zKZ1hUUoiiA{0%-~5gJe4x>r;>@Qq-KG5?@mjgOy<(TTI+uvs|i@4BFr!!W=0jPiCq z+@TC|=8K_K^EmtGBrrt3z4-nvv+^y%!QE)lhvOaau5|+N^M|Bhs@aHAEHPHE4q#o8 zyJ#!a`%@I8?f6$EL^ILYttV$>^3;2QqbVj8Ni33~xv%K;Q#IpE>hard)q%=Fo}iSj zvn}#D)N9p74e%2)3%p*-ypxa3odQ5S#bOY6YT%m^ADr_ZeQ5atN!`^zs}o(RY|lN6 zLCK;kz=ZF?_syjLC{L)}hOuyzIM;I82$9(bD&G;lW;aFz|kKT`zbRunp@G~C9 zsR3*Q>n~7U+5AMI9M`4djZg1MEoD(#^$}h8I>GA*k+o%rs{^W!0-Uqw$3?wWQ$|Z# z_UZw-eEdjvMhfE>@jliTa93Z zxc1wIFx@AjNh&#Z9N}YFOnD&~!W$K8ws-1LQuj?C)I$Qy^*iZ`=;3?}nvu+q*(ZSy zbn{-|Cj%a3?D7^5W@6-pxk?;!$F9|Tjo6#=#5q?fJW=IW9ASJg>dzh2AlE8bW7vJ#sxiGGiv z91k-s$OfUfdZ&QG?r!?p@^6OYiftkBN77aMVb@5qX?+hF4)}hVS

d8&frE?q|x%p)J%mg)sw(lJzTB5 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

`A-Yj3Ru&kC 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 kA_{$2GI)S-;;W<6Uz$7-eJ$z5!}|+k1n}b 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

SJx`%ydQXuA5_Y<)`*LX?9wPKiS*5 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

h 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 z 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

$|Z zUTh?V=`QCF$~Sx5mXR?(48c zqpFaH)8dYm9Lmw{36g$7xPSFACYErGKtl=KX?1-RLfs3Ytp|0(->XCs&&B-ygL0Qg z2w`I|2A+-(tiG*2+|@xA6A&nckV6MZUL3IogJQo%(a`zuIsq{9C)opZBbPy0yb3pAF7p+~XVo0NhFa|M_|vHo5kDw2i-* zGuGP%my!S1qa+SJwV#R0rv|r>IFz4l=iyTXc-DWT>JQ`3%ZN8LG9Lg4#>r9bXE%SN d{a=IdPmdrt{M { suiteTags?: { include?: string[]; exclude?: string[] }; } +export const AI_ASSISTANT_SNAPSHOT_REPO_PATH = path.resolve( + REPO_ROOT, + 'x-pack/test/api_integration/deployment_agnostic/apis/observability/ai_assistant/knowledge_base/snapshot_kb_8.10' +); + export function createStatefulTestConfig( options: CreateTestConfigOptions ) { @@ -123,6 +128,7 @@ export function createStatefulTestConfig Date: Mon, 17 Feb 2025 18:28:04 +0100 Subject: [PATCH 39/78] [HTTP] Report telemetry of the configured protocol (#211279) ## Summary Starting with 9.0, we default to `http2` under certain conditions. We want to report to telemetry how many deployments actively use `http2`. ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../server-internal/src/core_usage_data_service.test.ts | 1 + .../server-internal/src/core_usage_data_service.ts | 1 + .../server-mocks/src/core_usage_data_service.mock.ts | 1 + src/core/packages/usage-data/server/src/core_usage_data.ts | 1 + .../server/collectors/core/core_usage_collector.ts | 4 ++++ .../plugins/shared/telemetry/schema/oss_platform.json | 6 ++++++ 6 files changed, 14 insertions(+) diff --git a/src/core/packages/usage-data/server-internal/src/core_usage_data_service.test.ts b/src/core/packages/usage-data/server-internal/src/core_usage_data_service.test.ts index f72664ff0c1fa..bc5ad516bb83c 100644 --- a/src/core/packages/usage-data/server-internal/src/core_usage_data_service.test.ts +++ b/src/core/packages/usage-data/server-internal/src/core_usage_data_service.test.ts @@ -307,6 +307,7 @@ describe('CoreUsageDataService', () => { }, "keepaliveTimeout": 120000, "maxPayloadInBytes": 1048576, + "protocol": "http1", "requestId": Object { "allowFromAnyIp": false, "ipAllowlistConfigured": false, diff --git a/src/core/packages/usage-data/server-internal/src/core_usage_data_service.ts b/src/core/packages/usage-data/server-internal/src/core_usage_data_service.ts index c970bd4abfa6d..dec6b7fa5efd2 100644 --- a/src/core/packages/usage-data/server-internal/src/core_usage_data_service.ts +++ b/src/core/packages/usage-data/server-internal/src/core_usage_data_service.ts @@ -280,6 +280,7 @@ export class CoreUsageDataService rewriteBasePath: http.rewriteBasePath, keepaliveTimeout: http.keepaliveTimeout, socketTimeout: http.socketTimeout, + protocol: http.protocol, compression: { enabled: http.compression.enabled, referrerWhitelistConfigured: isConfigured.array(http.compression.referrerWhitelist), diff --git a/src/core/packages/usage-data/server-mocks/src/core_usage_data_service.mock.ts b/src/core/packages/usage-data/server-mocks/src/core_usage_data_service.mock.ts index 57628901c1a60..bc14931fd31e9 100644 --- a/src/core/packages/usage-data/server-mocks/src/core_usage_data_service.mock.ts +++ b/src/core/packages/usage-data/server-mocks/src/core_usage_data_service.mock.ts @@ -62,6 +62,7 @@ const createStartContractMock = () => { }, keepaliveTimeout: 120000, maxPayloadInBytes: 1048576, + protocol: 'http1', requestId: { allowFromAnyIp: false, ipAllowlistConfigured: false, diff --git a/src/core/packages/usage-data/server/src/core_usage_data.ts b/src/core/packages/usage-data/server/src/core_usage_data.ts index 24849db2de255..8824d75ea4bc5 100644 --- a/src/core/packages/usage-data/server/src/core_usage_data.ts +++ b/src/core/packages/usage-data/server/src/core_usage_data.ts @@ -91,6 +91,7 @@ export interface CoreConfigUsageData { rewriteBasePath: boolean; keepaliveTimeout: number; socketTimeout: number; + protocol: 'http1' | 'http2'; compression: { enabled: boolean; referrerWhitelistConfigured: boolean; diff --git a/src/platform/plugins/private/kibana_usage_collection/server/collectors/core/core_usage_collector.ts b/src/platform/plugins/private/kibana_usage_collection/server/collectors/core/core_usage_collector.ts index 41e7bf9fd7402..c61e81c3339a3 100644 --- a/src/platform/plugins/private/kibana_usage_collection/server/collectors/core/core_usage_collector.ts +++ b/src/platform/plugins/private/kibana_usage_collection/server/collectors/core/core_usage_collector.ts @@ -151,6 +151,10 @@ export function getCoreUsageCollector( type: 'long', _meta: { description: 'Maximum payload size in bytes that is allowed.' }, }, + protocol: { + type: 'keyword', + _meta: { description: 'Protocol to serve the requests ("http1" | "http2")' }, + }, rewriteBasePath: { type: 'boolean', _meta: { description: 'Indicates if the base path should be rewritten.' }, diff --git a/src/platform/plugins/shared/telemetry/schema/oss_platform.json b/src/platform/plugins/shared/telemetry/schema/oss_platform.json index 7dd943ba7557b..487f404ab135f 100644 --- a/src/platform/plugins/shared/telemetry/schema/oss_platform.json +++ b/src/platform/plugins/shared/telemetry/schema/oss_platform.json @@ -8562,6 +8562,12 @@ "description": "Maximum payload size in bytes that is allowed." } }, + "protocol": { + "type": "keyword", + "_meta": { + "description": "Protocol to serve the requests (\"http1\" | \"http2\")" + } + }, "rewriteBasePath": { "type": "boolean", "_meta": { From 929cd7de4ffdf297c90b6211b793fabea9dac3c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cau=C3=AA=20Marcondes?= <55978943+cauemarcondes@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:22:58 -0300 Subject: [PATCH 40/78] [Profiling] Improve finding a function (#210437) closes https://github.com/elastic/prodfiler/issues/4534 TopN functions: https://github.com/user-attachments/assets/1b62a50f-3c6f-4cd5-8971-019ca403893c Diff TopN functions: https://github.com/user-attachments/assets/0c598317-9423-44b4-9d3f-079d22a0194c --- .../index.tsx | 224 ++++++++++-------- .../search_functions_input/index.tsx | 35 +++ .../components/topn_functions/index.tsx | 109 +++++---- .../public/components/topn_functions/utils.ts | 144 ++++++----- .../functions/embeddable_functions_grid.tsx | 3 + .../profiling/public/routing/index.tsx | 3 +- .../functions/differential_topn/index.tsx | 14 +- .../public/views/functions/topn/index.tsx | 25 +- 8 files changed, 338 insertions(+), 219 deletions(-) create mode 100644 x-pack/solutions/observability/plugins/profiling/public/components/search_functions_input/index.tsx diff --git a/x-pack/solutions/observability/plugins/profiling/public/components/differential_topn_functions_grid/index.tsx b/x-pack/solutions/observability/plugins/profiling/public/components/differential_topn_functions_grid/index.tsx index 91c1099371827..2e64a1e5e0071 100644 --- a/x-pack/solutions/observability/plugins/profiling/public/components/differential_topn_functions_grid/index.tsx +++ b/x-pack/solutions/observability/plugins/profiling/public/components/differential_topn_functions_grid/index.tsx @@ -10,19 +10,27 @@ import type { EuiDataGridColumn, EuiDataGridSorting, } from '@elastic/eui'; -import { EuiButtonIcon, EuiDataGrid, EuiScreenReaderOnly, useEuiTheme } from '@elastic/eui'; +import { + EuiButtonIcon, + EuiDataGrid, + EuiFlexGroup, + EuiFlexItem, + EuiScreenReaderOnly, + useEuiTheme, +} from '@elastic/eui'; import { css } from '@emotion/react'; import { i18n } from '@kbn/i18n'; import type { StackFrameMetadata, TopNFunctions } from '@kbn/profiling-utils'; import { - getCalleeFunction, TopNComparisonFunctionSortField, TopNFunctionSortField, + getCalleeFunction, } from '@kbn/profiling-utils'; import { orderBy } from 'lodash'; import React, { useEffect, useMemo, useState } from 'react'; import { useCalculateImpactEstimate } from '../../hooks/use_calculate_impact_estimates'; import { FrameInformationTooltip } from '../frame_information_window/frame_information_tooltip'; +import { SearchFunctionsInput } from '../search_functions_input'; import { FunctionRow } from '../topn_functions/function_row'; import type { IFunctionRow } from '../topn_functions/utils'; import { convertRowToFrame, getFunctionsRows, getTotalCount } from '../topn_functions/utils'; @@ -84,6 +92,8 @@ interface Props { comparisonSortField: TopNComparisonFunctionSortField; totalSeconds: number; comparisonTotalSeconds: number; + searchFunctionName: string; + onSearchFunctionNameChange: (functionName: string) => void; } export function DifferentialTopNFunctionsGrid({ @@ -101,6 +111,8 @@ export function DifferentialTopNFunctionsGrid({ sortDirection, sortField, totalSeconds, + searchFunctionName, + onSearchFunctionNameChange, }: Props) { const theme = useEuiTheme(); const calculateImpactEstimates = useCalculateImpactEstimate(); @@ -145,6 +157,7 @@ export function DifferentialTopNFunctionsGrid({ calculateImpactEstimates, topNFunctions: base, totalSeconds, + functionNameSearchQuery: searchFunctionName, }), comparisonRows: getFunctionsRows({ baselineScaleFactor, @@ -153,6 +166,7 @@ export function DifferentialTopNFunctionsGrid({ comparisonTopNFunctions: base, topNFunctions: comparison, totalSeconds: comparisonTotalSeconds, + functionNameSearchQuery: searchFunctionName, }), }; }, [ @@ -162,6 +176,7 @@ export function DifferentialTopNFunctionsGrid({ comparison, comparisonScaleFactor, comparisonTotalSeconds, + searchFunctionName, totalSeconds, ]); @@ -226,109 +241,114 @@ export function DifferentialTopNFunctionsGrid({ const rowCount = Math.max(sortedBaseRows.length, sortedComparisonRows.length); return ( - <> - - - {i18n.translate('xpack.profiling.topNFunctionsGrid.span.controlsLabel', { - defaultMessage: 'Controls', - })} - - - ); - }, - rowCellRender: function RowCellRender({ rowIndex }) { - function handleOnClick() { - const row = sortedBaseRows[rowIndex]; - const currentFrameId = getFrameIdentification(row.frame); - const compareRow = sortedComparisonRows.find( - (item) => getFrameIdentification(item.frame) === currentFrameId + + + + + + + + {i18n.translate('xpack.profiling.topNFunctionsGrid.span.controlsLabel', { + defaultMessage: 'Controls', + })} + + + ); + }, + rowCellRender: function RowCellRender({ rowIndex }) { + function handleOnClick() { + const row = sortedBaseRows[rowIndex]; + const currentFrameId = getFrameIdentification(row.frame); + const compareRow = sortedComparisonRows.find( + (item) => getFrameIdentification(item.frame) === currentFrameId + ); + setRowsInformation({ + baseRow: row, + comparisonRow: compareRow, + }); + } + return ( + ); - setRowsInformation({ - baseRow: row, - comparisonRow: compareRow, - }); - } - return ( - - ); + }, }, - }, - ]} - columnVisibility={{ visibleColumns, setVisibleColumns }} - rowCount={rowCount} - renderCellValue={CellValue} - sorting={{ - columns: [ - { id: sortField, direction: sortDirection }, - { id: comparisonSortField, direction: comparisonSortDirection }, - ], - onSort, - }} - pagination={{ - pageIndex, - pageSize: 100, - // Left it empty on purpose as it is a required property on the pagination - onChangeItemsPerPage: () => {}, - onChangePage, - pageSizeOptions: [], - }} - rowHeightsOptions={{ defaultHeight: 'auto' }} - toolbarVisibility={{ - showColumnSelector: false, - showKeyboardShortcuts: false, - showDisplaySelector: false, - showSortSelector: false, - }} - /> - {rowsInformation && ( - { - setRowsInformation(undefined); + ]} + columnVisibility={{ visibleColumns, setVisibleColumns }} + rowCount={rowCount} + renderCellValue={CellValue} + sorting={{ + columns: [ + { id: sortField, direction: sortDirection }, + { id: comparisonSortField, direction: comparisonSortDirection }, + ], + onSort, + }} + pagination={{ + pageIndex, + pageSize: 100, + // Left it empty on purpose as it is a required property on the pagination + onChangeItemsPerPage: () => {}, + onChangePage, + pageSizeOptions: [], + }} + rowHeightsOptions={{ defaultHeight: 'auto' }} + toolbarVisibility={{ + showColumnSelector: false, + showKeyboardShortcuts: false, + showDisplaySelector: false, + showSortSelector: false, }} /> - )} - + {rowsInformation && ( + { + setRowsInformation(undefined); + }} + /> + )} + + ); } diff --git a/x-pack/solutions/observability/plugins/profiling/public/components/search_functions_input/index.tsx b/x-pack/solutions/observability/plugins/profiling/public/components/search_functions_input/index.tsx new file mode 100644 index 0000000000000..1e7234d99b004 --- /dev/null +++ b/x-pack/solutions/observability/plugins/profiling/public/components/search_functions_input/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 { EuiFieldSearch } from '@elastic/eui'; +import { debounce } from 'lodash'; +import React, { useCallback, useMemo, useState } from 'react'; + +interface Props { + value: string; + onChange: (functionName: string) => void; +} + +export function SearchFunctionsInput({ value, onChange }: Props) { + const [searchQuery, setSearchQuery] = useState(value); + const debouncedOnChange = useMemo(() => debounce(onChange, 300), [onChange]); + const handleSearchChange = useCallback( + (e: React.ChangeEvent) => { + setSearchQuery(e.target.value); + debouncedOnChange(e.target.value); + }, + [debouncedOnChange] + ); + return ( + + ); +} diff --git a/x-pack/solutions/observability/plugins/profiling/public/components/topn_functions/index.tsx b/x-pack/solutions/observability/plugins/profiling/public/components/topn_functions/index.tsx index 490d2027ec799..2d91da1b11ab4 100644 --- a/x-pack/solutions/observability/plugins/profiling/public/components/topn_functions/index.tsx +++ b/x-pack/solutions/observability/plugins/profiling/public/components/topn_functions/index.tsx @@ -11,11 +11,17 @@ import type { EuiDataGridControlColumn, EuiDataGridSorting, } from '@elastic/eui'; -import { EuiButtonIcon, EuiDataGrid, EuiScreenReaderOnly } from '@elastic/eui'; +import { + EuiButtonIcon, + EuiDataGrid, + EuiFlexGroup, + EuiFlexItem, + EuiScreenReaderOnly, +} from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { useUiTracker } from '@kbn/observability-shared-plugin/public'; import type { TopNFunctions } from '@kbn/profiling-utils'; -import { getCalleeFunction, TopNFunctionSortField } from '@kbn/profiling-utils'; +import { TopNFunctionSortField, getCalleeFunction } from '@kbn/profiling-utils'; import { last, orderBy } from 'lodash'; import React, { useMemo, useState } from 'react'; import type { GridOnScrollProps } from 'react-window'; @@ -23,6 +29,7 @@ import { useCalculateImpactEstimate } from '../../hooks/use_calculate_impact_est import { CPULabelWithHint } from '../cpu_label_with_hint'; import { FrameInformationTooltip } from '../frame_information_window/frame_information_tooltip'; import { LabelWithHint } from '../label_with_hint'; +import { SearchFunctionsInput } from '../search_functions_input'; import { FunctionRow } from './function_row'; import type { IFunctionRow } from './utils'; import { convertRowToFrame, getFunctionsRows, getTotalCount } from './utils'; @@ -45,6 +52,8 @@ interface Props { onChangeSort: (sorting: EuiDataGridSorting['columns'][0]) => void; dataTestSubj?: string; isEmbedded?: boolean; + searchFunctionName: string; + onSearchFunctionNameChange: (functionName: string) => void; } export const TopNFunctionsGrid = ({ @@ -65,6 +74,8 @@ export const TopNFunctionsGrid = ({ onChangeSort, dataTestSubj = 'topNFunctionsGrid', isEmbedded = false, + searchFunctionName, + onSearchFunctionNameChange, }: Props) => { const [selectedRow, setSelectedRow] = useState(); const trackProfilingEvent = useUiTracker({ app: 'profiling' }); @@ -87,12 +98,14 @@ export const TopNFunctionsGrid = ({ topNFunctions, totalSeconds, calculateImpactEstimates, + functionNameSearchQuery: searchFunctionName, }); }, [ baselineScaleFactor, calculateImpactEstimates, comparisonScaleFactor, comparisonTopNFunctions, + searchFunctionName, topNFunctions, totalSeconds, ]); @@ -288,55 +301,59 @@ export const TopNFunctionsGrid = ({ /> ); } + return null; } return ( - <> - {}, - onChangePage, - pageSizeOptions: [], - }} - rowHeightsOptions={{ defaultHeight: 'auto' }} - toolbarVisibility={{ - showColumnSelector: false, - showKeyboardShortcuts: !isDifferentialView, - showDisplaySelector: !isDifferentialView, - showFullScreenSelector: showFullScreenSelector && !isDifferentialView, - showSortSelector: false, - }} - virtualizationOptions={{ - onScroll, - }} - /> - {selectedRow && ( - { - setSelectedRow(undefined); + + + + + + {}, + onChangePage, + pageSizeOptions: [], }} - frame={convertRowToFrame(selectedRow)} - totalSeconds={totalSeconds} - totalSamples={totalCount} - showSymbolsStatus={!isEmbedded} + rowHeightsOptions={{ defaultHeight: 'auto' }} + toolbarVisibility={{ + showColumnSelector: false, + showKeyboardShortcuts: !isDifferentialView, + showDisplaySelector: !isDifferentialView, + showFullScreenSelector: showFullScreenSelector && !isDifferentialView, + showSortSelector: false, + }} + virtualizationOptions={{ onScroll }} /> - )} - + {selectedRow && ( + { + setSelectedRow(undefined); + }} + frame={convertRowToFrame(selectedRow)} + totalSeconds={totalSeconds} + totalSamples={totalCount} + showSymbolsStatus={!isEmbedded} + /> + )} + + ); }; diff --git a/x-pack/solutions/observability/plugins/profiling/public/components/topn_functions/utils.ts b/x-pack/solutions/observability/plugins/profiling/public/components/topn_functions/utils.ts index 94ca6867c4f14..9496d5fd9334a 100644 --- a/x-pack/solutions/observability/plugins/profiling/public/components/topn_functions/utils.ts +++ b/x-pack/solutions/observability/plugins/profiling/public/components/topn_functions/utils.ts @@ -5,7 +5,11 @@ * 2.0. */ import { keyBy } from 'lodash'; -import type { StackFrameMetadata, TopNFunctions } from '@kbn/profiling-utils'; +import { + getCalleeFunction, + type StackFrameMetadata, + type TopNFunctions, +} from '@kbn/profiling-utils'; import type { CalculateImpactEstimates, ImpactEstimates, @@ -71,6 +75,7 @@ export function getFunctionsRows({ topNFunctions, totalSeconds, calculateImpactEstimates, + functionNameSearchQuery, }: { baselineScaleFactor?: number; comparisonScaleFactor?: number; @@ -78,6 +83,7 @@ export function getFunctionsRows({ topNFunctions?: TopNFunctions; totalSeconds: number; calculateImpactEstimates: CalculateImpactEstimates; + functionNameSearchQuery: string; }): IFunctionRow[] { if (!topNFunctions || !topNFunctions.TotalCount || topNFunctions.TotalCount === 0) { return []; @@ -87,72 +93,80 @@ export function getFunctionsRows({ ? keyBy(comparisonTopNFunctions.TopN, 'Id') : {}; - return topNFunctions.TopN.filter((topN) => topN.CountExclusive >= 0).map((topN, i) => { - const comparisonRow = comparisonDataById?.[topN.Id]; + return topNFunctions.TopN.filter((topN) => topN.CountExclusive >= 0) + .filter((topN) => { + if (functionNameSearchQuery) { + const functionName = getCalleeFunction(topN.Frame); + return functionName.toLowerCase().includes(functionNameSearchQuery.toLowerCase()); + } + return true; + }) + .map((topN, i) => { + const comparisonRow = comparisonDataById?.[topN.Id]; + + const scaledSelfCPU = scaleValue({ + value: topN.CountExclusive, + scaleFactor: baselineScaleFactor, + }); + + const totalCPUPerc = (topN.CountInclusive / topNFunctions.selfCPU) * 100; + const selfCPUPerc = (topN.CountExclusive / topNFunctions.selfCPU) * 100; + + const impactEstimates = + totalSeconds > 0 + ? calculateImpactEstimates({ + countExclusive: topN.CountExclusive, + countInclusive: topN.CountInclusive, + totalSamples: topNFunctions.selfCPU, + totalSeconds, + }) + : undefined; + + function calculateDiff() { + if (comparisonTopNFunctions && comparisonRow) { + const comparisonScaledSelfCPU = scaleValue({ + value: comparisonRow.CountExclusive, + scaleFactor: comparisonScaleFactor, + }); + + const scaledDiffSamples = scaledSelfCPU - comparisonScaledSelfCPU; + + return { + id: comparisonRow.Id, + rank: topN.Rank - comparisonRow.Rank, + samples: scaledDiffSamples, + selfCPU: comparisonRow.CountExclusive, + totalCPU: comparisonRow.CountInclusive, + selfCPUPerc: + selfCPUPerc - (comparisonRow.CountExclusive / comparisonTopNFunctions.selfCPU) * 100, + totalCPUPerc: + totalCPUPerc - (comparisonRow.CountInclusive / comparisonTopNFunctions.selfCPU) * 100, + selfAnnualCO2kgs: comparisonRow.selfAnnualCO2kgs, + selfAnnualCostUSD: comparisonRow.selfAnnualCostUSD, + totalAnnualCO2kgs: comparisonRow.totalAnnualCO2kgs, + totalAnnualCostUSD: comparisonRow.totalAnnualCostUSD, + }; + } + } - const scaledSelfCPU = scaleValue({ - value: topN.CountExclusive, - scaleFactor: baselineScaleFactor, + return { + id: topN.Id, + rank: topN.Rank, + frame: topN.Frame, + samples: scaledSelfCPU, + selfCPUPerc, + totalCPUPerc, + selfCPU: topN.CountExclusive, + totalCPU: topN.CountInclusive, + impactEstimates, + selfAnnualCO2kgs: topN.selfAnnualCO2kgs, + selfAnnualCostUSD: topN.selfAnnualCostUSD, + totalAnnualCO2kgs: topN.totalAnnualCO2kgs, + totalAnnualCostUSD: topN.totalAnnualCostUSD, + subGroups: topN.subGroups, + diff: calculateDiff(), + }; }); - - const totalCPUPerc = (topN.CountInclusive / topNFunctions.selfCPU) * 100; - const selfCPUPerc = (topN.CountExclusive / topNFunctions.selfCPU) * 100; - - const impactEstimates = - totalSeconds > 0 - ? calculateImpactEstimates({ - countExclusive: topN.CountExclusive, - countInclusive: topN.CountInclusive, - totalSamples: topNFunctions.selfCPU, - totalSeconds, - }) - : undefined; - - function calculateDiff() { - if (comparisonTopNFunctions && comparisonRow) { - const comparisonScaledSelfCPU = scaleValue({ - value: comparisonRow.CountExclusive, - scaleFactor: comparisonScaleFactor, - }); - - const scaledDiffSamples = scaledSelfCPU - comparisonScaledSelfCPU; - - return { - id: comparisonRow.Id, - rank: topN.Rank - comparisonRow.Rank, - samples: scaledDiffSamples, - selfCPU: comparisonRow.CountExclusive, - totalCPU: comparisonRow.CountInclusive, - selfCPUPerc: - selfCPUPerc - (comparisonRow.CountExclusive / comparisonTopNFunctions.selfCPU) * 100, - totalCPUPerc: - totalCPUPerc - (comparisonRow.CountInclusive / comparisonTopNFunctions.selfCPU) * 100, - selfAnnualCO2kgs: comparisonRow.selfAnnualCO2kgs, - selfAnnualCostUSD: comparisonRow.selfAnnualCostUSD, - totalAnnualCO2kgs: comparisonRow.totalAnnualCO2kgs, - totalAnnualCostUSD: comparisonRow.totalAnnualCostUSD, - }; - } - } - - return { - id: topN.Id, - rank: topN.Rank, - frame: topN.Frame, - samples: scaledSelfCPU, - selfCPUPerc, - totalCPUPerc, - selfCPU: topN.CountExclusive, - totalCPU: topN.CountInclusive, - impactEstimates, - selfAnnualCO2kgs: topN.selfAnnualCO2kgs, - selfAnnualCostUSD: topN.selfAnnualCostUSD, - totalAnnualCO2kgs: topN.totalAnnualCO2kgs, - totalAnnualCostUSD: topN.totalAnnualCostUSD, - subGroups: topN.subGroups, - diff: calculateDiff(), - }; - }); } export function calculateBaseComparisonDiff({ diff --git a/x-pack/solutions/observability/plugins/profiling/public/embeddables/functions/embeddable_functions_grid.tsx b/x-pack/solutions/observability/plugins/profiling/public/embeddables/functions/embeddable_functions_grid.tsx index 7f1ac1b4f8040..31254eb732119 100644 --- a/x-pack/solutions/observability/plugins/profiling/public/embeddables/functions/embeddable_functions_grid.tsx +++ b/x-pack/solutions/observability/plugins/profiling/public/embeddables/functions/embeddable_functions_grid.tsx @@ -21,6 +21,7 @@ export function EmbeddableFunctionsGrid({ data, totalSeconds, showFullScreenSele const [sortField, setSortField] = useState(TopNFunctionSortField.Rank); const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('asc'); const [pageIndex, setPageIndex] = useState(0); + const [searchFunctionName, setSearchFunctionName] = useState(''); return ( ); } diff --git a/x-pack/solutions/observability/plugins/profiling/public/routing/index.tsx b/x-pack/solutions/observability/plugins/profiling/public/routing/index.tsx index 8c244167e2baf..f3e9ed5fe32de 100644 --- a/x-pack/solutions/observability/plugins/profiling/public/routing/index.tsx +++ b/x-pack/solutions/observability/plugins/profiling/public/routing/index.tsx @@ -240,7 +240,7 @@ const routes = { ), params: t.type({ - query: t.partial({ pageIndex: toNumberRt }), + query: t.partial({ pageIndex: toNumberRt, searchFunctionName: t.string }), }), }, '/functions/differential': { @@ -271,6 +271,7 @@ const routes = { baseline: toNumberRt, comparison: toNumberRt, pageIndex: toNumberRt, + searchFunctionName: t.string, }), ]), }), diff --git a/x-pack/solutions/observability/plugins/profiling/public/views/functions/differential_topn/index.tsx b/x-pack/solutions/observability/plugins/profiling/public/views/functions/differential_topn/index.tsx index a7c359f7b1541..ad9dbcbd49f28 100644 --- a/x-pack/solutions/observability/plugins/profiling/public/views/functions/differential_topn/index.tsx +++ b/x-pack/solutions/observability/plugins/profiling/public/views/functions/differential_topn/index.tsx @@ -40,6 +40,7 @@ export function DifferentialTopNFunctionsView() { pageIndex = 0, comparisonSortDirection, comparisonSortField, + searchFunctionName = '', } = query; const timeRange = useTimeRange({ rangeFrom, rangeTo }); @@ -128,10 +129,10 @@ export function DifferentialTopNFunctionsView() { const isNormalizedByTime = normalizationMode === NormalizationMode.Time; - function handleOnFrameClick(functionName: string) { + function handleOnFrameClick(value: string) { profilingRouter.push('/flamegraphs/flamegraph', { path: {}, - query: { ...query, searchText: functionName }, + query: { ...query, searchText: value }, }); } @@ -149,6 +150,13 @@ export function DifferentialTopNFunctionsView() { }); } + function handleSearchFunctionNameChange(value: string) { + profilingRouter.push('/functions/differential', { + path: {}, + query: { ...query, searchFunctionName: value }, + }); + } + useEffect(() => { if (state.status === AsyncStatus.Settled || comparisonState.status === AsyncStatus.Settled) { onPageReady({ @@ -233,6 +241,8 @@ export function DifferentialTopNFunctionsView() { sortDirection={sortDirection} sortField={sortField} totalSeconds={totalSeconds} + searchFunctionName={searchFunctionName} + onSearchFunctionNameChange={handleSearchFunctionNameChange} /> diff --git a/x-pack/solutions/observability/plugins/profiling/public/views/functions/topn/index.tsx b/x-pack/solutions/observability/plugins/profiling/public/views/functions/topn/index.tsx index f8c3e9392e200..6fd1b8dc10a00 100644 --- a/x-pack/solutions/observability/plugins/profiling/public/views/functions/topn/index.tsx +++ b/x-pack/solutions/observability/plugins/profiling/public/views/functions/topn/index.tsx @@ -21,7 +21,15 @@ import { AsyncStatus } from '../../../hooks/use_async'; export function TopNFunctionsView() { const { onPageReady } = usePerformanceContext(); const { query } = useProfilingParams('/functions/topn'); - const { rangeFrom, rangeTo, kuery, sortDirection, sortField, pageIndex = 0 } = query; + const { + rangeFrom, + rangeTo, + kuery, + sortDirection, + sortField, + pageIndex = 0, + searchFunctionName = '', + } = query; const timeRange = useTimeRange({ rangeFrom, rangeTo }); @@ -45,10 +53,10 @@ export function TopNFunctionsView() { const profilingRouter = useProfilingRouter(); - function handleOnFrameClick(functionName: string) { + function handleOnFrameClick(value: string) { profilingRouter.push('/flamegraphs/flamegraph', { path: {}, - query: { ...query, searchText: functionName }, + query: { ...query, searchText: value }, }); } @@ -69,6 +77,14 @@ export function TopNFunctionsView() { }, }); } + + function handleSearchFunctionNameChange(value: string) { + profilingRouter.push('/functions/topn', { + path: {}, + query: { ...query, searchFunctionName: value }, + }); + } + useEffect(() => { if (state.status === AsyncStatus.Settled) { onPageReady({ @@ -83,6 +99,7 @@ export function TopNFunctionsView() { }); } }, [state.status, state.data, onPageReady, rangeFrom, rangeTo]); + return ( <> @@ -100,6 +117,8 @@ export function TopNFunctionsView() { sortField={sortField} sortDirection={sortDirection} onChangeSort={handleSortChange} + searchFunctionName={searchFunctionName} + onSearchFunctionNameChange={handleSearchFunctionNameChange} /> From 040accf49e5bd946efcb725f6f896a6a1db354d8 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Mon, 17 Feb 2025 20:45:45 +0000 Subject: [PATCH 41/78] skip flaky suite (#203607) --- x-pack/test/functional_search/tests/classic_navigation.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/functional_search/tests/classic_navigation.ts b/x-pack/test/functional_search/tests/classic_navigation.ts index a6cd090bcc661..83cf5ca19b4c0 100644 --- a/x-pack/test/functional_search/tests/classic_navigation.ts +++ b/x-pack/test/functional_search/tests/classic_navigation.ts @@ -19,7 +19,8 @@ export default function searchSolutionNavigation({ const spaces = getService('spaces'); const browser = getService('browser'); - describe('Search Classic Navigation', () => { + // FLAKY: https://github.com/elastic/kibana/issues/203607 + describe.skip('Search Classic Navigation', () => { let cleanUp: () => Promise; let spaceCreated: { id: string } = { id: '' }; From 0f5671e2b3969f3038ededaea4e11f16b21a2a95 Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 00:24:54 +0100 Subject: [PATCH 42/78] Update dependency @redocly/cli to ^1.28.5 (main) (#211283) --- oas_docs/package-lock.json | 16 ++++++++-------- oas_docs/package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/oas_docs/package-lock.json b/oas_docs/package-lock.json index 45c9d10d1e45d..8c78a7c0453da 100644 --- a/oas_docs/package-lock.json +++ b/oas_docs/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@redocly/cli": "^1.28.3", + "@redocly/cli": "^1.28.5", "bump-cli": "^2.8.4" } }, @@ -498,12 +498,12 @@ } }, "node_modules/@redocly/cli": { - "version": "1.28.5", - "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-1.28.5.tgz", - "integrity": "sha512-06EIhhqW9tmrlGutpZFFqjnNTIX7wXHvP7BBw6vKJjy6nd++9nHz+B8feeeoJHC7Q2vK7XoCuOMDzqY6BNCCug==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-1.29.0.tgz", + "integrity": "sha512-xpvcZUCFzp2sZCv3WB8ffrFTSUA7Ha2CucI6E6YJrv5d1i8jupeDIClPJ6dwWLrTfTgP/0e6c6R436pwSwzMGg==", "license": "MIT", "dependencies": { - "@redocly/openapi-core": "1.28.5", + "@redocly/openapi-core": "1.29.0", "abort-controller": "^3.0.0", "chokidar": "^3.5.1", "colorette": "^1.2.0", @@ -538,9 +538,9 @@ "license": "MIT" }, "node_modules/@redocly/openapi-core": { - "version": "1.28.5", - "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.28.5.tgz", - "integrity": "sha512-eAuL+x1oBbodJksPm4UpFU57A6z1n1rx9JNpD87CObwtbRf5EzW29Ofd0t057bPGcHc8cYZtZzJ69dcRQ9xGdg==", + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.29.0.tgz", + "integrity": "sha512-Ju8POuRjYLTl6JfaSMq5exzhw4E/f1Qb7fGxgS4/PDSTzS1jzZ/UUJRBPeiQ1Ag7yuxH6JwltOr2iiltnBey1w==", "license": "MIT", "dependencies": { "@redocly/ajv": "^8.11.2", diff --git a/oas_docs/package.json b/oas_docs/package.json index fd727bff2185a..bac6ae7f9544f 100644 --- a/oas_docs/package.json +++ b/oas_docs/package.json @@ -8,7 +8,7 @@ }, "dependencies": { "bump-cli": "^2.8.4", - "@redocly/cli": "^1.28.3" + "@redocly/cli": "^1.28.5" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" From 3ce4cf575bb8407959d367569866bf695be47ace Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 18 Feb 2025 18:24:08 +1100 Subject: [PATCH 43/78] [api-docs] 2025-02-18 Daily api_docs build (#211518) Generated by https://buildkite.com/elastic/kibana-api-docs-daily/builds/987 --- api_docs/actions.mdx | 2 +- api_docs/advanced_settings.mdx | 2 +- .../ai_assistant_management_selection.mdx | 2 +- api_docs/aiops.mdx | 2 +- api_docs/alerting.devdocs.json | 30 +- api_docs/alerting.mdx | 2 +- api_docs/apm.mdx | 2 +- api_docs/apm_data_access.mdx | 2 +- api_docs/automatic_import.mdx | 2 +- api_docs/banners.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_data_migration.mdx | 2 +- api_docs/cloud_defend.mdx | 2 +- api_docs/cloud_security_posture.mdx | 2 +- api_docs/console.mdx | 2 +- api_docs/content_management.mdx | 2 +- api_docs/controls.mdx | 2 +- 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_quality.mdx | 2 +- api_docs/data_query.mdx | 2 +- api_docs/data_search.mdx | 2 +- api_docs/data_usage.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/dataset_quality.devdocs.json | 305 +++++++++++++++++- api_docs/dataset_quality.mdx | 13 +- api_docs/deprecations_by_api.mdx | 2 +- api_docs/deprecations_by_plugin.mdx | 4 +- 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/discover_shared.mdx | 2 +- api_docs/ecs_data_quality_dashboard.mdx | 2 +- api_docs/elastic_assistant.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/entities_data_access.mdx | 2 +- api_docs/entity_manager.mdx | 2 +- api_docs/es_ui_shared.mdx | 2 +- api_docs/esql.mdx | 2 +- api_docs/esql_data_grid.mdx | 2 +- api_docs/event_annotation.mdx | 2 +- api_docs/event_annotation_listing.mdx | 2 +- api_docs/event_log.mdx | 2 +- api_docs/exploratory_view.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_legacy_metric_vis.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/fields_metadata.mdx | 2 +- api_docs/file_upload.mdx | 2 +- api_docs/files.mdx | 2 +- api_docs/files_management.mdx | 2 +- api_docs/fleet.mdx | 2 +- api_docs/global_search.mdx | 2 +- api_docs/guided_onboarding.mdx | 2 +- api_docs/home.mdx | 2 +- api_docs/image_embeddable.mdx | 2 +- api_docs/index_management.mdx | 2 +- api_docs/inference.mdx | 2 +- api_docs/inference_endpoint.mdx | 2 +- api_docs/infra.mdx | 2 +- api_docs/ingest_pipelines.mdx | 2 +- api_docs/inspector.mdx | 2 +- api_docs/interactive_setup.mdx | 2 +- api_docs/inventory.mdx | 2 +- api_docs/investigate.mdx | 2 +- api_docs/investigate_app.mdx | 2 +- api_docs/kbn_actions_types.mdx | 2 +- api_docs/kbn_ai_assistant.mdx | 2 +- api_docs/kbn_ai_assistant_common.mdx | 2 +- api_docs/kbn_ai_assistant_icon.mdx | 2 +- api_docs/kbn_aiops_components.mdx | 2 +- api_docs/kbn_aiops_log_pattern_analysis.mdx | 2 +- api_docs/kbn_aiops_log_rate_analysis.mdx | 2 +- .../kbn_alerting_api_integration_helpers.mdx | 2 +- api_docs/kbn_alerting_comparators.mdx | 2 +- api_docs/kbn_alerting_rule_utils.devdocs.json | 10 +- api_docs/kbn_alerting_rule_utils.mdx | 2 +- api_docs/kbn_alerting_state_types.mdx | 2 +- api_docs/kbn_alerting_types.mdx | 2 +- api_docs/kbn_alerts_as_data_utils.mdx | 2 +- api_docs/kbn_alerts_grouping.mdx | 2 +- api_docs/kbn_alerts_ui_shared.mdx | 2 +- api_docs/kbn_analytics.mdx | 2 +- api_docs/kbn_analytics_collection_utils.mdx | 2 +- api_docs/kbn_apm_config_loader.mdx | 2 +- api_docs/kbn_apm_data_view.mdx | 2 +- api_docs/kbn_apm_synthtrace.mdx | 2 +- api_docs/kbn_apm_synthtrace_client.mdx | 2 +- api_docs/kbn_apm_types.mdx | 2 +- api_docs/kbn_apm_utils.mdx | 2 +- api_docs/kbn_avc_banner.mdx | 2 +- api_docs/kbn_axe_config.mdx | 2 +- api_docs/kbn_calculate_auto.mdx | 2 +- .../kbn_calculate_width_from_char_count.mdx | 2 +- api_docs/kbn_cases_components.mdx | 2 +- api_docs/kbn_cbor.mdx | 2 +- api_docs/kbn_cell_actions.mdx | 2 +- api_docs/kbn_chart_expressions_common.mdx | 2 +- api_docs/kbn_chart_icons.mdx | 2 +- api_docs/kbn_charts_theme.mdx | 2 +- api_docs/kbn_ci_stats_core.mdx | 2 +- api_docs/kbn_ci_stats_performance_metrics.mdx | 2 +- api_docs/kbn_ci_stats_reporter.mdx | 2 +- api_docs/kbn_cli_dev_mode.mdx | 2 +- api_docs/kbn_cloud_security_posture.mdx | 2 +- .../kbn_cloud_security_posture_common.mdx | 2 +- api_docs/kbn_cloud_security_posture_graph.mdx | 2 +- api_docs/kbn_code_editor.mdx | 2 +- api_docs/kbn_code_editor_mock.mdx | 2 +- api_docs/kbn_code_owners.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 +- .../kbn_content_management_content_editor.mdx | 2 +- ...ent_management_content_insights_public.mdx | 2 +- ...ent_management_content_insights_server.mdx | 2 +- ...bn_content_management_favorites_common.mdx | 2 +- ...t_management_favorites_public.devdocs.json | 33 ++ ...bn_content_management_favorites_public.mdx | 4 +- ...bn_content_management_favorites_server.mdx | 2 +- ...tent_management_tabbed_table_list_view.mdx | 2 +- ...kbn_content_management_table_list_view.mdx | 2 +- ...tent_management_table_list_view_common.mdx | 2 +- ...ntent_management_table_list_view_table.mdx | 2 +- .../kbn_content_management_user_profiles.mdx | 2 +- api_docs/kbn_content_management_utils.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_analytics_server.mdx | 2 +- .../kbn_core_analytics_server_internal.mdx | 2 +- api_docs/kbn_core_analytics_server_mocks.mdx | 2 +- api_docs/kbn_core_application_browser.mdx | 2 +- .../kbn_core_application_browser_internal.mdx | 2 +- .../kbn_core_application_browser_mocks.mdx | 2 +- api_docs/kbn_core_application_common.mdx | 2 +- api_docs/kbn_core_apps_browser_internal.mdx | 2 +- api_docs/kbn_core_apps_browser_mocks.mdx | 2 +- api_docs/kbn_core_apps_server_internal.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_internal.mdx | 2 +- api_docs/kbn_core_base_server_mocks.mdx | 2 +- .../kbn_core_capabilities_browser_mocks.mdx | 2 +- api_docs/kbn_core_capabilities_common.mdx | 2 +- api_docs/kbn_core_capabilities_server.mdx | 2 +- .../kbn_core_capabilities_server_mocks.mdx | 2 +- api_docs/kbn_core_chrome_browser.mdx | 2 +- api_docs/kbn_core_chrome_browser_mocks.mdx | 2 +- api_docs/kbn_core_config_server_internal.mdx | 2 +- api_docs/kbn_core_custom_branding_browser.mdx | 2 +- ..._core_custom_branding_browser_internal.mdx | 2 +- ...kbn_core_custom_branding_browser_mocks.mdx | 2 +- api_docs/kbn_core_custom_branding_common.mdx | 2 +- api_docs/kbn_core_custom_branding_server.mdx | 2 +- ...n_core_custom_branding_server_internal.mdx | 2 +- .../kbn_core_custom_branding_server_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_browser.mdx | 2 +- ...kbn_core_deprecations_browser_internal.mdx | 2 +- .../kbn_core_deprecations_browser_mocks.mdx | 2 +- api_docs/kbn_core_deprecations_common.mdx | 2 +- api_docs/kbn_core_deprecations_server.mdx | 2 +- .../kbn_core_deprecations_server_internal.mdx | 2 +- .../kbn_core_deprecations_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 +- ...e_elasticsearch_client_server_internal.mdx | 2 +- ...core_elasticsearch_client_server_mocks.mdx | 2 +- api_docs/kbn_core_elasticsearch_server.mdx | 2 +- ...kbn_core_elasticsearch_server_internal.mdx | 2 +- .../kbn_core_elasticsearch_server_mocks.mdx | 2 +- .../kbn_core_environment_server_internal.mdx | 2 +- .../kbn_core_environment_server_mocks.mdx | 2 +- .../kbn_core_execution_context_browser.mdx | 2 +- ...ore_execution_context_browser_internal.mdx | 2 +- ...n_core_execution_context_browser_mocks.mdx | 2 +- .../kbn_core_execution_context_common.mdx | 2 +- .../kbn_core_execution_context_server.mdx | 2 +- ...core_execution_context_server_internal.mdx | 2 +- ...bn_core_execution_context_server_mocks.mdx | 2 +- api_docs/kbn_core_fatal_errors_browser.mdx | 2 +- .../kbn_core_fatal_errors_browser_mocks.mdx | 2 +- api_docs/kbn_core_feature_flags_browser.mdx | 2 +- ...bn_core_feature_flags_browser_internal.mdx | 2 +- .../kbn_core_feature_flags_browser_mocks.mdx | 2 +- api_docs/kbn_core_feature_flags_server.mdx | 2 +- ...kbn_core_feature_flags_server_internal.mdx | 2 +- .../kbn_core_feature_flags_server_mocks.mdx | 2 +- api_docs/kbn_core_http_browser.mdx | 2 +- api_docs/kbn_core_http_browser_internal.mdx | 2 +- api_docs/kbn_core_http_browser_mocks.mdx | 2 +- api_docs/kbn_core_http_common.mdx | 2 +- .../kbn_core_http_context_server_mocks.mdx | 2 +- ...re_http_request_handler_context_server.mdx | 2 +- api_docs/kbn_core_http_resources_server.mdx | 2 +- ...bn_core_http_resources_server_internal.mdx | 2 +- .../kbn_core_http_resources_server_mocks.mdx | 2 +- .../kbn_core_http_router_server_internal.mdx | 2 +- .../kbn_core_http_router_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server.mdx | 2 +- api_docs/kbn_core_http_server_internal.mdx | 2 +- api_docs/kbn_core_http_server_mocks.mdx | 2 +- api_docs/kbn_core_http_server_utils.mdx | 2 +- api_docs/kbn_core_i18n_browser.mdx | 2 +- api_docs/kbn_core_i18n_browser_mocks.mdx | 2 +- api_docs/kbn_core_i18n_server.mdx | 2 +- api_docs/kbn_core_i18n_server_internal.mdx | 2 +- api_docs/kbn_core_i18n_server_mocks.mdx | 2 +- ...n_core_injected_metadata_browser_mocks.mdx | 2 +- ...kbn_core_integrations_browser_internal.mdx | 2 +- .../kbn_core_integrations_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_browser.mdx | 2 +- api_docs/kbn_core_lifecycle_browser_mocks.mdx | 2 +- api_docs/kbn_core_lifecycle_server.mdx | 2 +- api_docs/kbn_core_lifecycle_server_mocks.mdx | 2 +- api_docs/kbn_core_logging_browser_mocks.mdx | 2 +- api_docs/kbn_core_logging_common_internal.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 +- ...ore_metrics_collectors_server_internal.mdx | 2 +- ...n_core_metrics_collectors_server_mocks.mdx | 2 +- api_docs/kbn_core_metrics_server.mdx | 2 +- api_docs/kbn_core_metrics_server_internal.mdx | 2 +- api_docs/kbn_core_metrics_server_mocks.mdx | 2 +- api_docs/kbn_core_mount_utils_browser.mdx | 2 +- api_docs/kbn_core_node_server.mdx | 2 +- api_docs/kbn_core_node_server_internal.mdx | 2 +- api_docs/kbn_core_node_server_mocks.mdx | 2 +- api_docs/kbn_core_notifications_browser.mdx | 2 +- ...bn_core_notifications_browser_internal.mdx | 2 +- .../kbn_core_notifications_browser_mocks.mdx | 2 +- api_docs/kbn_core_overlays_browser.mdx | 2 +- .../kbn_core_overlays_browser_internal.mdx | 2 +- api_docs/kbn_core_overlays_browser_mocks.mdx | 2 +- api_docs/kbn_core_plugins_browser.mdx | 2 +- api_docs/kbn_core_plugins_browser_mocks.mdx | 2 +- .../kbn_core_plugins_contracts_browser.mdx | 2 +- .../kbn_core_plugins_contracts_server.mdx | 2 +- api_docs/kbn_core_plugins_server.mdx | 2 +- api_docs/kbn_core_plugins_server_mocks.mdx | 2 +- api_docs/kbn_core_preboot_server.mdx | 2 +- api_docs/kbn_core_preboot_server_mocks.mdx | 2 +- api_docs/kbn_core_rendering_browser.mdx | 2 +- api_docs/kbn_core_rendering_browser_mocks.mdx | 2 +- .../kbn_core_rendering_server_internal.mdx | 2 +- api_docs/kbn_core_rendering_server_mocks.mdx | 2 +- api_docs/kbn_core_root_server_internal.mdx | 2 +- .../kbn_core_saved_objects_api_browser.mdx | 2 +- .../kbn_core_saved_objects_api_server.mdx | 2 +- ...bn_core_saved_objects_api_server_mocks.mdx | 2 +- ...ore_saved_objects_base_server_internal.mdx | 2 +- ...n_core_saved_objects_base_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_browser.mdx | 2 +- ...bn_core_saved_objects_browser_internal.mdx | 2 +- .../kbn_core_saved_objects_browser_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_common.mdx | 2 +- ..._objects_import_export_server_internal.mdx | 2 +- ...ved_objects_import_export_server_mocks.mdx | 2 +- ...aved_objects_migration_server_internal.mdx | 2 +- ...e_saved_objects_migration_server_mocks.mdx | 2 +- api_docs/kbn_core_saved_objects_server.mdx | 2 +- ...kbn_core_saved_objects_server_internal.mdx | 2 +- .../kbn_core_saved_objects_server_mocks.mdx | 2 +- .../kbn_core_saved_objects_utils_server.mdx | 2 +- api_docs/kbn_core_security_browser.mdx | 2 +- .../kbn_core_security_browser_internal.mdx | 2 +- api_docs/kbn_core_security_browser_mocks.mdx | 2 +- api_docs/kbn_core_security_common.mdx | 2 +- api_docs/kbn_core_security_server.mdx | 2 +- .../kbn_core_security_server_internal.mdx | 2 +- api_docs/kbn_core_security_server_mocks.mdx | 2 +- api_docs/kbn_core_status_common.mdx | 2 +- api_docs/kbn_core_status_server.mdx | 2 +- api_docs/kbn_core_status_server_internal.mdx | 2 +- api_docs/kbn_core_status_server_mocks.mdx | 2 +- ...core_test_helpers_deprecations_getters.mdx | 2 +- ...n_core_test_helpers_http_setup_browser.mdx | 2 +- api_docs/kbn_core_test_helpers_kbn_server.mdx | 2 +- .../kbn_core_test_helpers_model_versions.mdx | 2 +- ...n_core_test_helpers_so_type_serializer.mdx | 2 +- api_docs/kbn_core_test_helpers_test_utils.mdx | 2 +- api_docs/kbn_core_theme_browser.mdx | 2 +- api_docs/kbn_core_theme_browser_internal.mdx | 2 +- api_docs/kbn_core_theme_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_browser.mdx | 2 +- .../kbn_core_ui_settings_browser_internal.mdx | 2 +- .../kbn_core_ui_settings_browser_mocks.mdx | 2 +- api_docs/kbn_core_ui_settings_common.mdx | 2 +- api_docs/kbn_core_ui_settings_server.mdx | 2 +- .../kbn_core_ui_settings_server_internal.mdx | 2 +- .../kbn_core_ui_settings_server_mocks.mdx | 2 +- .../kbn_core_usage_data_server.devdocs.json | 2 +- api_docs/kbn_core_usage_data_server.mdx | 2 +- .../kbn_core_usage_data_server_internal.mdx | 2 +- api_docs/kbn_core_usage_data_server_mocks.mdx | 2 +- api_docs/kbn_core_user_profile_browser.mdx | 2 +- ...kbn_core_user_profile_browser_internal.mdx | 2 +- .../kbn_core_user_profile_browser_mocks.mdx | 2 +- api_docs/kbn_core_user_profile_common.mdx | 2 +- api_docs/kbn_core_user_profile_server.mdx | 2 +- .../kbn_core_user_profile_server_internal.mdx | 2 +- .../kbn_core_user_profile_server_mocks.mdx | 2 +- api_docs/kbn_core_user_settings_server.mdx | 2 +- .../kbn_core_user_settings_server_mocks.mdx | 2 +- api_docs/kbn_crypto.mdx | 2 +- api_docs/kbn_crypto_browser.mdx | 2 +- api_docs/kbn_custom_icons.mdx | 2 +- api_docs/kbn_custom_integrations.mdx | 2 +- api_docs/kbn_cypress_config.mdx | 2 +- api_docs/kbn_data_forge.mdx | 2 +- api_docs/kbn_data_grid_in_table_search.mdx | 2 +- api_docs/kbn_data_service.mdx | 2 +- api_docs/kbn_data_stream_adapter.mdx | 2 +- api_docs/kbn_data_view_utils.mdx | 2 +- api_docs/kbn_datemath.mdx | 2 +- api_docs/kbn_deeplinks_analytics.mdx | 2 +- api_docs/kbn_deeplinks_devtools.mdx | 2 +- api_docs/kbn_deeplinks_fleet.mdx | 2 +- api_docs/kbn_deeplinks_management.mdx | 2 +- api_docs/kbn_deeplinks_ml.mdx | 2 +- api_docs/kbn_deeplinks_observability.mdx | 2 +- api_docs/kbn_deeplinks_search.mdx | 2 +- api_docs/kbn_deeplinks_security.mdx | 2 +- api_docs/kbn_deeplinks_shared.mdx | 2 +- api_docs/kbn_default_nav_analytics.mdx | 2 +- api_docs/kbn_default_nav_devtools.mdx | 2 +- api_docs/kbn_default_nav_management.mdx | 2 +- api_docs/kbn_default_nav_ml.mdx | 2 +- api_docs/kbn_delete_managed_asset_callout.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 +- .../kbn_discover_contextual_components.mdx | 2 +- api_docs/kbn_discover_utils.mdx | 2 +- api_docs/kbn_doc_links.devdocs.json | 2 +- api_docs/kbn_doc_links.mdx | 2 +- api_docs/kbn_docs_utils.mdx | 2 +- api_docs/kbn_dom_drag_drop.mdx | 2 +- api_docs/kbn_ebt_tools.mdx | 2 +- api_docs/kbn_ecs_data_quality_dashboard.mdx | 2 +- api_docs/kbn_elastic_agent_utils.mdx | 2 +- api_docs/kbn_elastic_assistant.mdx | 2 +- api_docs/kbn_elastic_assistant_common.mdx | 2 +- api_docs/kbn_entities_schema.mdx | 2 +- api_docs/kbn_es.mdx | 2 +- api_docs/kbn_es_archiver.mdx | 2 +- api_docs/kbn_es_errors.mdx | 2 +- api_docs/kbn_es_query.mdx | 2 +- api_docs/kbn_es_types.mdx | 2 +- api_docs/kbn_eslint_plugin_imports.mdx | 2 +- api_docs/kbn_esql_ast.mdx | 2 +- api_docs/kbn_esql_editor.mdx | 2 +- api_docs/kbn_esql_utils.mdx | 2 +- api_docs/kbn_esql_validation_autocomplete.mdx | 2 +- api_docs/kbn_esql_variables_types.mdx | 2 +- api_docs/kbn_event_annotation_common.mdx | 2 +- api_docs/kbn_event_annotation_components.mdx | 2 +- api_docs/kbn_event_stacktrace.mdx | 2 +- api_docs/kbn_expandable_flyout.mdx | 2 +- api_docs/kbn_field_types.mdx | 2 +- api_docs/kbn_field_utils.mdx | 2 +- api_docs/kbn_file_upload_common.mdx | 2 +- api_docs/kbn_find_used_node_modules.mdx | 2 +- .../kbn_ftr_common_functional_services.mdx | 2 +- .../kbn_ftr_common_functional_ui_services.mdx | 2 +- api_docs/kbn_gen_ai_functional_testing.mdx | 2 +- api_docs/kbn_generate.mdx | 2 +- api_docs/kbn_generate_console_definitions.mdx | 2 +- api_docs/kbn_generate_csv.mdx | 2 +- api_docs/kbn_grid_layout.mdx | 2 +- api_docs/kbn_grouping.mdx | 2 +- api_docs/kbn_guided_onboarding.mdx | 2 +- api_docs/kbn_handlebars.mdx | 2 +- api_docs/kbn_hapi_mocks.mdx | 2 +- api_docs/kbn_health_gateway_server.mdx | 2 +- api_docs/kbn_home_sample_data_card.mdx | 2 +- api_docs/kbn_home_sample_data_tab.mdx | 2 +- api_docs/kbn_i18n.mdx | 2 +- api_docs/kbn_i18n_react.mdx | 2 +- api_docs/kbn_import_resolver.mdx | 2 +- api_docs/kbn_index_adapter.mdx | 2 +- ...dex_lifecycle_management_common_shared.mdx | 2 +- .../kbn_index_management_shared_types.mdx | 2 +- api_docs/kbn_inference_common.mdx | 2 +- api_docs/kbn_inference_endpoint_ui_common.mdx | 2 +- api_docs/kbn_inference_integration_flyout.mdx | 2 +- api_docs/kbn_inference_langchain.mdx | 2 +- api_docs/kbn_infra_forge.mdx | 2 +- api_docs/kbn_interpreter.mdx | 2 +- api_docs/kbn_investigation_shared.mdx | 2 +- api_docs/kbn_io_ts_utils.mdx | 2 +- api_docs/kbn_ipynb.mdx | 2 +- api_docs/kbn_item_buffer.mdx | 2 +- api_docs/kbn_jest_serializers.mdx | 2 +- api_docs/kbn_journeys.mdx | 2 +- api_docs/kbn_json_ast.mdx | 2 +- api_docs/kbn_json_schemas.mdx | 2 +- api_docs/kbn_key_value_metadata_table.mdx | 2 +- api_docs/kbn_kibana_manifest_schema.mdx | 2 +- api_docs/kbn_language_documentation.mdx | 2 +- api_docs/kbn_lens_embeddable_utils.mdx | 2 +- api_docs/kbn_lens_formula_docs.mdx | 2 +- api_docs/kbn_logging.mdx | 2 +- api_docs/kbn_logging_mocks.mdx | 2 +- api_docs/kbn_logs_overview.devdocs.json | 54 ++-- api_docs/kbn_logs_overview.mdx | 2 +- api_docs/kbn_managed_content_badge.mdx | 2 +- api_docs/kbn_managed_vscode_config.mdx | 2 +- api_docs/kbn_management_cards_navigation.mdx | 2 +- .../kbn_management_settings_application.mdx | 2 +- ...ent_settings_components_field_category.mdx | 2 +- ...gement_settings_components_field_input.mdx | 2 +- ...nagement_settings_components_field_row.mdx | 2 +- ...bn_management_settings_components_form.mdx | 2 +- ...n_management_settings_field_definition.mdx | 2 +- api_docs/kbn_management_settings_ids.mdx | 2 +- ...n_management_settings_section_registry.mdx | 2 +- api_docs/kbn_management_settings_types.mdx | 2 +- .../kbn_management_settings_utilities.mdx | 2 +- api_docs/kbn_management_storybook_config.mdx | 2 +- api_docs/kbn_manifest.mdx | 2 +- api_docs/kbn_mapbox_gl.mdx | 2 +- api_docs/kbn_maps_vector_tile_utils.mdx | 2 +- api_docs/kbn_ml_agg_utils.mdx | 2 +- api_docs/kbn_ml_anomaly_utils.mdx | 2 +- api_docs/kbn_ml_cancellable_search.mdx | 2 +- api_docs/kbn_ml_category_validator.mdx | 2 +- api_docs/kbn_ml_chi2test.mdx | 2 +- .../kbn_ml_data_frame_analytics_utils.mdx | 2 +- api_docs/kbn_ml_data_grid.mdx | 2 +- api_docs/kbn_ml_date_picker.mdx | 2 +- api_docs/kbn_ml_date_utils.mdx | 2 +- api_docs/kbn_ml_error_utils.mdx | 2 +- api_docs/kbn_ml_field_stats_flyout.mdx | 2 +- api_docs/kbn_ml_in_memory_table.mdx | 2 +- api_docs/kbn_ml_is_defined.mdx | 2 +- api_docs/kbn_ml_is_populated_object.mdx | 2 +- api_docs/kbn_ml_local_storage.mdx | 2 +- api_docs/kbn_ml_nested_property.mdx | 2 +- api_docs/kbn_ml_number_utils.mdx | 2 +- api_docs/kbn_ml_parse_interval.mdx | 2 +- api_docs/kbn_ml_query_utils.mdx | 2 +- api_docs/kbn_ml_random_sampler_utils.mdx | 2 +- api_docs/kbn_ml_route_utils.mdx | 2 +- api_docs/kbn_ml_runtime_field_utils.mdx | 2 +- api_docs/kbn_ml_string_hash.mdx | 2 +- api_docs/kbn_ml_time_buckets.mdx | 2 +- api_docs/kbn_ml_trained_models_utils.mdx | 2 +- api_docs/kbn_ml_ui_actions.mdx | 2 +- api_docs/kbn_ml_url_state.mdx | 2 +- api_docs/kbn_ml_validators.mdx | 2 +- api_docs/kbn_mock_idp_utils.mdx | 2 +- api_docs/kbn_monaco.mdx | 2 +- api_docs/kbn_object_utils.mdx | 2 +- api_docs/kbn_object_versioning.mdx | 2 +- api_docs/kbn_object_versioning_utils.mdx | 2 +- ...n_observability_alert_details.devdocs.json | 20 +- api_docs/kbn_observability_alert_details.mdx | 2 +- ...ervability_alerting_test_data.devdocs.json | 198 ++++++------ .../kbn_observability_alerting_test_data.mdx | 2 +- ..._padded_alert_time_range_util.devdocs.json | 12 +- ...ility_get_padded_alert_time_range_util.mdx | 2 +- ...kbn_observability_synthetics_test_data.mdx | 2 +- api_docs/kbn_openapi_bundler.mdx | 2 +- api_docs/kbn_openapi_generator.mdx | 2 +- api_docs/kbn_optimizer.mdx | 2 +- api_docs/kbn_optimizer_webpack_helpers.mdx | 2 +- api_docs/kbn_osquery_io_ts_types.mdx | 2 +- api_docs/kbn_palettes.mdx | 2 +- api_docs/kbn_panel_loader.mdx | 2 +- ..._performance_testing_dataset_extractor.mdx | 2 +- api_docs/kbn_plugin_check.mdx | 2 +- api_docs/kbn_plugin_generator.mdx | 2 +- api_docs/kbn_plugin_helpers.mdx | 2 +- api_docs/kbn_presentation_containers.mdx | 2 +- api_docs/kbn_presentation_publishing.mdx | 2 +- api_docs/kbn_product_doc_artifact_builder.mdx | 2 +- api_docs/kbn_product_doc_common.mdx | 2 +- api_docs/kbn_profiling_utils.mdx | 2 +- api_docs/kbn_random_sampling.mdx | 2 +- api_docs/kbn_react_field.mdx | 2 +- api_docs/kbn_react_hooks.mdx | 2 +- api_docs/kbn_react_kibana_context_common.mdx | 2 +- api_docs/kbn_react_kibana_context_render.mdx | 2 +- api_docs/kbn_react_kibana_context_root.mdx | 2 +- api_docs/kbn_react_kibana_context_styled.mdx | 2 +- api_docs/kbn_react_kibana_context_theme.mdx | 2 +- api_docs/kbn_react_kibana_mount.devdocs.json | 9 +- api_docs/kbn_react_kibana_mount.mdx | 2 +- .../kbn_react_mute_legacy_root_warning.mdx | 2 +- api_docs/kbn_recently_accessed.mdx | 2 +- api_docs/kbn_relocate.mdx | 2 +- api_docs/kbn_repo_file_maps.mdx | 2 +- api_docs/kbn_repo_linter.mdx | 2 +- api_docs/kbn_repo_path.mdx | 2 +- api_docs/kbn_repo_source_classifier.mdx | 2 +- api_docs/kbn_reporting_common.mdx | 2 +- api_docs/kbn_reporting_csv_share_panel.mdx | 2 +- api_docs/kbn_reporting_export_types_csv.mdx | 2 +- .../kbn_reporting_export_types_csv_common.mdx | 2 +- api_docs/kbn_reporting_export_types_pdf.mdx | 2 +- .../kbn_reporting_export_types_pdf_common.mdx | 2 +- api_docs/kbn_reporting_export_types_png.mdx | 2 +- .../kbn_reporting_export_types_png_common.mdx | 2 +- api_docs/kbn_reporting_mocks_server.mdx | 2 +- api_docs/kbn_reporting_public.mdx | 2 +- api_docs/kbn_reporting_server.mdx | 2 +- api_docs/kbn_resizable_layout.mdx | 2 +- ...nse_ops_alerts_fields_browser.devdocs.json | 28 +- ...kbn_response_ops_alerts_fields_browser.mdx | 2 +- ...kbn_response_ops_alerts_table.devdocs.json | 16 +- api_docs/kbn_response_ops_alerts_table.mdx | 2 +- api_docs/kbn_response_ops_rule_form.mdx | 2 +- api_docs/kbn_response_ops_rule_params.mdx | 2 +- api_docs/kbn_rison.mdx | 2 +- api_docs/kbn_rollup.mdx | 2 +- api_docs/kbn_router_to_openapispec.mdx | 2 +- api_docs/kbn_router_utils.mdx | 2 +- api_docs/kbn_rrule.mdx | 2 +- api_docs/kbn_rule_data_utils.mdx | 2 +- api_docs/kbn_saved_objects_settings.mdx | 2 +- api_docs/kbn_saved_search_component.mdx | 2 +- api_docs/kbn_scout.mdx | 2 +- api_docs/kbn_scout_info.mdx | 2 +- api_docs/kbn_scout_oblt.mdx | 2 +- api_docs/kbn_scout_reporting.mdx | 2 +- api_docs/kbn_screenshotting_server.mdx | 2 +- api_docs/kbn_search_api_keys_components.mdx | 2 +- api_docs/kbn_search_api_keys_server.mdx | 2 +- api_docs/kbn_search_api_panels.mdx | 2 +- api_docs/kbn_search_connectors.mdx | 2 +- api_docs/kbn_search_errors.mdx | 2 +- api_docs/kbn_search_index_documents.mdx | 2 +- api_docs/kbn_search_response_warnings.mdx | 2 +- api_docs/kbn_search_shared_ui.devdocs.json | 66 ---- api_docs/kbn_search_shared_ui.mdx | 4 +- api_docs/kbn_search_types.mdx | 2 +- api_docs/kbn_security_ai_prompts.mdx | 2 +- api_docs/kbn_security_api_key_management.mdx | 2 +- api_docs/kbn_security_authorization_core.mdx | 2 +- ...kbn_security_authorization_core_common.mdx | 2 +- api_docs/kbn_security_form_components.mdx | 2 +- api_docs/kbn_security_hardening.mdx | 2 +- api_docs/kbn_security_plugin_types_common.mdx | 2 +- api_docs/kbn_security_plugin_types_public.mdx | 2 +- api_docs/kbn_security_plugin_types_server.mdx | 2 +- .../kbn_security_role_management_model.mdx | 2 +- api_docs/kbn_security_solution_connectors.mdx | 2 +- ...kbn_security_solution_distribution_bar.mdx | 2 +- api_docs/kbn_security_solution_features.mdx | 2 +- api_docs/kbn_security_solution_navigation.mdx | 2 +- api_docs/kbn_security_solution_side_nav.mdx | 2 +- ...kbn_security_solution_storybook_config.mdx | 2 +- api_docs/kbn_security_ui_components.mdx | 2 +- .../kbn_securitysolution_autocomplete.mdx | 2 +- api_docs/kbn_securitysolution_data_table.mdx | 2 +- api_docs/kbn_securitysolution_ecs.mdx | 2 +- api_docs/kbn_securitysolution_es_utils.mdx | 2 +- ...ritysolution_exception_list_components.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_server_route_repository_client.mdx | 2 +- .../kbn_server_route_repository_utils.mdx | 2 +- api_docs/kbn_serverless_common_settings.mdx | 2 +- .../kbn_serverless_observability_settings.mdx | 2 +- api_docs/kbn_serverless_search_settings.mdx | 2 +- api_docs/kbn_serverless_security_settings.mdx | 2 +- api_docs/kbn_serverless_storybook_config.mdx | 2 +- api_docs/kbn_shared_svg.mdx | 2 +- api_docs/kbn_shared_ux_avatar_solution.mdx | 2 +- .../kbn_shared_ux_button_exit_full_screen.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_card_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_chrome_navigation.mdx | 2 +- api_docs/kbn_shared_ux_error_boundary.mdx | 2 +- api_docs/kbn_shared_ux_file_context.mdx | 2 +- api_docs/kbn_shared_ux_file_image.mdx | 2 +- api_docs/kbn_shared_ux_file_image_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_mocks.mdx | 2 +- api_docs/kbn_shared_ux_file_picker.mdx | 2 +- api_docs/kbn_shared_ux_file_types.mdx | 2 +- api_docs/kbn_shared_ux_file_upload.mdx | 2 +- api_docs/kbn_shared_ux_file_util.mdx | 2 +- api_docs/kbn_shared_ux_link_redirect_app.mdx | 2 +- .../kbn_shared_ux_link_redirect_app_mocks.mdx | 2 +- api_docs/kbn_shared_ux_markdown.mdx | 2 +- api_docs/kbn_shared_ux_markdown_mocks.mdx | 2 +- .../kbn_shared_ux_page_analytics_no_data.mdx | 2 +- ...shared_ux_page_analytics_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_no_data.mdx | 2 +- ...bn_shared_ux_page_kibana_no_data_mocks.mdx | 2 +- .../kbn_shared_ux_page_kibana_template.mdx | 2 +- ...n_shared_ux_page_kibana_template_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data.mdx | 2 +- .../kbn_shared_ux_page_no_data_config.mdx | 2 +- ...bn_shared_ux_page_no_data_config_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_no_data_mocks.mdx | 2 +- api_docs/kbn_shared_ux_page_solution_nav.mdx | 2 +- .../kbn_shared_ux_prompt_no_data_views.mdx | 2 +- ...n_shared_ux_prompt_no_data_views_mocks.mdx | 2 +- api_docs/kbn_shared_ux_prompt_not_found.mdx | 2 +- api_docs/kbn_shared_ux_router.mdx | 2 +- api_docs/kbn_shared_ux_router_mocks.mdx | 2 +- api_docs/kbn_shared_ux_storybook_config.mdx | 2 +- api_docs/kbn_shared_ux_storybook_mock.mdx | 2 +- api_docs/kbn_shared_ux_tabbed_modal.mdx | 2 +- api_docs/kbn_shared_ux_table_persist.mdx | 2 +- api_docs/kbn_shared_ux_utility.mdx | 2 +- api_docs/kbn_slo_schema.mdx | 2 +- api_docs/kbn_some_dev_log.mdx | 2 +- api_docs/kbn_sort_predicates.mdx | 2 +- api_docs/kbn_sse_utils.mdx | 2 +- api_docs/kbn_sse_utils_client.mdx | 2 +- api_docs/kbn_sse_utils_server.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_streams_schema.mdx | 2 +- api_docs/kbn_synthetics_e2e.mdx | 2 +- api_docs/kbn_synthetics_private_location.mdx | 2 +- api_docs/kbn_telemetry_tools.mdx | 2 +- api_docs/kbn_test.mdx | 2 +- api_docs/kbn_test_eui_helpers.mdx | 2 +- api_docs/kbn_test_jest_helpers.mdx | 2 +- api_docs/kbn_test_subj_selector.mdx | 2 +- api_docs/kbn_timerange.mdx | 2 +- api_docs/kbn_tooling_log.mdx | 2 +- api_docs/kbn_transpose_utils.mdx | 2 +- api_docs/kbn_triggers_actions_ui_types.mdx | 2 +- api_docs/kbn_try_in_console.mdx | 2 +- api_docs/kbn_ts_projects.mdx | 2 +- api_docs/kbn_typed_react_router_config.mdx | 2 +- api_docs/kbn_ui_actions_browser.mdx | 2 +- api_docs/kbn_ui_shared_deps_src.mdx | 2 +- api_docs/kbn_ui_theme.mdx | 2 +- api_docs/kbn_unified_data_table.mdx | 2 +- api_docs/kbn_unified_doc_viewer.mdx | 2 +- api_docs/kbn_unified_field_list.mdx | 2 +- api_docs/kbn_unsaved_changes_badge.mdx | 2 +- api_docs/kbn_unsaved_changes_prompt.mdx | 2 +- api_docs/kbn_use_tracked_promise.mdx | 2 +- api_docs/kbn_user_profile_components.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/kbn_visualization_ui_components.mdx | 2 +- api_docs/kbn_visualization_utils.mdx | 2 +- api_docs/kbn_xstate_utils.mdx | 2 +- api_docs/kbn_yarn_lock_validator.mdx | 2 +- api_docs/kbn_zod.mdx | 2 +- api_docs/kbn_zod_helpers.mdx | 2 +- api_docs/kibana_overview.mdx | 2 +- api_docs/kibana_react.mdx | 2 +- api_docs/kibana_utils.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/links.mdx | 2 +- api_docs/lists.mdx | 2 +- api_docs/llm_tasks.mdx | 2 +- api_docs/logs_data_access.mdx | 2 +- api_docs/logs_shared.mdx | 2 +- api_docs/management.mdx | 2 +- api_docs/maps.mdx | 2 +- api_docs/maps_ems.mdx | 2 +- api_docs/metrics_data_access.mdx | 2 +- api_docs/ml.mdx | 2 +- api_docs/mock_idp_plugin.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/no_data_page.mdx | 2 +- api_docs/notifications.mdx | 2 +- api_docs/observability.devdocs.json | 2 +- api_docs/observability.mdx | 2 +- .../observability_a_i_assistant.devdocs.json | 188 +++++++++-- api_docs/observability_a_i_assistant.mdx | 4 +- api_docs/observability_a_i_assistant_app.mdx | 2 +- .../observability_ai_assistant_management.mdx | 2 +- api_docs/observability_logs_explorer.mdx | 2 +- api_docs/observability_onboarding.mdx | 2 +- api_docs/observability_shared.mdx | 2 +- api_docs/osquery.mdx | 2 +- api_docs/painless_lab.mdx | 2 +- api_docs/plugin_directory.mdx | 12 +- api_docs/presentation_panel.mdx | 2 +- api_docs/presentation_util.mdx | 2 +- api_docs/product_doc_base.mdx | 2 +- api_docs/profiling.mdx | 2 +- api_docs/profiling_data_access.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_finder.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/saved_search.mdx | 2 +- api_docs/screenshot_mode.mdx | 2 +- api_docs/screenshotting.mdx | 2 +- api_docs/search_assistant.mdx | 2 +- api_docs/search_connectors.mdx | 2 +- api_docs/search_homepage.mdx | 2 +- api_docs/search_indices.mdx | 2 +- api_docs/search_inference_endpoints.mdx | 2 +- api_docs/search_navigation.mdx | 2 +- api_docs/search_notebooks.mdx | 2 +- api_docs/search_playground.mdx | 2 +- api_docs/search_synonyms.mdx | 2 +- api_docs/security.mdx | 2 +- api_docs/security_solution.mdx | 2 +- api_docs/security_solution_ess.mdx | 2 +- api_docs/security_solution_serverless.mdx | 2 +- api_docs/serverless.mdx | 2 +- api_docs/serverless_observability.mdx | 2 +- api_docs/serverless_search.mdx | 2 +- api_docs/session_view.mdx | 2 +- api_docs/share.mdx | 2 +- api_docs/slo.mdx | 2 +- api_docs/snapshot_restore.mdx | 2 +- api_docs/spaces.mdx | 2 +- api_docs/stack_alerts.mdx | 2 +- api_docs/stack_connectors.mdx | 2 +- api_docs/streams.mdx | 2 +- api_docs/streams_app.mdx | 2 +- api_docs/task_manager.mdx | 2 +- api_docs/telemetry.mdx | 2 +- api_docs/telemetry_collection_manager.mdx | 2 +- api_docs/telemetry_management_section.mdx | 2 +- api_docs/threat_intelligence.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_doc_viewer.mdx | 2 +- api_docs/unified_histogram.mdx | 2 +- api_docs/unified_search.mdx | 2 +- api_docs/unified_search_autocomplete.mdx | 2 +- api_docs/uptime.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 +- 803 files changed, 1485 insertions(+), 1093 deletions(-) diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 3d239fdc8e642..4786829638fe0 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 9738bab2dc838..98917cf62d308 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index 02520bbfdb38b..215481a286b49 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 048ff863ae070..ec572d26dfa59 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.devdocs.json b/api_docs/alerting.devdocs.json index e9adf42c55f18..3c4f64b0df3da 100644 --- a/api_docs/alerting.devdocs.json +++ b/api_docs/alerting.devdocs.json @@ -10641,63 +10641,63 @@ "references": [ { "plugin": "@kbn/response-ops-alerts-table", - "path": "packages/response-ops/alerts_table/types.ts" + "path": "src/platform/packages/shared/response-ops/alerts-table/types.ts" }, { "plugin": "@kbn/response-ops-alerts-table", - "path": "packages/response-ops/alerts_table/types.ts" + "path": "src/platform/packages/shared/response-ops/alerts-table/types.ts" }, { "plugin": "@kbn/response-ops-alerts-table", - "path": "packages/response-ops/alerts_table/components/maintenance_windows_tooltip_content.tsx" + "path": "src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_tooltip_content.tsx" }, { "plugin": "@kbn/response-ops-alerts-table", - "path": "packages/response-ops/alerts_table/components/maintenance_windows_tooltip_content.tsx" + "path": "src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_tooltip_content.tsx" }, { "plugin": "@kbn/response-ops-alerts-table", - "path": "packages/response-ops/alerts_table/components/maintenance_windows_cell.tsx" + "path": "src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_cell.tsx" }, { "plugin": "@kbn/response-ops-alerts-table", - "path": "packages/response-ops/alerts_table/components/maintenance_windows_cell.tsx" + "path": "src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_cell.tsx" }, { "plugin": "@kbn/response-ops-alerts-table", - "path": "packages/response-ops/alerts_table/components/maintenance_windows_cell.tsx" + "path": "src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_cell.tsx" }, { "plugin": "@kbn/response-ops-alerts-table", - "path": "packages/response-ops/alerts_table/components/maintenance_windows_cell.tsx" + "path": "src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_cell.tsx" }, { "plugin": "@kbn/response-ops-alerts-table", - "path": "packages/response-ops/alerts_table/apis/bulk_get_maintenance_windows.ts" + "path": "src/platform/packages/shared/response-ops/alerts-table/apis/bulk_get_maintenance_windows.ts" }, { "plugin": "@kbn/response-ops-alerts-table", - "path": "packages/response-ops/alerts_table/apis/bulk_get_maintenance_windows.ts" + "path": "src/platform/packages/shared/response-ops/alerts-table/apis/bulk_get_maintenance_windows.ts" }, { "plugin": "@kbn/response-ops-alerts-table", - "path": "packages/response-ops/alerts_table/apis/bulk_get_maintenance_windows.ts" + "path": "src/platform/packages/shared/response-ops/alerts-table/apis/bulk_get_maintenance_windows.ts" }, { "plugin": "@kbn/response-ops-alerts-table", - "path": "packages/response-ops/alerts_table/apis/bulk_get_maintenance_windows.ts" + "path": "src/platform/packages/shared/response-ops/alerts-table/apis/bulk_get_maintenance_windows.ts" }, { "plugin": "@kbn/response-ops-alerts-table", - "path": "packages/response-ops/alerts_table/apis/bulk_get_maintenance_windows.ts" + "path": "src/platform/packages/shared/response-ops/alerts-table/apis/bulk_get_maintenance_windows.ts" }, { "plugin": "@kbn/response-ops-alerts-table", - "path": "packages/response-ops/alerts_table/hooks/use_bulk_get_maintenance_windows.tsx" + "path": "src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_get_maintenance_windows.tsx" }, { "plugin": "@kbn/response-ops-alerts-table", - "path": "packages/response-ops/alerts_table/hooks/use_bulk_get_maintenance_windows.tsx" + "path": "src/platform/packages/shared/response-ops/alerts-table/hooks/use_bulk_get_maintenance_windows.tsx" }, { "plugin": "triggersActionsUi", diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index f482f58582095..06be6599767f9 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 7e1be712f9aa1..3ecbf7af304c9 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 0174d01c461eb..d80f5523b7345 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/automatic_import.mdx b/api_docs/automatic_import.mdx index d1e90f8924c95..140c535192d05 100644 --- a/api_docs/automatic_import.mdx +++ b/api_docs/automatic_import.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/automaticImport title: "automaticImport" image: https://source.unsplash.com/400x175/?github description: API docs for the automaticImport plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'automaticImport'] --- import automaticImportObj from './automatic_import.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 06e26fc94cefe..3392e5c93954f 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 20b65c2f1852b..610292cc58910 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 4ddf30e4121ca..0e7ea357e046d 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 92769fd466683..4fcb0d8357d4c 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 9e88734300365..900d98e94db46 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 85ac8d31c6279..67759e9fd7027 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index f38850eb5e2be..25bf0c1c36b0b 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 913160b509ac4..7d3178fc05fd5 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index e18ac4e2d69c3..c24df5de7a127 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx index 3bfc19ccbfaf6..188c195cd8e1c 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index f8f0aa231c739..92c355c31da2b 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index f48e499121b3b..efa642e65203f 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index 220c0b12344be..30e1c4a98ff34 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index 86de087bce6f0..c96e14b93392f 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index ee597438bb8a8..27c41d1c5a00d 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_quality.mdx b/api_docs/data_quality.mdx index fc70a86822c42..17f1e8ef6c4f9 100644 --- a/api_docs/data_quality.mdx +++ b/api_docs/data_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataQuality title: "dataQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the dataQuality plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataQuality'] --- import dataQualityObj from './data_quality.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index bcf1517040bfb..2a257f6b40565 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 23ea692487303..4c2a5fadf63e2 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_usage.mdx b/api_docs/data_usage.mdx index a6cf6660b6ddd..d3e9b0a55d7c0 100644 --- a/api_docs/data_usage.mdx +++ b/api_docs/data_usage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataUsage title: "dataUsage" image: https://source.unsplash.com/400x175/?github description: API docs for the dataUsage plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataUsage'] --- import dataUsageObj from './data_usage.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index cd61ebea91ae3..6232802d269ae 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index b581a51fbaa6e..f65a71f7452d2 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index d8681407ec3ab..fccb597a656a1 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 6da7775508b6a..a0e8cd8aecff9 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index e9a9ab9f95e3b..04d6cb2d05f96 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.devdocs.json b/api_docs/dataset_quality.devdocs.json index b1852d5f16cd2..8fdf3239f3497 100644 --- a/api_docs/dataset_quality.devdocs.json +++ b/api_docs/dataset_quality.devdocs.json @@ -1,11 +1,286 @@ { "id": "datasetQuality", "client": { - "classes": [], + "classes": [ + { + "parentPluginId": "datasetQuality", + "id": "def-public.DataStreamsStatsService", + "type": "Class", + "tags": [], + "label": "DataStreamsStatsService", + "description": [], + "path": "x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/data_streams_stats_service.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "datasetQuality", + "id": "def-public.DataStreamsStatsService.setup", + "type": "Function", + "tags": [], + "label": "setup", + "description": [], + "signature": [ + "() => void" + ], + "path": "x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/data_streams_stats_service.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "datasetQuality", + "id": "def-public.DataStreamsStatsService.start", + "type": "Function", + "tags": [], + "label": "start", + "description": [], + "signature": [ + "({ http }: ", + "DataStreamsStatsServiceStartDeps", + ") => ", + "DataStreamsStatsServiceStart" + ], + "path": "x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/data_streams_stats_service.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "datasetQuality", + "id": "def-public.DataStreamsStatsService.start.$1", + "type": "Object", + "tags": [], + "label": "{ http }", + "description": [], + "signature": [ + "DataStreamsStatsServiceStartDeps" + ], + "path": "x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/data_streams_stats_service.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], "functions": [], - "interfaces": [], + "interfaces": [ + { + "parentPluginId": "datasetQuality", + "id": "def-public.IDataStreamsStatsClient", + "type": "Interface", + "tags": [], + "label": "IDataStreamsStatsClient", + "description": [], + "path": "x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "datasetQuality", + "id": "def-public.IDataStreamsStatsClient.getDataStreamsStats", + "type": "Function", + "tags": [], + "label": "getDataStreamsStats", + "description": [], + "signature": [ + "(params?: (({ types: (\"profiling\" | \"metrics\" | \"synthetics\" | \"traces\" | \"logs\")[]; } | { datasetQuery: string; }) & { includeCreationDate?: boolean | undefined; }) | undefined) => Promise<{ datasetUserPrivileges: { canMonitor: boolean; } & { canRead: boolean; canViewIntegrations: boolean; }; dataStreamsStats: ({ name: string; userPrivileges: { canMonitor: boolean; }; } & { size?: string | undefined; sizeBytes?: number | undefined; lastActivity?: number | undefined; integration?: string | undefined; totalDocs?: number | undefined; creationDate?: number | undefined; })[]; }>" + ], + "path": "x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "datasetQuality", + "id": "def-public.IDataStreamsStatsClient.getDataStreamsStats.$1", + "type": "CompoundType", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "(({ types: (\"profiling\" | \"metrics\" | \"synthetics\" | \"traces\" | \"logs\")[]; } | { datasetQuery: string; }) & { includeCreationDate?: boolean | undefined; }) | undefined" + ], + "path": "x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "datasetQuality", + "id": "def-public.IDataStreamsStatsClient.getDataStreamsDegradedStats", + "type": "Function", + "tags": [], + "label": "getDataStreamsDegradedStats", + "description": [], + "signature": [ + "(params?: ({ start: string; end: string; } & { types: (\"profiling\" | \"metrics\" | \"synthetics\" | \"traces\" | \"logs\")[]; } & { datasetQuery?: string | undefined; }) | undefined) => Promise<{ dataset: string; count: number; }[]>" + ], + "path": "x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "datasetQuality", + "id": "def-public.IDataStreamsStatsClient.getDataStreamsDegradedStats.$1", + "type": "CompoundType", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "({ start: string; end: string; } & { types: (\"profiling\" | \"metrics\" | \"synthetics\" | \"traces\" | \"logs\")[]; } & { datasetQuery?: string | undefined; }) | undefined" + ], + "path": "x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "datasetQuality", + "id": "def-public.IDataStreamsStatsClient.getDataStreamsFailedStats", + "type": "Function", + "tags": [], + "label": "getDataStreamsFailedStats", + "description": [], + "signature": [ + "(params?: ({ start: string; end: string; } & { types: (\"profiling\" | \"metrics\" | \"synthetics\" | \"traces\" | \"logs\")[]; } & { datasetQuery?: string | undefined; }) | undefined) => Promise<{ dataset: string; count: number; }[]>" + ], + "path": "x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "datasetQuality", + "id": "def-public.IDataStreamsStatsClient.getDataStreamsFailedStats.$1", + "type": "CompoundType", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "({ start: string; end: string; } & { types: (\"profiling\" | \"metrics\" | \"synthetics\" | \"traces\" | \"logs\")[]; } & { datasetQuery?: string | undefined; }) | undefined" + ], + "path": "x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "datasetQuality", + "id": "def-public.IDataStreamsStatsClient.getDataStreamsTotalDocs", + "type": "Function", + "tags": [], + "label": "getDataStreamsTotalDocs", + "description": [], + "signature": [ + "(params: { start: string; end: string; } & { type: \"profiling\" | \"metrics\" | \"synthetics\" | \"traces\" | \"logs\"; }) => Promise<{ dataset: string; count: number; }[]>" + ], + "path": "x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "datasetQuality", + "id": "def-public.IDataStreamsStatsClient.getDataStreamsTotalDocs.$1", + "type": "CompoundType", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "{ start: string; end: string; } & { type: \"profiling\" | \"metrics\" | \"synthetics\" | \"traces\" | \"logs\"; }" + ], + "path": "x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "datasetQuality", + "id": "def-public.IDataStreamsStatsClient.getIntegrations", + "type": "Function", + "tags": [], + "label": "getIntegrations", + "description": [], + "signature": [ + "() => Promise<", + "Integration", + "[]>" + ], + "path": "x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "datasetQuality", + "id": "def-public.IDataStreamsStatsClient.getNonAggregatableDatasets", + "type": "Function", + "tags": [], + "label": "getNonAggregatableDatasets", + "description": [], + "signature": [ + "(params: { start: string; end: string; } & { types: (\"profiling\" | \"metrics\" | \"synthetics\" | \"traces\" | \"logs\")[]; } & { dataStream?: string | undefined; }) => Promise<{ aggregatable: boolean; datasets: string[]; }>" + ], + "path": "x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "datasetQuality", + "id": "def-public.IDataStreamsStatsClient.getNonAggregatableDatasets.$1", + "type": "CompoundType", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "{ start: string; end: string; } & { types: (\"profiling\" | \"metrics\" | \"synthetics\" | \"traces\" | \"logs\")[]; } & { dataStream?: string | undefined; }" + ], + "path": "x-pack/platform/plugins/shared/dataset_quality/public/services/data_streams_stats/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], "enums": [], - "misc": [], + "misc": [ + { + "parentPluginId": "datasetQuality", + "id": "def-public.DataStreamStatServiceResponse", + "type": "Type", + "tags": [], + "label": "DataStreamStatServiceResponse", + "description": [], + "signature": [ + "{ datasetUserPrivileges: { canMonitor: boolean; } & { canRead: boolean; canViewIntegrations: boolean; }; dataStreamsStats: ({ name: string; userPrivileges: { canMonitor: boolean; }; } & { size?: string | undefined; sizeBytes?: number | undefined; lastActivity?: number | undefined; integration?: string | undefined; totalDocs?: number | undefined; creationDate?: number | undefined; })[]; }" + ], + "path": "x-pack/platform/plugins/shared/dataset_quality/common/data_streams_stats/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], "objects": [], "setup": { "parentPluginId": "datasetQuality", @@ -622,16 +897,22 @@ "<{ query: ", "IntersectionC", "<[", + "UnionC", + "<[", "TypeC", "<{ types: ", "Type", "<(\"profiling\" | \"metrics\" | \"synthetics\" | \"traces\" | \"logs\")[], (\"profiling\" | \"metrics\" | \"synthetics\" | \"traces\" | \"logs\")[], unknown>; }>, ", - "PartialC", + "TypeC", "<{ datasetQuery: ", "StringC", - "; }>]>; }>, ", + "; }>]>, ", + "PartialC", + "<{ includeCreationDate: ", + "Type", + "; }>]>; }>, ", "DatasetQualityRouteHandlerResources", - ", { datasetUserPrivileges: { canMonitor: boolean; } & { canRead: boolean; canViewIntegrations: boolean; }; dataStreamsStats: ({ name: string; userPrivileges: { canMonitor: boolean; }; } & { size?: string | undefined; sizeBytes?: number | undefined; lastActivity?: number | undefined; integration?: string | undefined; totalDocs?: number | undefined; })[]; }, ", + ", { datasetUserPrivileges: { canMonitor: boolean; } & { canRead: boolean; canViewIntegrations: boolean; }; dataStreamsStats: ({ name: string; userPrivileges: { canMonitor: boolean; }; } & { size?: string | undefined; sizeBytes?: number | undefined; lastActivity?: number | undefined; integration?: string | undefined; totalDocs?: number | undefined; creationDate?: number | undefined; })[]; }, ", "DatasetQualityRouteCreateOptions", ">; }[TEndpoint] extends ", { @@ -1085,16 +1366,22 @@ "<{ query: ", "IntersectionC", "<[", + "UnionC", + "<[", "TypeC", "<{ types: ", "Type", "<(\"profiling\" | \"metrics\" | \"synthetics\" | \"traces\" | \"logs\")[], (\"profiling\" | \"metrics\" | \"synthetics\" | \"traces\" | \"logs\")[], unknown>; }>, ", - "PartialC", + "TypeC", "<{ datasetQuery: ", "StringC", - "; }>]>; }>, ", + "; }>]>, ", + "PartialC", + "<{ includeCreationDate: ", + "Type", + "; }>]>; }>, ", "DatasetQualityRouteHandlerResources", - ", { datasetUserPrivileges: { canMonitor: boolean; } & { canRead: boolean; canViewIntegrations: boolean; }; dataStreamsStats: ({ name: string; userPrivileges: { canMonitor: boolean; }; } & { size?: string | undefined; sizeBytes?: number | undefined; lastActivity?: number | undefined; integration?: string | undefined; totalDocs?: number | undefined; })[]; }, ", + ", { datasetUserPrivileges: { canMonitor: boolean; } & { canRead: boolean; canViewIntegrations: boolean; }; dataStreamsStats: ({ name: string; userPrivileges: { canMonitor: boolean; }; } & { size?: string | undefined; sizeBytes?: number | undefined; lastActivity?: number | undefined; integration?: string | undefined; totalDocs?: number | undefined; creationDate?: number | undefined; })[]; }, ", "DatasetQualityRouteCreateOptions", ">; }[TEndpoint] extends ", { diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index 429b55c37df26..b23b9d4a1a368 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 14 | 0 | 14 | 8 | +| 31 | 0 | 31 | 11 | ## Client @@ -31,6 +31,15 @@ Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux ### Start +### Classes + + +### Interfaces + + +### Consts, variables and types + + ## Common ### Functions diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 4ce5abf8d7960..03476368e9032 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index b948eda901df1..868a4c9d6f541 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -184,7 +184,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [types.ts](https://github.com/elastic/kibana/tree/main/packages/response-ops/alerts_table/types.ts#:~:text=MaintenanceWindow), [types.ts](https://github.com/elastic/kibana/tree/main/packages/response-ops/alerts_table/types.ts#:~:text=MaintenanceWindow), [maintenance_windows_tooltip_content.tsx](https://github.com/elastic/kibana/tree/main/packages/response-ops/alerts_table/components/maintenance_windows_tooltip_content.tsx#:~:text=MaintenanceWindow), [maintenance_windows_tooltip_content.tsx](https://github.com/elastic/kibana/tree/main/packages/response-ops/alerts_table/components/maintenance_windows_tooltip_content.tsx#:~:text=MaintenanceWindow), [maintenance_windows_cell.tsx](https://github.com/elastic/kibana/tree/main/packages/response-ops/alerts_table/components/maintenance_windows_cell.tsx#:~:text=MaintenanceWindow), [maintenance_windows_cell.tsx](https://github.com/elastic/kibana/tree/main/packages/response-ops/alerts_table/components/maintenance_windows_cell.tsx#:~:text=MaintenanceWindow), [maintenance_windows_cell.tsx](https://github.com/elastic/kibana/tree/main/packages/response-ops/alerts_table/components/maintenance_windows_cell.tsx#:~:text=MaintenanceWindow), [maintenance_windows_cell.tsx](https://github.com/elastic/kibana/tree/main/packages/response-ops/alerts_table/components/maintenance_windows_cell.tsx#:~:text=MaintenanceWindow), [bulk_get_maintenance_windows.ts](https://github.com/elastic/kibana/tree/main/packages/response-ops/alerts_table/apis/bulk_get_maintenance_windows.ts#:~:text=MaintenanceWindow), [bulk_get_maintenance_windows.ts](https://github.com/elastic/kibana/tree/main/packages/response-ops/alerts_table/apis/bulk_get_maintenance_windows.ts#:~:text=MaintenanceWindow)+ 5 more | - | +| | [types.ts](https://github.com/elastic/kibana/tree/main/src/platform/packages/shared/response-ops/alerts-table/types.ts#:~:text=MaintenanceWindow), [types.ts](https://github.com/elastic/kibana/tree/main/src/platform/packages/shared/response-ops/alerts-table/types.ts#:~:text=MaintenanceWindow), [maintenance_windows_tooltip_content.tsx](https://github.com/elastic/kibana/tree/main/src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_tooltip_content.tsx#:~:text=MaintenanceWindow), [maintenance_windows_tooltip_content.tsx](https://github.com/elastic/kibana/tree/main/src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_tooltip_content.tsx#:~:text=MaintenanceWindow), [maintenance_windows_cell.tsx](https://github.com/elastic/kibana/tree/main/src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_cell.tsx#:~:text=MaintenanceWindow), [maintenance_windows_cell.tsx](https://github.com/elastic/kibana/tree/main/src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_cell.tsx#:~:text=MaintenanceWindow), [maintenance_windows_cell.tsx](https://github.com/elastic/kibana/tree/main/src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_cell.tsx#:~:text=MaintenanceWindow), [maintenance_windows_cell.tsx](https://github.com/elastic/kibana/tree/main/src/platform/packages/shared/response-ops/alerts-table/components/maintenance_windows_cell.tsx#:~:text=MaintenanceWindow), [bulk_get_maintenance_windows.ts](https://github.com/elastic/kibana/tree/main/src/platform/packages/shared/response-ops/alerts-table/apis/bulk_get_maintenance_windows.ts#:~:text=MaintenanceWindow), [bulk_get_maintenance_windows.ts](https://github.com/elastic/kibana/tree/main/src/platform/packages/shared/response-ops/alerts-table/apis/bulk_get_maintenance_windows.ts#:~:text=MaintenanceWindow)+ 5 more | - | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 9c53046fe0ad8..93435cd4475cd 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 637f80d77fedc..9642bcd031ae4 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 518f6e50e707c..712484fcbf645 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 2ebb640aaada5..3a3811e4dba89 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/discover_shared.mdx b/api_docs/discover_shared.mdx index a9e290a852821..060a84f539017 100644 --- a/api_docs/discover_shared.mdx +++ b/api_docs/discover_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverShared title: "discoverShared" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverShared plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverShared'] --- import discoverSharedObj from './discover_shared.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index 98cdbbc3b4c37..7b19b663b8027 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index bbf918d37363d..694e73755ccb8 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 7c1c103a1d15b..92856705f966f 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 13bb82e9dc46b..31190197ddcba 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index b851ba4acbd68..8057c64c82529 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 7f436d4fe3892..67d148b016df3 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/entities_data_access.mdx b/api_docs/entities_data_access.mdx index be5ba0124b1f1..69f90792ea2ec 100644 --- a/api_docs/entities_data_access.mdx +++ b/api_docs/entities_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entitiesDataAccess title: "entitiesDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the entitiesDataAccess plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entitiesDataAccess'] --- import entitiesDataAccessObj from './entities_data_access.devdocs.json'; diff --git a/api_docs/entity_manager.mdx b/api_docs/entity_manager.mdx index 6ab6a477c934c..f272a9d3a8c89 100644 --- a/api_docs/entity_manager.mdx +++ b/api_docs/entity_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entityManager title: "entityManager" image: https://source.unsplash.com/400x175/?github description: API docs for the entityManager plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entityManager'] --- import entityManagerObj from './entity_manager.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 5f0434975d534..4484e1fdacaba 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/esql.mdx b/api_docs/esql.mdx index 2c0f9f8e550ab..5eb3a64e6a7bd 100644 --- a/api_docs/esql.mdx +++ b/api_docs/esql.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esql title: "esql" image: https://source.unsplash.com/400x175/?github description: API docs for the esql plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esql'] --- import esqlObj from './esql.devdocs.json'; diff --git a/api_docs/esql_data_grid.mdx b/api_docs/esql_data_grid.mdx index 3274b9c32bf57..6834cbb122523 100644 --- a/api_docs/esql_data_grid.mdx +++ b/api_docs/esql_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esqlDataGrid title: "esqlDataGrid" image: https://source.unsplash.com/400x175/?github description: API docs for the esqlDataGrid plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esqlDataGrid'] --- import esqlDataGridObj from './esql_data_grid.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index d85362dad2d41..bd861a6d77b3d 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index d8924dbc7a15a..4bc05fc54b150 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 6a7b9b650b080..5f865e7ac722c 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 62d0ef2eb3d1b..bb1c4d3d97434 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView'] --- import exploratoryViewObj from './exploratory_view.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index e97786f103be0..0548f07302d40 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index 4f350e424a06e..0288f824e64cf 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 4e3e7a0f1253a..bc084546ccb1b 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 8ad0b3147ed38..5c3f1b1cbb8d7 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index bf36edf071422..ef2385775a61c 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 3e971b6eee103..b1cb6ec0e8b10 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 42649f33cabd6..25f10841afb23 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index d419d4b30a7a8..76fcc4760b0d0 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index 6466854cafd11..f89763ea3f946 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index dcafb6a156c93..a8905a3c9ef31 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 231817595a858..a91e6cebb55bd 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index d37ed7c1fd781..54aab72be6e10 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index 14f7bedcbcdd7..1abf10b0b25b0 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 6e0dc07a47c48..08e012313a931 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 8639dde16b380..066e1eb088348 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 6036ba9921901..1849e12bb38dd 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/fields_metadata.mdx b/api_docs/fields_metadata.mdx index a0a570a36b6bf..1bbe5c04c0bad 100644 --- a/api_docs/fields_metadata.mdx +++ b/api_docs/fields_metadata.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldsMetadata title: "fieldsMetadata" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldsMetadata plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldsMetadata'] --- import fieldsMetadataObj from './fields_metadata.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 514f822618c81..5420baf49bc99 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 89b0882de4a27..1e9d136a624c2 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index 8ca487c153477..ca2a0320c8a33 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index 1c40c838a860b..abd73318ae753 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index fafaece8b7108..ccd09d2a92bb5 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index 66014386d66f7..46ee46366893d 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index 28a8e395e18ce..a5be502800f93 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index dc6c44a7d7a71..dec0d20a5a72b 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 1c6c10ad883b4..c98e47592d786 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/inference.mdx b/api_docs/inference.mdx index 3123e9576091b..d4dd74fd1a817 100644 --- a/api_docs/inference.mdx +++ b/api_docs/inference.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inference title: "inference" image: https://source.unsplash.com/400x175/?github description: API docs for the inference plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inference'] --- import inferenceObj from './inference.devdocs.json'; diff --git a/api_docs/inference_endpoint.mdx b/api_docs/inference_endpoint.mdx index d481aeb485d29..72aa1759a49f4 100644 --- a/api_docs/inference_endpoint.mdx +++ b/api_docs/inference_endpoint.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inferenceEndpoint title: "inferenceEndpoint" image: https://source.unsplash.com/400x175/?github description: API docs for the inferenceEndpoint plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inferenceEndpoint'] --- import inferenceEndpointObj from './inference_endpoint.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index aec834dabce7e..48e9814946955 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/ingest_pipelines.mdx b/api_docs/ingest_pipelines.mdx index 5f9bb1a36d38f..e1eb5705687fa 100644 --- a/api_docs/ingest_pipelines.mdx +++ b/api_docs/ingest_pipelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ingestPipelines title: "ingestPipelines" image: https://source.unsplash.com/400x175/?github description: API docs for the ingestPipelines plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ingestPipelines'] --- import ingestPipelinesObj from './ingest_pipelines.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 948f2d8f51c9b..3fce3f89e2049 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 433c561609b06..b228df84c8dee 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/inventory.mdx b/api_docs/inventory.mdx index 882fd3392e003..cf50f7f9a79e9 100644 --- a/api_docs/inventory.mdx +++ b/api_docs/inventory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inventory title: "inventory" image: https://source.unsplash.com/400x175/?github description: API docs for the inventory plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inventory'] --- import inventoryObj from './inventory.devdocs.json'; diff --git a/api_docs/investigate.mdx b/api_docs/investigate.mdx index f7d31342e04bf..d47500211402a 100644 --- a/api_docs/investigate.mdx +++ b/api_docs/investigate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigate title: "investigate" image: https://source.unsplash.com/400x175/?github description: API docs for the investigate plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigate'] --- import investigateObj from './investigate.devdocs.json'; diff --git a/api_docs/investigate_app.mdx b/api_docs/investigate_app.mdx index 545ec2e89fc57..7ad2d18adfac0 100644 --- a/api_docs/investigate_app.mdx +++ b/api_docs/investigate_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigateApp title: "investigateApp" image: https://source.unsplash.com/400x175/?github description: API docs for the investigateApp plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigateApp'] --- import investigateAppObj from './investigate_app.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index d8281bb0a3602..3912022174158 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant.mdx b/api_docs/kbn_ai_assistant.mdx index 9f127468216cf..1a5bf308f82ff 100644 --- a/api_docs/kbn_ai_assistant.mdx +++ b/api_docs/kbn_ai_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant title: "@kbn/ai-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant'] --- import kbnAiAssistantObj from './kbn_ai_assistant.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant_common.mdx b/api_docs/kbn_ai_assistant_common.mdx index 6254ffe05b60d..1753c1343c900 100644 --- a/api_docs/kbn_ai_assistant_common.mdx +++ b/api_docs/kbn_ai_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant-common title: "@kbn/ai-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant-common'] --- import kbnAiAssistantCommonObj from './kbn_ai_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_ai_assistant_icon.mdx b/api_docs/kbn_ai_assistant_icon.mdx index dd238276f4a0c..b7aabb40b54dd 100644 --- a/api_docs/kbn_ai_assistant_icon.mdx +++ b/api_docs/kbn_ai_assistant_icon.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ai-assistant-icon title: "@kbn/ai-assistant-icon" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ai-assistant-icon plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ai-assistant-icon'] --- import kbnAiAssistantIconObj from './kbn_ai_assistant_icon.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 84f2c42aaa58f..2db3321c06f04 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_pattern_analysis.mdx b/api_docs/kbn_aiops_log_pattern_analysis.mdx index 2d6763c836238..c09c443102735 100644 --- a/api_docs/kbn_aiops_log_pattern_analysis.mdx +++ b/api_docs/kbn_aiops_log_pattern_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-pattern-analysis title: "@kbn/aiops-log-pattern-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-pattern-analysis plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-pattern-analysis'] --- import kbnAiopsLogPatternAnalysisObj from './kbn_aiops_log_pattern_analysis.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_rate_analysis.mdx b/api_docs/kbn_aiops_log_rate_analysis.mdx index 15fdf62d3bcc6..0ebf145d59a6a 100644 --- a/api_docs/kbn_aiops_log_rate_analysis.mdx +++ b/api_docs/kbn_aiops_log_rate_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-rate-analysis title: "@kbn/aiops-log-rate-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-rate-analysis plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-rate-analysis'] --- import kbnAiopsLogRateAnalysisObj from './kbn_aiops_log_rate_analysis.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index 9145916df31b5..d355301274c6a 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_comparators.mdx b/api_docs/kbn_alerting_comparators.mdx index 7207e68d52e17..d88efb12f8a24 100644 --- a/api_docs/kbn_alerting_comparators.mdx +++ b/api_docs/kbn_alerting_comparators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-comparators title: "@kbn/alerting-comparators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-comparators plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-comparators'] --- import kbnAlertingComparatorsObj from './kbn_alerting_comparators.devdocs.json'; diff --git a/api_docs/kbn_alerting_rule_utils.devdocs.json b/api_docs/kbn_alerting_rule_utils.devdocs.json index 4230b7d45da8c..6cb545d46cde1 100644 --- a/api_docs/kbn_alerting_rule_utils.devdocs.json +++ b/api_docs/kbn_alerting_rule_utils.devdocs.json @@ -37,7 +37,7 @@ }, "[]) => Record" ], - "path": "x-pack/platform/packages/shared/alerting_rule_utils/src/get_ecs_groups.ts", + "path": "x-pack/platform/packages/shared/alerting-rule-utils/src/get_ecs_groups.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -58,7 +58,7 @@ }, "[]" ], - "path": "x-pack/platform/packages/shared/alerting_rule_utils/src/get_ecs_groups.ts", + "path": "x-pack/platform/packages/shared/alerting-rule-utils/src/get_ecs_groups.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -76,7 +76,7 @@ "tags": [], "label": "Group", "description": [], - "path": "x-pack/platform/packages/shared/alerting_rule_utils/src/get_ecs_groups.ts", + "path": "x-pack/platform/packages/shared/alerting-rule-utils/src/get_ecs_groups.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -87,7 +87,7 @@ "tags": [], "label": "field", "description": [], - "path": "x-pack/platform/packages/shared/alerting_rule_utils/src/get_ecs_groups.ts", + "path": "x-pack/platform/packages/shared/alerting-rule-utils/src/get_ecs_groups.ts", "deprecated": false, "trackAdoption": false }, @@ -98,7 +98,7 @@ "tags": [], "label": "value", "description": [], - "path": "x-pack/platform/packages/shared/alerting_rule_utils/src/get_ecs_groups.ts", + "path": "x-pack/platform/packages/shared/alerting-rule-utils/src/get_ecs_groups.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_alerting_rule_utils.mdx b/api_docs/kbn_alerting_rule_utils.mdx index 448d1e50699f6..e59be75096b2d 100644 --- a/api_docs/kbn_alerting_rule_utils.mdx +++ b/api_docs/kbn_alerting_rule_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-rule-utils title: "@kbn/alerting-rule-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-rule-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-rule-utils'] --- import kbnAlertingRuleUtilsObj from './kbn_alerting_rule_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 506bc1002e955..8d53f3996a2c3 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index beadaaa8f3ada..53ab978112c69 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 47275cb2a5db9..32610c48b3e7a 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_grouping.mdx b/api_docs/kbn_alerts_grouping.mdx index bf139e3378a88..5541e6c1eebce 100644 --- a/api_docs/kbn_alerts_grouping.mdx +++ b/api_docs/kbn_alerts_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-grouping title: "@kbn/alerts-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-grouping plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-grouping'] --- import kbnAlertsGroupingObj from './kbn_alerts_grouping.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 0d51b0b73aa8d..7316e9ba061bf 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared'] --- import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index 719012093e1cb..0afa65b2c6fce 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index e93a358d73a91..8e84ca77974ca 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 593b8bf13a308..a0a580d5c5048 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_data_view.mdx b/api_docs/kbn_apm_data_view.mdx index 611b52d3c39ba..5f1552f17d471 100644 --- a/api_docs/kbn_apm_data_view.mdx +++ b/api_docs/kbn_apm_data_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-data-view title: "@kbn/apm-data-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-data-view plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-data-view'] --- import kbnApmDataViewObj from './kbn_apm_data_view.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 1b5ca5a625716..e23366cf91308 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 809cadfb35363..5b109bff2d91f 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_types.mdx b/api_docs/kbn_apm_types.mdx index f0cafb856f34f..f058fc94eafa1 100644 --- a/api_docs/kbn_apm_types.mdx +++ b/api_docs/kbn_apm_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-types title: "@kbn/apm-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-types'] --- import kbnApmTypesObj from './kbn_apm_types.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 81015b2807f52..e22ed6a768842 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_avc_banner.mdx b/api_docs/kbn_avc_banner.mdx index 0a54d69ac3937..11d5106a98465 100644 --- a/api_docs/kbn_avc_banner.mdx +++ b/api_docs/kbn_avc_banner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-avc-banner title: "@kbn/avc-banner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/avc-banner plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/avc-banner'] --- import kbnAvcBannerObj from './kbn_avc_banner.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index 8c00959722834..fdd9bc9027b91 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index e6652a7daaddd..996ed31153d23 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index 239902b588224..562c8e6f1e588 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 441d4a2dd3c8a..a115fe892ef8a 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cbor.mdx b/api_docs/kbn_cbor.mdx index 7de344ed80a20..cf4d5a7b56727 100644 --- a/api_docs/kbn_cbor.mdx +++ b/api_docs/kbn_cbor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cbor title: "@kbn/cbor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cbor plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cbor'] --- import kbnCborObj from './kbn_cbor.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 9e4748a734626..a86eb06e3f134 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx index 54fc0997b7ec1..1630887c8a42c 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index 60233210491e1..6f334950f8e05 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_charts_theme.mdx b/api_docs/kbn_charts_theme.mdx index 7e7247e63e23c..cb0ab6b84c21e 100644 --- a/api_docs/kbn_charts_theme.mdx +++ b/api_docs/kbn_charts_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-charts-theme title: "@kbn/charts-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/charts-theme plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/charts-theme'] --- import kbnChartsThemeObj from './kbn_charts_theme.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index acf002d87c0b2..66fcf521c2401 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index ffdc87252c6ec..a41b7d4e5a1e0 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index b07e196f4b308..ac7c4f02a3283 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index c26ba2f520925..2cfda2e68e2e9 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture.mdx b/api_docs/kbn_cloud_security_posture.mdx index adb17d2db2fb8..64774bb337c06 100644 --- a/api_docs/kbn_cloud_security_posture.mdx +++ b/api_docs/kbn_cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture title: "@kbn/cloud-security-posture" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture'] --- import kbnCloudSecurityPostureObj from './kbn_cloud_security_posture.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture_common.mdx b/api_docs/kbn_cloud_security_posture_common.mdx index 3c6fcc425825f..20476d23a38bb 100644 --- a/api_docs/kbn_cloud_security_posture_common.mdx +++ b/api_docs/kbn_cloud_security_posture_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture-common title: "@kbn/cloud-security-posture-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture-common'] --- import kbnCloudSecurityPostureCommonObj from './kbn_cloud_security_posture_common.devdocs.json'; diff --git a/api_docs/kbn_cloud_security_posture_graph.mdx b/api_docs/kbn_cloud_security_posture_graph.mdx index f66c67b10fd56..bdc4a190663e6 100644 --- a/api_docs/kbn_cloud_security_posture_graph.mdx +++ b/api_docs/kbn_cloud_security_posture_graph.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cloud-security-posture-graph title: "@kbn/cloud-security-posture-graph" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cloud-security-posture-graph plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cloud-security-posture-graph'] --- import kbnCloudSecurityPostureGraphObj from './kbn_cloud_security_posture_graph.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index 0b397e1bddbb1..2b33bc4e6eb13 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mock.mdx b/api_docs/kbn_code_editor_mock.mdx index 1635d383c4b66..9a32be082cb13 100644 --- a/api_docs/kbn_code_editor_mock.mdx +++ b/api_docs/kbn_code_editor_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mock title: "@kbn/code-editor-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mock plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mock'] --- import kbnCodeEditorMockObj from './kbn_code_editor_mock.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index f7ccecd43750a..f29e5a792a712 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index b6d799086933e..4e3df676fd058 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index d32403d6026be..f08d098d9c2e8 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index be503bc88a062..a712fbb9e1929 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index d17fec4eb2234..cc026e00ba249 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index eabad9c1ce486..bdf8d30d97792 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_insights_public.mdx b/api_docs/kbn_content_management_content_insights_public.mdx index ff08cf0c4b4fd..fa96231e5a7ad 100644 --- a/api_docs/kbn_content_management_content_insights_public.mdx +++ b/api_docs/kbn_content_management_content_insights_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-insights-public title: "@kbn/content-management-content-insights-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-insights-public plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-insights-public'] --- import kbnContentManagementContentInsightsPublicObj from './kbn_content_management_content_insights_public.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_insights_server.mdx b/api_docs/kbn_content_management_content_insights_server.mdx index e63a26f5b511c..321bb9e1f081e 100644 --- a/api_docs/kbn_content_management_content_insights_server.mdx +++ b/api_docs/kbn_content_management_content_insights_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-insights-server title: "@kbn/content-management-content-insights-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-insights-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-insights-server'] --- import kbnContentManagementContentInsightsServerObj from './kbn_content_management_content_insights_server.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_common.mdx b/api_docs/kbn_content_management_favorites_common.mdx index e95fda78f965b..556b887f82fa0 100644 --- a/api_docs/kbn_content_management_favorites_common.mdx +++ b/api_docs/kbn_content_management_favorites_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-common title: "@kbn/content-management-favorites-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-common'] --- import kbnContentManagementFavoritesCommonObj from './kbn_content_management_favorites_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_public.devdocs.json b/api_docs/kbn_content_management_favorites_public.devdocs.json index 35233b3d787bd..9c434448cad16 100644 --- a/api_docs/kbn_content_management_favorites_public.devdocs.json +++ b/api_docs/kbn_content_management_favorites_public.devdocs.json @@ -508,6 +508,39 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/content-management-favorites-public", + "id": "def-public.StardustWrapper", + "type": "Function", + "tags": [], + "label": "StardustWrapper", + "description": [], + "signature": [ + "({ active, className, children, }: React.PropsWithChildren<{ className?: string | undefined; active: boolean; }>) => React.JSX.Element" + ], + "path": "src/platform/packages/shared/content-management/favorites/favorites_public/src/components/stardust_wrapper.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/content-management-favorites-public", + "id": "def-public.StardustWrapper.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n active,\n className,\n children,\n}", + "description": [], + "signature": [ + "React.PropsWithChildren<{ className?: string | undefined; active: boolean; }>" + ], + "path": "src/platform/packages/shared/content-management/favorites/favorites_public/src/components/stardust_wrapper.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/content-management-favorites-public", "id": "def-public.useFavorites", diff --git a/api_docs/kbn_content_management_favorites_public.mdx b/api_docs/kbn_content_management_favorites_public.mdx index 507cf98d4c0c5..caec59f99f3c7 100644 --- a/api_docs/kbn_content_management_favorites_public.mdx +++ b/api_docs/kbn_content_management_favorites_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-public title: "@kbn/content-management-favorites-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-public plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-public'] --- import kbnContentManagementFavoritesPublicObj from './kbn_content_management_favorites_public.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 46 | 0 | 45 | 1 | +| 48 | 0 | 47 | 1 | ## Client diff --git a/api_docs/kbn_content_management_favorites_server.mdx b/api_docs/kbn_content_management_favorites_server.mdx index ef311e644c9fa..0a7ec571994bd 100644 --- a/api_docs/kbn_content_management_favorites_server.mdx +++ b/api_docs/kbn_content_management_favorites_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-server title: "@kbn/content-management-favorites-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-server'] --- import kbnContentManagementFavoritesServerObj from './kbn_content_management_favorites_server.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index 8b0591540f17d..bdc5e96c165e9 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view'] --- import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx index 1b13fc910166c..4b2596296dec9 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index 36af9d67fe5ac..f72a5090f5443 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 96574a42d2cd8..6e1f1ee2bb76b 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_user_profiles.mdx b/api_docs/kbn_content_management_user_profiles.mdx index 011545e109ea9..2bfa847143355 100644 --- a/api_docs/kbn_content_management_user_profiles.mdx +++ b/api_docs/kbn_content_management_user_profiles.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-user-profiles title: "@kbn/content-management-user-profiles" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-user-profiles plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-user-profiles'] --- import kbnContentManagementUserProfilesObj from './kbn_content_management_user_profiles.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index e1664aa31c960..b979a8c83c4dd 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 23f1aff55d302..93b944c27b2a9 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index 6c2b5a0377ea9..f6a896b4823a2 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index 937ee3672393b..a9a2ba96f75b1 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index 3ba26960ea7f2..016f343399a8b 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index 4d86b0357b650..f001f6354537d 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index 67e3adfca2d9d..c9cc8a9c2be9b 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index 8e69b533cfb98..86180933440fa 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index cca3be31bd1a9..422945e61e753 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index 346dd97d3ba2d..8be10a760acae 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index b973b29b0343b..1b20052babe78 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index 04fc646fd1e59..5dbea58d18ce1 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 6d5f4eb491015..87fc172ad3913 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index fd1e1508423e4..7081660a3f263 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index e094bbd500c53..3cd9fdd424f57 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 4c453bc113b94..2cdcb1f93038b 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index 8bbe48d555173..9a75dd3d83346 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index 3a2c00f98ef07..37c5faa409a2a 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index 0135c1530d9c3..2a95ceb0e49cd 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 6891733cd744d..f69f9799df5d3 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index 390c901f04c87..116e4c5775663 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index e913dffb83203..a32515b6362a4 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index 9930529540764..1f3fc09531cbb 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index 943ff4ce492b7..7ecee5609b6b2 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 5495b3ca851f1..cfdf084b19fcf 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index 71d306236d943..e41a833c26d40 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index 57516bd08eeaf..bb527fa7eb110 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index 3c1b783cf5dbb..82a66246fec3d 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index 5741360cd5cd5..c73f3be3e5028 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index a0855a908d381..ba2bbbd3b7eb2 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index 5bf06683a8a8a..6afb9105253ba 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index 4f9d567474588..b09bcb5912027 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 802ced34adc0f..a343ed65072ad 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index f40d9144ae6ff..e0f3f707d060c 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index 90948fe221b0e..7af49cf095f32 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index 9c30f2c642b91..2e382a0fdfb8d 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index 68eef7ede264a..ff9ba8c1badd6 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index 0e617414929c0..2750cac109c05 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index bc62105452e68..d7678aaf669e7 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 1fd66edf8da3c..1f8bf7165ea42 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index 0ea97cf66da50..9fd00d4d4c93b 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,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 description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index 4083ca891e818..f38e27583d33d 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index bb4771ce25086..f76a1a5370203 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,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 description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index c66c7c88d1514..b07095a04d0d6 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index fc3216a61c61f..8a4d4d97e3500 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index f6f84ada878f4..d1d64b544c0e6 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index 5d7aacfba251a..80e5d2ba61966 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index 44cd040015930..dc2ff1344eecb 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index aed4a2873a8ce..464b30d43a191 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index f659026a7a036..c8e7e7cd5a3f4 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index 36626120d53bd..5e476c051b515 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index 20b8b6249461d..8949d7a2c33fc 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index eb50bb108593e..feb6d4be7e717 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index 56da024169454..b00828d4ce44d 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index e0c2a3f6b15ec..f326de5e0fb40 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index 42d7b5156e0eb..15b0c4bbdd716 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index 2a82575d08f38..4d27334731e3f 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index deadd14d08108..1e90be07a311c 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index 8605c2b442fc4..7a958f4c6ed4a 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser.mdx b/api_docs/kbn_core_feature_flags_browser.mdx index b2cced744632e..d91d0de991998 100644 --- a/api_docs/kbn_core_feature_flags_browser.mdx +++ b/api_docs/kbn_core_feature_flags_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser title: "@kbn/core-feature-flags-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser'] --- import kbnCoreFeatureFlagsBrowserObj from './kbn_core_feature_flags_browser.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser_internal.mdx b/api_docs/kbn_core_feature_flags_browser_internal.mdx index 1c9dbb8ff5589..aed64e1337f10 100644 --- a/api_docs/kbn_core_feature_flags_browser_internal.mdx +++ b/api_docs/kbn_core_feature_flags_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser-internal title: "@kbn/core-feature-flags-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser-internal'] --- import kbnCoreFeatureFlagsBrowserInternalObj from './kbn_core_feature_flags_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_browser_mocks.mdx b/api_docs/kbn_core_feature_flags_browser_mocks.mdx index 3535407985deb..2f7c1a30bfdab 100644 --- a/api_docs/kbn_core_feature_flags_browser_mocks.mdx +++ b/api_docs/kbn_core_feature_flags_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-browser-mocks title: "@kbn/core-feature-flags-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-browser-mocks'] --- import kbnCoreFeatureFlagsBrowserMocksObj from './kbn_core_feature_flags_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server.mdx b/api_docs/kbn_core_feature_flags_server.mdx index d02d2ed53a54a..3d8c2e558aefb 100644 --- a/api_docs/kbn_core_feature_flags_server.mdx +++ b/api_docs/kbn_core_feature_flags_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server title: "@kbn/core-feature-flags-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server'] --- import kbnCoreFeatureFlagsServerObj from './kbn_core_feature_flags_server.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server_internal.mdx b/api_docs/kbn_core_feature_flags_server_internal.mdx index 812938291ef41..935c9d7d200d9 100644 --- a/api_docs/kbn_core_feature_flags_server_internal.mdx +++ b/api_docs/kbn_core_feature_flags_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server-internal title: "@kbn/core-feature-flags-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server-internal'] --- import kbnCoreFeatureFlagsServerInternalObj from './kbn_core_feature_flags_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_feature_flags_server_mocks.mdx b/api_docs/kbn_core_feature_flags_server_mocks.mdx index 799392609ac0b..45743d8193cc3 100644 --- a/api_docs/kbn_core_feature_flags_server_mocks.mdx +++ b/api_docs/kbn_core_feature_flags_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-feature-flags-server-mocks title: "@kbn/core-feature-flags-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-feature-flags-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-feature-flags-server-mocks'] --- import kbnCoreFeatureFlagsServerMocksObj from './kbn_core_feature_flags_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index 1500892ed8a5d..8f3c319d23bd4 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index b3a5970726af7..532b60a2224f4 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index e8e832ff5f05e..5e1e43aa1ece9 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index 04c193eaaf04f..c186862984b51 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index a3fd71e174256..d57223d4121db 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index 00fb3b192b7ba..d6fcb7d44a470 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index d269714df3ff7..743156ac42c43 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index a93b795b71df2..54a9acb0c5aa7 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index b136797b35868..2eec1e4922115 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index fca89e2d5b346..884d63ea4a5c9 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index a42d7317a104b..9ab21975ae58e 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 6c35efb7e30b3..004459419d59f 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index df05d109279b2..0ca54157223ae 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index c0f1eba348a59..ddae72df98fbc 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_utils.mdx b/api_docs/kbn_core_http_server_utils.mdx index f2931ecca302f..cc43c502fc829 100644 --- a/api_docs/kbn_core_http_server_utils.mdx +++ b/api_docs/kbn_core_http_server_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-utils title: "@kbn/core-http-server-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-utils'] --- import kbnCoreHttpServerUtilsObj from './kbn_core_http_server_utils.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 6408eff779c9f..bc2864cb26573 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index 8c10e7165133f..7767cc1a888ad 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index debdca587149b..f3699ad97e952 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index d9ebde13a8710..61076d227df7d 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index c3b9c5f7861c0..95cc6884af457 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index cfc9235da2b2b..057118e6b7b79 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,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 description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index 0c0bd08fcdb4f..2411d1a2b7a71 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index c14e5cdf6e9cd..9e99acff51edb 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index 51f1cd8c71419..d8fff77406c14 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index f535995b737fe..ceca4046fcba6 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index a3f3d8cdee1d9..9e4a10a2cf8c9 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index ae5736ccf624e..55a78c56362fd 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index f560141222f0e..c6f727dbeb967 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index 082e462e49cda..553e570b0c74c 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 581e52a3bf0c0..6f0f5a45e8aef 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index 0c101f5bb9acd..903b33d914702 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index 457b35f0cf16d..57320c1f759db 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index ecca5d945a740..5c9549c92ab5e 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index 366afe4a5698d..53ae4cf85461c 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index 1aa6891191473..5d26416262d18 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index 67399d1560197..1ec533d3ff044 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index a4ab0354f1113..f2b557c652131 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index 08a7a5fce5394..ea9ce6121722c 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 1b438335e4fc0..d197ccee2d74c 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index 8aa730ddbba31..6beb2646a5a4f 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index 091ead6c0903e..c8904c0d664f3 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index 86e72df78274e..dcdb8e41611b3 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index 58a0f50ed663c..387bd97fb057d 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index 227fb3775fe2d..314b4dc082423 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index e53703f1075d1..dde69eae523b9 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index 9d74ad08edc5c..5da3595204574 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index 33b156874f0ba..6cf761a8c57c9 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index 56a519bd5c229..1e6e15d11528f 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index da9ad585c8cf9..1f453fe115b35 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index 484085a8b65c3..6d03d9a22611a 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index e40c999cceee5..810ba624d7432 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 6861f7a3ae1d9..8ae39cebf0f67 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index f7437de54f859..8155789848c2d 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 1d1b8611a0aa8..ecdd3d11b93cb 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index 6229b04b27a90..6801d6738cfe6 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser.mdx b/api_docs/kbn_core_rendering_browser.mdx index 8a35893ca7d7e..4a37e5a0ef5ca 100644 --- a/api_docs/kbn_core_rendering_browser.mdx +++ b/api_docs/kbn_core_rendering_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser title: "@kbn/core-rendering-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser'] --- import kbnCoreRenderingBrowserObj from './kbn_core_rendering_browser.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 93d5b0df4c1d7..c1d548236750f 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index a2e7ce9bd90c7..227af417790fd 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index ace3fb5f899ac..a3e7fe4b8cba7 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index 05119df59e4fd..929d3b076dbe9 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index eb09bf8024c62..e9e1dfab8e50f 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index b3a325b05e8c1..755fc2461a714 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index 661d2cd9fa0ad..6e08730b218a4 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 5ec76bb78fcee..df645abb94418 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index f409d31c0ee38..19d53f77f1c1d 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index 40713eb747b87..5defef278a795 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 15d726e5448c2..96cdbf58198f7 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index 702400edffd16..b6e13f3aaff17 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index 6b584c33a994d..12cf041167465 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index 716c9dbca1878..6062f10d1de35 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index 18e13db37f980..bade53613a250 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index 1b104b8df1b27..fce3e4aa3d1e8 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index 93e201b1177e8..42a68a5f5a3c0 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 079f3a22ac9c0..667ed2897cdf7 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index 5e3ffa1d66743..f325da996a327 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index e53b9508e4b05..2c5d69d61526a 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index 74a33714eee16..956deaae188f4 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser.mdx b/api_docs/kbn_core_security_browser.mdx index 6357d1bac34f2..d5a081be89aa3 100644 --- a/api_docs/kbn_core_security_browser.mdx +++ b/api_docs/kbn_core_security_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser title: "@kbn/core-security-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser'] --- import kbnCoreSecurityBrowserObj from './kbn_core_security_browser.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_internal.mdx b/api_docs/kbn_core_security_browser_internal.mdx index f3bbe06ac7db9..f50697f5b82a4 100644 --- a/api_docs/kbn_core_security_browser_internal.mdx +++ b/api_docs/kbn_core_security_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-internal title: "@kbn/core-security-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-internal'] --- import kbnCoreSecurityBrowserInternalObj from './kbn_core_security_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_mocks.mdx b/api_docs/kbn_core_security_browser_mocks.mdx index 4a2b66a687789..7539243ffdccb 100644 --- a/api_docs/kbn_core_security_browser_mocks.mdx +++ b/api_docs/kbn_core_security_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-mocks title: "@kbn/core-security-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-mocks'] --- import kbnCoreSecurityBrowserMocksObj from './kbn_core_security_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_security_common.mdx b/api_docs/kbn_core_security_common.mdx index d043f157fa617..ef364c7b9c305 100644 --- a/api_docs/kbn_core_security_common.mdx +++ b/api_docs/kbn_core_security_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-common title: "@kbn/core-security-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-common'] --- import kbnCoreSecurityCommonObj from './kbn_core_security_common.devdocs.json'; diff --git a/api_docs/kbn_core_security_server.mdx b/api_docs/kbn_core_security_server.mdx index 96d7cbf7fa485..985d625aa8dd8 100644 --- a/api_docs/kbn_core_security_server.mdx +++ b/api_docs/kbn_core_security_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server title: "@kbn/core-security-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server'] --- import kbnCoreSecurityServerObj from './kbn_core_security_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_internal.mdx b/api_docs/kbn_core_security_server_internal.mdx index a66610a4e062a..48e3240a7a1fe 100644 --- a/api_docs/kbn_core_security_server_internal.mdx +++ b/api_docs/kbn_core_security_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-internal title: "@kbn/core-security-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-internal'] --- import kbnCoreSecurityServerInternalObj from './kbn_core_security_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_mocks.mdx b/api_docs/kbn_core_security_server_mocks.mdx index 5f0b7bb0a8635..d2ea3e1fe3f40 100644 --- a/api_docs/kbn_core_security_server_mocks.mdx +++ b/api_docs/kbn_core_security_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-mocks title: "@kbn/core-security-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-mocks'] --- import kbnCoreSecurityServerMocksObj from './kbn_core_security_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 7c522f863ae45..dce8ed226f0f9 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index cef6c589c3f93..e783cf8be2c5a 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index 17315fff0ba66..c8138bd6eb4c7 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index c836c99dca231..2b6d2ce60c8cc 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index 00e0413815a55..381c2c402681a 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index 65f7cc2cc9603..d2032d90e4455 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index d85dff2ddbd12..82baa68208204 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index 260faa085c381..8c8806d854738 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index d80b0b0ebe219..594cfdcfeeb7b 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index e2d8eda6d3652..24bfdb596f561 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 39dfcdd3b23be..4e170b63a2379 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_internal.mdx b/api_docs/kbn_core_theme_browser_internal.mdx index 2b0a226b3a7b9..80d094f23e0e6 100644 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ b/api_docs/kbn_core_theme_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-internal title: "@kbn/core-theme-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-internal'] --- import kbnCoreThemeBrowserInternalObj from './kbn_core_theme_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 338c70db39ea7..1ebbc46d85781 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index d832a1ff09f78..2cfe301a47ef3 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index 29ff290916f2c..b02aaf7708701 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index ba6218e1c2214..4696502a2e47b 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index b2c7d82a31986..748f7b5990909 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index d358d14b1f766..5645985337a59 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index 395df08d938aa..74a5fe3956b7b 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index 069c876a9a3f7..0c60c5210e9e2 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.devdocs.json b/api_docs/kbn_core_usage_data_server.devdocs.json index 3df2a32735488..6a1c9125adeaa 100644 --- a/api_docs/kbn_core_usage_data_server.devdocs.json +++ b/api_docs/kbn_core_usage_data_server.devdocs.json @@ -47,7 +47,7 @@ "label": "http", "description": [], "signature": [ - "{ basePathConfigured: boolean; maxPayloadInBytes: number; rewriteBasePath: boolean; keepaliveTimeout: number; socketTimeout: number; compression: { enabled: boolean; referrerWhitelistConfigured: boolean; }; xsrf: { disableProtection: boolean; allowlistConfigured: boolean; }; requestId: { allowFromAnyIp: boolean; ipAllowlistConfigured: boolean; }; ssl: { certificateAuthoritiesConfigured: boolean; certificateConfigured: boolean; cipherSuites: string[]; keyConfigured: boolean; keystoreConfigured: boolean; truststoreConfigured: boolean; redirectHttpFromPortConfigured: boolean; supportedProtocols: string[]; clientAuthentication: \"none\" | \"required\" | \"optional\"; }; securityResponseHeaders: { strictTransportSecurity: string; xContentTypeOptions: string; referrerPolicy: string; permissionsPolicyConfigured: boolean; disableEmbedding: boolean; crossOriginOpenerPolicy: string; }; }" + "{ basePathConfigured: boolean; maxPayloadInBytes: number; rewriteBasePath: boolean; keepaliveTimeout: number; socketTimeout: number; protocol: \"http1\" | \"http2\"; compression: { enabled: boolean; referrerWhitelistConfigured: boolean; }; xsrf: { disableProtection: boolean; allowlistConfigured: boolean; }; requestId: { allowFromAnyIp: boolean; ipAllowlistConfigured: boolean; }; ssl: { certificateAuthoritiesConfigured: boolean; certificateConfigured: boolean; cipherSuites: string[]; keyConfigured: boolean; keystoreConfigured: boolean; truststoreConfigured: boolean; redirectHttpFromPortConfigured: boolean; supportedProtocols: string[]; clientAuthentication: \"none\" | \"required\" | \"optional\"; }; securityResponseHeaders: { strictTransportSecurity: string; xContentTypeOptions: string; referrerPolicy: string; permissionsPolicyConfigured: boolean; disableEmbedding: boolean; crossOriginOpenerPolicy: string; }; }" ], "path": "src/core/packages/usage-data/server/src/core_usage_data.ts", "deprecated": false, diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index e92374faa60ce..4945311f2a026 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index 9f41164dddffa..77de896a44e80 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index dbf471770a9ce..a908c912a5006 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser.mdx b/api_docs/kbn_core_user_profile_browser.mdx index 782c925f5b248..b45fdc02b59bc 100644 --- a/api_docs/kbn_core_user_profile_browser.mdx +++ b/api_docs/kbn_core_user_profile_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser title: "@kbn/core-user-profile-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser'] --- import kbnCoreUserProfileBrowserObj from './kbn_core_user_profile_browser.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_internal.mdx b/api_docs/kbn_core_user_profile_browser_internal.mdx index 08a1672daa2bf..a20918754bb88 100644 --- a/api_docs/kbn_core_user_profile_browser_internal.mdx +++ b/api_docs/kbn_core_user_profile_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-internal title: "@kbn/core-user-profile-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-internal'] --- import kbnCoreUserProfileBrowserInternalObj from './kbn_core_user_profile_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_mocks.mdx b/api_docs/kbn_core_user_profile_browser_mocks.mdx index 6c87721841b34..b93c8f350a1b3 100644 --- a/api_docs/kbn_core_user_profile_browser_mocks.mdx +++ b/api_docs/kbn_core_user_profile_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-mocks title: "@kbn/core-user-profile-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-mocks'] --- import kbnCoreUserProfileBrowserMocksObj from './kbn_core_user_profile_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_common.mdx b/api_docs/kbn_core_user_profile_common.mdx index 995158511a1b2..9cef97be2d2f5 100644 --- a/api_docs/kbn_core_user_profile_common.mdx +++ b/api_docs/kbn_core_user_profile_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-common title: "@kbn/core-user-profile-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-common'] --- import kbnCoreUserProfileCommonObj from './kbn_core_user_profile_common.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server.mdx b/api_docs/kbn_core_user_profile_server.mdx index 1ed61bee092e3..f438eb2135747 100644 --- a/api_docs/kbn_core_user_profile_server.mdx +++ b/api_docs/kbn_core_user_profile_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server title: "@kbn/core-user-profile-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server'] --- import kbnCoreUserProfileServerObj from './kbn_core_user_profile_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_internal.mdx b/api_docs/kbn_core_user_profile_server_internal.mdx index fb3a7599235de..99d23130f4f2a 100644 --- a/api_docs/kbn_core_user_profile_server_internal.mdx +++ b/api_docs/kbn_core_user_profile_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-internal title: "@kbn/core-user-profile-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-internal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-internal'] --- import kbnCoreUserProfileServerInternalObj from './kbn_core_user_profile_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_mocks.mdx b/api_docs/kbn_core_user_profile_server_mocks.mdx index e2c18e8b7adab..e2f156e2b8675 100644 --- a/api_docs/kbn_core_user_profile_server_mocks.mdx +++ b/api_docs/kbn_core_user_profile_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-mocks title: "@kbn/core-user-profile-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-mocks'] --- import kbnCoreUserProfileServerMocksObj from './kbn_core_user_profile_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index 2c6da3998ae5c..d3ef7e0006aae 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index c29a6dcc223c9..3eebc300a5db9 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks'] --- import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index 62e672ccbbbb4..dc9ea2e0ebe77 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index 3f0478a32387a..8829aeca642c6 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index a3b6bcaf4ddc5..b5e6f78042275 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index 95f8eeea1cee9..e700d080027df 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 1dbddb16e55f3..495f120b78b6f 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_forge.mdx b/api_docs/kbn_data_forge.mdx index 0aea48e3f4325..6bc3c1dff5bf6 100644 --- a/api_docs/kbn_data_forge.mdx +++ b/api_docs/kbn_data_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-forge title: "@kbn/data-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-forge plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-forge'] --- import kbnDataForgeObj from './kbn_data_forge.devdocs.json'; diff --git a/api_docs/kbn_data_grid_in_table_search.mdx b/api_docs/kbn_data_grid_in_table_search.mdx index fab44fa4df105..fa54131d6ee0b 100644 --- a/api_docs/kbn_data_grid_in_table_search.mdx +++ b/api_docs/kbn_data_grid_in_table_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-grid-in-table-search title: "@kbn/data-grid-in-table-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-grid-in-table-search plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-grid-in-table-search'] --- import kbnDataGridInTableSearchObj from './kbn_data_grid_in_table_search.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index d99febdca95e1..a723683d39684 100644 --- a/api_docs/kbn_data_service.mdx +++ b/api_docs/kbn_data_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service title: "@kbn/data-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-service plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_data_stream_adapter.mdx b/api_docs/kbn_data_stream_adapter.mdx index 0779db2608f37..e5b6fb8ae1f38 100644 --- a/api_docs/kbn_data_stream_adapter.mdx +++ b/api_docs/kbn_data_stream_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-stream-adapter title: "@kbn/data-stream-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-stream-adapter plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-stream-adapter'] --- import kbnDataStreamAdapterObj from './kbn_data_stream_adapter.devdocs.json'; diff --git a/api_docs/kbn_data_view_utils.mdx b/api_docs/kbn_data_view_utils.mdx index ebf6aa9e80795..be7e3449a126c 100644 --- a/api_docs/kbn_data_view_utils.mdx +++ b/api_docs/kbn_data_view_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-view-utils title: "@kbn/data-view-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-view-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-view-utils'] --- import kbnDataViewUtilsObj from './kbn_data_view_utils.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 95c17676a6597..40044cc07582d 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx index 79fd6fd806aa1..73f9536e7faed 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics'] --- import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx index 2d8493a31fc15..3036e58608240 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_fleet.mdx b/api_docs/kbn_deeplinks_fleet.mdx index b519abb2621bf..6df616b88cc04 100644 --- a/api_docs/kbn_deeplinks_fleet.mdx +++ b/api_docs/kbn_deeplinks_fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-fleet title: "@kbn/deeplinks-fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-fleet plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-fleet'] --- import kbnDeeplinksFleetObj from './kbn_deeplinks_fleet.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index ef043a51a72de..5b45a11b93d27 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index fd58438c29c05..a031711862867 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index 198831d1b56f7..5b851b786283a 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index d7a96710d7489..afde6f00b2f6b 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_security.mdx b/api_docs/kbn_deeplinks_security.mdx index e49462b76b9e7..2e4ce0ade9bd5 100644 --- a/api_docs/kbn_deeplinks_security.mdx +++ b/api_docs/kbn_deeplinks_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-security title: "@kbn/deeplinks-security" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-security plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-security'] --- import kbnDeeplinksSecurityObj from './kbn_deeplinks_security.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_shared.mdx b/api_docs/kbn_deeplinks_shared.mdx index a18f8094919b3..4fb19c1c5d91f 100644 --- a/api_docs/kbn_deeplinks_shared.mdx +++ b/api_docs/kbn_deeplinks_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-shared title: "@kbn/deeplinks-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-shared plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-shared'] --- import kbnDeeplinksSharedObj from './kbn_deeplinks_shared.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index bc21ac216e05a..d092b17926375 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics'] --- import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx index d154ee3ef115e..a9d40963fce2b 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools'] --- import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json'; diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index f911b092d1c74..7509393171500 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index 2d98a568d9967..da2a4cfb28c58 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml'] --- import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json'; diff --git a/api_docs/kbn_delete_managed_asset_callout.mdx b/api_docs/kbn_delete_managed_asset_callout.mdx index 7438c2a43b3db..de21ecaca842f 100644 --- a/api_docs/kbn_delete_managed_asset_callout.mdx +++ b/api_docs/kbn_delete_managed_asset_callout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-delete-managed-asset-callout title: "@kbn/delete-managed-asset-callout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/delete-managed-asset-callout plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/delete-managed-asset-callout'] --- import kbnDeleteManagedAssetCalloutObj from './kbn_delete_managed_asset_callout.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 695419077c775..d51695ec78ce3 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index 39b1df436587e..939d7e0ef25f9 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index db1e59a45dc74..f684df0f74c03 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index c8de214a5238c..be4ef3a5a6f79 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_contextual_components.mdx b/api_docs/kbn_discover_contextual_components.mdx index b0f89077b066a..04ad7e66bb638 100644 --- a/api_docs/kbn_discover_contextual_components.mdx +++ b/api_docs/kbn_discover_contextual_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-contextual-components title: "@kbn/discover-contextual-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-contextual-components plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-contextual-components'] --- import kbnDiscoverContextualComponentsObj from './kbn_discover_contextual_components.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index 63ca5a13dd79f..1fc0cfa14fde3 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.devdocs.json b/api_docs/kbn_doc_links.devdocs.json index aeab54c4cf3e1..a792af82eebbe 100644 --- a/api_docs/kbn_doc_links.devdocs.json +++ b/api_docs/kbn_doc_links.devdocs.json @@ -462,7 +462,7 @@ "label": "upgradeAssistant", "description": [], "signature": [ - "{ readonly overview: string; readonly batchReindex: string; readonly remoteReindex: string; readonly reindexWithPipeline: string; }" + "{ readonly overview: string; readonly batchReindex: string; readonly remoteReindex: string; readonly unfreezeApi: string; readonly reindexWithPipeline: string; }" ], "path": "src/platform/packages/shared/kbn-doc-links/src/types.ts", "deprecated": false, diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index b89e93425091a..93f3525ee6536 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index 2cad883772494..92a58ba9e7cfe 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx index 43d7519f11e35..5f57fc74b8533 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop'] --- import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index 7ebe110e7ae1c..41ca950cf5bf3 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index aeda0d7e6ff4a..c554e9d8e18c4 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index 7be85294989eb..44995bd4442f2 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 54152243644a1..cf36b56d45780 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index c97a84f1135f8..16373b131e1ee 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_entities_schema.mdx b/api_docs/kbn_entities_schema.mdx index 59dbe5b8fd63f..d43f01573f2f7 100644 --- a/api_docs/kbn_entities_schema.mdx +++ b/api_docs/kbn_entities_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-entities-schema title: "@kbn/entities-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/entities-schema plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/entities-schema'] --- import kbnEntitiesSchemaObj from './kbn_entities_schema.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 69f683c59b218..fa5c43ddffdb8 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index bf8335c316fd3..77626199845c6 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index b06fa4da57dcb..63958fe3fe028 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 6dd8de3e54a02..998876ade1902 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index 41eb7b01822a4..6e846f2ffff8d 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index f730d208022ed..2e844a56626f5 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_esql_ast.mdx b/api_docs/kbn_esql_ast.mdx index c52d8468229af..6562e9c2b2b88 100644 --- a/api_docs/kbn_esql_ast.mdx +++ b/api_docs/kbn_esql_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-ast title: "@kbn/esql-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-ast plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-ast'] --- import kbnEsqlAstObj from './kbn_esql_ast.devdocs.json'; diff --git a/api_docs/kbn_esql_editor.mdx b/api_docs/kbn_esql_editor.mdx index 1fa45e137b943..68639438a1097 100644 --- a/api_docs/kbn_esql_editor.mdx +++ b/api_docs/kbn_esql_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-editor title: "@kbn/esql-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-editor plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-editor'] --- import kbnEsqlEditorObj from './kbn_esql_editor.devdocs.json'; diff --git a/api_docs/kbn_esql_utils.mdx b/api_docs/kbn_esql_utils.mdx index ba44481dd7f7b..dce2f25f44215 100644 --- a/api_docs/kbn_esql_utils.mdx +++ b/api_docs/kbn_esql_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-utils title: "@kbn/esql-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-utils'] --- import kbnEsqlUtilsObj from './kbn_esql_utils.devdocs.json'; diff --git a/api_docs/kbn_esql_validation_autocomplete.mdx b/api_docs/kbn_esql_validation_autocomplete.mdx index ad86b91869792..bf24c9b47e801 100644 --- a/api_docs/kbn_esql_validation_autocomplete.mdx +++ b/api_docs/kbn_esql_validation_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-validation-autocomplete title: "@kbn/esql-validation-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-validation-autocomplete plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-validation-autocomplete'] --- import kbnEsqlValidationAutocompleteObj from './kbn_esql_validation_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_esql_variables_types.mdx b/api_docs/kbn_esql_variables_types.mdx index 843a5a705a451..0350c6ad39732 100644 --- a/api_docs/kbn_esql_variables_types.mdx +++ b/api_docs/kbn_esql_variables_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-variables-types title: "@kbn/esql-variables-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-variables-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-variables-types'] --- import kbnEsqlVariablesTypesObj from './kbn_esql_variables_types.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index efb021a7b8e79..a9579cd95fe4f 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index 3273a037de60b..1bc58a4e4cae3 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_event_stacktrace.mdx b/api_docs/kbn_event_stacktrace.mdx index 3c50b473a8fd9..bcbb8d6517a1b 100644 --- a/api_docs/kbn_event_stacktrace.mdx +++ b/api_docs/kbn_event_stacktrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-stacktrace title: "@kbn/event-stacktrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-stacktrace plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-stacktrace'] --- import kbnEventStacktraceObj from './kbn_event_stacktrace.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index ba807f872e05c..705d28f914f7d 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 77e4660a4b192..b0914c926a51f 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 200a1d38909bf..51898faca247a 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_file_upload_common.mdx b/api_docs/kbn_file_upload_common.mdx index 1762d439e12f4..f56d36838e401 100644 --- a/api_docs/kbn_file_upload_common.mdx +++ b/api_docs/kbn_file_upload_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-file-upload-common title: "@kbn/file-upload-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/file-upload-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/file-upload-common'] --- import kbnFileUploadCommonObj from './kbn_file_upload_common.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 8ffa9329da919..4754feda51d6b 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index 59c5be1a87576..5c03fe92e718b 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index 255ffd9128954..eff87faaceb50 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_gen_ai_functional_testing.mdx b/api_docs/kbn_gen_ai_functional_testing.mdx index 84a6f87c0007e..d79b319d29eee 100644 --- a/api_docs/kbn_gen_ai_functional_testing.mdx +++ b/api_docs/kbn_gen_ai_functional_testing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-gen-ai-functional-testing title: "@kbn/gen-ai-functional-testing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/gen-ai-functional-testing plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/gen-ai-functional-testing'] --- import kbnGenAiFunctionalTestingObj from './kbn_gen_ai_functional_testing.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 35f0516671409..f0a75fe001ed2 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx index f82a87013da0c..1b46bf6e60927 100644 --- a/api_docs/kbn_generate_console_definitions.mdx +++ b/api_docs/kbn_generate_console_definitions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions title: "@kbn/generate-console-definitions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-console-definitions plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions'] --- import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index ca24fa8fd4652..cb1ff8d6e592a 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_grid_layout.mdx b/api_docs/kbn_grid_layout.mdx index 315bdd983c872..ca49728998b45 100644 --- a/api_docs/kbn_grid_layout.mdx +++ b/api_docs/kbn_grid_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grid-layout title: "@kbn/grid-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grid-layout plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grid-layout'] --- import kbnGridLayoutObj from './kbn_grid_layout.devdocs.json'; diff --git a/api_docs/kbn_grouping.mdx b/api_docs/kbn_grouping.mdx index 239ad9384f9b0..06e81c6eb4f47 100644 --- a/api_docs/kbn_grouping.mdx +++ b/api_docs/kbn_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grouping title: "@kbn/grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grouping plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grouping'] --- import kbnGroupingObj from './kbn_grouping.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index 11d7e2140e1fb..9775ff6e711fc 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index f38329b60d073..636aeef9155e8 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index ae402bfb5e367..680d3cf073e7b 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index fb327073c89bb..78e5929da9f7d 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index 7eb6da3718bb5..d9e8f4b3eebc3 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index abbe60f9ef0e4..f2bee0d8ab1fb 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index 48ede5fcbd7fb..68c25aadc411e 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index a736419b9b34b..7756b5e892846 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index fa14371ae6ea3..f2ca6a60d9b2d 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_index_adapter.mdx b/api_docs/kbn_index_adapter.mdx index 54736083a4559..f42d1a80a0fb5 100644 --- a/api_docs/kbn_index_adapter.mdx +++ b/api_docs/kbn_index_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-adapter title: "@kbn/index-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-adapter plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-adapter'] --- import kbnIndexAdapterObj from './kbn_index_adapter.devdocs.json'; diff --git a/api_docs/kbn_index_lifecycle_management_common_shared.mdx b/api_docs/kbn_index_lifecycle_management_common_shared.mdx index d752d6a09abbc..5270a02717fa7 100644 --- a/api_docs/kbn_index_lifecycle_management_common_shared.mdx +++ b/api_docs/kbn_index_lifecycle_management_common_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-lifecycle-management-common-shared title: "@kbn/index-lifecycle-management-common-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-lifecycle-management-common-shared plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-lifecycle-management-common-shared'] --- import kbnIndexLifecycleManagementCommonSharedObj from './kbn_index_lifecycle_management_common_shared.devdocs.json'; diff --git a/api_docs/kbn_index_management_shared_types.mdx b/api_docs/kbn_index_management_shared_types.mdx index 03c9fdef630ca..52260734fb771 100644 --- a/api_docs/kbn_index_management_shared_types.mdx +++ b/api_docs/kbn_index_management_shared_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-management-shared-types title: "@kbn/index-management-shared-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-management-shared-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-management-shared-types'] --- import kbnIndexManagementSharedTypesObj from './kbn_index_management_shared_types.devdocs.json'; diff --git a/api_docs/kbn_inference_common.mdx b/api_docs/kbn_inference_common.mdx index d0f9aaeec95bc..5d6288f9697c5 100644 --- a/api_docs/kbn_inference_common.mdx +++ b/api_docs/kbn_inference_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-common title: "@kbn/inference-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-common'] --- import kbnInferenceCommonObj from './kbn_inference_common.devdocs.json'; diff --git a/api_docs/kbn_inference_endpoint_ui_common.mdx b/api_docs/kbn_inference_endpoint_ui_common.mdx index 72086fc5d0d7d..050fe1ff51ee2 100644 --- a/api_docs/kbn_inference_endpoint_ui_common.mdx +++ b/api_docs/kbn_inference_endpoint_ui_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-endpoint-ui-common title: "@kbn/inference-endpoint-ui-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-endpoint-ui-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-endpoint-ui-common'] --- import kbnInferenceEndpointUiCommonObj from './kbn_inference_endpoint_ui_common.devdocs.json'; diff --git a/api_docs/kbn_inference_integration_flyout.mdx b/api_docs/kbn_inference_integration_flyout.mdx index 9abb4c33464d8..90ed4f1611151 100644 --- a/api_docs/kbn_inference_integration_flyout.mdx +++ b/api_docs/kbn_inference_integration_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference_integration_flyout title: "@kbn/inference_integration_flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference_integration_flyout plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference_integration_flyout'] --- import kbnInferenceIntegrationFlyoutObj from './kbn_inference_integration_flyout.devdocs.json'; diff --git a/api_docs/kbn_inference_langchain.mdx b/api_docs/kbn_inference_langchain.mdx index 1e131dd959202..329da7de9f59d 100644 --- a/api_docs/kbn_inference_langchain.mdx +++ b/api_docs/kbn_inference_langchain.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference-langchain title: "@kbn/inference-langchain" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference-langchain plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference-langchain'] --- import kbnInferenceLangchainObj from './kbn_inference_langchain.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index 49d2e40bb6fa3..b99ac33d22555 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge'] --- import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index 86a26faea4a2d..02d65d590501e 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_investigation_shared.mdx b/api_docs/kbn_investigation_shared.mdx index 36062f64529bb..5bffc433e1503 100644 --- a/api_docs/kbn_investigation_shared.mdx +++ b/api_docs/kbn_investigation_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-investigation-shared title: "@kbn/investigation-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/investigation-shared plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/investigation-shared'] --- import kbnInvestigationSharedObj from './kbn_investigation_shared.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 8c2be18c55881..d5abadfd7ffd7 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_ipynb.mdx b/api_docs/kbn_ipynb.mdx index 7e5f0358f8434..771262da490c7 100644 --- a/api_docs/kbn_ipynb.mdx +++ b/api_docs/kbn_ipynb.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ipynb title: "@kbn/ipynb" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ipynb plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ipynb'] --- import kbnIpynbObj from './kbn_ipynb.devdocs.json'; diff --git a/api_docs/kbn_item_buffer.mdx b/api_docs/kbn_item_buffer.mdx index 4f35193637abb..bc33f9e871971 100644 --- a/api_docs/kbn_item_buffer.mdx +++ b/api_docs/kbn_item_buffer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-item-buffer title: "@kbn/item-buffer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/item-buffer plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/item-buffer'] --- import kbnItemBufferObj from './kbn_item_buffer.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 5cff7a4c27ac9..f726e7e5466fd 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index faa4a42a76845..698abb35bdc1f 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index 9efb1190a03e5..5066afb720707 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_json_schemas.mdx b/api_docs/kbn_json_schemas.mdx index b874d97ecb452..3ff1e22d7cedb 100644 --- a/api_docs/kbn_json_schemas.mdx +++ b/api_docs/kbn_json_schemas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-schemas title: "@kbn/json-schemas" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-schemas plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-schemas'] --- import kbnJsonSchemasObj from './kbn_json_schemas.devdocs.json'; diff --git a/api_docs/kbn_key_value_metadata_table.mdx b/api_docs/kbn_key_value_metadata_table.mdx index 5c765757613a3..adf3397698925 100644 --- a/api_docs/kbn_key_value_metadata_table.mdx +++ b/api_docs/kbn_key_value_metadata_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-key-value-metadata-table title: "@kbn/key-value-metadata-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/key-value-metadata-table plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/key-value-metadata-table'] --- import kbnKeyValueMetadataTableObj from './kbn_key_value_metadata_table.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 23d9cf6edf904..148344c910ca1 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation.mdx b/api_docs/kbn_language_documentation.mdx index d78facb5312fa..8a5c55dc09de8 100644 --- a/api_docs/kbn_language_documentation.mdx +++ b/api_docs/kbn_language_documentation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation title: "@kbn/language-documentation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation'] --- import kbnLanguageDocumentationObj from './kbn_language_documentation.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 0b389c07ebeae..4f745d0ad59e4 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx index dda3558957069..4e5fb4096e5aa 100644 --- a/api_docs/kbn_lens_formula_docs.mdx +++ b/api_docs/kbn_lens_formula_docs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-formula-docs title: "@kbn/lens-formula-docs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-formula-docs plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-formula-docs'] --- import kbnLensFormulaDocsObj from './kbn_lens_formula_docs.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index f5523181b9dad..60708f75168d3 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index 96d1c27ca91ff..1e3b5496f5f93 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_logs_overview.devdocs.json b/api_docs/kbn_logs_overview.devdocs.json index 313147a71c508..c0cd43810f350 100644 --- a/api_docs/kbn_logs_overview.devdocs.json +++ b/api_docs/kbn_logs_overview.devdocs.json @@ -21,7 +21,7 @@ }, ">" ], - "path": "x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview.tsx", + "path": "x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -75,7 +75,7 @@ }, ") => React.JSX.Element" ], - "path": "x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview_error_content.tsx", + "path": "x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview_error_content.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -95,7 +95,7 @@ "text": "LogsOverviewErrorContentProps" } ], - "path": "x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview_error_content.tsx", + "path": "x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview_error_content.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -114,7 +114,7 @@ "signature": [ "({}: {}) => React.JSX.Element" ], - "path": "x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview_loading_content.tsx", + "path": "x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview_loading_content.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -128,7 +128,7 @@ "signature": [ "{}" ], - "path": "x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview_loading_content.tsx", + "path": "x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview_loading_content.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -146,7 +146,7 @@ "tags": [], "label": "DataViewLogsSourceConfiguration", "description": [], - "path": "x-pack/platform/packages/shared/logs_overview/src/utils/logs_source.ts", + "path": "x-pack/platform/packages/shared/logs-overview/src/utils/logs_source.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -160,7 +160,7 @@ "signature": [ "\"data_view\"" ], - "path": "x-pack/platform/packages/shared/logs_overview/src/utils/logs_source.ts", + "path": "x-pack/platform/packages/shared/logs-overview/src/utils/logs_source.ts", "deprecated": false, "trackAdoption": false }, @@ -180,7 +180,7 @@ "text": "DataView" } ], - "path": "x-pack/platform/packages/shared/logs_overview/src/utils/logs_source.ts", + "path": "x-pack/platform/packages/shared/logs-overview/src/utils/logs_source.ts", "deprecated": false, "trackAdoption": false }, @@ -194,7 +194,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/platform/packages/shared/logs_overview/src/utils/logs_source.ts", + "path": "x-pack/platform/packages/shared/logs-overview/src/utils/logs_source.ts", "deprecated": false, "trackAdoption": false } @@ -208,7 +208,7 @@ "tags": [], "label": "IndexNameLogsSourceConfiguration", "description": [], - "path": "x-pack/platform/packages/shared/logs_overview/src/utils/logs_source.ts", + "path": "x-pack/platform/packages/shared/logs-overview/src/utils/logs_source.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -222,7 +222,7 @@ "signature": [ "\"index_name\"" ], - "path": "x-pack/platform/packages/shared/logs_overview/src/utils/logs_source.ts", + "path": "x-pack/platform/packages/shared/logs-overview/src/utils/logs_source.ts", "deprecated": false, "trackAdoption": false }, @@ -233,7 +233,7 @@ "tags": [], "label": "indexName", "description": [], - "path": "x-pack/platform/packages/shared/logs_overview/src/utils/logs_source.ts", + "path": "x-pack/platform/packages/shared/logs-overview/src/utils/logs_source.ts", "deprecated": false, "trackAdoption": false }, @@ -244,7 +244,7 @@ "tags": [], "label": "timestampField", "description": [], - "path": "x-pack/platform/packages/shared/logs_overview/src/utils/logs_source.ts", + "path": "x-pack/platform/packages/shared/logs-overview/src/utils/logs_source.ts", "deprecated": false, "trackAdoption": false }, @@ -255,7 +255,7 @@ "tags": [], "label": "messageField", "description": [], - "path": "x-pack/platform/packages/shared/logs_overview/src/utils/logs_source.ts", + "path": "x-pack/platform/packages/shared/logs-overview/src/utils/logs_source.ts", "deprecated": false, "trackAdoption": false } @@ -269,7 +269,7 @@ "tags": [], "label": "LogsOverviewErrorContentProps", "description": [], - "path": "x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview_error_content.tsx", + "path": "x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview_error_content.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -283,7 +283,7 @@ "signature": [ "Error | undefined" ], - "path": "x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview_error_content.tsx", + "path": "x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview_error_content.tsx", "deprecated": false, "trackAdoption": false } @@ -297,7 +297,7 @@ "tags": [], "label": "LogsOverviewProps", "description": [], - "path": "x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview.tsx", + "path": "x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -338,7 +338,7 @@ }, "; }" ], - "path": "x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview.tsx", + "path": "x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview.tsx", "deprecated": false, "trackAdoption": false }, @@ -353,7 +353,7 @@ "QueryDslQueryContainer", "[] | undefined" ], - "path": "x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview.tsx", + "path": "x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview.tsx", "deprecated": false, "trackAdoption": false }, @@ -374,7 +374,7 @@ }, " | undefined" ], - "path": "x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview.tsx", + "path": "x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview.tsx", "deprecated": false, "trackAdoption": false }, @@ -388,7 +388,7 @@ "signature": [ "{ start: string; end: string; }" ], - "path": "x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview.tsx", + "path": "x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview.tsx", "deprecated": false, "trackAdoption": false } @@ -402,7 +402,7 @@ "tags": [], "label": "SharedSettingLogsSourceConfiguration", "description": [], - "path": "x-pack/platform/packages/shared/logs_overview/src/utils/logs_source.ts", + "path": "x-pack/platform/packages/shared/logs-overview/src/utils/logs_source.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -416,7 +416,7 @@ "signature": [ "\"shared_setting\"" ], - "path": "x-pack/platform/packages/shared/logs_overview/src/utils/logs_source.ts", + "path": "x-pack/platform/packages/shared/logs-overview/src/utils/logs_source.ts", "deprecated": false, "trackAdoption": false }, @@ -430,7 +430,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/platform/packages/shared/logs_overview/src/utils/logs_source.ts", + "path": "x-pack/platform/packages/shared/logs-overview/src/utils/logs_source.ts", "deprecated": false, "trackAdoption": false }, @@ -444,7 +444,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/platform/packages/shared/logs_overview/src/utils/logs_source.ts", + "path": "x-pack/platform/packages/shared/logs-overview/src/utils/logs_source.ts", "deprecated": false, "trackAdoption": false } @@ -491,7 +491,7 @@ }, "; }" ], - "path": "x-pack/platform/packages/shared/logs_overview/src/components/logs_overview/logs_overview.tsx", + "path": "x-pack/platform/packages/shared/logs-overview/src/components/logs_overview/logs_overview.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -528,7 +528,7 @@ "text": "DataViewLogsSourceConfiguration" } ], - "path": "x-pack/platform/packages/shared/logs_overview/src/utils/logs_source.ts", + "path": "x-pack/platform/packages/shared/logs-overview/src/utils/logs_source.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_logs_overview.mdx b/api_docs/kbn_logs_overview.mdx index fca69e91b4589..1393f81ad32d1 100644 --- a/api_docs/kbn_logs_overview.mdx +++ b/api_docs/kbn_logs_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logs-overview title: "@kbn/logs-overview" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logs-overview plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logs-overview'] --- import kbnLogsOverviewObj from './kbn_logs_overview.devdocs.json'; diff --git a/api_docs/kbn_managed_content_badge.mdx b/api_docs/kbn_managed_content_badge.mdx index 1f3b8c78d0c9d..8aa43dfe3d79e 100644 --- a/api_docs/kbn_managed_content_badge.mdx +++ b/api_docs/kbn_managed_content_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-content-badge title: "@kbn/managed-content-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-content-badge plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-content-badge'] --- import kbnManagedContentBadgeObj from './kbn_managed_content_badge.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index 95e6f5ac88cc7..f34b18b45c362 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index 7b11a0773b73d..4372e6ef1870c 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 4b53ac7045fb8..849269ca126bd 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index bcb3887919068..2c54c29c10d5d 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index 72aa540e911fe..8a2e2a66eb51a 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index c6e4a00b1a850..348f501f0d1bd 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index ac3d9b235d8bc..71e072513ad3e 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index 69add98f1f8f4..ce782b2a1ea1f 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index 1f3d0cdabf0de..75080a0170ac3 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 3a683345a51d1..87190f7585e40 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index 6cef487f3ada2..fe7792453b372 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index 784bdb2333f13..4011e4fdd2bb8 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 5e5467b0cde9f..dff628bd2ced7 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_manifest.mdx b/api_docs/kbn_manifest.mdx index c031c2427d5e7..c4369f5fd1c83 100644 --- a/api_docs/kbn_manifest.mdx +++ b/api_docs/kbn_manifest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-manifest title: "@kbn/manifest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/manifest plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/manifest'] --- import kbnManifestObj from './kbn_manifest.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 42f6f0560b3e0..d894498a004b8 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx index a6640d2f93e63..07e7e463846f2 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index 98343536bba55..be7588fc10219 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index a303d947744e8..8d03eb247cc9e 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_cancellable_search.mdx b/api_docs/kbn_ml_cancellable_search.mdx index 97bb672f4027f..73d72d7b8f012 100644 --- a/api_docs/kbn_ml_cancellable_search.mdx +++ b/api_docs/kbn_ml_cancellable_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-cancellable-search title: "@kbn/ml-cancellable-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-cancellable-search plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-cancellable-search'] --- import kbnMlCancellableSearchObj from './kbn_ml_cancellable_search.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 131ad54869de0..27a4f307c1de0 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index 7c162c5f323a3..94844c8ec1f13 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index bf8ac2475a65f..3e01775390b36 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils'] --- import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx index 55b778e0fb06d..606e4423c6cef 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid'] --- import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index 6ecf05ffb5c8f..893501d8d7036 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx index c2607a9270690..7a905508f8ade 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils'] --- import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx index fb9b00a9bca9d..54170a4449d17 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_field_stats_flyout.mdx b/api_docs/kbn_ml_field_stats_flyout.mdx index 8e08e68e24938..c7d7b7b754a15 100644 --- a/api_docs/kbn_ml_field_stats_flyout.mdx +++ b/api_docs/kbn_ml_field_stats_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-field-stats-flyout title: "@kbn/ml-field-stats-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-field-stats-flyout plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-field-stats-flyout'] --- import kbnMlFieldStatsFlyoutObj from './kbn_ml_field_stats_flyout.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx index fc1279263c8b9..c24212c9d22dc 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] --- import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index 1518eb6575ad6..d8a2c7cdcfc64 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined'] --- import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index 868de594c40a2..201ad396d306c 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index 747a87403900b..572b799922a5c 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage'] --- import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json'; diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx index e25b7211f9434..c7454ebf5b0d4 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property'] --- import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json'; diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx index b7b2b5ef3049f..cc94df8c9326c 100644 --- a/api_docs/kbn_ml_number_utils.mdx +++ b/api_docs/kbn_ml_number_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils title: "@kbn/ml-number-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-number-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_parse_interval.mdx b/api_docs/kbn_ml_parse_interval.mdx index 505456abfe747..606a6628d3de3 100644 --- a/api_docs/kbn_ml_parse_interval.mdx +++ b/api_docs/kbn_ml_parse_interval.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-parse-interval title: "@kbn/ml-parse-interval" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-parse-interval plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-parse-interval'] --- import kbnMlParseIntervalObj from './kbn_ml_parse_interval.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index d8385b4d663ad..6a36ea22d4c1a 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils'] --- import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx index c808c2474beaa..3c9a522eab7bf 100644 --- a/api_docs/kbn_ml_random_sampler_utils.mdx +++ b/api_docs/kbn_ml_random_sampler_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils title: "@kbn/ml-random-sampler-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-random-sampler-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils'] --- import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx index 8d328cc419db5..2675ef034785d 100644 --- a/api_docs/kbn_ml_route_utils.mdx +++ b/api_docs/kbn_ml_route_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils title: "@kbn/ml-route-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-route-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils'] --- import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx index 83b20e11d0f76..279c42070ec0d 100644 --- a/api_docs/kbn_ml_runtime_field_utils.mdx +++ b/api_docs/kbn_ml_runtime_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils title: "@kbn/ml-runtime-field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-runtime-field-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils'] --- import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index fe1d28f9c9495..7d7f38b6800e2 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_time_buckets.mdx b/api_docs/kbn_ml_time_buckets.mdx index 6f87a577d7f25..5dc38e9fbb94a 100644 --- a/api_docs/kbn_ml_time_buckets.mdx +++ b/api_docs/kbn_ml_time_buckets.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-time-buckets title: "@kbn/ml-time-buckets" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-time-buckets plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-time-buckets'] --- import kbnMlTimeBucketsObj from './kbn_ml_time_buckets.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index 922af1b0f088c..60741a5925300 100644 --- a/api_docs/kbn_ml_trained_models_utils.mdx +++ b/api_docs/kbn_ml_trained_models_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils title: "@kbn/ml-trained-models-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-trained-models-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index 7abde393cfaa9..26eb22964faaa 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 1b74a79833209..3b06c1847d1cc 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_ml_validators.mdx b/api_docs/kbn_ml_validators.mdx index b746c47d31a1a..208cb381caedd 100644 --- a/api_docs/kbn_ml_validators.mdx +++ b/api_docs/kbn_ml_validators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-validators title: "@kbn/ml-validators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-validators plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-validators'] --- import kbnMlValidatorsObj from './kbn_ml_validators.devdocs.json'; diff --git a/api_docs/kbn_mock_idp_utils.mdx b/api_docs/kbn_mock_idp_utils.mdx index 2789602a12ec1..cb17fa998bd5f 100644 --- a/api_docs/kbn_mock_idp_utils.mdx +++ b/api_docs/kbn_mock_idp_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mock-idp-utils title: "@kbn/mock-idp-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mock-idp-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mock-idp-utils'] --- import kbnMockIdpUtilsObj from './kbn_mock_idp_utils.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 3c8ed37935458..e2e10e76d3fca 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_utils.mdx b/api_docs/kbn_object_utils.mdx index e0d2694ba3109..7d16dc47b91d6 100644 --- a/api_docs/kbn_object_utils.mdx +++ b/api_docs/kbn_object_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-utils title: "@kbn/object-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-utils'] --- import kbnObjectUtilsObj from './kbn_object_utils.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 35c376fd20f81..600aac297fe13 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_object_versioning_utils.mdx b/api_docs/kbn_object_versioning_utils.mdx index ee7fccc3def6e..919fa1bc92afe 100644 --- a/api_docs/kbn_object_versioning_utils.mdx +++ b/api_docs/kbn_object_versioning_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning-utils title: "@kbn/object-versioning-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning-utils'] --- import kbnObjectVersioningUtilsObj from './kbn_object_versioning_utils.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.devdocs.json b/api_docs/kbn_observability_alert_details.devdocs.json index 7cdb8e6842f9c..b739c8fd9b430 100644 --- a/api_docs/kbn_observability_alert_details.devdocs.json +++ b/api_docs/kbn_observability_alert_details.devdocs.json @@ -29,7 +29,7 @@ "signature": [ "({ alertStart, alertEnd, color, id }: Props) => React.JSX.Element" ], - "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_active_time_range_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert-details/src/components/alert_active_time_range_annotation.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -43,7 +43,7 @@ "signature": [ "Props" ], - "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_active_time_range_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert-details/src/components/alert_active_time_range_annotation.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -62,7 +62,7 @@ "signature": [ "({ alertStart, color, dateFormat, id }: Props) => React.JSX.Element" ], - "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert-details/src/components/alert_annotation.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -76,7 +76,7 @@ "signature": [ "Props" ], - "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert-details/src/components/alert_annotation.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -95,7 +95,7 @@ "signature": [ "({ threshold, color, id }: Props) => React.JSX.Element" ], - "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert-details/src/components/alert_threshold_annotation.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -109,7 +109,7 @@ "signature": [ "Props" ], - "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_annotation.tsx", + "path": "x-pack/solutions/observability/packages/alert-details/src/components/alert_threshold_annotation.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -128,7 +128,7 @@ "signature": [ "({ color, id, threshold }: Props) => React.JSX.Element" ], - "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_time_range_rect.tsx", + "path": "x-pack/solutions/observability/packages/alert-details/src/components/alert_threshold_time_range_rect.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -142,7 +142,7 @@ "signature": [ "Props" ], - "path": "x-pack/solutions/observability/packages/alert_details/src/components/alert_threshold_time_range_rect.tsx", + "path": "x-pack/solutions/observability/packages/alert-details/src/components/alert_threshold_time_range_rect.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -164,7 +164,7 @@ ") => ", "UseAlertsHistory" ], - "path": "x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.ts", + "path": "x-pack/solutions/observability/packages/alert-details/src/hooks/use_alerts_history.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -178,7 +178,7 @@ "signature": [ "Props" ], - "path": "x-pack/solutions/observability/packages/alert_details/src/hooks/use_alerts_history.ts", + "path": "x-pack/solutions/observability/packages/alert-details/src/hooks/use_alerts_history.ts", "deprecated": false, "trackAdoption": false, "isRequired": true diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index 38c57cdb4474e..2c17ded844a90 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.devdocs.json b/api_docs/kbn_observability_alerting_test_data.devdocs.json index 94fab28a7f008..e15d599227cc8 100644 --- a/api_docs/kbn_observability_alerting_test_data.devdocs.json +++ b/api_docs/kbn_observability_alerting_test_data.devdocs.json @@ -31,7 +31,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_error_count_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_apm_error_count_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -45,7 +45,7 @@ "signature": [ "string" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_error_count_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_apm_error_count_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -66,7 +66,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_apm_failed_transaction_rate_rule.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -80,7 +80,7 @@ "signature": [ "string" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_apm_failed_transaction_rate_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_apm_failed_transaction_rate_rule.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -101,7 +101,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -115,7 +115,7 @@ "signature": [ "string" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -130,7 +130,7 @@ "signature": [ "string" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -142,7 +142,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -156,7 +156,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false }, @@ -170,7 +170,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false }, @@ -184,7 +184,7 @@ "signature": [ "{ criteria: any[]; groupBy?: string[] | undefined; searchConfiguration: { query: { query?: string | undefined; }; }; } | undefined" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_custom_threshold_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_custom_threshold_rule.ts", "deprecated": false, "trackAdoption": false } @@ -206,7 +206,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_data_view.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -217,7 +217,7 @@ "tags": [], "label": "{\n indexPattern,\n id,\n}", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_data_view.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -228,7 +228,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_data_view.ts", "deprecated": false, "trackAdoption": false }, @@ -239,7 +239,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_data_view.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_data_view.ts", "deprecated": false, "trackAdoption": false } @@ -261,7 +261,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_index_connector.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_index_connector.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -280,7 +280,7 @@ "AxiosResponse", ">" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_rule.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -294,7 +294,7 @@ "signature": [ "any" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/create_rule.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/create_rule.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -313,7 +313,7 @@ "signature": [ "() => Promise" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/run.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/run.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -332,7 +332,7 @@ "tags": [], "label": "scenario1", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -343,7 +343,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -354,7 +354,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false }, @@ -365,7 +365,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false }, @@ -376,7 +376,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false } @@ -389,7 +389,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -400,7 +400,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false }, @@ -411,7 +411,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false }, @@ -422,7 +422,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -446,7 +446,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false }, @@ -457,7 +457,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -468,7 +468,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -479,7 +479,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count.ts", "deprecated": false, "trackAdoption": false } @@ -501,7 +501,7 @@ "tags": [], "label": "scenario2", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -512,7 +512,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -523,7 +523,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -534,7 +534,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -545,7 +545,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false } @@ -558,7 +558,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -569,7 +569,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -580,7 +580,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -591,7 +591,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -615,7 +615,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -629,7 +629,7 @@ "signature": [ "string[]" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -640,7 +640,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -651,7 +651,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -662,7 +662,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_groupby.ts", "deprecated": false, "trackAdoption": false } @@ -684,7 +684,7 @@ "tags": [], "label": "scenario3", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -695,7 +695,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -706,7 +706,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -717,7 +717,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -728,7 +728,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false } @@ -741,7 +741,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -752,7 +752,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -763,7 +763,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -774,7 +774,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -798,7 +798,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -809,7 +809,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -820,7 +820,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -831,7 +831,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_log_count_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_log_count_nodata.ts", "deprecated": false, "trackAdoption": false } @@ -853,7 +853,7 @@ "tags": [], "label": "scenario4", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -864,7 +864,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -875,7 +875,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false }, @@ -886,7 +886,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false }, @@ -897,7 +897,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false } @@ -910,7 +910,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -921,7 +921,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false }, @@ -932,7 +932,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false }, @@ -943,7 +943,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -967,7 +967,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false }, @@ -978,7 +978,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -989,7 +989,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1000,7 +1000,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg.ts", "deprecated": false, "trackAdoption": false } @@ -1022,7 +1022,7 @@ "tags": [], "label": "scenario5", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1033,7 +1033,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1044,7 +1044,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1055,7 +1055,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1066,7 +1066,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false } @@ -1079,7 +1079,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1090,7 +1090,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1101,7 +1101,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1112,7 +1112,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1136,7 +1136,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1150,7 +1150,7 @@ "signature": [ "string[]" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false }, @@ -1161,7 +1161,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1172,7 +1172,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1183,7 +1183,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_groupby.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_groupby.ts", "deprecated": false, "trackAdoption": false } @@ -1205,7 +1205,7 @@ "tags": [], "label": "scenario6", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1216,7 +1216,7 @@ "tags": [], "label": "dataView", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1227,7 +1227,7 @@ "tags": [], "label": "indexPattern", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -1238,7 +1238,7 @@ "tags": [], "label": "id", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -1249,7 +1249,7 @@ "tags": [], "label": "shouldCreate", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false } @@ -1262,7 +1262,7 @@ "tags": [], "label": "ruleParams", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1273,7 +1273,7 @@ "tags": [], "label": "consumer", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -1284,7 +1284,7 @@ "tags": [], "label": "name", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -1295,7 +1295,7 @@ "tags": [], "label": "params", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1319,7 +1319,7 @@ "Aggregators", "; }[]; }[]" ], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false }, @@ -1330,7 +1330,7 @@ "tags": [], "label": "searchConfiguration", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1341,7 +1341,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -1352,7 +1352,7 @@ "tags": [], "label": "query", "description": [], - "path": "x-pack/solutions/observability/packages/alerting_test_data/src/scenarios/custom_threshold_metric_avg_nodata.ts", + "path": "x-pack/solutions/observability/packages/alerting-test-data/src/scenarios/custom_threshold_metric_avg_nodata.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index 16d50a8ae88b7..3d677e4acee99 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.devdocs.json b/api_docs/kbn_observability_get_padded_alert_time_range_util.devdocs.json index 84d4a7404387e..26a995e13f26c 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.devdocs.json +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.devdocs.json @@ -30,7 +30,7 @@ "(alertStart: string, alertEnd?: string | undefined, lookBackWindow?: { size: number; unit: \"m\" | \"s\" | \"d\" | \"h\"; } | undefined) => ", "TimeRange" ], - "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get-padded-alert-time-range-util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -44,7 +44,7 @@ "signature": [ "string" ], - "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get-padded-alert-time-range-util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -59,7 +59,7 @@ "signature": [ "string | undefined" ], - "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get-padded-alert-time-range-util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -71,7 +71,7 @@ "tags": [], "label": "lookBackWindow", "description": [], - "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get-padded-alert-time-range-util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -82,7 +82,7 @@ "tags": [], "label": "size", "description": [], - "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get-padded-alert-time-range-util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false }, @@ -96,7 +96,7 @@ "signature": [ "\"m\" | \"s\" | \"d\" | \"h\"" ], - "path": "x-pack/solutions/observability/packages/get_padded_alert_time_range_util/src/get_padded_alert_time_range.ts", + "path": "x-pack/solutions/observability/packages/get-padded-alert-time-range-util/src/get_padded_alert_time_range.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index 537de448e5e52..8961a5a9ee325 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_observability_synthetics_test_data.mdx b/api_docs/kbn_observability_synthetics_test_data.mdx index 5936dd1ece4cf..01c6957bb86a0 100644 --- a/api_docs/kbn_observability_synthetics_test_data.mdx +++ b/api_docs/kbn_observability_synthetics_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-synthetics-test-data title: "@kbn/observability-synthetics-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-synthetics-test-data plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-synthetics-test-data'] --- import kbnObservabilitySyntheticsTestDataObj from './kbn_observability_synthetics_test_data.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index 8cc6c469dee34..99d3b2792452f 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index 13afeace106ef..257ccac7abf4b 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 5c491855b5b57..77715d2469118 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index 8b2d90bf1cb2f..99d95d1534a1d 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index efc506c882be6..351e5d479713a 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_palettes.mdx b/api_docs/kbn_palettes.mdx index 6efd41f13d88a..195d8bd33de52 100644 --- a/api_docs/kbn_palettes.mdx +++ b/api_docs/kbn_palettes.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-palettes title: "@kbn/palettes" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/palettes plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/palettes'] --- import kbnPalettesObj from './kbn_palettes.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index f9f9d8b0e7cc8..396f589fbecf0 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 63ffc2b6926d0..d03f7226de5a0 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_check.mdx b/api_docs/kbn_plugin_check.mdx index 307e8dfb3be59..771ec31b99e29 100644 --- a/api_docs/kbn_plugin_check.mdx +++ b/api_docs/kbn_plugin_check.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-check title: "@kbn/plugin-check" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-check plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-check'] --- import kbnPluginCheckObj from './kbn_plugin_check.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 7df77157b2e9f..4d36a6cccd30e 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index 82331dc97aee1..7c3c05d9d573f 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_presentation_containers.mdx b/api_docs/kbn_presentation_containers.mdx index 011bd5c0ab3e6..43c3a429af995 100644 --- a/api_docs/kbn_presentation_containers.mdx +++ b/api_docs/kbn_presentation_containers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-containers title: "@kbn/presentation-containers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-containers plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-containers'] --- import kbnPresentationContainersObj from './kbn_presentation_containers.devdocs.json'; diff --git a/api_docs/kbn_presentation_publishing.mdx b/api_docs/kbn_presentation_publishing.mdx index 636b5d41eaea8..2755ad81fddf9 100644 --- a/api_docs/kbn_presentation_publishing.mdx +++ b/api_docs/kbn_presentation_publishing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-publishing title: "@kbn/presentation-publishing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-publishing plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-publishing'] --- import kbnPresentationPublishingObj from './kbn_presentation_publishing.devdocs.json'; diff --git a/api_docs/kbn_product_doc_artifact_builder.mdx b/api_docs/kbn_product_doc_artifact_builder.mdx index 44665ed91f341..88df60c5df3b9 100644 --- a/api_docs/kbn_product_doc_artifact_builder.mdx +++ b/api_docs/kbn_product_doc_artifact_builder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-product-doc-artifact-builder title: "@kbn/product-doc-artifact-builder" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/product-doc-artifact-builder plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/product-doc-artifact-builder'] --- import kbnProductDocArtifactBuilderObj from './kbn_product_doc_artifact_builder.devdocs.json'; diff --git a/api_docs/kbn_product_doc_common.mdx b/api_docs/kbn_product_doc_common.mdx index 7eeab19b13f90..672d5204d5274 100644 --- a/api_docs/kbn_product_doc_common.mdx +++ b/api_docs/kbn_product_doc_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-product-doc-common title: "@kbn/product-doc-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/product-doc-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/product-doc-common'] --- import kbnProductDocCommonObj from './kbn_product_doc_common.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index e383da109b5fd..78a61268db1fa 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 67489ff83ed9d..009acc99d921a 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling'] --- import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 1edeecafc8444..31f0ce17a7cf8 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_hooks.mdx b/api_docs/kbn_react_hooks.mdx index 0bd5564f2dac0..18150dac88855 100644 --- a/api_docs/kbn_react_hooks.mdx +++ b/api_docs/kbn_react_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-hooks title: "@kbn/react-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-hooks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-hooks'] --- import kbnReactHooksObj from './kbn_react_hooks.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index 3ad9e5c920843..0360fa591b9d8 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index 745cdbb88d582..2d34271dfa1e1 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index fbea1e4e5bc9a..0bb08198f54c0 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index b42985aec0074..bc02fd4d043fd 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index c33d50d934fe4..b66cf4996d940 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.devdocs.json b/api_docs/kbn_react_kibana_mount.devdocs.json index 7180d237907d4..7f0bddd344728 100644 --- a/api_docs/kbn_react_kibana_mount.devdocs.json +++ b/api_docs/kbn_react_kibana_mount.devdocs.json @@ -178,11 +178,12 @@ "signature": [ "(mountPoint: ", "MountPoint", - " | undefined) => void" + " | undefined) => void | UnsetMountPointFn" ], "path": "src/platform/packages/shared/react/kibana_mount/mount_point_portal.tsx", "deprecated": false, "trackAdoption": false, + "returnComment": [], "children": [ { "parentPluginId": "@kbn/react-kibana-mount", @@ -197,11 +198,9 @@ ], "path": "src/platform/packages/shared/react/kibana_mount/mount_point_portal.tsx", "deprecated": false, - "trackAdoption": false, - "isRequired": false + "trackAdoption": false } - ], - "returnComment": [] + ] }, { "parentPluginId": "@kbn/react-kibana-mount", diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index 05fe05bd095e3..45a6e69bc165e 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_react_mute_legacy_root_warning.mdx b/api_docs/kbn_react_mute_legacy_root_warning.mdx index b4fbbe300539d..8ad8db1cb6ebd 100644 --- a/api_docs/kbn_react_mute_legacy_root_warning.mdx +++ b/api_docs/kbn_react_mute_legacy_root_warning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-mute-legacy-root-warning title: "@kbn/react-mute-legacy-root-warning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-mute-legacy-root-warning plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-mute-legacy-root-warning'] --- import kbnReactMuteLegacyRootWarningObj from './kbn_react_mute_legacy_root_warning.devdocs.json'; diff --git a/api_docs/kbn_recently_accessed.mdx b/api_docs/kbn_recently_accessed.mdx index a76f2c04f4eea..f67d28c6f0e5c 100644 --- a/api_docs/kbn_recently_accessed.mdx +++ b/api_docs/kbn_recently_accessed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-recently-accessed title: "@kbn/recently-accessed" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/recently-accessed plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/recently-accessed'] --- import kbnRecentlyAccessedObj from './kbn_recently_accessed.devdocs.json'; diff --git a/api_docs/kbn_relocate.mdx b/api_docs/kbn_relocate.mdx index 2e99cc082e943..cc792f1e631c6 100644 --- a/api_docs/kbn_relocate.mdx +++ b/api_docs/kbn_relocate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-relocate title: "@kbn/relocate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/relocate plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/relocate'] --- import kbnRelocateObj from './kbn_relocate.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index d6abcd27520fa..f62d4327df319 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index dee79d6875406..2ce4e6a079f05 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index 06e81cdcd424f..42971346457dc 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index 73b125e41b357..8904135d06866 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx index 36d8002a6b377..736ce0a846b92 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_csv_share_panel.mdx b/api_docs/kbn_reporting_csv_share_panel.mdx index 0cd8891075e48..5f4409f0152e3 100644 --- a/api_docs/kbn_reporting_csv_share_panel.mdx +++ b/api_docs/kbn_reporting_csv_share_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-csv-share-panel title: "@kbn/reporting-csv-share-panel" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-csv-share-panel plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-csv-share-panel'] --- import kbnReportingCsvSharePanelObj from './kbn_reporting_csv_share_panel.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index acc11e5acfadb..166f367b55f3f 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index 066b25454f5af..3935df6a8f0d1 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index 8b044cd1abd12..34956706f1ebd 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index 8bbe89702570f..3986237b151ff 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index 4e8b37d8c4586..dfc70638c23e4 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index 88020a55c07fa..554da4467ad1f 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index 3166af6f4f65f..adb0311e32e73 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index 1c2fcfbb2b2fd..1cb84624083e8 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index a9b07afaae331..cd05cb7bcba6f 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index e4c7bf02e9441..d557208ae623b 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_response_ops_alerts_fields_browser.devdocs.json b/api_docs/kbn_response_ops_alerts_fields_browser.devdocs.json index 64b2ae76abae9..154b9d7afa31f 100644 --- a/api_docs/kbn_response_ops_alerts_fields_browser.devdocs.json +++ b/api_docs/kbn_response_ops_alerts_fields_browser.devdocs.json @@ -21,7 +21,7 @@ }, ">" ], - "path": "packages/response-ops/alerts_fields_browser/components/field_browser/field_browser.tsx", + "path": "src/platform/packages/shared/response-ops/alerts-fields-browser/components/field_browser/field_browser.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -52,7 +52,7 @@ "tags": [], "label": "FieldBrowserOptions", "description": [], - "path": "packages/response-ops/alerts_fields_browser/types.ts", + "path": "src/platform/packages/shared/response-ops/alerts-fields-browser/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -67,7 +67,7 @@ "CreateFieldComponent", " | undefined" ], - "path": "packages/response-ops/alerts_fields_browser/types.ts", + "path": "src/platform/packages/shared/response-ops/alerts-fields-browser/types.ts", "deprecated": false, "trackAdoption": false }, @@ -82,7 +82,7 @@ "GetFieldTableColumns", " | undefined" ], - "path": "packages/response-ops/alerts_fields_browser/types.ts", + "path": "src/platform/packages/shared/response-ops/alerts-fields-browser/types.ts", "deprecated": false, "trackAdoption": false }, @@ -98,7 +98,7 @@ "signature": [ "string[] | undefined" ], - "path": "packages/response-ops/alerts_fields_browser/types.ts", + "path": "src/platform/packages/shared/response-ops/alerts-fields-browser/types.ts", "deprecated": false, "trackAdoption": false } @@ -112,7 +112,7 @@ "tags": [], "label": "FieldBrowserProps", "description": [], - "path": "packages/response-ops/alerts_fields_browser/types.ts", + "path": "src/platform/packages/shared/response-ops/alerts-fields-browser/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -128,7 +128,7 @@ "signature": [ "string[]" ], - "path": "packages/response-ops/alerts_fields_browser/types.ts", + "path": "src/platform/packages/shared/response-ops/alerts-fields-browser/types.ts", "deprecated": false, "trackAdoption": false }, @@ -152,7 +152,7 @@ }, ">; }" ], - "path": "packages/response-ops/alerts_fields_browser/types.ts", + "path": "src/platform/packages/shared/response-ops/alerts-fields-browser/types.ts", "deprecated": false, "trackAdoption": false }, @@ -168,7 +168,7 @@ "signature": [ "boolean | undefined" ], - "path": "packages/response-ops/alerts_fields_browser/types.ts", + "path": "src/platform/packages/shared/response-ops/alerts-fields-browser/types.ts", "deprecated": false, "trackAdoption": false }, @@ -184,7 +184,7 @@ "signature": [ "() => void" ], - "path": "packages/response-ops/alerts_fields_browser/types.ts", + "path": "src/platform/packages/shared/response-ops/alerts-fields-browser/types.ts", "deprecated": false, "trackAdoption": false, "children": [], @@ -202,7 +202,7 @@ "signature": [ "(columnId: string) => void" ], - "path": "packages/response-ops/alerts_fields_browser/types.ts", + "path": "src/platform/packages/shared/response-ops/alerts-fields-browser/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -216,7 +216,7 @@ "signature": [ "string" ], - "path": "packages/response-ops/alerts_fields_browser/types.ts", + "path": "src/platform/packages/shared/response-ops/alerts-fields-browser/types.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -243,7 +243,7 @@ }, " | undefined" ], - "path": "packages/response-ops/alerts_fields_browser/types.ts", + "path": "src/platform/packages/shared/response-ops/alerts-fields-browser/types.ts", "deprecated": false, "trackAdoption": false }, @@ -259,7 +259,7 @@ "signature": [ "number | undefined" ], - "path": "packages/response-ops/alerts_fields_browser/types.ts", + "path": "src/platform/packages/shared/response-ops/alerts-fields-browser/types.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_response_ops_alerts_fields_browser.mdx b/api_docs/kbn_response_ops_alerts_fields_browser.mdx index 3e765ac683624..280946a406cd2 100644 --- a/api_docs/kbn_response_ops_alerts_fields_browser.mdx +++ b/api_docs/kbn_response_ops_alerts_fields_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-alerts-fields-browser title: "@kbn/response-ops-alerts-fields-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-alerts-fields-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-alerts-fields-browser'] --- import kbnResponseOpsAlertsFieldsBrowserObj from './kbn_response_ops_alerts_fields_browser.devdocs.json'; diff --git a/api_docs/kbn_response_ops_alerts_table.devdocs.json b/api_docs/kbn_response_ops_alerts_table.devdocs.json index a2dae782df2b3..77f2438f15255 100644 --- a/api_docs/kbn_response_ops_alerts_table.devdocs.json +++ b/api_docs/kbn_response_ops_alerts_table.devdocs.json @@ -21,7 +21,7 @@ "AlertsTableImperativeApi", ">) => React.ReactElement>" ], - "path": "packages/response-ops/alerts_table/components/alerts_table.tsx", + "path": "src/platform/packages/shared/response-ops/alerts-table/components/alerts_table.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -36,7 +36,7 @@ "signature": [ "P & React.RefAttributes" ], - "path": "packages/response-ops/alerts_table/utils/react.ts", + "path": "src/platform/packages/shared/response-ops/alerts-table/utils/react.ts", "deprecated": false, "trackAdoption": false } @@ -61,7 +61,7 @@ "AlertsTableImperativeApi", ">) => React.ReactElement>" ], - "path": "packages/response-ops/alerts_table/components/alerts_table.tsx", + "path": "src/platform/packages/shared/response-ops/alerts-table/components/alerts_table.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -76,7 +76,7 @@ "signature": [ "P & React.RefAttributes" ], - "path": "packages/response-ops/alerts_table/utils/react.ts", + "path": "src/platform/packages/shared/response-ops/alerts-table/utils/react.ts", "deprecated": false, "trackAdoption": false } @@ -103,7 +103,7 @@ "AlertsTableImperativeApi", ">) => React.ReactElement>" ], - "path": "packages/response-ops/alerts_table/components/alerts_table.tsx", + "path": "src/platform/packages/shared/response-ops/alerts-table/components/alerts_table.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -118,7 +118,7 @@ "signature": [ "P & React.RefAttributes" ], - "path": "packages/response-ops/alerts_table/utils/react.ts", + "path": "src/platform/packages/shared/response-ops/alerts-table/utils/react.ts", "deprecated": false, "trackAdoption": false } @@ -141,7 +141,7 @@ "AlertsTableImperativeApi", ">) => React.ReactElement>" ], - "path": "packages/response-ops/alerts_table/components/alerts_table.tsx", + "path": "src/platform/packages/shared/response-ops/alerts-table/components/alerts_table.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -156,7 +156,7 @@ "signature": [ "P & React.RefAttributes" ], - "path": "packages/response-ops/alerts_table/utils/react.ts", + "path": "src/platform/packages/shared/response-ops/alerts-table/utils/react.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_response_ops_alerts_table.mdx b/api_docs/kbn_response_ops_alerts_table.mdx index 2bcba31844a43..65ea9eb9b269b 100644 --- a/api_docs/kbn_response_ops_alerts_table.mdx +++ b/api_docs/kbn_response_ops_alerts_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-alerts-table title: "@kbn/response-ops-alerts-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-alerts-table plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-alerts-table'] --- import kbnResponseOpsAlertsTableObj from './kbn_response_ops_alerts_table.devdocs.json'; diff --git a/api_docs/kbn_response_ops_rule_form.mdx b/api_docs/kbn_response_ops_rule_form.mdx index b78ac1b0d5904..5fa0cf0438bb7 100644 --- a/api_docs/kbn_response_ops_rule_form.mdx +++ b/api_docs/kbn_response_ops_rule_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-rule-form title: "@kbn/response-ops-rule-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-rule-form plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-rule-form'] --- import kbnResponseOpsRuleFormObj from './kbn_response_ops_rule_form.devdocs.json'; diff --git a/api_docs/kbn_response_ops_rule_params.mdx b/api_docs/kbn_response_ops_rule_params.mdx index 4ae28095fc3d0..5f5fa8789afde 100644 --- a/api_docs/kbn_response_ops_rule_params.mdx +++ b/api_docs/kbn_response_ops_rule_params.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-rule-params title: "@kbn/response-ops-rule-params" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-rule-params plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-rule-params'] --- import kbnResponseOpsRuleParamsObj from './kbn_response_ops_rule_params.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 2e125c2adc987..8f881f97e533f 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rollup.mdx b/api_docs/kbn_rollup.mdx index d2c7cdffafdf2..d3f01ad7ffd35 100644 --- a/api_docs/kbn_rollup.mdx +++ b/api_docs/kbn_rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rollup title: "@kbn/rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rollup plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rollup'] --- import kbnRollupObj from './kbn_rollup.devdocs.json'; diff --git a/api_docs/kbn_router_to_openapispec.mdx b/api_docs/kbn_router_to_openapispec.mdx index ffb3c41d06d3a..bca0201640a8c 100644 --- a/api_docs/kbn_router_to_openapispec.mdx +++ b/api_docs/kbn_router_to_openapispec.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-to-openapispec title: "@kbn/router-to-openapispec" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-to-openapispec plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-to-openapispec'] --- import kbnRouterToOpenapispecObj from './kbn_router_to_openapispec.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 868885c8e4c60..8e3bfc102ce44 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index 693eb3f6e473d..7f8ade84b8c19 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 918e9eb2b6a50..e8bdc51fef4ea 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx index 9c4c22adfe540..d3ec0929d8536 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_saved_search_component.mdx b/api_docs/kbn_saved_search_component.mdx index e144b932c0825..a4b435acc80aa 100644 --- a/api_docs/kbn_saved_search_component.mdx +++ b/api_docs/kbn_saved_search_component.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-search-component title: "@kbn/saved-search-component" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-search-component plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-search-component'] --- import kbnSavedSearchComponentObj from './kbn_saved_search_component.devdocs.json'; diff --git a/api_docs/kbn_scout.mdx b/api_docs/kbn_scout.mdx index 5b3604afedb31..5beb4d72cc20a 100644 --- a/api_docs/kbn_scout.mdx +++ b/api_docs/kbn_scout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout title: "@kbn/scout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout'] --- import kbnScoutObj from './kbn_scout.devdocs.json'; diff --git a/api_docs/kbn_scout_info.mdx b/api_docs/kbn_scout_info.mdx index ba4e20f5d0fc3..b5932ba85b551 100644 --- a/api_docs/kbn_scout_info.mdx +++ b/api_docs/kbn_scout_info.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-info title: "@kbn/scout-info" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-info plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-info'] --- import kbnScoutInfoObj from './kbn_scout_info.devdocs.json'; diff --git a/api_docs/kbn_scout_oblt.mdx b/api_docs/kbn_scout_oblt.mdx index 6c5dcdd75cd11..8ab2d012e2707 100644 --- a/api_docs/kbn_scout_oblt.mdx +++ b/api_docs/kbn_scout_oblt.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-oblt title: "@kbn/scout-oblt" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-oblt plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-oblt'] --- import kbnScoutObltObj from './kbn_scout_oblt.devdocs.json'; diff --git a/api_docs/kbn_scout_reporting.mdx b/api_docs/kbn_scout_reporting.mdx index 0cdee3fe7b62d..fa2ecce33e3f5 100644 --- a/api_docs/kbn_scout_reporting.mdx +++ b/api_docs/kbn_scout_reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-scout-reporting title: "@kbn/scout-reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/scout-reporting plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/scout-reporting'] --- import kbnScoutReportingObj from './kbn_scout_reporting.devdocs.json'; diff --git a/api_docs/kbn_screenshotting_server.mdx b/api_docs/kbn_screenshotting_server.mdx index 60b0de4264278..e714b4d7d835e 100644 --- a/api_docs/kbn_screenshotting_server.mdx +++ b/api_docs/kbn_screenshotting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-screenshotting-server title: "@kbn/screenshotting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/screenshotting-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/screenshotting-server'] --- import kbnScreenshottingServerObj from './kbn_screenshotting_server.devdocs.json'; diff --git a/api_docs/kbn_search_api_keys_components.mdx b/api_docs/kbn_search_api_keys_components.mdx index fa5ebbccb66ba..8eea44cfbc363 100644 --- a/api_docs/kbn_search_api_keys_components.mdx +++ b/api_docs/kbn_search_api_keys_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-keys-components title: "@kbn/search-api-keys-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-keys-components plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-keys-components'] --- import kbnSearchApiKeysComponentsObj from './kbn_search_api_keys_components.devdocs.json'; diff --git a/api_docs/kbn_search_api_keys_server.mdx b/api_docs/kbn_search_api_keys_server.mdx index 3ecf4db6b49b8..6ae30c81d0e09 100644 --- a/api_docs/kbn_search_api_keys_server.mdx +++ b/api_docs/kbn_search_api_keys_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-keys-server title: "@kbn/search-api-keys-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-keys-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-keys-server'] --- import kbnSearchApiKeysServerObj from './kbn_search_api_keys_server.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 8814cb9f8d9e3..9640ba78f31db 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index 8cf771fed69dc..99bc48c10f649 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index 1c74f5f585ba3..6f519d6f96c30 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index 9a34f1f092a31..5d10f6ed38da1 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index cae91b73eee7c..3eb2bf73313e0 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_search_shared_ui.devdocs.json b/api_docs/kbn_search_shared_ui.devdocs.json index e7c17245e296a..9947def2bd83a 100644 --- a/api_docs/kbn_search_shared_ui.devdocs.json +++ b/api_docs/kbn_search_shared_ui.devdocs.json @@ -69,72 +69,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "@kbn/search-shared-ui", - "id": "def-public.EuiIconPlugs", - "type": "Function", - "tags": [], - "label": "EuiIconPlugs", - "description": [], - "signature": [ - "({ title, titleId, ...props }: React.SVGProps & SVGRProps) => React.JSX.Element" - ], - "path": "x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconPlugs.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-shared-ui", - "id": "def-public.EuiIconPlugs.$1", - "type": "CompoundType", - "tags": [], - "label": "{ title, titleId, ...props }", - "description": [], - "signature": [ - "React.SVGProps & SVGRProps" - ], - "path": "x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconPlugs.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/search-shared-ui", - "id": "def-public.EuiIconWeb", - "type": "Function", - "tags": [], - "label": "EuiIconWeb", - "description": [], - "signature": [ - "({ title, titleId, ...props }: React.SVGProps & SVGRProps) => React.JSX.Element" - ], - "path": "x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconWeb.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-shared-ui", - "id": "def-public.EuiIconWeb.$1", - "type": "CompoundType", - "tags": [], - "label": "{ title, titleId, ...props }", - "description": [], - "signature": [ - "React.SVGProps & SVGRProps" - ], - "path": "x-pack/solutions/search/packages/shared-ui/src/icons/EuiIconWeb.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/search-shared-ui", "id": "def-public.FormInfoField", diff --git a/api_docs/kbn_search_shared_ui.mdx b/api_docs/kbn_search_shared_ui.mdx index 3da6136e012f3..ae628f8b4c336 100644 --- a/api_docs/kbn_search_shared_ui.mdx +++ b/api_docs/kbn_search_shared_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-shared-ui title: "@kbn/search-shared-ui" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-shared-ui plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-shared-ui'] --- import kbnSearchSharedUiObj from './kbn_search_shared_ui.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-ki | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 12 | 0 | 12 | 0 | +| 8 | 0 | 8 | 0 | ## Client diff --git a/api_docs/kbn_search_types.mdx b/api_docs/kbn_search_types.mdx index 37cbc865cf3d7..318dc9ae6e6c4 100644 --- a/api_docs/kbn_search_types.mdx +++ b/api_docs/kbn_search_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-types title: "@kbn/search-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-types'] --- import kbnSearchTypesObj from './kbn_search_types.devdocs.json'; diff --git a/api_docs/kbn_security_ai_prompts.mdx b/api_docs/kbn_security_ai_prompts.mdx index a78f16f12bb82..6545d035d808d 100644 --- a/api_docs/kbn_security_ai_prompts.mdx +++ b/api_docs/kbn_security_ai_prompts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-ai-prompts title: "@kbn/security-ai-prompts" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-ai-prompts plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-ai-prompts'] --- import kbnSecurityAiPromptsObj from './kbn_security_ai_prompts.devdocs.json'; diff --git a/api_docs/kbn_security_api_key_management.mdx b/api_docs/kbn_security_api_key_management.mdx index 32b0602f813ee..85bfeb1834240 100644 --- a/api_docs/kbn_security_api_key_management.mdx +++ b/api_docs/kbn_security_api_key_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-api-key-management title: "@kbn/security-api-key-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-api-key-management plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-api-key-management'] --- import kbnSecurityApiKeyManagementObj from './kbn_security_api_key_management.devdocs.json'; diff --git a/api_docs/kbn_security_authorization_core.mdx b/api_docs/kbn_security_authorization_core.mdx index 872e7e156c823..5722fefb1226a 100644 --- a/api_docs/kbn_security_authorization_core.mdx +++ b/api_docs/kbn_security_authorization_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-authorization-core title: "@kbn/security-authorization-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-authorization-core plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-authorization-core'] --- import kbnSecurityAuthorizationCoreObj from './kbn_security_authorization_core.devdocs.json'; diff --git a/api_docs/kbn_security_authorization_core_common.mdx b/api_docs/kbn_security_authorization_core_common.mdx index 16099c4c136cf..14a4b08318901 100644 --- a/api_docs/kbn_security_authorization_core_common.mdx +++ b/api_docs/kbn_security_authorization_core_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-authorization-core-common title: "@kbn/security-authorization-core-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-authorization-core-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-authorization-core-common'] --- import kbnSecurityAuthorizationCoreCommonObj from './kbn_security_authorization_core_common.devdocs.json'; diff --git a/api_docs/kbn_security_form_components.mdx b/api_docs/kbn_security_form_components.mdx index b280f481b0b92..47536e1d0cebe 100644 --- a/api_docs/kbn_security_form_components.mdx +++ b/api_docs/kbn_security_form_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-form-components title: "@kbn/security-form-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-form-components plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-form-components'] --- import kbnSecurityFormComponentsObj from './kbn_security_form_components.devdocs.json'; diff --git a/api_docs/kbn_security_hardening.mdx b/api_docs/kbn_security_hardening.mdx index 04fb2fbd65200..de57eccbcf9d4 100644 --- a/api_docs/kbn_security_hardening.mdx +++ b/api_docs/kbn_security_hardening.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-hardening title: "@kbn/security-hardening" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-hardening plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-hardening'] --- import kbnSecurityHardeningObj from './kbn_security_hardening.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index 989fcca329817..36f033c4c9010 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index 00f394b27d04e..172f5f6b3e76d 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index b9ec96b9dcd13..ed658b8997a86 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_role_management_model.mdx b/api_docs/kbn_security_role_management_model.mdx index abcebfe3aca41..5514d5b166332 100644 --- a/api_docs/kbn_security_role_management_model.mdx +++ b/api_docs/kbn_security_role_management_model.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-role-management-model title: "@kbn/security-role-management-model" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-role-management-model plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-role-management-model'] --- import kbnSecurityRoleManagementModelObj from './kbn_security_role_management_model.devdocs.json'; diff --git a/api_docs/kbn_security_solution_connectors.mdx b/api_docs/kbn_security_solution_connectors.mdx index 32ba1fccc2463..4ed460192fd77 100644 --- a/api_docs/kbn_security_solution_connectors.mdx +++ b/api_docs/kbn_security_solution_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-connectors title: "@kbn/security-solution-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-connectors plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-connectors'] --- import kbnSecuritySolutionConnectorsObj from './kbn_security_solution_connectors.devdocs.json'; diff --git a/api_docs/kbn_security_solution_distribution_bar.mdx b/api_docs/kbn_security_solution_distribution_bar.mdx index f37a7ed997e8e..d5f2c95742087 100644 --- a/api_docs/kbn_security_solution_distribution_bar.mdx +++ b/api_docs/kbn_security_solution_distribution_bar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-distribution-bar title: "@kbn/security-solution-distribution-bar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-distribution-bar plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-distribution-bar'] --- import kbnSecuritySolutionDistributionBarObj from './kbn_security_solution_distribution_bar.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index ec1e8f3b318ee..36917d1cf3b92 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 955e90e9b7356..a668d855e99a5 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index 9c30257a60515..0627fbcc1f91c 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index b638ebd8670a4..d225eb48bedba 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_security_ui_components.mdx b/api_docs/kbn_security_ui_components.mdx index 394779575c385..f3b11a02a9b55 100644 --- a/api_docs/kbn_security_ui_components.mdx +++ b/api_docs/kbn_security_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-ui-components title: "@kbn/security-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-ui-components plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-ui-components'] --- import kbnSecurityUiComponentsObj from './kbn_security_ui_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 2f46b4c453d4f..8204fc0c898fd 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx index dbee910f62565..4620786926a23 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 564127ef41666..766239a8891c3 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index e5c303f81b34d..93617d2d8309c 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index a33e142a32afd..09a3cfe44b884 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 3d1a36c7a4c0d..f204d347fddcc 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index 6e85a5f82ce1a..92fc8c35844e9 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,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 description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 81e1003ed08f9..32201a7407519 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,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 description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index 3e1b38407dc15..087ced1dc16fe 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index 9d6413b2baeec..452ed621e1648 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index 3f635bf5a3437..edd2287ab6342 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index de015c15ac96b..1f66623a69074 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index 900f082f8ce59..f43d8606396ed 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index 53e0e5fe2505a..766340ce72c35 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index e4b96ab8a26d7..0d971e3072b0b 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 95af49824a623..70cfefeac37cd 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index dedcbbbcaed21..64b7ec1b1471c 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index c335f1c1f542c..ec737db292234 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index e0f5936964006..508d6e1bb1831 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_client.mdx b/api_docs/kbn_server_route_repository_client.mdx index a8455d116d781..e6dad88d818b0 100644 --- a/api_docs/kbn_server_route_repository_client.mdx +++ b/api_docs/kbn_server_route_repository_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-client title: "@kbn/server-route-repository-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-client plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-client'] --- import kbnServerRouteRepositoryClientObj from './kbn_server_route_repository_client.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_utils.mdx b/api_docs/kbn_server_route_repository_utils.mdx index e2f0af1bd06fa..667d4016101eb 100644 --- a/api_docs/kbn_server_route_repository_utils.mdx +++ b/api_docs/kbn_server_route_repository_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-utils title: "@kbn/server-route-repository-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-utils'] --- import kbnServerRouteRepositoryUtilsObj from './kbn_server_route_repository_utils.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index 72faad1243f19..31b3f6107f285 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index 27ec9723385eb..c38159390ade7 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index 7cfc871454bf4..bb446bc50dd39 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index 2e362d6f89a74..46be2a25b6ced 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 52f55319d3fc5..3cfdf28fc90e1 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config'] --- import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index 8049b54f7455d..cd44e12ae79ce 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index 408645a1ad92b..5a863a7703aa8 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index def96769c7f03..cead83a3687d3 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index acffa67e2bdaa..53e496165329e 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index 25e9ed0736ae5..e0fcf1e8564cd 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,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 description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index 0e81e34c2f30e..96d33ccc3b0d0 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx index c61af036e12ff..aec031a29e0f9 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index b3231cef0ae3e..36c8bcbc71b9e 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index d033f9f8e5b63..20b10ca985f50 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index 7c4759ffd6dd2..31c6b445d753a 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index ed19274ee041a..f0c5d2bbeb830 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index 46842446d6b2c..fa48f7e3a4879 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index c19bc0da9038a..bb87a758c1e8b 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index 4a43fb3fd4f70..1b4ede943376f 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types'] --- import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index 9a2674fd02091..2868412949ee0 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index 529b5c0e700ab..22b820c33eb6a 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index bdeeeda14b9e5..6cd15536dc241 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index 118731d7f30b7..1253681f025c9 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index 6505072303723..9ead7a150833c 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index ecbe6fd768a97..241535a463dcf 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json'; 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 b57f36b01b492..6717b27027c8b 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,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 description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index 1d37707610763..8510ca2d5fca2 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; 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 1abf9450f36ef..866d8b5ec3853 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,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 description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index bae2c9b2cd6b4..3dfa6aaa1fed2 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index 1feb6b4765b00..fc188c1c988aa 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index f6cae664f7d20..5717913b0afd4 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index 7410d5394e9c9..e6aac1a2c90d1 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index e02fc76647072..8b3987071a260 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index d4bee1cb69744..16932575fb136 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index b93a0cad2c937..642cbf89b9da5 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index 793910b621951..4f68696bdd3b1 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; 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 577e1d927c22b..b007cdb7cd17d 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,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 description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index 8f1166d2f1c2a..3d3d68eac3082 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index 0f3d0f3ce91db..306bd9c0da00a 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index 09293f29e8d70..486be77a53e80 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index 3cbc6074ed711..01fe5260a823e 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index 550cff552494e..a463326c68e2d 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 0cb4ac2e7bc54..2b6c23b5b4e97 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_tabbed_modal.mdx b/api_docs/kbn_shared_ux_tabbed_modal.mdx index d5b65077b7285..365f98ad0ffba 100644 --- a/api_docs/kbn_shared_ux_tabbed_modal.mdx +++ b/api_docs/kbn_shared_ux_tabbed_modal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-tabbed-modal title: "@kbn/shared-ux-tabbed-modal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-tabbed-modal plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-tabbed-modal'] --- import kbnSharedUxTabbedModalObj from './kbn_shared_ux_tabbed_modal.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_table_persist.mdx b/api_docs/kbn_shared_ux_table_persist.mdx index 84fb606812f04..ef7b1e5fa2594 100644 --- a/api_docs/kbn_shared_ux_table_persist.mdx +++ b/api_docs/kbn_shared_ux_table_persist.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-table-persist title: "@kbn/shared-ux-table-persist" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-table-persist plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-table-persist'] --- import kbnSharedUxTablePersistObj from './kbn_shared_ux_table_persist.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index f0d8eeabb2554..54f54c739edbc 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index 007d860052956..080140b4d4304 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index ce97833428e2d..f1c651bbd798f 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_predicates.mdx b/api_docs/kbn_sort_predicates.mdx index e4173d94e3d0f..f8217848b1ccb 100644 --- a/api_docs/kbn_sort_predicates.mdx +++ b/api_docs/kbn_sort_predicates.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-predicates title: "@kbn/sort-predicates" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sort-predicates plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-predicates'] --- import kbnSortPredicatesObj from './kbn_sort_predicates.devdocs.json'; diff --git a/api_docs/kbn_sse_utils.mdx b/api_docs/kbn_sse_utils.mdx index 1199d1a5e95ad..92c2a1c8b873a 100644 --- a/api_docs/kbn_sse_utils.mdx +++ b/api_docs/kbn_sse_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils title: "@kbn/sse-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils'] --- import kbnSseUtilsObj from './kbn_sse_utils.devdocs.json'; diff --git a/api_docs/kbn_sse_utils_client.mdx b/api_docs/kbn_sse_utils_client.mdx index f28438c2e628c..1ea03f458978d 100644 --- a/api_docs/kbn_sse_utils_client.mdx +++ b/api_docs/kbn_sse_utils_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils-client title: "@kbn/sse-utils-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils-client plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils-client'] --- import kbnSseUtilsClientObj from './kbn_sse_utils_client.devdocs.json'; diff --git a/api_docs/kbn_sse_utils_server.mdx b/api_docs/kbn_sse_utils_server.mdx index c7f8bc8870f51..06e287042ad9a 100644 --- a/api_docs/kbn_sse_utils_server.mdx +++ b/api_docs/kbn_sse_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sse-utils-server title: "@kbn/sse-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sse-utils-server plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sse-utils-server'] --- import kbnSseUtilsServerObj from './kbn_sse_utils_server.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index b77e8320e963c..66afe549f1868 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 02cd998580522..b97ec9d1e158d 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 0066a0e3b3964..b41266c6fca8a 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_streams_schema.mdx b/api_docs/kbn_streams_schema.mdx index 83d2da9d93040..8228701ee09e6 100644 --- a/api_docs/kbn_streams_schema.mdx +++ b/api_docs/kbn_streams_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-streams-schema title: "@kbn/streams-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/streams-schema plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/streams-schema'] --- import kbnStreamsSchemaObj from './kbn_streams_schema.devdocs.json'; diff --git a/api_docs/kbn_synthetics_e2e.mdx b/api_docs/kbn_synthetics_e2e.mdx index 431da6d06b64c..7a30b9e965d6d 100644 --- a/api_docs/kbn_synthetics_e2e.mdx +++ b/api_docs/kbn_synthetics_e2e.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-e2e title: "@kbn/synthetics-e2e" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-e2e plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-e2e'] --- import kbnSyntheticsE2eObj from './kbn_synthetics_e2e.devdocs.json'; diff --git a/api_docs/kbn_synthetics_private_location.mdx b/api_docs/kbn_synthetics_private_location.mdx index 3159dfba622b8..3e2a5a522fb8d 100644 --- a/api_docs/kbn_synthetics_private_location.mdx +++ b/api_docs/kbn_synthetics_private_location.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-private-location title: "@kbn/synthetics-private-location" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-private-location plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-private-location'] --- import kbnSyntheticsPrivateLocationObj from './kbn_synthetics_private_location.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index fe67449f1ce28..c9647f0af7dc1 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index 95cc240123267..957399d8e620f 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_eui_helpers.mdx b/api_docs/kbn_test_eui_helpers.mdx index e7062ae4adb94..bbc16cef18be4 100644 --- a/api_docs/kbn_test_eui_helpers.mdx +++ b/api_docs/kbn_test_eui_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-eui-helpers title: "@kbn/test-eui-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-eui-helpers plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-eui-helpers'] --- import kbnTestEuiHelpersObj from './kbn_test_eui_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index e9196d7137916..96652f80f1354 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index 93aaecbcc6bd8..42acc06c330b3 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_timerange.mdx b/api_docs/kbn_timerange.mdx index ee4bc7cd85ddf..a767cfcbb290e 100644 --- a/api_docs/kbn_timerange.mdx +++ b/api_docs/kbn_timerange.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-timerange title: "@kbn/timerange" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/timerange plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/timerange'] --- import kbnTimerangeObj from './kbn_timerange.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 965202c84772d..123224f4bb306 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_transpose_utils.mdx b/api_docs/kbn_transpose_utils.mdx index 5b76654be4180..dd68898a51611 100644 --- a/api_docs/kbn_transpose_utils.mdx +++ b/api_docs/kbn_transpose_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-transpose-utils title: "@kbn/transpose-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/transpose-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/transpose-utils'] --- import kbnTransposeUtilsObj from './kbn_transpose_utils.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index 360d5f9cbd854..27cf87ad488e3 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_try_in_console.mdx b/api_docs/kbn_try_in_console.mdx index 91521849c6d35..5d1961b2c3d8a 100644 --- a/api_docs/kbn_try_in_console.mdx +++ b/api_docs/kbn_try_in_console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-try-in-console title: "@kbn/try-in-console" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/try-in-console plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/try-in-console'] --- import kbnTryInConsoleObj from './kbn_try_in_console.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 303cd6cef9de7..4981563d80e52 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index 65c4168b19485..67122889f2835 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index a5553f2bf71d1..b25c95f23dc5f 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index 20218daea3d32..edd2a21eb799f 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index 455f426bd0942..839ec36237b60 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index 0f47657d9705b..0285c9eadac20 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index a269b3d1e561c..81f4aa03128ad 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index d6ae46cae2701..fe3e47616f70e 100644 --- a/api_docs/kbn_unified_field_list.mdx +++ b/api_docs/kbn_unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list title: "@kbn/unified-field-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-field-list plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index b59411c7d887d..993528674ebc2 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_prompt.mdx b/api_docs/kbn_unsaved_changes_prompt.mdx index ac95bf5b550c4..5992f616abc3f 100644 --- a/api_docs/kbn_unsaved_changes_prompt.mdx +++ b/api_docs/kbn_unsaved_changes_prompt.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-prompt title: "@kbn/unsaved-changes-prompt" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-prompt plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-prompt'] --- import kbnUnsavedChangesPromptObj from './kbn_unsaved_changes_prompt.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 18107aac6b43b..58d5b98296dbb 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 29b12f27f3b74..ea6abf440cbab 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index f23be5524da46..74957144b9645 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index 1ebbef739609a..a60a602d70318 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 1022e78e8c4d1..9f5bbe8a5e590 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index 758f23b5be2a4..5ad10510990b9 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index c60cdf22ea454..4b0e2717ac51a 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index eb3eb72716d88..140a811fcd6d7 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 46677c22c3b99..d31a057c6f5b9 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod.mdx b/api_docs/kbn_zod.mdx index c33c8f31fcd6a..740bdede691af 100644 --- a/api_docs/kbn_zod.mdx +++ b/api_docs/kbn_zod.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod title: "@kbn/zod" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod'] --- import kbnZodObj from './kbn_zod.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index c80de69a563da..6bc7caad05809 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 6b866b04230ee..cd84d8907f071 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 97aac1d72d10a..a08f03b20ac29 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index c4f4fbc60827d..8f409e1ec31ac 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index f411b16b4f87e..7bab1801d25ed 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 44fcee236eb38..4af5b263f60cc 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 263bbd712d202..4c60fed159e89 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index e570c148f532e..48add56f89dd6 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index ae32f9e8cb31a..2d7a6d01dcef8 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 20a8058b70573..9b2d128aaf43c 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/llm_tasks.mdx b/api_docs/llm_tasks.mdx index 9c43d16acb7df..e433af76c12c8 100644 --- a/api_docs/llm_tasks.mdx +++ b/api_docs/llm_tasks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/llmTasks title: "llmTasks" image: https://source.unsplash.com/400x175/?github description: API docs for the llmTasks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'llmTasks'] --- import llmTasksObj from './llm_tasks.devdocs.json'; diff --git a/api_docs/logs_data_access.mdx b/api_docs/logs_data_access.mdx index 5b7f787eb4048..e57a4127b5251 100644 --- a/api_docs/logs_data_access.mdx +++ b/api_docs/logs_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsDataAccess title: "logsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the logsDataAccess plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsDataAccess'] --- import logsDataAccessObj from './logs_data_access.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 1311c846fa880..e267d11a63725 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 2b8cd1f2a9957..2dceeb454ff6e 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 658660320fd50..1aeeeb31c240f 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index 2be45be8ff772..c2784674325e3 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index d2ca65ff72c03..bec75ad02fec8 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 28a861d17295c..02fba996e1030 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index dd040cb87bbf5..980cb8707e997 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 2b2b102e4c176..777ffe5468a0d 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index c204d2e6c9bd9..4a852717518d8 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 7f5bbf9d19d74..453bf6663ec06 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index acf810e0b462f..d4a6f6a5075a7 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index 6aec1abb031e8..c83652a420e32 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index cfb69bf853a3b..b24aaf88aeeb8 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.devdocs.json b/api_docs/observability.devdocs.json index 91754d0ae4e72..b7b18fcfd7988 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -418,7 +418,7 @@ "signature": [ "Props & AP" ], - "path": "packages/response-ops/alerts_table/types.ts", + "path": "src/platform/packages/shared/response-ops/alerts-table/types.ts", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 49ff18f675eff..205a1611f3b2b 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.devdocs.json b/api_docs/observability_a_i_assistant.devdocs.json index 93d8321f15aa5..2a7166b715f6d 100644 --- a/api_docs/observability_a_i_assistant.devdocs.json +++ b/api_docs/observability_a_i_assistant.devdocs.json @@ -844,6 +844,20 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.Conversation.systemMessage", + "type": "string", + "tags": [], + "label": "systemMessage", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "observabilityAIAssistant", "id": "def-public.Conversation.messages", @@ -1372,7 +1386,7 @@ "label": "chat", "description": [], "signature": [ - "(name: string, options: { messages: ", + "(name: string, options: { systemMessage: string; messages: ", { "pluginId": "observabilityAIAssistant", "scope": "common", @@ -1446,6 +1460,17 @@ "deprecated": false, "trackAdoption": false, "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ObservabilityAIAssistantChatService.chat.$2.systemMessage", + "type": "string", + "tags": [], + "label": "systemMessage", + "description": [], + "path": "x-pack/platform/plugins/shared/observability_ai_assistant/public/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "observabilityAIAssistant", "id": "def-public.ObservabilityAIAssistantChatService.chat.$2.messages", @@ -1572,7 +1597,7 @@ "signature": [ "(options: { getScreenContexts: () => ", "ObservabilityAIAssistantScreenContext", - "[]; conversationId?: string | undefined; connectorId: string; messages: ", + "[]; conversationId?: string | undefined; connectorId: string; systemMessage?: string | undefined; messages: ", { "pluginId": "observabilityAIAssistant", "scope": "common", @@ -1660,6 +1685,20 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ObservabilityAIAssistantChatService.complete.$1.systemMessage", + "type": "string", + "tags": [], + "label": "systemMessage", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_ai_assistant/public/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "observabilityAIAssistant", "id": "def-public.ObservabilityAIAssistantChatService.complete.$1.messages", @@ -1935,14 +1974,7 @@ "label": "getSystemMessage", "description": [], "signature": [ - "() => ", - { - "pluginId": "observabilityAIAssistant", - "scope": "common", - "docId": "kibObservabilityAIAssistantPluginApi", - "section": "def-common.Message", - "text": "Message" - } + "() => string" ], "path": "x-pack/platform/plugins/shared/observability_ai_assistant/public/types.ts", "deprecated": false, @@ -2145,7 +2177,7 @@ "label": "callApi", "description": [], "signature": [ - "(endpoint: TEndpoint, ...args: MaybeOptionalArgs<", + "(endpoint: TEndpoint, ...args: MaybeOptionalArgs<", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -2467,7 +2499,7 @@ "InferenceInferenceEndpointInfo", ", ", "ObservabilityAIAssistantRouteCreateOptions", - ">; \"POST /internal/observability_ai_assistant/kb/semantic_text_migration\": ", + ">; \"POST /internal/observability_ai_assistant/kb/migrations/kb_semantic_text\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -2475,7 +2507,7 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"POST /internal/observability_ai_assistant/kb/semantic_text_migration\", undefined, ", + "<\"POST /internal/observability_ai_assistant/kb/migrations/kb_semantic_text\", undefined, ", "ObservabilityAIAssistantRouteHandlerResources", ", void, ", "ObservabilityAIAssistantRouteCreateOptions", @@ -3059,6 +3091,8 @@ "TypeC", "<{ name: ", "StringC", + "; systemMessage: ", + "StringC", "; messages: ", "ArrayC", "<", @@ -3115,6 +3149,18 @@ "Readable", ", ", "ObservabilityAIAssistantRouteCreateOptions", + ">; \"POST /internal/observability_ai_assistant/index_assets\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/observability_ai_assistant/index_assets\", undefined, ", + "ObservabilityAIAssistantRouteHandlerResources", + ", void, ", + "ObservabilityAIAssistantRouteCreateOptions", ">; }, TEndpoint> & Omit & { signal: AbortSignal | null; } & ", "HttpFetchOptions", ">) => Promise<", @@ -3439,7 +3485,7 @@ "InferenceInferenceEndpointInfo", ", ", "ObservabilityAIAssistantRouteCreateOptions", - ">; \"POST /internal/observability_ai_assistant/kb/semantic_text_migration\": ", + ">; \"POST /internal/observability_ai_assistant/kb/migrations/kb_semantic_text\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -3447,7 +3493,7 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"POST /internal/observability_ai_assistant/kb/semantic_text_migration\", undefined, ", + "<\"POST /internal/observability_ai_assistant/kb/migrations/kb_semantic_text\", undefined, ", "ObservabilityAIAssistantRouteHandlerResources", ", void, ", "ObservabilityAIAssistantRouteCreateOptions", @@ -4031,6 +4077,8 @@ "TypeC", "<{ name: ", "StringC", + "; systemMessage: ", + "StringC", "; messages: ", "ArrayC", "<", @@ -4087,6 +4135,18 @@ "Readable", ", ", "ObservabilityAIAssistantRouteCreateOptions", + ">; \"POST /internal/observability_ai_assistant/index_assets\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/observability_ai_assistant/index_assets\", undefined, ", + "ObservabilityAIAssistantRouteHandlerResources", + ", void, ", + "ObservabilityAIAssistantRouteCreateOptions", ">; }, TEndpoint>>" ], "path": "x-pack/platform/plugins/shared/observability_ai_assistant/public/types.ts", @@ -5136,7 +5196,7 @@ "InferenceInferenceEndpointInfo", ", ", "ObservabilityAIAssistantRouteCreateOptions", - ">; \"POST /internal/observability_ai_assistant/kb/semantic_text_migration\": ", + ">; \"POST /internal/observability_ai_assistant/kb/migrations/kb_semantic_text\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -5144,7 +5204,7 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"POST /internal/observability_ai_assistant/kb/semantic_text_migration\", undefined, ", + "<\"POST /internal/observability_ai_assistant/kb/migrations/kb_semantic_text\", undefined, ", "ObservabilityAIAssistantRouteHandlerResources", ", void, ", "ObservabilityAIAssistantRouteCreateOptions", @@ -5728,6 +5788,8 @@ "TypeC", "<{ name: ", "StringC", + "; systemMessage: ", + "StringC", "; messages: ", "ArrayC", "<", @@ -5784,6 +5846,18 @@ "Readable", ", ", "ObservabilityAIAssistantRouteCreateOptions", + ">; \"POST /internal/observability_ai_assistant/index_assets\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/observability_ai_assistant/index_assets\", undefined, ", + "ObservabilityAIAssistantRouteHandlerResources", + ", void, ", + "ObservabilityAIAssistantRouteCreateOptions", ">; }[TEndpoint] extends ", { "pluginId": "@kbn/server-route-repository-utils", @@ -6329,7 +6403,7 @@ "InferenceInferenceEndpointInfo", ", ", "ObservabilityAIAssistantRouteCreateOptions", - ">; \"POST /internal/observability_ai_assistant/kb/semantic_text_migration\": ", + ">; \"POST /internal/observability_ai_assistant/kb/migrations/kb_semantic_text\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -6337,7 +6411,7 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"POST /internal/observability_ai_assistant/kb/semantic_text_migration\", undefined, ", + "<\"POST /internal/observability_ai_assistant/kb/migrations/kb_semantic_text\", undefined, ", "ObservabilityAIAssistantRouteHandlerResources", ", void, ", "ObservabilityAIAssistantRouteCreateOptions", @@ -6921,6 +6995,8 @@ "TypeC", "<{ name: ", "StringC", + "; systemMessage: ", + "StringC", "; messages: ", "ArrayC", "<", @@ -6977,6 +7053,18 @@ "Readable", ", ", "ObservabilityAIAssistantRouteCreateOptions", + ">; \"POST /internal/observability_ai_assistant/index_assets\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/observability_ai_assistant/index_assets\", undefined, ", + "ObservabilityAIAssistantRouteHandlerResources", + ", void, ", + "ObservabilityAIAssistantRouteCreateOptions", ">; }[TEndpoint] extends ", { "pluginId": "@kbn/server-route-repository-utils", @@ -7024,7 +7112,7 @@ "label": "ObservabilityAIAssistantAPIEndpoint", "description": [], "signature": [ - "\"POST /internal/observability_ai_assistant/chat\" | \"POST /internal/observability_ai_assistant/chat/recall\" | \"POST /internal/observability_ai_assistant/chat/complete\" | \"POST /api/observability_ai_assistant/chat/complete 2023-10-31\" | \"GET /internal/observability_ai_assistant/conversation/{conversationId}\" | \"POST /internal/observability_ai_assistant/conversations\" | \"POST /internal/observability_ai_assistant/conversation\" | \"PUT /internal/observability_ai_assistant/conversation/{conversationId}\" | \"PUT /internal/observability_ai_assistant/conversation/{conversationId}/title\" | \"DELETE /internal/observability_ai_assistant/conversation/{conversationId}\" | \"GET /internal/observability_ai_assistant/connectors\" | \"GET /internal/observability_ai_assistant/functions\" | \"POST /internal/observability_ai_assistant/functions/recall\" | \"POST /internal/observability_ai_assistant/functions/summarize\" | \"POST /internal/observability_ai_assistant/kb/semantic_text_migration\" | \"POST /internal/observability_ai_assistant/kb/setup\" | \"POST /internal/observability_ai_assistant/kb/reset\" | \"GET /internal/observability_ai_assistant/kb/status\" | \"GET /internal/observability_ai_assistant/kb/entries\" | \"PUT /internal/observability_ai_assistant/kb/user_instructions\" | \"POST /internal/observability_ai_assistant/kb/entries/import\" | \"GET /internal/observability_ai_assistant/kb/user_instructions\" | \"POST /internal/observability_ai_assistant/kb/entries/save\" | \"DELETE /internal/observability_ai_assistant/kb/entries/{entryId}\"" + "\"POST /internal/observability_ai_assistant/index_assets\" | \"POST /internal/observability_ai_assistant/chat\" | \"POST /internal/observability_ai_assistant/chat/recall\" | \"POST /internal/observability_ai_assistant/chat/complete\" | \"POST /api/observability_ai_assistant/chat/complete 2023-10-31\" | \"GET /internal/observability_ai_assistant/conversation/{conversationId}\" | \"POST /internal/observability_ai_assistant/conversations\" | \"POST /internal/observability_ai_assistant/conversation\" | \"PUT /internal/observability_ai_assistant/conversation/{conversationId}\" | \"PUT /internal/observability_ai_assistant/conversation/{conversationId}/title\" | \"DELETE /internal/observability_ai_assistant/conversation/{conversationId}\" | \"GET /internal/observability_ai_assistant/connectors\" | \"GET /internal/observability_ai_assistant/functions\" | \"POST /internal/observability_ai_assistant/functions/recall\" | \"POST /internal/observability_ai_assistant/functions/summarize\" | \"POST /internal/observability_ai_assistant/kb/migrations/kb_semantic_text\" | \"POST /internal/observability_ai_assistant/kb/setup\" | \"POST /internal/observability_ai_assistant/kb/reset\" | \"GET /internal/observability_ai_assistant/kb/status\" | \"GET /internal/observability_ai_assistant/kb/entries\" | \"PUT /internal/observability_ai_assistant/kb/user_instructions\" | \"POST /internal/observability_ai_assistant/kb/entries/import\" | \"GET /internal/observability_ai_assistant/kb/user_instructions\" | \"POST /internal/observability_ai_assistant/kb/entries/save\" | \"DELETE /internal/observability_ai_assistant/kb/entries/{entryId}\"" ], "path": "x-pack/platform/plugins/shared/observability_ai_assistant/public/api/index.ts", "deprecated": false, @@ -7698,7 +7786,7 @@ "label": "config", "description": [], "signature": [ - "{ readonly scope?: \"search\" | \"observability\" | undefined; readonly enabled: boolean; readonly enableKnowledgeBase: boolean; }" + "{ readonly scope?: \"search\" | \"observability\" | undefined; readonly enabled: boolean; readonly enableKnowledgeBase: boolean; readonly disableKbSemanticTextMigration: boolean; }" ], "path": "x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts", "deprecated": false, @@ -8294,7 +8382,7 @@ "label": "chat", "description": [], "signature": [ - "(name: string, { messages, connectorId, functions, functionCall, signal, simulateFunctionCalling, tracer, stream, }: { messages: ", + "(name: string, { systemMessage, messages, connectorId, functions, functionCall, signal, simulateFunctionCalling, tracer, stream, }: { systemMessage?: string | undefined; messages: ", { "pluginId": "observabilityAIAssistant", "scope": "common", @@ -8380,12 +8468,26 @@ "id": "def-server.ObservabilityAIAssistantClient.chat.$2", "type": "Object", "tags": [], - "label": "{\n messages,\n connectorId,\n functions,\n functionCall,\n signal,\n simulateFunctionCalling,\n tracer,\n stream,\n }", + "label": "{\n systemMessage,\n messages,\n connectorId,\n functions,\n functionCall,\n signal,\n simulateFunctionCalling,\n tracer,\n stream,\n }", "description": [], "path": "x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts", "deprecated": false, "trackAdoption": false, "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantClient.chat.$2.systemMessage", + "type": "string", + "tags": [], + "label": "systemMessage", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "observabilityAIAssistant", "id": "def-server.ObservabilityAIAssistantClient.chat.$2.messages", @@ -8523,7 +8625,7 @@ "label": "find", "description": [], "signature": [ - "(options?: { query?: string | undefined; } | undefined) => Promise<{ conversations: ", + "(options?: { query?: string | undefined; } | undefined) => Promise<", { "pluginId": "observabilityAIAssistant", "scope": "common", @@ -8531,7 +8633,7 @@ "section": "def-common.Conversation", "text": "Conversation" }, - "[]; }>" + "[]>" ], "path": "x-pack/platform/plugins/shared/observability_ai_assistant/server/service/client/index.ts", "deprecated": false, @@ -8874,10 +8976,10 @@ }, { "parentPluginId": "observabilityAIAssistant", - "id": "def-server.ObservabilityAIAssistantClient.migrateKnowledgeBaseToSemanticText", + "id": "def-server.ObservabilityAIAssistantClient.reIndexKnowledgeBaseAndPopulateSemanticTextField", "type": "Function", "tags": [], - "label": "migrateKnowledgeBaseToSemanticText", + "label": "reIndexKnowledgeBaseAndPopulateSemanticTextField", "description": [], "signature": [ "() => Promise" @@ -9677,7 +9779,7 @@ "InferenceInferenceEndpointInfo", ", ", "ObservabilityAIAssistantRouteCreateOptions", - ">; \"POST /internal/observability_ai_assistant/kb/semantic_text_migration\": ", + ">; \"POST /internal/observability_ai_assistant/kb/migrations/kb_semantic_text\": ", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -9685,7 +9787,7 @@ "section": "def-common.ServerRoute", "text": "ServerRoute" }, - "<\"POST /internal/observability_ai_assistant/kb/semantic_text_migration\", undefined, ", + "<\"POST /internal/observability_ai_assistant/kb/migrations/kb_semantic_text\", undefined, ", "ObservabilityAIAssistantRouteHandlerResources", ", void, ", "ObservabilityAIAssistantRouteCreateOptions", @@ -10269,6 +10371,8 @@ "TypeC", "<{ name: ", "StringC", + "; systemMessage: ", + "StringC", "; messages: ", "ArrayC", "<", @@ -10325,6 +10429,18 @@ "Readable", ", ", "ObservabilityAIAssistantRouteCreateOptions", + ">; \"POST /internal/observability_ai_assistant/index_assets\": ", + { + "pluginId": "@kbn/server-route-repository-utils", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryUtilsPluginApi", + "section": "def-common.ServerRoute", + "text": "ServerRoute" + }, + "<\"POST /internal/observability_ai_assistant/index_assets\", undefined, ", + "ObservabilityAIAssistantRouteHandlerResources", + ", void, ", + "ObservabilityAIAssistantRouteCreateOptions", ">; }" ], "path": "x-pack/platform/plugins/shared/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts", @@ -10993,6 +11109,20 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-common.Conversation.systemMessage", + "type": "string", + "tags": [], + "label": "systemMessage", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/platform/plugins/shared/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "observabilityAIAssistant", "id": "def-common.Conversation.messages", diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 777f3d8bd45b3..29bce33fb14f1 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 380 | 1 | 378 | 30 | +| 385 | 1 | 383 | 30 | ## Client diff --git a/api_docs/observability_a_i_assistant_app.mdx b/api_docs/observability_a_i_assistant_app.mdx index 44ea4a69b806c..a32df40490fc6 100644 --- a/api_docs/observability_a_i_assistant_app.mdx +++ b/api_docs/observability_a_i_assistant_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistantApp title: "observabilityAIAssistantApp" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistantApp plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistantApp'] --- import observabilityAIAssistantAppObj from './observability_a_i_assistant_app.devdocs.json'; diff --git a/api_docs/observability_ai_assistant_management.mdx b/api_docs/observability_ai_assistant_management.mdx index 9a89028a727f8..68910d5d458eb 100644 --- a/api_docs/observability_ai_assistant_management.mdx +++ b/api_docs/observability_ai_assistant_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAiAssistantManagement title: "observabilityAiAssistantManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAiAssistantManagement plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAiAssistantManagement'] --- import observabilityAiAssistantManagementObj from './observability_ai_assistant_management.devdocs.json'; diff --git a/api_docs/observability_logs_explorer.mdx b/api_docs/observability_logs_explorer.mdx index 11a5beac36867..b881ac7b986ea 100644 --- a/api_docs/observability_logs_explorer.mdx +++ b/api_docs/observability_logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogsExplorer title: "observabilityLogsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogsExplorer plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogsExplorer'] --- import observabilityLogsExplorerObj from './observability_logs_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index a617b7d9627bd..f0a50442ba14f 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index 86fd65b000bbf..93a27e0deef3b 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 98000ecb386d6..6c51c5a28e580 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index d7626644cf3a3..1f06c89f7ef4b 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 32e36292a62e9..fa17f8e619643 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 56255 | 243 | 41926 | 2733 | +| 56275 | 243 | 41946 | 2736 | ## Plugin Directory @@ -63,7 +63,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data view management app | 2 | 0 | 2 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | 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. | 1233 | 0 | 447 | 4 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | The Data Visualizer tools help you understand your data, by analyzing the metrics and fields in a log file or an existing Elasticsearch index. | 31 | 3 | 25 | 4 | -| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin introduces the concept of data set quality, where users can easily get an overview on the data sets they have. | 14 | 0 | 14 | 8 | +| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin introduces the concept of data set quality, where users can easily get an overview on the data sets they have. | 31 | 0 | 31 | 11 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 15 | 0 | 9 | 2 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 207 | 0 | 160 | 30 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 35 | 0 | 33 | 2 | @@ -153,7 +153,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 3 | 0 | 3 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 1 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 708 | 2 | 700 | 23 | -| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 380 | 1 | 378 | 30 | +| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 385 | 1 | 383 | 30 | | | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 8 | 0 | 7 | 0 | | | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 2 | 0 | 2 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin exposes and registers observability log consumption features. | 1 | 0 | 1 | 0 | @@ -298,7 +298,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 35 | 0 | 30 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 9 | 0 | 6 | 2 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 1 | 0 | 1 | 0 | -| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 46 | 0 | 45 | 1 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 48 | 0 | 47 | 1 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 13 | 0 | 13 | 1 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 8 | 0 | 8 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 3 | 0 | 3 | 0 | @@ -709,7 +709,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 18 | 1 | 17 | 1 | | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | - | 36 | 0 | 34 | 3 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 20 | 0 | 18 | 1 | -| | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | - | 12 | 0 | 12 | 0 | +| | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | - | 8 | 0 | 8 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 51 | 0 | 25 | 0 | | | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | - | 40 | 0 | 38 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 66 | 0 | 63 | 0 | diff --git a/api_docs/presentation_panel.mdx b/api_docs/presentation_panel.mdx index d3a4c6a40ad4c..0d07055c96b0f 100644 --- a/api_docs/presentation_panel.mdx +++ b/api_docs/presentation_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationPanel title: "presentationPanel" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationPanel plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationPanel'] --- import presentationPanelObj from './presentation_panel.devdocs.json'; diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index ddcd4fcddb7ea..b5871c259208b 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/product_doc_base.mdx b/api_docs/product_doc_base.mdx index 3b301da8e0018..891ba27b2d8dc 100644 --- a/api_docs/product_doc_base.mdx +++ b/api_docs/product_doc_base.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/productDocBase title: "productDocBase" image: https://source.unsplash.com/400x175/?github description: API docs for the productDocBase plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'productDocBase'] --- import productDocBaseObj from './product_doc_base.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 3ab22798762df..22d298d1c4e37 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index 79fc353538c65..af1a0cbf8636c 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index dc4b8cfb22d67..192b74ca42088 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 3a7bca30a2258..ebe060e23e69b 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index 11fe75bd010f6..cd56538898c68 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index b36e4bf15cd31..af0bc2e31f0b4 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index b3dc67f34256b..678100ab8f225 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 840f7eab7f64e..c48924f53b9ef 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index 0dbd483fd9569..a396aedccaa54 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index d1154d7d853e7..90f80c7f70c4f 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 690e22747e31e..d4004a6c21014 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index 20b157ddc8db9..60d15c6af7d20 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index e3ce229b7ad71..942d58f079b6b 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index 4cb1bc6beee15..11352d04987c1 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index 1889e3133d573..23eb13698608b 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/search_assistant.mdx b/api_docs/search_assistant.mdx index ba74a7ea47198..c031312d9b318 100644 --- a/api_docs/search_assistant.mdx +++ b/api_docs/search_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchAssistant title: "searchAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the searchAssistant plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchAssistant'] --- import searchAssistantObj from './search_assistant.devdocs.json'; diff --git a/api_docs/search_connectors.mdx b/api_docs/search_connectors.mdx index 90695fb3794ce..e23275de8b6da 100644 --- a/api_docs/search_connectors.mdx +++ b/api_docs/search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchConnectors title: "searchConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the searchConnectors plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchConnectors'] --- import searchConnectorsObj from './search_connectors.devdocs.json'; diff --git a/api_docs/search_homepage.mdx b/api_docs/search_homepage.mdx index 88a47bd1a7c5c..420955c9a3ee5 100644 --- a/api_docs/search_homepage.mdx +++ b/api_docs/search_homepage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchHomepage title: "searchHomepage" image: https://source.unsplash.com/400x175/?github description: API docs for the searchHomepage plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchHomepage'] --- import searchHomepageObj from './search_homepage.devdocs.json'; diff --git a/api_docs/search_indices.mdx b/api_docs/search_indices.mdx index 2b6aad59f09bf..4b7fc80d28644 100644 --- a/api_docs/search_indices.mdx +++ b/api_docs/search_indices.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchIndices title: "searchIndices" image: https://source.unsplash.com/400x175/?github description: API docs for the searchIndices plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchIndices'] --- import searchIndicesObj from './search_indices.devdocs.json'; diff --git a/api_docs/search_inference_endpoints.mdx b/api_docs/search_inference_endpoints.mdx index 555f7d52e166d..2e707df13663b 100644 --- a/api_docs/search_inference_endpoints.mdx +++ b/api_docs/search_inference_endpoints.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchInferenceEndpoints title: "searchInferenceEndpoints" image: https://source.unsplash.com/400x175/?github description: API docs for the searchInferenceEndpoints plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchInferenceEndpoints'] --- import searchInferenceEndpointsObj from './search_inference_endpoints.devdocs.json'; diff --git a/api_docs/search_navigation.mdx b/api_docs/search_navigation.mdx index be620b2cbe678..f7b04a22130f7 100644 --- a/api_docs/search_navigation.mdx +++ b/api_docs/search_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNavigation title: "searchNavigation" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNavigation plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNavigation'] --- import searchNavigationObj from './search_navigation.devdocs.json'; diff --git a/api_docs/search_notebooks.mdx b/api_docs/search_notebooks.mdx index c08d02bf5000e..58407f5575b1d 100644 --- a/api_docs/search_notebooks.mdx +++ b/api_docs/search_notebooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNotebooks title: "searchNotebooks" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNotebooks plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNotebooks'] --- import searchNotebooksObj from './search_notebooks.devdocs.json'; diff --git a/api_docs/search_playground.mdx b/api_docs/search_playground.mdx index c09be8f4b1c3c..ae2f68dc38478 100644 --- a/api_docs/search_playground.mdx +++ b/api_docs/search_playground.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchPlayground title: "searchPlayground" image: https://source.unsplash.com/400x175/?github description: API docs for the searchPlayground plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchPlayground'] --- import searchPlaygroundObj from './search_playground.devdocs.json'; diff --git a/api_docs/search_synonyms.mdx b/api_docs/search_synonyms.mdx index 5beae3d78328d..1a1bfa145a80f 100644 --- a/api_docs/search_synonyms.mdx +++ b/api_docs/search_synonyms.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchSynonyms title: "searchSynonyms" image: https://source.unsplash.com/400x175/?github description: API docs for the searchSynonyms plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchSynonyms'] --- import searchSynonymsObj from './search_synonyms.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index ca1b99f1ae950..71ccb1e90da63 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index 3a2de1196850e..59dc8ca026a9d 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 6e2ebaea99f56..bedf102b97ab5 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index 6d4a854ae3066..dfc09fa382d4e 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index 2581b17ed0506..860b0525bcf75 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless'] --- import serverlessObj from './serverless.devdocs.json'; diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx index 04dc2654653db..fe24b906b1b3b 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability'] --- import serverlessObservabilityObj from './serverless_observability.devdocs.json'; diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx index 612b8c41d3e06..7e9155096d328 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 2f6dd56e81d32..6a139dcc6d955 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index e554908d8fdad..ad93c54c7ef0d 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/slo.mdx b/api_docs/slo.mdx index aaea5d453a343..0d05e70f279bc 100644 --- a/api_docs/slo.mdx +++ b/api_docs/slo.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/slo title: "slo" image: https://source.unsplash.com/400x175/?github description: API docs for the slo plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'slo'] --- import sloObj from './slo.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 401c62a6095fa..08f97fee400dd 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index 2034dc65ba033..2781bbd51d431 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 4c761c7a46a1e..c477e1a7412f8 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index d8e4df5ffbc74..92a09c7e17664 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/streams.mdx b/api_docs/streams.mdx index 8f056e90bb51f..5797bafadf54c 100644 --- a/api_docs/streams.mdx +++ b/api_docs/streams.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/streams title: "streams" image: https://source.unsplash.com/400x175/?github description: API docs for the streams plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'streams'] --- import streamsObj from './streams.devdocs.json'; diff --git a/api_docs/streams_app.mdx b/api_docs/streams_app.mdx index c819b6e9b13d0..2d1906fd57aaa 100644 --- a/api_docs/streams_app.mdx +++ b/api_docs/streams_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/streamsApp title: "streamsApp" image: https://source.unsplash.com/400x175/?github description: API docs for the streamsApp plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'streamsApp'] --- import streamsAppObj from './streams_app.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 138bddd88132b..0bd565023714e 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index b61aefb6cb812..3c850000a855b 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index afa9a065edc9e..c170eecd21c2b 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 51fb6ce8649a5..a2459d8a24a92 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index e2d35a929fdfc..5700496c9452d 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index a82dfdee8b585..6451aa439bcd2 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index e7735008fc230..c833244736a50 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 76ed67897d522..cfcb425b63d5b 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 43367c7e99382..e7e2384f9f5f7 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 340158ce83a0a..b062c7d79bdd6 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index 0e10e2eecf2c9..4d86b4187f6e7 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 7ceb518ea62a3..b67ffbf0187f2 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 0d392f0d898b5..cd575683e4373 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index 7c924f4e69cc3..acfd40f278a00 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index f02322a977f10..fffbea7b40067 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 883cd9e0dc7f0..7c876e59a1412 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 81ff4ef6b964b..fb9414f51b2e9 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 3e0231254562e..62c278c2dbee2 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 3d53261b5f99e..1541a55c2310c 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index 26eee83cfd41e..4382da18f9e99 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 5dd1ba64bcdbf..479d4dd720309 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 59a3b2d220831..87c737723facb 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index 1bb5bf825fff1..80651c874e8c3 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index 958eaf0b954e4..b54db6025ab2c 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index 65250db720a05..0646cf7dd38ae 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index b033cbec21d81..dcfeabd9bb57d 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index c9d275df442ba..514ce03117fb5 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 4d05af0bbba78..87c11f3928861 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index db339dd1bcdaf..9174d130d02ac 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2025-02-17 +date: 2025-02-18 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; From 71254c8ee5ad89910c5ae35fc93649b806875e14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Georgiana-Andreea=20Onolea=C8=9B=C4=83?= Date: Tue, 18 Feb 2025 09:58:37 +0200 Subject: [PATCH 44/78] [ResponseOps][Rules] Move the params of es query and index threshold rule types (#210197) Connected with https://github.com/elastic/kibana/issues/195188 ## Summary - Moved params of es query rule type to `@kbn/response-ops-rule-params/es_query` package - Moved params of index threshold rule type to `@kbn/response-ops-rule-params/index_threshold` package The following constants for the es query rule type have been duplicated: - MAX_SELECTABLE_SOURCE_FIELDS - MAX_SELECTABLE_GROUP_BY_TERMS - ES_QUERY_MAX_HITS_PER_EXECUTION --- .../rule_params/common/constants.ts | 14 ++ .../response-ops/rule_params/common/index.ts | 2 + .../response-ops/rule_params/common/utils.ts | 112 ++++++++- .../rule_params/es_query/index.ts | 13 ++ .../rule_params/es_query/latest.ts | 9 + .../response-ops/rule_params/es_query/v1.ts | 217 ++++++++++++++++++ .../rule_params/index_threshold/index.ts | 19 ++ .../rule_params/index_threshold/latest.ts | 9 + .../rule_params/index_threshold/v1.ts | 134 +++++++++++ .../translations/translations/fr-FR.json | 18 -- .../translations/translations/ja-JP.json | 18 -- .../translations/translations/zh-CN.json | 11 - .../shared/stack_alerts/common/comparator.ts | 19 -- .../shared/stack_alerts/common/index.ts | 7 +- .../es_query/action_context.test.ts | 2 +- .../rule_types/es_query/action_context.ts | 2 +- .../rule_types/es_query/executor.test.ts | 2 +- .../server/rule_types/es_query/executor.ts | 4 +- .../rule_types/es_query/rule_type.test.ts | 3 +- .../server/rule_types/es_query/rule_type.ts | 7 +- .../es_query/rule_type_params.test.ts | 5 +- .../rule_types/es_query/rule_type_params.ts | 209 +---------------- .../server/rule_types/es_query/types.ts | 3 +- .../server/rule_types/es_query/util.ts | 2 +- .../index_threshold/action_context.test.ts | 2 +- .../index_threshold/action_context.ts | 2 +- .../rule_types/index_threshold/index.ts | 1 - .../index_threshold/rule_type.test.ts | 2 +- .../rule_types/index_threshold/rule_type.ts | 5 +- .../index_threshold/rule_type_params.test.ts | 8 +- .../index_threshold/rule_type_params.ts | 64 ------ .../server/rule_types/lib/comparator.ts | 21 -- .../plugins/shared/stack_alerts/tsconfig.json | 13 +- .../triggers_actions_ui/server/data/index.ts | 12 +- .../server/data/lib/core_query_types.test.ts | 4 +- .../server/data/lib/core_query_types.ts | 128 ----------- .../server/data/lib/index.ts | 8 - .../server/data/lib/time_series_types.ts | 5 +- .../triggers_actions_ui/server/index.ts | 13 +- .../shared/triggers_actions_ui/tsconfig.json | 3 +- 40 files changed, 576 insertions(+), 556 deletions(-) create mode 100644 src/platform/packages/shared/response-ops/rule_params/es_query/index.ts create mode 100644 src/platform/packages/shared/response-ops/rule_params/es_query/latest.ts create mode 100644 src/platform/packages/shared/response-ops/rule_params/es_query/v1.ts create mode 100644 src/platform/packages/shared/response-ops/rule_params/index_threshold/index.ts create mode 100644 src/platform/packages/shared/response-ops/rule_params/index_threshold/latest.ts create mode 100644 src/platform/packages/shared/response-ops/rule_params/index_threshold/v1.ts delete mode 100644 x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/rule_type_params.ts delete mode 100644 x-pack/platform/plugins/shared/stack_alerts/server/rule_types/lib/comparator.ts diff --git a/src/platform/packages/shared/response-ops/rule_params/common/constants.ts b/src/platform/packages/shared/response-ops/rule_params/common/constants.ts index adf8b309664ce..20348be2c9829 100644 --- a/src/platform/packages/shared/response-ops/rule_params/common/constants.ts +++ b/src/platform/packages/shared/response-ops/rule_params/common/constants.ts @@ -12,6 +12,20 @@ */ export const MAX_DATA_VIEW_FIELD_DESCRIPTION_LENGTH = 300; +export const MAX_SELECTABLE_SOURCE_FIELDS = 5; +export const MAX_SELECTABLE_GROUP_BY_TERMS = 4; +export const ES_QUERY_MAX_HITS_PER_EXECUTION = 10000; +export const MAX_GROUPS = 1000; + +export enum Comparator { + GT = '>', + LT = '<', + GT_OR_EQ = '>=', + LT_OR_EQ = '<=', + BETWEEN = 'between', + NOT_BETWEEN = 'notBetween', +} + /** * All runtime field types. * @public diff --git a/src/platform/packages/shared/response-ops/rule_params/common/index.ts b/src/platform/packages/shared/response-ops/rule_params/common/index.ts index f4b7fd9166c0e..5ef39d43b73ef 100644 --- a/src/platform/packages/shared/response-ops/rule_params/common/index.ts +++ b/src/platform/packages/shared/response-ops/rule_params/common/index.ts @@ -9,3 +9,5 @@ export * from './search_configuration_schema'; export { dataViewSpecSchema } from './data_view_spec_schema'; +export { MAX_GROUPS } from './constants'; +export { ComparatorFns } from './utils'; diff --git a/src/platform/packages/shared/response-ops/rule_params/common/utils.ts b/src/platform/packages/shared/response-ops/rule_params/common/utils.ts index d12960253ea6c..c02f54a0d7a0b 100644 --- a/src/platform/packages/shared/response-ops/rule_params/common/utils.ts +++ b/src/platform/packages/shared/response-ops/rule_params/common/utils.ts @@ -10,8 +10,19 @@ import { schema } from '@kbn/config-schema'; import { i18n } from '@kbn/i18n'; import { isEmpty } from 'lodash'; -import { buildEsQuery as kbnBuildEsQuery } from '@kbn/es-query'; +import { + buildEsQuery as kbnBuildEsQuery, + toElasticsearchQuery, + fromKueryExpression, +} from '@kbn/es-query'; +import { Comparator } from './constants'; + +export type ComparatorFn = (value: number, threshold: number[]) => boolean; + +const TimeWindowUnits = new Set(['s', 'm', 'h', 'd']); +const AggTypes = new Set(['count', 'avg', 'min', 'max', 'sum']); +export const betweenComparators = new Set(['between', 'notBetween']); export const jobsSelectionSchema = schema.object( { jobIds: schema.arrayOf(schema.string(), { defaultValue: [] }), @@ -80,3 +91,102 @@ export type TimeUnitChar = 's' | 'm' | 'h' | 'd'; export enum LEGACY_COMPARATORS { OUTSIDE_RANGE = 'outside', } + +export function validateTimeWindowUnits(timeWindowUnit: string): string | undefined { + if (TimeWindowUnits.has(timeWindowUnit)) { + return; + } + + return i18n.translate( + 'xpack.responseOps.ruleParams.coreQueryParams.invalidTimeWindowUnitsErrorMessage', + { + defaultMessage: 'invalid timeWindowUnit: "{timeWindowUnit}"', + values: { + timeWindowUnit, + }, + } + ); +} + +export function validateAggType(aggType: string): string | undefined { + if (AggTypes.has(aggType)) { + return; + } + + return i18n.translate( + 'xpack.responseOps.ruleParams.data.coreQueryParams.invalidAggTypeErrorMessage', + { + defaultMessage: 'invalid aggType: "{aggType}"', + values: { + aggType, + }, + } + ); +} + +export function validateGroupBy(groupBy: string): string | undefined { + if (groupBy === 'all' || groupBy === 'top') { + return; + } + + return i18n.translate('xpack.responseOps.ruleParams.coreQueryParams.invalidGroupByErrorMessage', { + defaultMessage: 'invalid groupBy: "{groupBy}"', + values: { + groupBy, + }, + }); +} + +export const ComparatorFns = new Map([ + [Comparator.LT, (value: number, threshold: number[]) => value < threshold[0]], + [Comparator.LT_OR_EQ, (value: number, threshold: number[]) => value <= threshold[0]], + [Comparator.GT_OR_EQ, (value: number, threshold: number[]) => value >= threshold[0]], + [Comparator.GT, (value: number, threshold: number[]) => value > threshold[0]], + [ + Comparator.BETWEEN, + (value: number, threshold: number[]) => value >= threshold[0] && value <= threshold[1], + ], + [ + Comparator.NOT_BETWEEN, + (value: number, threshold: number[]) => value < threshold[0] || value > threshold[1], + ], +]); + +export const getComparatorSchemaType = (validate: (comparator: Comparator) => string | void) => + schema.oneOf( + [ + schema.literal(Comparator.GT), + schema.literal(Comparator.LT), + schema.literal(Comparator.GT_OR_EQ), + schema.literal(Comparator.LT_OR_EQ), + schema.literal(Comparator.BETWEEN), + schema.literal(Comparator.NOT_BETWEEN), + ], + { validate } + ); + +export const ComparatorFnNames = new Set(ComparatorFns.keys()); + +export function validateKuery(query: string): string | undefined { + try { + toElasticsearchQuery(fromKueryExpression(query)); + } catch (e) { + return i18n.translate( + 'xpack.responseOps.ruleParams.coreQueryParams.invalidKQLQueryErrorMessage', + { + defaultMessage: 'Filter query is invalid.', + } + ); + } +} + +export function validateComparator(comparator: Comparator): string | undefined { + if (ComparatorFnNames.has(comparator)) return; + + return i18n.translate('xpack.responseOps.ruleParams.invalidComparatorErrorMessage', { + defaultMessage: 'invalid thresholdComparator specified: {comparator}', + values: { + comparator, + }, + }); +} diff --git a/src/platform/packages/shared/response-ops/rule_params/es_query/index.ts b/src/platform/packages/shared/response-ops/rule_params/es_query/index.ts new file mode 100644 index 0000000000000..12da197ccc54f --- /dev/null +++ b/src/platform/packages/shared/response-ops/rule_params/es_query/index.ts @@ -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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ +export { EsQueryRuleParamsSchema } from './latest'; +export { EsQueryRuleParamsSchema as EsQueryRuleParamsSchemaV1 } from './v1'; + +export type { EsQueryRuleParams } from './latest'; +export type { EsQueryRuleParams as EsQueryRuleParamsV1 } from './latest'; diff --git a/src/platform/packages/shared/response-ops/rule_params/es_query/latest.ts b/src/platform/packages/shared/response-ops/rule_params/es_query/latest.ts new file mode 100644 index 0000000000000..7e4d06d0f8706 --- /dev/null +++ b/src/platform/packages/shared/response-ops/rule_params/es_query/latest.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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ +export * from './v1'; diff --git a/src/platform/packages/shared/response-ops/rule_params/es_query/v1.ts b/src/platform/packages/shared/response-ops/rule_params/es_query/v1.ts new file mode 100644 index 0000000000000..db2b32b0342f9 --- /dev/null +++ b/src/platform/packages/shared/response-ops/rule_params/es_query/v1.ts @@ -0,0 +1,217 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ +import { schema, TypeOf } from '@kbn/config-schema'; +import { i18n } from '@kbn/i18n'; + +import { + validateTimeWindowUnits, + validateAggType, + validateGroupBy, + getComparatorSchemaType, + betweenComparators, + validateComparator, +} from '../common/utils'; + +import { + MAX_SELECTABLE_SOURCE_FIELDS, + MAX_SELECTABLE_GROUP_BY_TERMS, + ES_QUERY_MAX_HITS_PER_EXECUTION, + MAX_GROUPS, + Comparator, +} from '../common/constants'; + +const EsQueryRuleParamsSchemaProperties = { + size: schema.number({ min: 0, max: ES_QUERY_MAX_HITS_PER_EXECUTION }), + timeWindowSize: schema.number({ min: 1 }), + excludeHitsFromPreviousRun: schema.boolean({ defaultValue: true }), + timeWindowUnit: schema.string({ validate: validateTimeWindowUnits }), + threshold: schema.arrayOf(schema.number(), { minSize: 1, maxSize: 2 }), + thresholdComparator: getComparatorSchemaType(validateComparator), + // aggregation type + aggType: schema.string({ validate: validateAggType, defaultValue: 'count' }), + // aggregation field + aggField: schema.maybe(schema.string({ minLength: 1 })), + // how to group + groupBy: schema.string({ validate: validateGroupBy, defaultValue: 'all' }), + // field to group on (for groupBy: top) + termField: schema.maybe( + schema.oneOf([ + schema.string({ minLength: 1 }), + schema.arrayOf(schema.string(), { minSize: 2, maxSize: MAX_SELECTABLE_GROUP_BY_TERMS }), + ]) + ), + // limit on number of groups returned + termSize: schema.maybe(schema.number({ min: 1 })), + searchType: schema.oneOf( + [schema.literal('searchSource'), schema.literal('esQuery'), schema.literal('esqlQuery')], + { + defaultValue: 'esQuery', + } + ), + timeField: schema.conditional( + schema.siblingRef('searchType'), + schema.literal('esQuery'), + schema.string({ minLength: 1 }), + schema.maybe(schema.string({ minLength: 1 })) + ), + // searchSource rule param only + searchConfiguration: schema.conditional( + schema.siblingRef('searchType'), + schema.literal('searchSource'), + schema.object({}, { unknowns: 'allow' }), + schema.never() + ), + // esQuery rule params only + esQuery: schema.conditional( + schema.siblingRef('searchType'), + schema.literal('esQuery'), + schema.string({ minLength: 1 }), + schema.never() + ), + index: schema.conditional( + schema.siblingRef('searchType'), + schema.literal('esQuery'), + schema.arrayOf(schema.string({ minLength: 1 }), { minSize: 1 }), + schema.never() + ), + // esqlQuery rule params only + esqlQuery: schema.conditional( + schema.siblingRef('searchType'), + schema.literal('esqlQuery'), + schema.object({ esql: schema.string({ minLength: 1 }) }), + schema.never() + ), + sourceFields: schema.maybe( + schema.arrayOf( + schema.object({ + label: schema.string(), + searchPath: schema.string(), + }), + { + maxSize: MAX_SELECTABLE_SOURCE_FIELDS, + } + ) + ), +}; + +// rule type parameters +export type EsQueryRuleParams = TypeOf; + +function isSearchSourceRule(searchType: EsQueryRuleParams['searchType']) { + return searchType === 'searchSource'; +} + +function isEsqlQueryRule(searchType: EsQueryRuleParams['searchType']) { + return searchType === 'esqlQuery'; +} + +// using direct type not allowed, circular reference, so body is typed to any +function validateParams(anyParams: unknown): string | undefined { + const { + esQuery, + thresholdComparator, + threshold, + searchType, + aggType, + aggField, + groupBy, + termField, + termSize, + } = anyParams as EsQueryRuleParams; + + if (betweenComparators.has(thresholdComparator) && threshold.length === 1) { + return i18n.translate('responseOps.ruleParams.esQuery.invalidThreshold2ErrorMessage', { + defaultMessage: + '[threshold]: must have two elements for the "{thresholdComparator}" comparator', + values: { + thresholdComparator, + }, + }); + } + + if (aggType !== 'count' && !aggField) { + return i18n.translate('responseOps.ruleParams.esQuery.aggTypeRequiredErrorMessage', { + defaultMessage: '[aggField]: must have a value when [aggType] is "{aggType}"', + values: { + aggType, + }, + }); + } + + // check grouping + if (groupBy === 'top') { + if (termField == null) { + return i18n.translate('xpack.responseOps.ruleParams.esQuery.termFieldRequiredErrorMessage', { + defaultMessage: '[termField]: termField required when [groupBy] is top', + }); + } + if (termSize == null) { + return i18n.translate('xpack.responseOps.ruleParams.esQuery.termSizeRequiredErrorMessage', { + defaultMessage: '[termSize]: termSize required when [groupBy] is top', + }); + } + if (termSize > MAX_GROUPS) { + return i18n.translate( + 'xpack.responseOps.ruleParams.esQuery.invalidTermSizeMaximumErrorMessage', + { + defaultMessage: '[termSize]: must be less than or equal to {maxGroups}', + values: { + maxGroups: MAX_GROUPS, + }, + } + ); + } + } + + if (isSearchSourceRule(searchType)) { + return; + } + + if (isEsqlQueryRule(searchType)) { + const { timeField } = anyParams as EsQueryRuleParams; + + if (!timeField) { + return i18n.translate('xpack.responseOps.ruleParams.esQuery.esqlTimeFieldErrorMessage', { + defaultMessage: '[timeField]: is required', + }); + } + if (thresholdComparator !== Comparator.GT) { + return i18n.translate( + 'xpack.responseOps.ruleParams.esQuery.esqlThresholdComparatorErrorMessage', + { + defaultMessage: '[thresholdComparator]: is required to be greater than', + } + ); + } + if (threshold && threshold[0] !== 0) { + return i18n.translate('xpack.responseOps.ruleParams.esQuery.esqlThresholdErrorMessage', { + defaultMessage: '[threshold]: is required to be 0', + }); + } + return; + } + + try { + const parsedQuery = JSON.parse(esQuery); + + if (parsedQuery && !parsedQuery.query) { + return i18n.translate('xpack.responseOps.ruleParams.esQuery.missingEsQueryErrorMessage', { + defaultMessage: '[esQuery]: must contain "query"', + }); + } + } catch (err) { + return i18n.translate('xpack.responseOps.ruleParams.esQuery.invalidEsQueryErrorMessage', { + defaultMessage: '[esQuery]: must be valid JSON', + }); + } +} + +export const EsQueryRuleParamsSchema = schema.object(EsQueryRuleParamsSchemaProperties, { + validate: validateParams, +}); diff --git a/src/platform/packages/shared/response-ops/rule_params/index_threshold/index.ts b/src/platform/packages/shared/response-ops/rule_params/index_threshold/index.ts new file mode 100644 index 0000000000000..de7a2bae19297 --- /dev/null +++ b/src/platform/packages/shared/response-ops/rule_params/index_threshold/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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ +export { ParamsSchema } from './latest'; +export { ParamsSchema as ParamsSchemaV1 } from './latest'; + +export { type Params } from './latest'; +export { type Params as ParamsV1 } from './latest'; + +export type { CoreQueryParams } from './latest'; +export type { CoreQueryParams as CoreQueryParamsV1 } from './latest'; + +export { CoreQueryParamsSchemaProperties } from './latest'; +export { validateCoreQueryBody } from './latest'; diff --git a/src/platform/packages/shared/response-ops/rule_params/index_threshold/latest.ts b/src/platform/packages/shared/response-ops/rule_params/index_threshold/latest.ts new file mode 100644 index 0000000000000..7e4d06d0f8706 --- /dev/null +++ b/src/platform/packages/shared/response-ops/rule_params/index_threshold/latest.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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ +export * from './v1'; diff --git a/src/platform/packages/shared/response-ops/rule_params/index_threshold/v1.ts b/src/platform/packages/shared/response-ops/rule_params/index_threshold/v1.ts new file mode 100644 index 0000000000000..aa794ce3c878e --- /dev/null +++ b/src/platform/packages/shared/response-ops/rule_params/index_threshold/v1.ts @@ -0,0 +1,134 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { schema, TypeOf } from '@kbn/config-schema'; +import { i18n } from '@kbn/i18n'; + +import { MAX_GROUPS } from '../common/constants'; +import { + validateAggType, + validateGroupBy, + validateKuery, + validateTimeWindowUnits, + getComparatorSchemaType, + betweenComparators, + validateComparator, +} from '../common/utils'; + +export type Params = TypeOf; + +export const CoreQueryParamsSchemaProperties = { + // name of the indices to search + index: schema.oneOf([ + schema.string({ minLength: 1 }), + schema.arrayOf(schema.string({ minLength: 1 }), { minSize: 1 }), + ]), + // field in index used for date/time + timeField: schema.string({ minLength: 1 }), + // aggregation type + aggType: schema.string({ validate: validateAggType, defaultValue: 'count' }), + // aggregation field + aggField: schema.maybe(schema.string({ minLength: 1 })), + // how to group + groupBy: schema.string({ validate: validateGroupBy, defaultValue: 'all' }), + // field to group on (for groupBy: top) + termField: schema.maybe(schema.string({ minLength: 1 })), + // filter field + filterKuery: schema.maybe(schema.string({ validate: validateKuery })), + // limit on number of groups returned + termSize: schema.maybe(schema.number({ min: 1 })), + // size of time window for date range aggregations + timeWindowSize: schema.number({ min: 1 }), + // units of time window for date range aggregations + timeWindowUnit: schema.string({ validate: validateTimeWindowUnits }), +}; + +export const CoreQueryParamsSchema = schema.object(CoreQueryParamsSchemaProperties); +export type CoreQueryParams = TypeOf; + +export const ParamsSchema = schema.object( + { + ...CoreQueryParamsSchemaProperties, + // the comparison function to use to determine if the threshold as been met + thresholdComparator: getComparatorSchemaType(validateComparator), + // the values to use as the threshold; `between` and `notBetween` require + // two values, the others require one. + threshold: schema.arrayOf(schema.number(), { minSize: 1, maxSize: 2 }), + }, + { validate: validateParams } +); + +// using direct type not allowed, circular reference, so body is typed to any +function validateParams(anyParams: unknown): string | undefined { + // validate core query parts, return if it fails validation (returning string) + const coreQueryValidated = validateCoreQueryBody(anyParams); + if (coreQueryValidated) return coreQueryValidated; + + const { thresholdComparator, threshold }: Params = anyParams as Params; + + if (betweenComparators.has(thresholdComparator) && threshold.length === 1) { + return i18n.translate( + 'xpack.responseOps.ruleParams.indexThreshold.invalidThreshold2ErrorMessage', + { + defaultMessage: + '[threshold]: must have two elements for the "{thresholdComparator}" comparator', + values: { + thresholdComparator, + }, + } + ); + } +} + +export function validateCoreQueryBody(anyParams: unknown): string | undefined { + const { aggType, aggField, groupBy, termField, termSize }: CoreQueryParams = + anyParams as CoreQueryParams; + if (aggType !== 'count' && !aggField) { + return i18n.translate( + 'xpack.responseOps.ruleParams.coreQueryParams.aggTypeRequiredErrorMessage', + { + defaultMessage: '[aggField]: must have a value when [aggType] is "{aggType}"', + values: { + aggType, + }, + } + ); + } + + // check grouping + if (groupBy === 'top') { + if (termField == null) { + return i18n.translate( + 'xpack.responseOps.ruleParams.coreQueryParams.termFieldRequiredErrorMessage', + { + defaultMessage: '[termField]: termField required when [groupBy] is top', + } + ); + } + if (termSize == null) { + return i18n.translate( + 'xpack.responseOps.ruleParams.coreQueryParams.termSizeRequiredErrorMessage', + { + defaultMessage: '[termSize]: termSize required when [groupBy] is top', + } + ); + } + if (termSize > MAX_GROUPS) { + return i18n.translate( + 'xpack.responseOps.ruleParams.coreQueryParams.invalidTermSizeMaximumErrorMessage', + { + defaultMessage: '[termSize]: must be less than or equal to {maxGroups}', + values: { + maxGroups: MAX_GROUPS, + }, + } + ); + } + } +} diff --git a/x-pack/platform/plugins/private/translations/translations/fr-FR.json b/x-pack/platform/plugins/private/translations/translations/fr-FR.json index 9b0cd93bbf0e9..bfbf74090e2cc 100644 --- a/x-pack/platform/plugins/private/translations/translations/fr-FR.json +++ b/x-pack/platform/plugins/private/translations/translations/fr-FR.json @@ -41804,24 +41804,14 @@ "xpack.stackAlerts.esQuery.actionVariableContextThresholdLabel": "Un tableau des valeurs des règles de seuil. Il y a deux valeurs pour les seuils \"Between\" (Intermédiaires) et \"notBetween\" (Non-intermédiaires).", "xpack.stackAlerts.esQuery.actionVariableContextTitleLabel": "Titre pour l'alerte.", "xpack.stackAlerts.esQuery.actionVariableContextValueLabel": "Valeur ayant rempli la condition de seuil.", - "xpack.stackAlerts.esQuery.aggTypeRequiredErrorMessage": "[aggField] : doit posséder une valeur lorsque [aggType] est \"{aggType}\"", "xpack.stackAlerts.esQuery.alertTypeContextConditionsDescription": "Le nombre de documents correspondants {groupCondition}{aggCondition} est {negation}{thresholdComparator} {threshold}", "xpack.stackAlerts.esQuery.alertTypeContextReasonDescription": "Le décompte de documents est {value} au cours des derniers/dernières {window}{verb}{index}. Signaler quand {comparator} {threshold}.", "xpack.stackAlerts.esQuery.alertTypeContextSubjectTitle": "règle \"{name}\" : {verb}", "xpack.stackAlerts.esQuery.alertTypeTitle": "Recherche Elasticsearch", "xpack.stackAlerts.esQuery.esqlAlertTypeContextConditionsDescription": "Recherche {negation} de documents{groupCondition}", - "xpack.stackAlerts.esQuery.esqlThresholdComparatorErrorMessage": "[thresholdComparator] : doit être plus élevé que", - "xpack.stackAlerts.esQuery.esqlThresholdErrorMessage": "[threshold] :doit correspondre à 0", - "xpack.stackAlerts.esQuery.esqlTimeFieldErrorMessage": "[timeField] : est requis", "xpack.stackAlerts.esQuery.invalidComparatorErrorMessage": "thresholdComparator spécifié non valide : {comparator}", - "xpack.stackAlerts.esQuery.invalidEsQueryErrorMessage": "[esQuery] : doit être au format JSON valide", "xpack.stackAlerts.esQuery.invalidQueryErrorMessage": "requête spécifiée non valide : \"{query}\" - la requête doit être au format JSON", - "xpack.stackAlerts.esQuery.invalidTermSizeMaximumErrorMessage": "[termSize] : doit être inférieure ou égale à {maxGroups}", - "xpack.stackAlerts.esQuery.invalidThreshold2ErrorMessage": "[threshold] : requiert deux éléments pour le comparateur \"{thresholdComparator}\"", - "xpack.stackAlerts.esQuery.missingEsQueryErrorMessage": "[esQuery] : doit contenir \"query\"", "xpack.stackAlerts.esQuery.serverless.sizeErrorMessage": "[size] : doit être inférieur ou égal à {maxSize}", - "xpack.stackAlerts.esQuery.termFieldRequiredErrorMessage": "[termField] : termField requis lorsque [groupBy] est Premiers", - "xpack.stackAlerts.esQuery.termSizeRequiredErrorMessage": "[termSize] : termSize requis lorsque [groupBy] est Premiers", "xpack.stackAlerts.esQuery.ui.alertParams.fixErrorInExpressionBelowValidationMessage": "L'expression contient des erreurs.", "xpack.stackAlerts.esQuery.ui.alertType.defaultActionMessage": "La règle de requête Elasticsearch '{{rule.name}}' est active : - Valeur : '{{context.value}}' - Conditions remplies : '{{context.conditions}}' sur '{{rule.params.timeWindowSize}}''{{rule.params.timeWindowUnit}}' - Horodatage : '{{context.date}}' - Lien : '{{context.link}}'", "xpack.stackAlerts.esQuery.ui.alertType.descriptionText": "Alerte lorsque des correspondances sont trouvées au cours de la dernière exécution de la requête.", @@ -41947,7 +41937,6 @@ "xpack.stackAlerts.indexThreshold.alertTypeRecoveryContextSubjectTitle": "groupe {group} de l'alerte {name} récupéré", "xpack.stackAlerts.indexThreshold.alertTypeTitle": "Seuil de l'index", "xpack.stackAlerts.indexThreshold.invalidComparatorErrorMessage": "thresholdComparator spécifié non valide : {comparator}", - "xpack.stackAlerts.indexThreshold.invalidThreshold2ErrorMessage": "[threshold] : requiert deux éléments pour le comparateur \"{thresholdComparator}\"", "xpack.stackAlerts.threshold.ui.alertParams.fixErrorInExpressionBelowValidationMessage": "L'expression contient des erreurs.", "xpack.stackAlerts.threshold.ui.alertType.defaultActionMessage": "La règle '{{rule.name}}' est active pour le groupe '{{context.group}}' : - Valeur : '{{context.value}}' - Conditions remplies : '{{context.conditions}}' sur '{{rule.params.timeWindowSize}}{{rule.params.timeWindowUnit}}' - Horodatage : '{{context.date}}'", "xpack.stackAlerts.threshold.ui.alertType.descriptionText": "Alerte lorsqu'une recherche agrégée atteint le seuil.", @@ -44657,20 +44646,13 @@ "xpack.triggersActionsUI.connectors.home.description": "Connectez des logiciels tiers avec vos données d'alerting.", "xpack.triggersActionsUI.connectors.home.documentationButtonLabel": "Documentation", "xpack.triggersActionsUI.connectors.home.logsTabTitle": "Logs", - "xpack.triggersActionsUI.data.coreQueryParams.aggTypeRequiredErrorMessage": "[aggField] : doit posséder une valeur lorsque [aggType] est \"{aggType}\"", "xpack.triggersActionsUI.data.coreQueryParams.dateStartGTdateEndErrorMessage": "[dateStart] : est postérieure à [dateEnd]", "xpack.triggersActionsUI.data.coreQueryParams.formattedFieldErrorMessage": "format {formatName} non valide pour {fieldName} : \"{fieldValue}\"", "xpack.triggersActionsUI.data.coreQueryParams.intervalRequiredErrorMessage": "[interval] : doit être spécifié si [dateStart] n'est pas égale à [dateEnd]", - "xpack.triggersActionsUI.data.coreQueryParams.invalidAggTypeErrorMessage": "aggType non valide : \"{aggType}\"", "xpack.triggersActionsUI.data.coreQueryParams.invalidDateErrorMessage": "date {date} non valide", "xpack.triggersActionsUI.data.coreQueryParams.invalidDurationErrorMessage": "durée non valide : \"{duration}\"", - "xpack.triggersActionsUI.data.coreQueryParams.invalidGroupByErrorMessage": "groupBy non valide : \"{groupBy}\"", "xpack.triggersActionsUI.data.coreQueryParams.invalidKQLQueryErrorMessage": "La requête de filtre n'est pas valide.", - "xpack.triggersActionsUI.data.coreQueryParams.invalidTermSizeMaximumErrorMessage": "[termSize] : doit être inférieure ou égale à {maxGroups}", - "xpack.triggersActionsUI.data.coreQueryParams.invalidTimeWindowUnitsErrorMessage": "timeWindowUnit non valide : \"{timeWindowUnit}\"", "xpack.triggersActionsUI.data.coreQueryParams.maxIntervalsErrorMessage": "le nombre calculé d'intervalles {intervals} est supérieur au maximum {maxIntervals}", - "xpack.triggersActionsUI.data.coreQueryParams.termFieldRequiredErrorMessage": "[termField] : termField requis lorsque [groupBy] est Premiers", - "xpack.triggersActionsUI.data.coreQueryParams.termSizeRequiredErrorMessage": "[termSize] : termSize requis lorsque [groupBy] est Premiers", "xpack.triggersActionsUI.deleteSelectedIdsConfirmModal.cancelButtonLabel": "Annuler", "xpack.triggersActionsUI.deleteSelectedIdsConfirmModal.deleteButtonLabel": "Supprimer {numIdsToDelete, plural, one {{singleTitle}} other {# {multipleTitle}}}", "xpack.triggersActionsUI.deleteSelectedIdsConfirmModal.descriptionText": "Vous ne pourrez pas récupérer {numIdsToDelete, plural, one {un {singleTitle} supprimé} other {des {multipleTitle} supprimés}}.", diff --git a/x-pack/platform/plugins/private/translations/translations/ja-JP.json b/x-pack/platform/plugins/private/translations/translations/ja-JP.json index 72b86723f8af7..bc1e1c98bb70a 100644 --- a/x-pack/platform/plugins/private/translations/translations/ja-JP.json +++ b/x-pack/platform/plugins/private/translations/translations/ja-JP.json @@ -41657,24 +41657,14 @@ "xpack.stackAlerts.esQuery.actionVariableContextThresholdLabel": "ルールのしきい値の配列。betweenとnotBetweenのしきい値には2つの値があります。", "xpack.stackAlerts.esQuery.actionVariableContextTitleLabel": "アラートのタイトル。", "xpack.stackAlerts.esQuery.actionVariableContextValueLabel": "しきい値条件を満たした値。", - "xpack.stackAlerts.esQuery.aggTypeRequiredErrorMessage": "[aggType]が「{aggType}」のときには[aggField]に値が必要です", "xpack.stackAlerts.esQuery.alertTypeContextConditionsDescription": "一致するドキュメント数{groupCondition}{aggCondition}は{negation}{thresholdComparator} {threshold}です", "xpack.stackAlerts.esQuery.alertTypeContextReasonDescription": "前回の{window}{verb}{index}ではドキュメント数は{value}です。{comparator} {threshold}のときにアラートを発行します。", "xpack.stackAlerts.esQuery.alertTypeContextSubjectTitle": "ルール''{name}''{verb}", "xpack.stackAlerts.esQuery.alertTypeTitle": "Elasticsearch クエリー", "xpack.stackAlerts.esQuery.esqlAlertTypeContextConditionsDescription": "クエリー{negation}ドキュメント{groupCondition}", - "xpack.stackAlerts.esQuery.esqlThresholdComparatorErrorMessage": "[thresholdComparator]:はそれよりも大きくなければなりません", - "xpack.stackAlerts.esQuery.esqlThresholdErrorMessage": "[threshold]は0でなければなりません", - "xpack.stackAlerts.esQuery.esqlTimeFieldErrorMessage": "[timeField]は必須です", "xpack.stackAlerts.esQuery.invalidComparatorErrorMessage": "無効な thresholdComparator が指定されました:{comparator}", - "xpack.stackAlerts.esQuery.invalidEsQueryErrorMessage": "[esQuery]:有効なJSONでなければなりません", "xpack.stackAlerts.esQuery.invalidQueryErrorMessage": "無効なクエリーが指定されました: \"{query}\" - クエリーはJSONでなければなりません", - "xpack.stackAlerts.esQuery.invalidTermSizeMaximumErrorMessage": "[termSize]:{maxGroups}以下でなければなりません。", - "xpack.stackAlerts.esQuery.invalidThreshold2ErrorMessage": "[threshold]:「{thresholdComparator}」比較子の場合には2つの要素が必要です", - "xpack.stackAlerts.esQuery.missingEsQueryErrorMessage": "[esQuery]:「query」を含む必要があります", "xpack.stackAlerts.esQuery.serverless.sizeErrorMessage": "[size]:{maxSize}以下でなければなりません", - "xpack.stackAlerts.esQuery.termFieldRequiredErrorMessage": "[termField]:[groupBy]がトップのときにはtermFieldが必要です", - "xpack.stackAlerts.esQuery.termSizeRequiredErrorMessage": "[termSize]:[groupBy]がトップのときにはtermSizeが必要です", "xpack.stackAlerts.esQuery.ui.alertParams.fixErrorInExpressionBelowValidationMessage": "下の表現のエラーを修正してください。", "xpack.stackAlerts.esQuery.ui.alertType.defaultActionMessage": "Elasticsearchクエリルール'{{rule.name}}'がアクティブです:- 値:'{{context.value}}' - 満たされた条件:'{{rule.params.timeWindowSize}}''{{rule.params.timeWindowUnit}}'の'{{context.conditions}}' - タイムスタンプ:'{{context.date}}' - リンク:'{{context.link}}'", "xpack.stackAlerts.esQuery.ui.alertType.descriptionText": "前回のクエリ実行中に一致が見つかったときにアラートを発行します。", @@ -41800,7 +41790,6 @@ "xpack.stackAlerts.indexThreshold.alertTypeRecoveryContextSubjectTitle": "アラート{name}グループ{group}が回復されました", "xpack.stackAlerts.indexThreshold.alertTypeTitle": "インデックスしきい値", "xpack.stackAlerts.indexThreshold.invalidComparatorErrorMessage": "無効な thresholdComparator が指定されました:{comparator}", - "xpack.stackAlerts.indexThreshold.invalidThreshold2ErrorMessage": "[threshold]:「{thresholdComparator}」比較子の場合には2つの要素が必要です", "xpack.stackAlerts.threshold.ui.alertParams.fixErrorInExpressionBelowValidationMessage": "下の表現のエラーを修正してください。", "xpack.stackAlerts.threshold.ui.alertType.defaultActionMessage": "グループ'{{context.group}}'のルール'{{rule.name}}'がアクティブです:- 値:'{{context.value}}' - 満たされた条件:'{{rule.params.timeWindowSize}}{{rule.params.timeWindowUnit}}'の'{{context.conditions}}' - タイムスタンプ:'{{context.date}}'", "xpack.stackAlerts.threshold.ui.alertType.descriptionText": "アグリゲーションされたクエリがしきい値に達したときにアラートを発行します。", @@ -44509,20 +44498,13 @@ "xpack.triggersActionsUI.connectors.home.description": "サードパーティソフトウェアをアラートデータに連携します。", "xpack.triggersActionsUI.connectors.home.documentationButtonLabel": "ドキュメント", "xpack.triggersActionsUI.connectors.home.logsTabTitle": "ログ", - "xpack.triggersActionsUI.data.coreQueryParams.aggTypeRequiredErrorMessage": "[aggType]が「{aggType}」のときには[aggField]に値が必要です", "xpack.triggersActionsUI.data.coreQueryParams.dateStartGTdateEndErrorMessage": "[dateStart]が[dateEnd]よりも大です", "xpack.triggersActionsUI.data.coreQueryParams.formattedFieldErrorMessage": "{fieldName}の無効な{formatName}形式:「{fieldValue}」", "xpack.triggersActionsUI.data.coreQueryParams.intervalRequiredErrorMessage": "[interval]:[dateStart]が[dateEnd]と等しくない場合に指定する必要があります", - "xpack.triggersActionsUI.data.coreQueryParams.invalidAggTypeErrorMessage": "無効な aggType:「{aggType}」", "xpack.triggersActionsUI.data.coreQueryParams.invalidDateErrorMessage": "無効な日付{date}", "xpack.triggersActionsUI.data.coreQueryParams.invalidDurationErrorMessage": "無効な期間:「{duration}」", - "xpack.triggersActionsUI.data.coreQueryParams.invalidGroupByErrorMessage": "無効なgroupBy:「{groupBy}」", "xpack.triggersActionsUI.data.coreQueryParams.invalidKQLQueryErrorMessage": "フィルタークエリは無効です。", - "xpack.triggersActionsUI.data.coreQueryParams.invalidTermSizeMaximumErrorMessage": "[termSize]:{maxGroups}以下でなければなりません。", - "xpack.triggersActionsUI.data.coreQueryParams.invalidTimeWindowUnitsErrorMessage": "無効な timeWindowUnit:「{timeWindowUnit}」", "xpack.triggersActionsUI.data.coreQueryParams.maxIntervalsErrorMessage": "間隔{intervals}の計算値が{maxIntervals}よりも大です", - "xpack.triggersActionsUI.data.coreQueryParams.termFieldRequiredErrorMessage": "[termField]:[groupBy]がトップのときにはtermFieldが必要です", - "xpack.triggersActionsUI.data.coreQueryParams.termSizeRequiredErrorMessage": "[termSize]:[groupBy]がトップのときにはtermSizeが必要です", "xpack.triggersActionsUI.deleteSelectedIdsConfirmModal.cancelButtonLabel": "キャンセル", "xpack.triggersActionsUI.deleteSelectedIdsConfirmModal.deleteButtonLabel": "{numIdsToDelete, plural, one {{singleTitle}} other {# {multipleTitle}}}を削除", "xpack.triggersActionsUI.globalAlerts.alertStats.disabled": "無効", diff --git a/x-pack/platform/plugins/private/translations/translations/zh-CN.json b/x-pack/platform/plugins/private/translations/translations/zh-CN.json index c23ba90effe34..8bd67350ef86e 100644 --- a/x-pack/platform/plugins/private/translations/translations/zh-CN.json +++ b/x-pack/platform/plugins/private/translations/translations/zh-CN.json @@ -41046,16 +41046,8 @@ "xpack.stackAlerts.esQuery.alertTypeContextReasonDescription": "过去 {window}{verb}{index} 的文档计数为 {value}。{comparator} {threshold} 时告警。", "xpack.stackAlerts.esQuery.alertTypeTitle": "Elasticsearch 查询", "xpack.stackAlerts.esQuery.esqlAlertTypeContextConditionsDescription": "查询{negation} 文档{groupCondition}", - "xpack.stackAlerts.esQuery.esqlThresholdComparatorErrorMessage": "[thresholdComparator]:必须大于", - "xpack.stackAlerts.esQuery.esqlThresholdErrorMessage": "[threshold]:必须为 0", - "xpack.stackAlerts.esQuery.esqlTimeFieldErrorMessage": "[timeField]:必填", "xpack.stackAlerts.esQuery.invalidComparatorErrorMessage": "指定的 thresholdComparator 无效:{comparator}", - "xpack.stackAlerts.esQuery.invalidEsQueryErrorMessage": "[esQuery]:必须是有效的 JSON", - "xpack.stackAlerts.esQuery.invalidTermSizeMaximumErrorMessage": "[termSize]:必须小于或等于 {maxGroups}", - "xpack.stackAlerts.esQuery.missingEsQueryErrorMessage": "[esQuery]:必须包含'query'", "xpack.stackAlerts.esQuery.serverless.sizeErrorMessage": "[size]:必须小于或等于 {maxSize}", - "xpack.stackAlerts.esQuery.termFieldRequiredErrorMessage": "[termField]:[groupBy] 为 top 时,termField 为必需", - "xpack.stackAlerts.esQuery.termSizeRequiredErrorMessage": "[termSize]:[groupBy] 为 top 时,termSize 为必需", "xpack.stackAlerts.esQuery.ui.alertParams.fixErrorInExpressionBelowValidationMessage": "表达式包含错误。", "xpack.stackAlerts.esQuery.ui.alertType.defaultActionMessage": "Elasticsearch 查询规则 '{{rule.name}}' 处于活动状态:- 值:'{{context.value}}' - 满足的条件:'{{context.conditions}}' 超过 '{{rule.params.timeWindowSize}}''{{rule.params.timeWindowUnit}}' - 时间戳:'{{context.date}}' - 链接:'{{context.link}}'", "xpack.stackAlerts.esQuery.ui.alertType.descriptionText": "在运行最新查询期间找到匹配项时告警。", @@ -43858,10 +43850,7 @@ "xpack.triggersActionsUI.data.coreQueryParams.intervalRequiredErrorMessage": "[interval]:如果 [dateStart] 不等于 [dateEnd],则必须指定", "xpack.triggersActionsUI.data.coreQueryParams.invalidDateErrorMessage": "日期 {date} 无效", "xpack.triggersActionsUI.data.coreQueryParams.invalidKQLQueryErrorMessage": "筛选查询无效。", - "xpack.triggersActionsUI.data.coreQueryParams.invalidTermSizeMaximumErrorMessage": "[termSize]:必须小于或等于 {maxGroups}", "xpack.triggersActionsUI.data.coreQueryParams.maxIntervalsErrorMessage": "时间间隔 {intervals} 的计算数目大于最大值 {maxIntervals}", - "xpack.triggersActionsUI.data.coreQueryParams.termFieldRequiredErrorMessage": "[termField]:[groupBy] 为 top 时,termField 为必需", - "xpack.triggersActionsUI.data.coreQueryParams.termSizeRequiredErrorMessage": "[termSize]:[groupBy] 为 top 时,termSize 为必需", "xpack.triggersActionsUI.deleteSelectedIdsConfirmModal.cancelButtonLabel": "取消", "xpack.triggersActionsUI.deleteSelectedIdsConfirmModal.deleteButtonLabel": "删除{numIdsToDelete, plural, one {{singleTitle}} other { # 个{multipleTitle}}}", "xpack.triggersActionsUI.deleteSelectedIdsConfirmModal.descriptionText": "无法恢复{numIdsToDelete, plural, one {删除的{singleTitle}} other {删除的{multipleTitle}}}。", diff --git a/x-pack/platform/plugins/shared/stack_alerts/common/comparator.ts b/x-pack/platform/plugins/shared/stack_alerts/common/comparator.ts index 65c604ad4471e..eae6f06b13319 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/common/comparator.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/common/comparator.ts @@ -7,8 +7,6 @@ import { Comparator } from './comparator_types'; -export type ComparatorFn = (value: number, threshold: number[]) => boolean; - const humanReadableComparators = new Map([ [Comparator.LT, 'less than'], [Comparator.LT_OR_EQ, 'less than or equal to'], @@ -18,21 +16,6 @@ const humanReadableComparators = new Map([ [Comparator.NOT_BETWEEN, 'not between'], ]); -export const ComparatorFns = new Map([ - [Comparator.LT, (value: number, threshold: number[]) => value < threshold[0]], - [Comparator.LT_OR_EQ, (value: number, threshold: number[]) => value <= threshold[0]], - [Comparator.GT_OR_EQ, (value: number, threshold: number[]) => value >= threshold[0]], - [Comparator.GT, (value: number, threshold: number[]) => value > threshold[0]], - [ - Comparator.BETWEEN, - (value: number, threshold: number[]) => value >= threshold[0] && value <= threshold[1], - ], - [ - Comparator.NOT_BETWEEN, - (value: number, threshold: number[]) => value < threshold[0] || value > threshold[1], - ], -]); - export const getComparatorScript = ( comparator: Comparator, threshold: number[], @@ -72,8 +55,6 @@ export const getComparatorScript = ( } }; -export const ComparatorFnNames = new Set(ComparatorFns.keys()); - export function getHumanReadableComparator(comparator: Comparator) { return humanReadableComparators.has(comparator) ? humanReadableComparators.get(comparator) diff --git a/x-pack/platform/plugins/shared/stack_alerts/common/index.ts b/x-pack/platform/plugins/shared/stack_alerts/common/index.ts index c85a734864e42..5c85299b6c606 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/common/index.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/common/index.ts @@ -5,12 +5,7 @@ * 2.0. */ -export { - ComparatorFns, - getComparatorScript, - ComparatorFnNames, - getHumanReadableComparator, -} from './comparator'; +export { getComparatorScript, getHumanReadableComparator } from './comparator'; export type { EsqlTable } from './esql_query_utils'; export { rowToDocument, transformDatatableToEsqlTable, toEsQueryHits } from './esql_query_utils'; diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/action_context.test.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/action_context.test.ts index aa8c7d1dbc0de..3e2e7f20dfcbf 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/action_context.test.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/action_context.test.ts @@ -10,7 +10,7 @@ import { addMessages, getContextConditionsDescription, } from './action_context'; -import { EsQueryRuleParams, EsQueryRuleParamsSchema } from './rule_type_params'; +import { EsQueryRuleParams, EsQueryRuleParamsSchema } from '@kbn/response-ops-rule-params/es_query'; import { Comparator } from '../../../common/comparator_types'; describe('addMessages', () => { diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/action_context.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/action_context.ts index e950cc26380a5..f0955b0f49ffd 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/action_context.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/action_context.ts @@ -8,7 +8,7 @@ import { i18n } from '@kbn/i18n'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { AlertInstanceContext } from '@kbn/alerting-plugin/server'; -import { EsQueryRuleParams } from './rule_type_params'; +import type { EsQueryRuleParams } from '@kbn/response-ops-rule-params/es_query'; import { Comparator } from '../../../common/comparator_types'; import { getHumanReadableComparator } from '../../../common'; import { isEsqlQueryRule } from './util'; diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/executor.test.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/executor.test.ts index b45a3df2216c9..0669a90252f61 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/executor.test.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/executor.test.ts @@ -14,7 +14,7 @@ import { elasticsearchServiceMock } from '@kbn/core-elasticsearch-server-mocks'; import { loggerMock } from '@kbn/logging-mocks'; import { createSearchSourceMock } from '@kbn/data-plugin/common/search/search_source/mocks'; import { ISearchStartSearchSource } from '@kbn/data-plugin/common'; -import { EsQueryRuleParams } from './rule_type_params'; +import { EsQueryRuleParams } from '@kbn/response-ops-rule-params/es_query'; import { FetchEsQueryOpts } from './lib/fetch_es_query'; import { FetchSearchSourceQueryOpts } from './lib/fetch_search_source_query'; import { FetchEsqlQueryOpts } from './lib/fetch_esql_query'; diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/executor.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/executor.ts index f5496967157b4..43cdfc39de876 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/executor.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/executor.ts @@ -18,8 +18,9 @@ import { } from '@kbn/rule-data-utils'; import { AlertsClientError } from '@kbn/alerting-plugin/server'; +import { EsQueryRuleParams } from '@kbn/response-ops-rule-params/es_query'; -import { ComparatorFns } from '../../../common'; +import { ComparatorFns } from '@kbn/response-ops-rule-params/common'; import { addMessages, EsQueryRuleActionContext, @@ -33,7 +34,6 @@ import { } from './types'; import { ActionGroupId, ConditionMetAlertInstanceId } from './constants'; import { fetchEsQuery } from './lib/fetch_es_query'; -import { EsQueryRuleParams } from './rule_type_params'; import { fetchSearchSourceQuery } from './lib/fetch_search_source_query'; import { isEsqlQueryRule, isSearchSourceRule } from './util'; import { fetchEsqlQuery } from './lib/fetch_esql_query'; diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/rule_type.test.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/rule_type.test.ts index 7473ae3619770..688c00de549ea 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/rule_type.test.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/rule_type.test.ts @@ -12,7 +12,8 @@ import { RuleExecutorServicesMock, alertsMock } from '@kbn/alerting-plugin/serve import { loggingSystemMock } from '@kbn/core/server/mocks'; import { dataViewPluginMocks } from '@kbn/data-views-plugin/public/mocks'; import { getRuleType } from './rule_type'; -import { EsQueryRuleParams, EsQueryRuleState } from './rule_type_params'; +import { EsQueryRuleState } from './rule_type_params'; +import { EsQueryRuleParams } from '@kbn/response-ops-rule-params/es_query'; import { ActionContext } from './action_context'; import type { ESSearchResponse, ESSearchRequest } from '@kbn/es-types'; import { elasticsearchClientMock } from '@kbn/core-elasticsearch-client-server-mocks'; diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/rule_type.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/rule_type.ts index 9c63ddb25a8da..289deadbc3265 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/rule_type.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/rule_type.ts @@ -9,16 +9,19 @@ import { i18n } from '@kbn/i18n'; import { CoreSetup, DEFAULT_APP_CATEGORIES } from '@kbn/core/server'; import { extractReferences, injectReferences } from '@kbn/data-plugin/common'; import { ES_QUERY_ID, STACK_ALERTS_FEATURE_ID } from '@kbn/rule-data-utils'; +import { + EsQueryRuleParamsSchema, + type EsQueryRuleParams, +} from '@kbn/response-ops-rule-params/es_query'; import { STACK_ALERTS_AAD_CONFIG } from '..'; import { RuleType } from '../../types'; import { ActionContext } from './action_context'; import { - EsQueryRuleParams, EsQueryRuleParamsExtractedParams, - EsQueryRuleParamsSchema, EsQueryRuleState, validateServerless, } from './rule_type_params'; + import { ExecutorOptions } from './types'; import { ActionGroupId } from './constants'; import { executor } from './executor'; diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/rule_type_params.test.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/rule_type_params.test.ts index 1d7583f0e5ef7..da83e26073cfe 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/rule_type_params.test.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/rule_type_params.test.ts @@ -6,11 +6,12 @@ */ import { TypeOf } from '@kbn/config-schema'; -import { MAX_GROUPS } from '@kbn/triggers-actions-ui-plugin/server'; +import { MAX_GROUPS } from '@kbn/response-ops-rule-params/common'; import type { Writable } from '@kbn/utility-types'; import { Comparator } from '../../../common/comparator_types'; import { ES_QUERY_MAX_HITS_PER_EXECUTION } from '../../../common'; -import { EsQueryRuleParamsSchema, EsQueryRuleParams, validateServerless } from './rule_type_params'; +import { validateServerless } from './rule_type_params'; +import { EsQueryRuleParamsSchema, EsQueryRuleParams } from '@kbn/response-ops-rule-params/es_query'; const DefaultParams: Writable> = { index: ['index-name'], diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/rule_type_params.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/rule_type_params.ts index c0257912a7ce7..0ab12818e8341 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/rule_type_params.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/rule_type_params.ts @@ -6,30 +6,11 @@ */ import { i18n } from '@kbn/i18n'; -import { schema, TypeOf } from '@kbn/config-schema'; -import { - validateTimeWindowUnits, - validateAggType, - validateGroupBy, - MAX_GROUPS, -} from '@kbn/triggers-actions-ui-plugin/server'; import { RuleTypeState } from '@kbn/alerting-plugin/server'; +import { type EsQueryRuleParams } from '@kbn/response-ops-rule-params/es_query'; import { SerializedSearchSourceFields } from '@kbn/data-plugin/common'; -import { - MAX_SELECTABLE_SOURCE_FIELDS, - MAX_SELECTABLE_GROUP_BY_TERMS, -} from '../../../common/constants'; -import { - ComparatorFnNames, - ES_QUERY_MAX_HITS_PER_EXECUTION, - ES_QUERY_MAX_HITS_PER_EXECUTION_SERVERLESS, -} from '../../../common'; -import { Comparator } from '../../../common/comparator_types'; -import { getComparatorSchemaType } from '../lib/comparator'; -import { isEsqlQueryRule, isSearchSourceRule } from './util'; +import { ES_QUERY_MAX_HITS_PER_EXECUTION_SERVERLESS } from '../../../common'; -// rule type parameters -export type EsQueryRuleParams = TypeOf; export interface EsQueryRuleState extends RuleTypeState { latestTimestamp: string | undefined; } @@ -40,181 +21,6 @@ export type EsQueryRuleParamsExtractedParams = Omit MAX_GROUPS) { - return i18n.translate('xpack.stackAlerts.esQuery.invalidTermSizeMaximumErrorMessage', { - defaultMessage: '[termSize]: must be less than or equal to {maxGroups}', - values: { - maxGroups: MAX_GROUPS, - }, - }); - } - } - - if (isSearchSourceRule(searchType)) { - return; - } - - if (isEsqlQueryRule(searchType)) { - const { timeField } = anyParams as EsQueryRuleParams; - - if (!timeField) { - return i18n.translate('xpack.stackAlerts.esQuery.esqlTimeFieldErrorMessage', { - defaultMessage: '[timeField]: is required', - }); - } - if (thresholdComparator !== Comparator.GT) { - return i18n.translate('xpack.stackAlerts.esQuery.esqlThresholdComparatorErrorMessage', { - defaultMessage: '[thresholdComparator]: is required to be greater than', - }); - } - if (threshold && threshold[0] !== 0) { - return i18n.translate('xpack.stackAlerts.esQuery.esqlThresholdErrorMessage', { - defaultMessage: '[threshold]: is required to be 0', - }); - } - return; - } - - try { - const parsedQuery = JSON.parse(esQuery); - - if (parsedQuery && !parsedQuery.query) { - return i18n.translate('xpack.stackAlerts.esQuery.missingEsQueryErrorMessage', { - defaultMessage: '[esQuery]: must contain "query"', - }); - } - } catch (err) { - return i18n.translate('xpack.stackAlerts.esQuery.invalidEsQueryErrorMessage', { - defaultMessage: '[esQuery]: must be valid JSON', - }); - } -} - export function validateServerless(params: EsQueryRuleParams) { const { size } = params; if (size > ES_QUERY_MAX_HITS_PER_EXECUTION_SERVERLESS) { @@ -228,14 +34,3 @@ export function validateServerless(params: EsQueryRuleParams) { ); } } - -function validateComparator(comparator: Comparator): string | undefined { - if (ComparatorFnNames.has(comparator)) return; - - return i18n.translate('xpack.stackAlerts.esQuery.invalidComparatorErrorMessage', { - defaultMessage: 'invalid thresholdComparator specified: {comparator}', - values: { - comparator, - }, - }); -} diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/types.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/types.ts index ba84b4e56e26a..1bf48670134ab 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/types.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/types.ts @@ -5,9 +5,10 @@ * 2.0. */ +import { EsQueryRuleParams } from '@kbn/response-ops-rule-params/es_query'; import { RuleExecutorOptions, RuleTypeParams } from '../../types'; import { ActionContext } from './action_context'; -import { EsQueryRuleParams, EsQueryRuleState } from './rule_type_params'; +import { EsQueryRuleState } from './rule_type_params'; import { ActionGroupId } from './constants'; import { StackAlertType } from '../types'; diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/util.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/util.ts index 26994006ead11..c2af56fd91da1 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/util.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/es_query/util.ts @@ -7,8 +7,8 @@ import { i18n } from '@kbn/i18n'; import { SearchResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { EsQueryRuleParams } from '@kbn/response-ops-rule-params/es_query'; import { OnlyEsQueryRuleParams } from './types'; -import { EsQueryRuleParams } from './rule_type_params'; export function isEsQueryRule(searchType: EsQueryRuleParams['searchType']) { return searchType === 'esQuery'; diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/action_context.test.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/action_context.test.ts index ce1bcb035c778..737154f5b0a40 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/action_context.test.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/action_context.test.ts @@ -6,7 +6,7 @@ */ import { BaseActionContext, addMessages } from './action_context'; -import { ParamsSchema } from './rule_type_params'; +import { ParamsSchema } from '@kbn/response-ops-rule-params/index_threshold'; describe('ActionContext', () => { it('generates expected properties if aggField is null', async () => { diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/action_context.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/action_context.ts index 06084d421f3ae..6aedd0af599e1 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/action_context.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/action_context.ts @@ -7,7 +7,7 @@ import { i18n } from '@kbn/i18n'; import { AlertInstanceContext } from '@kbn/alerting-plugin/server'; -import { Params } from './rule_type_params'; +import type { Params } from '@kbn/response-ops-rule-params/index_threshold'; // rule type context provided to actions export interface ActionContext extends BaseActionContext { diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/index.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/index.ts index 99adda4420e46..0b3290424a263 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/index.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/index.ts @@ -10,7 +10,6 @@ import { getRuleType } from './rule_type'; // future enhancement: make these configurable? export const MAX_INTERVALS = 1000; -export const MAX_GROUPS = 1000; export const DEFAULT_GROUPS = 100; export function register(params: RegisterRuleTypesParams) { diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/rule_type.test.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/rule_type.test.ts index e94340cd049c6..aa258209ea79d 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/rule_type.test.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/rule_type.test.ts @@ -12,7 +12,7 @@ import { loggingSystemMock } from '@kbn/core/server/mocks'; import { RuleExecutorServices } from '@kbn/alerting-plugin/server'; import { getRuleType, ActionGroupId } from './rule_type'; import { ActionContext } from './action_context'; -import { Params } from './rule_type_params'; +import type { Params } from '@kbn/response-ops-rule-params/index_threshold'; import { TIME_SERIES_BUCKET_SELECTOR_FIELD } from '@kbn/triggers-actions-ui-plugin/server'; import { RuleExecutorServicesMock, alertsMock } from '@kbn/alerting-plugin/server/mocks'; import { Comparator } from '../../../common/comparator_types'; diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/rule_type.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/rule_type.ts index 7a2e0109ea28b..a231a6a55b6e2 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/rule_type.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/rule_type.ts @@ -18,10 +18,11 @@ import { STACK_ALERTS_FEATURE_ID, } from '@kbn/rule-data-utils'; import { AlertsClientError } from '@kbn/alerting-plugin/server'; +import { type Params, ParamsSchema } from '@kbn/response-ops-rule-params/index_threshold'; +import { ComparatorFns } from '@kbn/response-ops-rule-params/common'; import { ALERT_EVALUATION_CONDITIONS, ALERT_TITLE, STACK_ALERTS_AAD_CONFIG } from '..'; -import { ComparatorFns, getComparatorScript, getHumanReadableComparator } from '../../../common'; +import { getComparatorScript, getHumanReadableComparator } from '../../../common'; import { ActionContext, BaseActionContext, addMessages } from './action_context'; -import { Params, ParamsSchema } from './rule_type_params'; import { RuleType, RuleExecutorOptions, StackAlertsStartDeps } from '../../types'; import { StackAlertType } from '../types'; diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/rule_type_params.test.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/rule_type_params.test.ts index c4dd8f2149255..1d998c1aa9d8b 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/rule_type_params.test.ts +++ b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/rule_type_params.test.ts @@ -5,10 +5,14 @@ * 2.0. */ -import { ParamsSchema, Params } from './rule_type_params'; +import { + ParamsSchema, + type Params, + type CoreQueryParams, +} from '@kbn/response-ops-rule-params/index_threshold'; +import { MAX_GROUPS } from '@kbn/response-ops-rule-params/common'; import { ObjectType, TypeOf } from '@kbn/config-schema'; import type { Writable } from '@kbn/utility-types'; -import { CoreQueryParams, MAX_GROUPS } from '@kbn/triggers-actions-ui-plugin/server'; import { Comparator } from '../../../common/comparator_types'; const DefaultParams: Writable> = { diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/rule_type_params.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/rule_type_params.ts deleted file mode 100644 index 3e8175ad8481f..0000000000000 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/index_threshold/rule_type_params.ts +++ /dev/null @@ -1,64 +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 { schema, TypeOf } from '@kbn/config-schema'; -import { - CoreQueryParamsSchemaProperties, - validateCoreQueryBody, -} from '@kbn/triggers-actions-ui-plugin/server'; -import { ComparatorFnNames } from '../../../common'; -import { Comparator } from '../../../common/comparator_types'; -import { getComparatorSchemaType } from '../lib/comparator'; - -// rule type parameters - -export type Params = TypeOf; - -export const ParamsSchema = schema.object( - { - ...CoreQueryParamsSchemaProperties, - // the comparison function to use to determine if the threshold as been met - thresholdComparator: getComparatorSchemaType(validateComparator), - // the values to use as the threshold; `between` and `notBetween` require - // two values, the others require one. - threshold: schema.arrayOf(schema.number(), { minSize: 1, maxSize: 2 }), - }, - { validate: validateParams } -); - -const betweenComparators = new Set(['between', 'notBetween']); - -// using direct type not allowed, circular reference, so body is typed to any -function validateParams(anyParams: unknown): string | undefined { - // validate core query parts, return if it fails validation (returning string) - const coreQueryValidated = validateCoreQueryBody(anyParams); - if (coreQueryValidated) return coreQueryValidated; - - const { thresholdComparator, threshold }: Params = anyParams as Params; - - if (betweenComparators.has(thresholdComparator) && threshold.length === 1) { - return i18n.translate('xpack.stackAlerts.indexThreshold.invalidThreshold2ErrorMessage', { - defaultMessage: - '[threshold]: must have two elements for the "{thresholdComparator}" comparator', - values: { - thresholdComparator, - }, - }); - } -} - -function validateComparator(comparator: Comparator): string | undefined { - if (ComparatorFnNames.has(comparator)) return; - - return i18n.translate('xpack.stackAlerts.indexThreshold.invalidComparatorErrorMessage', { - defaultMessage: 'invalid thresholdComparator specified: {comparator}', - values: { - comparator, - }, - }); -} diff --git a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/lib/comparator.ts b/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/lib/comparator.ts deleted file mode 100644 index d783b199723f5..0000000000000 --- a/x-pack/platform/plugins/shared/stack_alerts/server/rule_types/lib/comparator.ts +++ /dev/null @@ -1,21 +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 { schema } from '@kbn/config-schema'; -import { Comparator } from '../../../common/comparator_types'; - -export const getComparatorSchemaType = (validate: (comparator: Comparator) => string | void) => - schema.oneOf( - [ - schema.literal(Comparator.GT), - schema.literal(Comparator.LT), - schema.literal(Comparator.GT_OR_EQ), - schema.literal(Comparator.LT_OR_EQ), - schema.literal(Comparator.BETWEEN), - schema.literal(Comparator.NOT_BETWEEN), - ], - { validate } - ); diff --git a/x-pack/platform/plugins/shared/stack_alerts/tsconfig.json b/x-pack/platform/plugins/shared/stack_alerts/tsconfig.json index 3196468e3e3a2..41157161e4987 100644 --- a/x-pack/platform/plugins/shared/stack_alerts/tsconfig.json +++ b/x-pack/platform/plugins/shared/stack_alerts/tsconfig.json @@ -1,14 +1,9 @@ { "extends": "../../../../../tsconfig.base.json", "compilerOptions": { - "outDir": "target/types", + "outDir": "target/types" }, - "include": [ - "server/**/*", - "server/**/*.json", - "public/**/*", - "common/*" - ], + "include": ["server/**/*", "server/**/*.json", "public/**/*", "common/*"], "kbn_references": [ "@kbn/core", "@kbn/alerting-plugin", @@ -58,7 +53,5 @@ "@kbn/alerting-rule-utils", "@kbn/response-ops-rule-params" ], - "exclude": [ - "target/**/*", - ] + "exclude": ["target/**/*"] } diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/index.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/index.ts index edb2829c3f76f..38f866d9fd514 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/index.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/index.ts @@ -9,18 +9,10 @@ import { Logger, IRouter } from '@kbn/core/server'; import { timeSeriesQuery } from './lib/time_series_query'; import { registerRoutes } from './routes'; -export type { TimeSeriesQuery, CoreQueryParams } from './lib'; -export { - TIME_SERIES_BUCKET_SELECTOR_FIELD, - CoreQueryParamsSchemaProperties, - validateCoreQueryBody, - validateTimeWindowUnits, - validateAggType, - validateGroupBy, -} from './lib'; +export type { TimeSeriesQuery } from './lib'; +export { TIME_SERIES_BUCKET_SELECTOR_FIELD } from './lib'; // future enhancement: make these configurable? -export const MAX_GROUPS = 1000; export const DEFAULT_GROUPS = 100; export function getService() { diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/core_query_types.test.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/core_query_types.test.ts index 0289223f525c8..4ab691651967d 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/core_query_types.test.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/core_query_types.test.ts @@ -9,8 +9,8 @@ import { ObjectType } from '@kbn/config-schema'; import type { Writable } from '@kbn/utility-types'; -import { CoreQueryParams } from './core_query_types'; -import { MAX_GROUPS } from '..'; +import type { CoreQueryParams } from '@kbn/response-ops-rule-params/index_threshold'; +import { MAX_GROUPS } from '@kbn/response-ops-rule-params/common'; const DefaultParams: Writable> = { index: 'index-name', diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/core_query_types.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/core_query_types.ts index c9ba7dc013d86..73d6cfbd8dcbb 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/core_query_types.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/core_query_types.ts @@ -8,136 +8,8 @@ // common properties on time_series_query and alert_type_params import { i18n } from '@kbn/i18n'; -import { schema, TypeOf } from '@kbn/config-schema'; import { toElasticsearchQuery, fromKueryExpression } from '@kbn/es-query'; -import { MAX_GROUPS } from '..'; - -export const CoreQueryParamsSchemaProperties = { - // name of the indices to search - index: schema.oneOf([ - schema.string({ minLength: 1 }), - schema.arrayOf(schema.string({ minLength: 1 }), { minSize: 1 }), - ]), - // field in index used for date/time - timeField: schema.string({ minLength: 1 }), - // aggregation type - aggType: schema.string({ validate: validateAggType, defaultValue: 'count' }), - // aggregation field - aggField: schema.maybe(schema.string({ minLength: 1 })), - // how to group - groupBy: schema.string({ validate: validateGroupBy, defaultValue: 'all' }), - // field to group on (for groupBy: top) - termField: schema.maybe(schema.string({ minLength: 1 })), - // filter field - filterKuery: schema.maybe(schema.string({ validate: validateKuery })), - // limit on number of groups returned - termSize: schema.maybe(schema.number({ min: 1 })), - // size of time window for date range aggregations - timeWindowSize: schema.number({ min: 1 }), - // units of time window for date range aggregations - timeWindowUnit: schema.string({ validate: validateTimeWindowUnits }), -}; - -const CoreQueryParamsSchema = schema.object(CoreQueryParamsSchemaProperties); -export type CoreQueryParams = TypeOf; - -// Meant to be used in a "subclass"'s schema body validator, so the -// anyParams object is assumed to have been validated with the schema -// above. -// Using direct type not allowed, circular reference, so body is typed to unknown. -export function validateCoreQueryBody(anyParams: unknown): string | undefined { - const { aggType, aggField, groupBy, termField, termSize }: CoreQueryParams = - anyParams as CoreQueryParams; - if (aggType !== 'count' && !aggField) { - return i18n.translate( - 'xpack.triggersActionsUI.data.coreQueryParams.aggTypeRequiredErrorMessage', - { - defaultMessage: '[aggField]: must have a value when [aggType] is "{aggType}"', - values: { - aggType, - }, - } - ); - } - - // check grouping - if (groupBy === 'top') { - if (termField == null) { - return i18n.translate( - 'xpack.triggersActionsUI.data.coreQueryParams.termFieldRequiredErrorMessage', - { - defaultMessage: '[termField]: termField required when [groupBy] is top', - } - ); - } - if (termSize == null) { - return i18n.translate( - 'xpack.triggersActionsUI.data.coreQueryParams.termSizeRequiredErrorMessage', - { - defaultMessage: '[termSize]: termSize required when [groupBy] is top', - } - ); - } - if (termSize > MAX_GROUPS) { - return i18n.translate( - 'xpack.triggersActionsUI.data.coreQueryParams.invalidTermSizeMaximumErrorMessage', - { - defaultMessage: '[termSize]: must be less than or equal to {maxGroups}', - values: { - maxGroups: MAX_GROUPS, - }, - } - ); - } - } -} - -const AggTypes = new Set(['count', 'avg', 'min', 'max', 'sum']); - -export function validateAggType(aggType: string): string | undefined { - if (AggTypes.has(aggType)) { - return; - } - - return i18n.translate('xpack.triggersActionsUI.data.coreQueryParams.invalidAggTypeErrorMessage', { - defaultMessage: 'invalid aggType: "{aggType}"', - values: { - aggType, - }, - }); -} - -export function validateGroupBy(groupBy: string): string | undefined { - if (groupBy === 'all' || groupBy === 'top') { - return; - } - - return i18n.translate('xpack.triggersActionsUI.data.coreQueryParams.invalidGroupByErrorMessage', { - defaultMessage: 'invalid groupBy: "{groupBy}"', - values: { - groupBy, - }, - }); -} - -const TimeWindowUnits = new Set(['s', 'm', 'h', 'd']); - -export function validateTimeWindowUnits(timeWindowUnit: string): string | undefined { - if (TimeWindowUnits.has(timeWindowUnit)) { - return; - } - - return i18n.translate( - 'xpack.triggersActionsUI.data.coreQueryParams.invalidTimeWindowUnitsErrorMessage', - { - defaultMessage: 'invalid timeWindowUnit: "{timeWindowUnit}"', - values: { - timeWindowUnit, - }, - } - ); -} export function validateKuery(query: string): string | undefined { try { diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/index.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/index.ts index 83d20af0c9d5b..2b2540e19bbfd 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/index.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/index.ts @@ -7,11 +7,3 @@ export type { TimeSeriesQuery } from './time_series_query'; export { TIME_SERIES_BUCKET_SELECTOR_FIELD } from './time_series_query'; -export type { CoreQueryParams } from './core_query_types'; -export { - CoreQueryParamsSchemaProperties, - validateCoreQueryBody, - validateTimeWindowUnits, - validateAggType, - validateGroupBy, -} from './core_query_types'; diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/time_series_types.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/time_series_types.ts index 5e9ffbfcc112c..df84bcea52bf0 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/time_series_types.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/server/data/lib/time_series_types.ts @@ -12,7 +12,10 @@ import { i18n } from '@kbn/i18n'; import { schema, TypeOf } from '@kbn/config-schema'; import { parseDuration } from '@kbn/alerting-plugin/server'; -import { CoreQueryParamsSchemaProperties, validateCoreQueryBody } from './core_query_types'; +import { + CoreQueryParamsSchemaProperties, + validateCoreQueryBody, +} from '@kbn/response-ops-rule-params/index_threshold'; import { MAX_INTERVALS, getDateStartAfterDateEndErrorMessage, diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/server/index.ts b/x-pack/platform/plugins/shared/triggers_actions_ui/server/index.ts index 4dfe9a569a4bd..389dac766ab8f 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/server/index.ts +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/server/index.ts @@ -8,17 +8,8 @@ import { PluginConfigDescriptor, PluginInitializerContext } from '@kbn/core/serv import { configSchema, ConfigSchema } from './config'; export type { PluginStartContract } from './plugin'; -export type { TimeSeriesQuery, CoreQueryParams } from './data'; -export { - CoreQueryParamsSchemaProperties, - validateCoreQueryBody, - validateTimeWindowUnits, - validateAggType, - validateGroupBy, - MAX_GROUPS, - DEFAULT_GROUPS, - TIME_SERIES_BUCKET_SELECTOR_FIELD, -} from './data'; +export type { TimeSeriesQuery } from './data'; +export { DEFAULT_GROUPS, TIME_SERIES_BUCKET_SELECTOR_FIELD } from './data'; export const config: PluginConfigDescriptor = { exposeToBrowser: { diff --git a/x-pack/platform/plugins/shared/triggers_actions_ui/tsconfig.json b/x-pack/platform/plugins/shared/triggers_actions_ui/tsconfig.json index a4b9939f6ae70..827ecab259257 100644 --- a/x-pack/platform/plugins/shared/triggers_actions_ui/tsconfig.json +++ b/x-pack/platform/plugins/shared/triggers_actions_ui/tsconfig.json @@ -75,7 +75,8 @@ "@kbn/response-ops-rule-form", "@kbn/charts-theme", "@kbn/rrule", - "@kbn/core-notifications-browser-mocks" + "@kbn/core-notifications-browser-mocks", + "@kbn/response-ops-rule-params" ], "exclude": ["target/**/*"] } From 285c0bcaf5384249329069a917ad03848a87cbac Mon Sep 17 00:00:00 2001 From: Vadim Kibana <82822460+vadimkibana@users.noreply.github.com> Date: Tue, 18 Feb 2025 10:04:33 +0100 Subject: [PATCH 45/78] [ES|QL] Fix field loading when, both, `METADATA` and `LOOKUP JOIN` present (#211375) ## Summary Closes https://github.com/elastic/kibana/issues/210080 - Constructs field lookup ES|QL query more robustly. Instead of extracting the text of the first command, now it uses the AST to get the source and metadata nodes from the `FROM` command and indices from the `JOIN` command. Then it constructs a new `FROM` query using the `synth` API. --- .../src/mutate/commands/from/metadata.ts | 15 ++++--- .../src/mutate/commands/from/sources.ts | 17 +++++--- .../src/synth/__tests__/expr_template.test.ts | 9 ++++ .../shared/kbn-esql-ast/src/synth/helpers.ts | 12 +++++- .../shared/kbn-esql-ast/src/synth/types.ts | 2 +- .../src/validation/helpers.ts | 41 ++++++++++++------- 6 files changed, 70 insertions(+), 26 deletions(-) diff --git a/src/platform/packages/shared/kbn-esql-ast/src/mutate/commands/from/metadata.ts b/src/platform/packages/shared/kbn-esql-ast/src/mutate/commands/from/metadata.ts index 4d637a1fd0570..0a4384cf22adf 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/mutate/commands/from/metadata.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/mutate/commands/from/metadata.ts @@ -8,7 +8,7 @@ */ import { Walker } from '../../../walker'; -import { ESQLAstQueryExpression, ESQLColumn, ESQLCommandOption } from '../../../types'; +import { ESQLAstQueryExpression, ESQLColumn, ESQLCommand, ESQLCommandOption } from '../../../types'; import { Visitor } from '../../../visitor'; import { cmpArr, findByPredicate } from '../../util'; import * as generic from '../../generic'; @@ -23,12 +23,12 @@ import type { Predicate } from '../../types'; * @returns A collection of [column, option] pairs for each metadata field found. */ export const list = ( - ast: ESQLAstQueryExpression + ast: ESQLAstQueryExpression | ESQLCommand<'from'> ): IterableIterator<[ESQLColumn, ESQLCommandOption]> => { type ReturnExpression = IterableIterator; type ReturnCommand = IterableIterator<[ESQLColumn, ESQLCommandOption]>; - return new Visitor() + const visitor = new Visitor() .on('visitExpression', function* (): ReturnExpression {}) .on('visitColumnExpression', function* (ctx): ReturnExpression { yield ctx.node; @@ -53,8 +53,13 @@ export const list = ( for (const command of ctx.visitCommands()) { yield* command; } - }) - .visitQuery(ast); + }); + + if (ast.type === 'command') { + return visitor.visitCommand(ast); + } else { + return visitor.visitQuery(ast); + } }; /** diff --git a/src/platform/packages/shared/kbn-esql-ast/src/mutate/commands/from/sources.ts b/src/platform/packages/shared/kbn-esql-ast/src/mutate/commands/from/sources.ts index c10096cec38d9..8c38cd829ea0f 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/mutate/commands/from/sources.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/mutate/commands/from/sources.ts @@ -8,14 +8,16 @@ */ import { Builder } from '../../../builder'; -import { ESQLAstQueryExpression, ESQLSource } from '../../../types'; +import { ESQLAstQueryExpression, ESQLCommand, ESQLSource } from '../../../types'; import { Visitor } from '../../../visitor'; import * as generic from '../../generic'; import * as util from '../../util'; import type { Predicate } from '../../types'; -export const list = (ast: ESQLAstQueryExpression): IterableIterator => { - return new Visitor() +export const list = ( + ast: ESQLAstQueryExpression | ESQLCommand<'from'> +): IterableIterator => { + const visitor = new Visitor() .on('visitFromCommand', function* (ctx): IterableIterator { for (const argument of ctx.arguments()) { if (argument.type === 'source') { @@ -28,8 +30,13 @@ export const list = (ast: ESQLAstQueryExpression): IterableIterator for (const command of ctx.visitCommands()) { yield* command; } - }) - .visitQuery(ast); + }); + + if (ast.type === 'command') { + return visitor.visitCommand(ast); + } else { + return visitor.visitQuery(ast); + } }; export const findByPredicate = ( diff --git a/src/platform/packages/shared/kbn-esql-ast/src/synth/__tests__/expr_template.test.ts b/src/platform/packages/shared/kbn-esql-ast/src/synth/__tests__/expr_template.test.ts index 0c6e78a143106..e464844b210eb 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/synth/__tests__/expr_template.test.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/synth/__tests__/expr_template.test.ts @@ -39,3 +39,12 @@ test('can compose nodes into templated string', () => { expect(text).toBe('a.b.c = FN(1, a.b.c)'); }); + +test('creates a list of nodes separated by command, if array passed in', () => { + const arg1 = expr`1`; + const arg2 = expr`a.b.c`; + const value = expr`fn(${[arg1, arg2]})`; + const text = BasicPrettyPrinter.expression(value); + + expect(text).toBe('FN(1, a.b.c)'); +}); diff --git a/src/platform/packages/shared/kbn-esql-ast/src/synth/helpers.ts b/src/platform/packages/shared/kbn-esql-ast/src/synth/helpers.ts index 77419486ec7ce..3523569d0fdf9 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/synth/helpers.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/synth/helpers.ts @@ -61,7 +61,17 @@ export const createSynthMethod = ( if (i < params.length) { const param = params[i]; if (typeof param === 'string') src += param; - else src += serialize(param); + else if (Array.isArray(param)) { + let list: string = ''; + + for (const item of param) { + const serialized = typeof item === 'string' ? item : serialize(item); + + list += (list ? ', ' : '') + serialized; + } + + src += list; + } else src += serialize(param); } } return generator(src, opts); diff --git a/src/platform/packages/shared/kbn-esql-ast/src/synth/types.ts b/src/platform/packages/shared/kbn-esql-ast/src/synth/types.ts index 46f24e70151d4..39a3d4fde51f1 100644 --- a/src/platform/packages/shared/kbn-esql-ast/src/synth/types.ts +++ b/src/platform/packages/shared/kbn-esql-ast/src/synth/types.ts @@ -14,7 +14,7 @@ export type SynthGenerator = (src: string, opts?: Pars export type SynthTaggedTemplate = ( template: TemplateStringsArray, - ...params: Array + ...params: Array ) => N; export type SynthTaggedTemplateWithOpts = ( diff --git a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/helpers.ts b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/helpers.ts index 00bfe5275a2a3..67ef45bb05563 100644 --- a/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/helpers.ts +++ b/src/platform/packages/shared/kbn-esql-validation-autocomplete/src/validation/helpers.ts @@ -12,10 +12,12 @@ import type { ESQLAstItem, ESQLAstMetricsCommand, ESQLAstQueryExpression, + ESQLColumn, ESQLMessage, ESQLSingleAstItem, + ESQLSource, } from '@kbn/esql-ast'; -import { mutate } from '@kbn/esql-ast'; +import { mutate, synth } from '@kbn/esql-ast'; import { FunctionDefinition } from '../definitions/types'; import { getAllArrayTypes, getAllArrayValues } from '../shared/helpers'; import { getMessageFromId } from './errors'; @@ -25,32 +27,43 @@ export function buildQueryForFieldsFromSource(queryString: string, ast: ESQLAst) const firstCommand = ast[0]; if (!firstCommand) return ''; - let query = ''; + const sources: ESQLSource[] = []; + const metadataFields: ESQLColumn[] = []; if (firstCommand.name === 'metrics') { const metrics = firstCommand as ESQLAstMetricsCommand; - query = `FROM ${metrics.sources.map((source) => source.name).join(', ')}`; - } else { - query = queryString.substring(0, firstCommand.location.max + 1); + + sources.push(...metrics.sources); + } else if (firstCommand.name === 'from') { + const fromSources = mutate.commands.from.sources.list(firstCommand as any); + const fromMetadataColumns = [...mutate.commands.from.metadata.list(firstCommand as any)].map( + ([column]) => column + ); + + sources.push(...fromSources); + if (fromMetadataColumns.length) metadataFields.push(...fromMetadataColumns); } const joinSummary = mutate.commands.join.summarize({ type: 'query', commands: ast, } as ESQLAstQueryExpression); - const joinIndices = joinSummary.map( - ({ - target: { - index: { name }, - }, - }) => name - ); + const joinIndices = joinSummary.map(({ target: { index } }) => index); if (joinIndices.length > 0) { - query += `, ${joinIndices.join(', ')}`; + sources.push(...joinIndices); } - return query; + if (sources.length === 0) { + return queryString.substring(0, firstCommand.location.max + 1); + } + + const from = + metadataFields.length > 0 + ? synth.cmd`FROM ${sources} METADATA ${metadataFields}` + : synth.cmd`FROM ${sources}`; + + return from.toString(); } export function buildQueryForFieldsInPolicies(policies: ESQLPolicy[]) { From e3fc4e23fc01577e40a1fb78e04dfac766a362f8 Mon Sep 17 00:00:00 2001 From: Jill Guyonnet Date: Tue, 18 Feb 2025 10:07:11 +0100 Subject: [PATCH 46/78] [Fleet] Update instructions for installing Fleet Server (#211495) ## Summary Closes https://github.com/elastic/kibana/issues/209079 Before: ![Screenshot 2025-02-17 at 18 06 06](https://github.com/user-attachments/assets/7dee41ff-d2c1-44ba-80f5-f2a8d61e4149) After: ![Screenshot 2025-02-17 at 18 06 49](https://github.com/user-attachments/assets/5384a063-c7b1-475f-96f3-ce06f82b8a1c) --- .../utils/install_command_utils.test.ts | 105 +++++++++++++----- .../utils/install_command_utils.ts | 2 + 2 files changed, 78 insertions(+), 29 deletions(-) diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.test.ts b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.test.ts index 1bded97210af2..21bdf033c2b3d 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.test.ts +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.test.ts @@ -24,7 +24,8 @@ describe('getInstallCommandForPlatform', () => { sudo ./elastic-agent install \\\\ --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); expect( @@ -41,7 +42,8 @@ describe('getInstallCommandForPlatform', () => { sudo ./elastic-agent install \\\\ --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); }); @@ -60,7 +62,8 @@ describe('getInstallCommandForPlatform', () => { sudo ./elastic-agent install \\\\ --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); expect( @@ -77,7 +80,8 @@ describe('getInstallCommandForPlatform', () => { sudo ./elastic-agent install \\\\ --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); }); @@ -96,7 +100,8 @@ describe('getInstallCommandForPlatform', () => { .\\\\elastic-agent.exe install \` --fleet-server-es=http://elasticsearch:9200 \` --fleet-server-service-token=service-token-1 \` - --fleet-server-port=8220" + --fleet-server-port=8220 \` + --install-servers" `); }); @@ -116,7 +121,8 @@ describe('getInstallCommandForPlatform', () => { sudo elastic-agent enroll \\\\ --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); expect( @@ -134,7 +140,8 @@ describe('getInstallCommandForPlatform', () => { sudo elastic-agent enroll \\\\ --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); }); @@ -154,7 +161,8 @@ describe('getInstallCommandForPlatform', () => { sudo elastic-agent enroll \\\\ --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); expect( @@ -172,7 +180,8 @@ describe('getInstallCommandForPlatform', () => { sudo elastic-agent enroll \\\\ --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); }); @@ -192,7 +201,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ --fleet-server-es-ca-trusted-fingerprint=fingerprint123456 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); }); }); @@ -215,7 +225,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); expect( @@ -234,7 +245,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); }); @@ -255,7 +267,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); expect( @@ -274,7 +287,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); }); @@ -295,7 +309,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es=http://elasticsearch:9200 \` --fleet-server-service-token=service-token-1 \` --fleet-server-policy=policy-1 \` - --fleet-server-port=8220" + --fleet-server-port=8220 \` + --install-servers" `); }); @@ -317,7 +332,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); expect( @@ -337,7 +353,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); }); @@ -359,7 +376,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); expect( @@ -379,7 +397,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); }); }); @@ -407,7 +426,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es=http://elasticsearch:9200 \\\\ --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); }); }); @@ -436,7 +456,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es-ca= \\\\ --fleet-server-cert= \\\\ --fleet-server-cert-key= \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); expect( @@ -461,7 +482,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es-ca= \\\\ --fleet-server-cert= \\\\ --fleet-server-cert-key= \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); }); @@ -488,7 +510,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es-ca= \\\\ --fleet-server-cert= \\\\ --fleet-server-cert-key= \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); expect( @@ -513,7 +536,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es-ca= \\\\ --fleet-server-cert= \\\\ --fleet-server-cert-key= \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); }); @@ -540,7 +564,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es-ca= \` --fleet-server-cert= \` --fleet-server-cert-key= \` - --fleet-server-port=8220" + --fleet-server-port=8220 \` + --install-servers" `); }); @@ -568,7 +593,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es-ca= \\\\ --fleet-server-cert= \\\\ --fleet-server-cert-key= \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); expect( @@ -594,7 +620,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es-ca= \\\\ --fleet-server-cert= \\\\ --fleet-server-cert-key= \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); }); @@ -622,7 +649,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es-ca= \\\\ --fleet-server-cert= \\\\ --fleet-server-cert-key= \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); expect( @@ -648,7 +676,8 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-es-ca= \\\\ --fleet-server-cert= \\\\ --fleet-server-cert-key= \\\\ - --fleet-server-port=8220" + --fleet-server-port=8220 \\\\ + --install-servers" `); }); }); @@ -692,6 +721,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ --fleet-server-port=8220 \\\\ + --install-servers \\\\ --proxy-url=http://es-proxy:1111" `); @@ -732,6 +762,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ --fleet-server-port=8220 \\\\ + --install-servers \\\\ --proxy-url=http://es-proxy:1111" `); }); @@ -774,6 +805,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ --fleet-server-port=8220 \\\\ + --install-servers \\\\ --proxy-url=http://es-proxy:1111" `); @@ -814,6 +846,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ --fleet-server-port=8220 \\\\ + --install-servers \\\\ --proxy-url=http://es-proxy:1111" `); }); @@ -856,6 +889,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \` --fleet-server-policy=policy-1 \` --fleet-server-port=8220 \` + --install-servers \` --proxy-url=http://es-proxy:1111" `); }); @@ -899,6 +933,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ --fleet-server-port=8220 \\\\ + --install-servers \\\\ --proxy-url=http://es-proxy:1111" `); @@ -940,6 +975,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ --fleet-server-port=8220 \\\\ + --install-servers \\\\ --proxy-url=http://es-proxy:1111" `); }); @@ -983,6 +1019,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ --fleet-server-port=8220 \\\\ + --install-servers \\\\ --proxy-url=http://es-proxy:1111" `); @@ -1024,6 +1061,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ --fleet-server-port=8220 \\\\ + --install-servers \\\\ --proxy-url=http://es-proxy:1111" `); }); @@ -1080,6 +1118,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ --fleet-server-port=8220 \\\\ + --install-servers \\\\ --proxy-url=http://es-proxy:1111 \\\\ --proxy-header=\\"X-Forwarded-For=forwarded-value\\" \\\\ --proxy-header=\\"test-header=test-value\\"" @@ -1100,6 +1139,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ --fleet-server-port=8220 \\\\ + --install-servers \\\\ --proxy-url=http://es-proxy:1111 \\\\ --proxy-header=\\"X-Forwarded-For=forwarded-value\\" \\\\ --proxy-header=\\"test-header=test-value\\"" @@ -1156,6 +1196,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ --fleet-server-port=8220 \\\\ + --install-servers \\\\ --proxy-url=http://es-proxy:1111 \\\\ --proxy-header=\\"X-Forwarded-For=forwarded-value\\" \\\\ --proxy-header=\\"test-header=test-value\\"" @@ -1176,6 +1217,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ --fleet-server-port=8220 \\\\ + --install-servers \\\\ --proxy-url=http://es-proxy:1111 \\\\ --proxy-header=\\"X-Forwarded-For=forwarded-value\\" \\\\ --proxy-header=\\"test-header=test-value\\"" @@ -1228,6 +1270,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \` --fleet-server-policy=policy-1 \` --fleet-server-port=8220 \` + --install-servers \` --proxy-url=http://es-proxy:1111 \` --proxy-header=\\"X-Forwarded-For=forwarded-value\\" \` --proxy-header=\\"test-header=test-value\\"" @@ -1285,6 +1328,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ --fleet-server-port=8220 \\\\ + --install-servers \\\\ --proxy-url=http://es-proxy:1111 \\\\ --proxy-header=\\"X-Forwarded-For=forwarded-value\\" \\\\ --proxy-header=\\"test-header=test-value\\"" @@ -1306,6 +1350,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ --fleet-server-port=8220 \\\\ + --install-servers \\\\ --proxy-url=http://es-proxy:1111 \\\\ --proxy-header=\\"X-Forwarded-For=forwarded-value\\" \\\\ --proxy-header=\\"test-header=test-value\\"" @@ -1363,6 +1408,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ --fleet-server-port=8220 \\\\ + --install-servers \\\\ --proxy-url=http://es-proxy:1111 \\\\ --proxy-header=\\"X-Forwarded-For=forwarded-value\\" \\\\ --proxy-header=\\"test-header=test-value\\"" @@ -1384,6 +1430,7 @@ describe('getInstallCommandForPlatform', () => { --fleet-server-service-token=service-token-1 \\\\ --fleet-server-policy=policy-1 \\\\ --fleet-server-port=8220 \\\\ + --install-servers \\\\ --proxy-url=http://es-proxy:1111 \\\\ --proxy-header=\\"X-Forwarded-For=forwarded-value\\" \\\\ --proxy-header=\\"test-header=test-value\\"" diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.ts b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.ts index 9dac831898b97..dab86442d8e76 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.ts +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/components/fleet_server_instructions/utils/install_command_utils.ts @@ -158,6 +158,8 @@ export function getInstallCommandForPlatform({ commandArguments.push(['fleet-server-port', '8220']); + commandArguments.push(['install-servers']); + const enrollmentProxyArgs = []; if (esOutputProxy) { enrollmentProxyArgs.push(['proxy-url', esOutputProxy.url]); From d527c915e169731affad42a45856d4c1a789a3b1 Mon Sep 17 00:00:00 2001 From: Elena Shostak <165678770+elena-shostak@users.noreply.github.com> Date: Tue, 18 Feb 2025 16:10:36 +0700 Subject: [PATCH 47/78] Upgraded dompurify to 3.2.4 (#211452) ## Summary Upgraded `dompurify` package to `3.2.4` version --- yarn.lock | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7ac6c3536f8bf..2208e7ab23fd5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12700,6 +12700,11 @@ resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== +"@types/trusted-types@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" + integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== + "@types/type-detect@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/type-detect/-/type-detect-4.0.1.tgz#3b0f5ac82ea630090cbf57c57a1bf5a63a29b9b6" @@ -17797,9 +17802,11 @@ domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: domelementtype "^2.3.0" dompurify@^3.0.6: - version "3.1.5" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.1.5.tgz#2c6a113fc728682a0f55684b1388c58ddb79dc38" - integrity sha512-lwG+n5h8QNpxtyrJW/gJWckL+1/DQiYMX8f7t8Z2AZTPw1esVrqjI63i7Zc2Gz0aKzLVMYC1V1PL/ky+aY/NgA== + version "3.2.4" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.2.4.tgz#af5a5a11407524431456cf18836c55d13441cd8e" + integrity sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg== + optionalDependencies: + "@types/trusted-types" "^2.0.7" domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" From 2dc3eeb44368dbbdcc24a1702eea48efca6ce953 Mon Sep 17 00:00:00 2001 From: Elena Shostak <165678770+elena-shostak@users.noreply.github.com> Date: Tue, 18 Feb 2025 16:13:31 +0700 Subject: [PATCH 48/78] Upgraded vega to 5.26.0 (#211458) ## Summary Upgraded vega to `5.26.0`. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 456 +++++++++++++++++++++++++++------------------------ 2 files changed, 240 insertions(+), 218 deletions(-) diff --git a/package.json b/package.json index 5cd35f520c8e3..96a462264799a 100644 --- a/package.json +++ b/package.json @@ -1288,7 +1288,7 @@ "usng.js": "^0.4.5", "utility-types": "^3.10.0", "uuid": "10.0.0", - "vega": "^5.24.0", + "vega": "^5.26.0", "vega-interpreter": "^1.0.4", "vega-lite": "^5.5.0", "vega-schema-url-parser": "^2.2.0", diff --git a/yarn.lock b/yarn.lock index 2208e7ab23fd5..1fbba72b2badb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11784,6 +11784,11 @@ resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.15.tgz#f9d55fd5a0aa2de9dc80b1b04e437538b7298868" integrity sha512-9oSxFzDCT2Rj6DfcHF8G++jxBKS7mBqXl5xrRW+Kbvjry6Uduya2iiwqHPhVXpasAVMBYKkEPGgKhd3+/HZ6xA== +"@types/geojson@7946.0.4": + version "7946.0.4" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.4.tgz#4e049756383c3f055dd8f3d24e63fb543e98eb07" + integrity sha512-MHmwBtCb7OCv1DSivz2UNJXPGU/1btAWRKlqJ2saEhVJkpkvqHMMaOpKg0v4sAbDWSQekHGvPVMM8nQ+Jen03Q== + "@types/getos@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/getos/-/getos-3.0.0.tgz#582c758e99e9d634f31f471faf7ce59cf1c39a71" @@ -16741,10 +16746,10 @@ cytoscape@^3.31.0: resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.31.0.tgz#cffbbb8ca51db01cbf360e0cf59088db6d429837" integrity sha512-zDGn1K/tfZwEnoGOcHc0H4XazqAAXAuDpcYw9mUnUjATjqljyCNGJv8uEvbvxGaGHaVshxMecyl6oc6uKzRfbw== -"d3-array@1 - 3", "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3.2.2, d3-array@^3.2.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.2.tgz#f8ac4705c5b06914a7e0025bbf8d5f1513f6a86e" - integrity sha512-yEEyEAbDrF8C6Ob2myOBLjwBLck1Z89jMGFee0oPsn95GqjerpaOA4ch+vc2l0FNFFwMD5N7OCSEN5eAlsUbgQ== +"d3-array@1 - 3", "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3.2.4, d3-array@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" + integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== dependencies: internmap "1 - 2" @@ -16896,6 +16901,14 @@ d3-path@^3.1.0: resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-2.0.0.tgz#edbad045cef88701f6fee3aee8e93fb332d30f9d" integrity sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw== +d3-scale-chromatic@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#34c39da298b23c20e02f1a4b239bd0f22e7f1314" + integrity sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ== + dependencies: + d3-color "1 - 3" + d3-interpolate "1 - 3" + d3-scale@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-3.3.0.tgz#28c600b29f47e5b9cd2df9749c206727966203f3" @@ -32854,46 +32867,54 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -vega-canvas@^1.2.6, vega-canvas@^1.2.7: +vega-canvas@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/vega-canvas/-/vega-canvas-1.2.7.tgz#cf62169518f5dcd91d24ad352998c2248f8974fb" integrity sha512-OkJ9CACVcN9R5Pi9uF6MZBF06pO6qFpDYHWSKBJsdHP5o724KrsgR6UvbnXFH82FdsiTOff/HqjuaG8C7FL+9Q== -vega-crossfilter@~4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/vega-crossfilter/-/vega-crossfilter-4.1.1.tgz#3ff3ca0574883706f7a399dc6d60f4a0f065ece4" - integrity sha512-yesvlMcwRwxrtAd9IYjuxWJJuAMI0sl7JvAFfYtuDkkGDtqfLXUcCzHIATqW6igVIE7tWwGxnbfvQLhLNgK44Q== +vega-crossfilter@~4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/vega-crossfilter/-/vega-crossfilter-4.1.3.tgz#2c404ddcd420605c84fb088f3e9beb671dca498e" + integrity sha512-nyPJAXAUABc3EocUXvAL1J/IWotZVsApIcvOeZaUdEQEtZ7bt8VtP2nj3CLbHBA8FZZVV+K6SmdwvCOaAD4wFQ== dependencies: d3-array "^3.2.2" - vega-dataflow "^5.7.5" - vega-util "^1.17.1" + vega-dataflow "^5.7.7" + vega-util "^1.17.3" -vega-dataflow@^5.7.3, vega-dataflow@^5.7.5, vega-dataflow@~5.7.5: - version "5.7.5" - resolved "https://registry.yarnpkg.com/vega-dataflow/-/vega-dataflow-5.7.5.tgz#0d559f3c3a968831f2995e099a2e270993ddfed9" - integrity sha512-EdsIl6gouH67+8B0f22Owr2tKDiMPNNR8lEvJDcxmFw02nXd8juimclpLvjPQriqn6ta+3Dn5txqfD117H04YA== +vega-dataflow@^5.7.7, vega-dataflow@~5.7.7: + version "5.7.7" + resolved "https://registry.yarnpkg.com/vega-dataflow/-/vega-dataflow-5.7.7.tgz#d766f650aaaf27836894bdb6ee391fd43d7a22ef" + integrity sha512-R2NX2HvgXL+u4E6u+L5lKvvRiCtnE6N6l+umgojfi53suhhkFP+zB+2UAQo4syxuZ4763H1csfkKc4xpqLzKnw== dependencies: - vega-format "^1.1.1" - vega-loader "^4.5.1" - vega-util "^1.17.1" + vega-format "^1.1.3" + vega-loader "^4.5.3" + vega-util "^1.17.3" -vega-encode@~4.9.1: - version "4.9.1" - resolved "https://registry.yarnpkg.com/vega-encode/-/vega-encode-4.9.1.tgz#bad0e99bebec86d42184bcb898576c8accd91e89" - integrity sha512-05JB47UZaqIBS9t6rtHI/aKjEuH4EsSIH+wJWItht4BFj33eIl4XRNtlXdE31uuQT2pXWz5ZWW3KboMuaFzKLw== +vega-encode@~4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/vega-encode/-/vega-encode-4.10.2.tgz#dcef19d040905f5ef43e8a730f6ec501fe4b2a73" + integrity sha512-fsjEY1VaBAmqwt7Jlpz0dpPtfQFiBdP9igEefvumSpy7XUxOJmDQcRDnT3Qh9ctkv3itfPfI9g8FSnGcv2b4jQ== dependencies: d3-array "^3.2.2" d3-interpolate "^3.0.1" - vega-dataflow "^5.7.5" - vega-scale "^7.3.0" - vega-util "^1.17.1" + vega-dataflow "^5.7.7" + vega-scale "^7.4.2" + vega-util "^1.17.3" vega-event-selector@^3.0.1, vega-event-selector@~3.0.0, vega-event-selector@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/vega-event-selector/-/vega-event-selector-3.0.1.tgz#b99e92147b338158f8079d81b28b2e7199c2e259" integrity sha512-K5zd7s5tjr1LiOOkjGpcVls8GsH/f2CWCrWcpKy74gTCp+llCdwz0Enqo013ZlGaRNjfgD/o1caJRt3GSaec4A== -vega-expression@^5.0.1, vega-expression@~5.0.0, vega-expression@~5.0.1: +vega-expression@^5.1.2, vega-expression@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/vega-expression/-/vega-expression-5.1.2.tgz#1ed0677787b8e5f4047c9b847ecc20da0a2a8d05" + integrity sha512-fFeDTh4UtOxlZWL54jf1ZqJHinyerWq/ROiqrQxqLkNJRJ86RmxYTgXwt65UoZ/l4VUv9eAd2qoJeDEf610Umw== + dependencies: + "@types/estree" "^1.0.0" + vega-util "^1.17.3" + +vega-expression@~5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/vega-expression/-/vega-expression-5.0.1.tgz#e6a6eff564d2a93496a9bf34cbc78d8942f236a8" integrity sha512-atfzrMekrcsuyUgZCMklI5ki8cV763aeo1Y6YrfYU7FBwcQEoFhIV/KAJ1vae51aPDGtfzvwbtVIo3WShFCP2Q== @@ -32901,80 +32922,80 @@ vega-expression@^5.0.1, vega-expression@~5.0.0, vega-expression@~5.0.1: "@types/estree" "^1.0.0" vega-util "^1.17.1" -vega-force@~4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/vega-force/-/vega-force-4.2.0.tgz#5374d0dbac674c92620a9801e12b650b0966336a" - integrity sha512-aE2TlP264HXM1r3fl58AvZdKUWBNOGkIvn4EWyqeJdgO2vz46zSU7x7TzPG4ZLuo44cDRU5Ng3I1eQk23Asz6A== +vega-force@~4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/vega-force/-/vega-force-4.2.2.tgz#e70ac31cf73d3ffaed361202613809e8c516d6f0" + integrity sha512-cHZVaY2VNNIG2RyihhSiWniPd2W9R9kJq0znxzV602CgUVgxEfTKtx/lxnVCn8nNrdKAYrGiqIsBzIeKG1GWHw== dependencies: d3-force "^3.0.0" - vega-dataflow "^5.7.5" - vega-util "^1.17.1" + vega-dataflow "^5.7.7" + vega-util "^1.17.3" -vega-format@^1.1.1, vega-format@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vega-format/-/vega-format-1.1.1.tgz#92e4876e18064e7ad54f39045f7b24dede0030b8" - integrity sha512-Rll7YgpYbsgaAa54AmtEWrxaJqgOh5fXlvM2wewO4trb9vwM53KBv4Q/uBWCLK3LLGeBXIF6gjDt2LFuJAUtkQ== +vega-format@^1.1.3, vega-format@~1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/vega-format/-/vega-format-1.1.3.tgz#66e0fd8eb0ba8d9e638b3c62a023cdab9af57bc5" + integrity sha512-wQhw7KR46wKJAip28FF/CicW+oiJaPAwMKdrxlnTA0Nv8Bf7bloRlc+O3kON4b4H1iALLr9KgRcYTOeXNs2MOA== dependencies: d3-array "^3.2.2" d3-format "^3.1.0" d3-time-format "^4.1.0" - vega-time "^2.1.1" - vega-util "^1.17.1" + vega-time "^2.1.3" + vega-util "^1.17.3" -vega-functions@^5.13.1, vega-functions@~5.13.1: - version "5.13.1" - resolved "https://registry.yarnpkg.com/vega-functions/-/vega-functions-5.13.1.tgz#504d672924495fe3ea844e6940c7f6e151cde151" - integrity sha512-0LhntimnvBl4VzRO/nkCwCTbtaP8bE552galKQbCg88GDxdmcmlsoTCwUzG0vZ/qmNM3IbqnP5k5/um3zwFqLw== +vega-functions@^5.16.0, vega-functions@~5.16.0: + version "5.16.0" + resolved "https://registry.yarnpkg.com/vega-functions/-/vega-functions-5.16.0.tgz#e72b5237cb3c507b42658d89286d07ac708d3f90" + integrity sha512-uXjSDbbGcFLCQTZZI+OiZK0U+2dLWC26ONdO0g9RhPzXXzR3niPcFOA0bc/OeiHdTexqsLjOiXxR/K2BckB8gQ== dependencies: d3-array "^3.2.2" d3-color "^3.1.0" d3-geo "^3.1.0" - vega-dataflow "^5.7.5" - vega-expression "^5.0.1" - vega-scale "^7.3.0" - vega-scenegraph "^4.10.2" - vega-selections "^5.4.1" - vega-statistics "^1.8.1" - vega-time "^2.1.1" - vega-util "^1.17.1" - -vega-geo@~4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/vega-geo/-/vega-geo-4.4.1.tgz#3850232bf28c98fab5e26c5fb401acb6fb37b5e5" - integrity sha512-s4WeZAL5M3ZUV27/eqSD3v0FyJz3PlP31XNSLFy4AJXHxHUeXT3qLiDHoVQnW5Om+uBCPDtTT1ROx1smGIf2aA== + vega-dataflow "^5.7.7" + vega-expression "^5.1.2" + vega-scale "^7.4.2" + vega-scenegraph "^4.13.1" + vega-selections "^5.5.0" + vega-statistics "^1.9.0" + vega-time "^2.1.3" + vega-util "^1.17.3" + +vega-geo@~4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/vega-geo/-/vega-geo-4.4.3.tgz#038dc85e1c030b2f2c8bda61fb31ff6bdfea123b" + integrity sha512-+WnnzEPKIU1/xTFUK3EMu2htN35gp9usNZcC0ZFg2up1/Vqu6JyZsX0PIO51oXSIeXn9bwk6VgzlOmJUcx92tA== dependencies: d3-array "^3.2.2" d3-color "^3.1.0" d3-geo "^3.1.0" vega-canvas "^1.2.7" - vega-dataflow "^5.7.5" - vega-projection "^1.6.0" - vega-statistics "^1.8.1" - vega-util "^1.17.1" + vega-dataflow "^5.7.7" + vega-projection "^1.6.2" + vega-statistics "^1.9.0" + vega-util "^1.17.3" -vega-hierarchy@~4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/vega-hierarchy/-/vega-hierarchy-4.1.1.tgz#897974a477dfa70cc0d4efab9465b6cc79a9071f" - integrity sha512-h5mbrDtPKHBBQ9TYbvEb/bCqmGTlUX97+4CENkyH21tJs7naza319B15KRK0NWOHuhbGhFmF8T0696tg+2c8XQ== +vega-hierarchy@~4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/vega-hierarchy/-/vega-hierarchy-4.1.3.tgz#7721aec582cdf332da6a4ee8332a94e3ac064881" + integrity sha512-0Z+TYKRgOEo8XYXnJc2HWg1EGpcbNAhJ9Wpi9ubIbEyEHqIgjCIyFVN8d4nSfsJOcWDzsSmRqohBztxAhOCSaw== dependencies: d3-hierarchy "^3.1.2" - vega-dataflow "^5.7.5" - vega-util "^1.17.1" + vega-dataflow "^5.7.7" + vega-util "^1.17.3" vega-interpreter@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/vega-interpreter/-/vega-interpreter-1.0.4.tgz#291ebf85bc2d1c3550a3da22ff75b3ba0d326a39" integrity sha512-6tpYIa/pJz0cZo5fSxDSkZkAA51pID2LjOtQkOQvbzn+sJiCaWKPFhur8MBqbcmYZ9bnap1OYNwlrvpd2qBLvg== -vega-label@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/vega-label/-/vega-label-1.2.1.tgz#ea45fa5a407991c44edfea9c4ca40874d544a3db" - integrity sha512-n/ackJ5lc0Xs9PInCaGumYn2awomPjJ87EMVT47xNgk2bHmJoZV1Ve/1PUM6Eh/KauY211wPMrNp/9Im+7Ripg== +vega-label@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/vega-label/-/vega-label-1.3.1.tgz#2e370dac88e91615317ba5120cbfc6c43c6227dd" + integrity sha512-Emx4b5s7pvuRj3fBkAJ/E2snCoZACfKAwxVId7f/4kYVlAYLb5Swq6W8KZHrH4M9Qds1XJRUYW9/Y3cceqzEFA== dependencies: - vega-canvas "^1.2.6" - vega-dataflow "^5.7.3" - vega-scenegraph "^4.9.2" - vega-util "^1.15.2" + vega-canvas "^1.2.7" + vega-dataflow "^5.7.7" + vega-scenegraph "^4.13.1" + vega-util "^1.17.3" vega-lite@^5.5.0: version "5.5.0" @@ -32993,112 +33014,113 @@ vega-lite@^5.5.0: vega-util "~1.17.0" yargs "~17.5.1" -vega-loader@^4.5.1, vega-loader@~4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/vega-loader/-/vega-loader-4.5.1.tgz#b85262b3cb8376487db0c014a8a13c3a5e6d52ad" - integrity sha512-qy5x32SaT0YkEujQM2yKqvLGV9XWQ2aEDSugBFTdYzu/1u4bxdUSRDREOlrJ9Km3RWIOgFiCkobPmFxo47SKuA== +vega-loader@^4.5.3, vega-loader@~4.5.3: + version "4.5.3" + resolved "https://registry.yarnpkg.com/vega-loader/-/vega-loader-4.5.3.tgz#f89cf4def5b2c61f65f845ec695b6e14d15c36e9" + integrity sha512-dUfIpxTLF2magoMaur+jXGvwMxjtdlDZaIS8lFj6N7IhUST6nIvBzuUlRM+zLYepI5GHtCLOnqdKU4XV0NggCA== dependencies: d3-dsv "^3.0.1" node-fetch "^2.6.7" topojson-client "^3.1.0" - vega-format "^1.1.1" - vega-util "^1.17.1" + vega-format "^1.1.3" + vega-util "^1.17.3" -vega-parser@~6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/vega-parser/-/vega-parser-6.2.0.tgz#c982aff0a6409486cbbe743a5799412b8b897654" - integrity sha512-as+QnX8Qxe9q51L1C2sVBd+YYYctP848+zEvkBT2jlI2g30aZ6Uv7sKsq7QTL6DUbhXQKR0XQtzlanckSFdaOQ== +vega-parser@~6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/vega-parser/-/vega-parser-6.4.1.tgz#1ba0c59e7299d75a93dd433c5deec6592991ef67" + integrity sha512-ZjF5aQfRe3yD5e2zYZcWWkUn9zGzUonMIirWTp3S3UBCujz+aT0+Ls6wbHdAH6hCPj3PVVkSWuuLkGEIUpWqyQ== dependencies: - vega-dataflow "^5.7.5" + vega-dataflow "^5.7.7" vega-event-selector "^3.0.1" - vega-functions "^5.13.1" - vega-scale "^7.3.0" - vega-util "^1.17.1" + vega-functions "^5.16.0" + vega-scale "^7.4.2" + vega-util "^1.17.3" -vega-projection@^1.6.0, vega-projection@~1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/vega-projection/-/vega-projection-1.6.0.tgz#921acd3220e7d9d04ccd5ce0109433afb3236966" - integrity sha512-LGUaO/kpOEYuTlul+x+lBzyuL9qmMwP1yShdUWYLW+zXoeyGbs5OZW+NbPPwLYqJr5lpXDr/vGztFuA/6g2xvQ== +vega-projection@^1.6.2, vega-projection@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/vega-projection/-/vega-projection-1.6.2.tgz#69ea9a2404bad12642d3ec5c4f5615b27cdcb630" + integrity sha512-3pcVaQL9R3Zfk6PzopLX6awzrQUeYOXJzlfLGP2Xd93mqUepBa6m/reVrTUoSFXA3v9lfK4W/PS2AcVzD/MIcQ== dependencies: d3-geo "^3.1.0" d3-geo-projection "^4.0.0" - vega-scale "^7.3.0" + vega-scale "^7.4.2" -vega-regression@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vega-regression/-/vega-regression-1.1.1.tgz#b53a964152a2fec4847e31571f522bfda23089af" - integrity sha512-98i/z0vdDhOIEhJUdYoJ2nlfVdaHVp2CKB39Qa7G/XyRw0+QwDFFrp8ZRec2xHjHfb6bYLGNeh1pOsC13FelJg== +vega-regression@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/vega-regression/-/vega-regression-1.3.1.tgz#e1de74062250da33e823897565155caefb041dbb" + integrity sha512-AmccF++Z9uw4HNZC/gmkQGe6JsRxTG/R4QpbcSepyMvQN1Rj5KtVqMcmVFP1r3ivM4dYGFuPlzMWvuqp0iKMkQ== dependencies: d3-array "^3.2.2" - vega-dataflow "^5.7.3" - vega-statistics "^1.7.9" - vega-util "^1.15.2" + vega-dataflow "^5.7.7" + vega-statistics "^1.9.0" + vega-util "^1.17.3" -vega-runtime@^6.1.4, vega-runtime@~6.1.4: - version "6.1.4" - resolved "https://registry.yarnpkg.com/vega-runtime/-/vega-runtime-6.1.4.tgz#98b67160cea9554e690bfd44719f9d17f90c4220" - integrity sha512-0dDYXyFLQcxPQ2OQU0WuBVYLRZnm+/CwVu6i6N4idS7R9VXIX5581EkCh3pZ20pQ/+oaA7oJ0pR9rJgJ6rukRQ== +vega-runtime@^6.2.1, vega-runtime@~6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/vega-runtime/-/vega-runtime-6.2.1.tgz#4749ea1530d822a789ae8e431bad0965ff2925ee" + integrity sha512-b4eot3tWKCk++INWqot+6sLn3wDTj/HE+tRSbiaf8aecuniPMlwJEK7wWuhVGeW2Ae5n8fI/8TeTViaC94bNHA== dependencies: - vega-dataflow "^5.7.5" - vega-util "^1.17.1" + vega-dataflow "^5.7.7" + vega-util "^1.17.3" -vega-scale@^7.3.0, vega-scale@~7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/vega-scale/-/vega-scale-7.3.0.tgz#02b83435a892c6d91a87ee7d3d350fac987f464b" - integrity sha512-pMOAI2h+e1z7lsqKG+gMfR6NKN2sTcyjZbdJwntooW0uFHwjLGjMSY7kSd3nSEquF0HQ8qF7zR6gs1eRwlGimw== +vega-scale@^7.4.2, vega-scale@~7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/vega-scale/-/vega-scale-7.4.2.tgz#4e4d24aa478ba475b410b0ac9acda88e52acd5fd" + integrity sha512-o6Hl76aU1jlCK7Q8DPYZ8OGsp4PtzLdzI6nGpLt8rxoE78QuB3GBGEwGAQJitp4IF7Lb2rL5oAXEl3ZP6xf9jg== dependencies: d3-array "^3.2.2" d3-interpolate "^3.0.1" d3-scale "^4.0.2" - vega-time "^2.1.1" - vega-util "^1.17.1" + d3-scale-chromatic "^3.1.0" + vega-time "^2.1.3" + vega-util "^1.17.3" -vega-scenegraph@^4.10.2, vega-scenegraph@^4.9.2, vega-scenegraph@~4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/vega-scenegraph/-/vega-scenegraph-4.10.2.tgz#3ae9ad8e99bbf75e2a4f3ebf2c1f9dee7562d245" - integrity sha512-R8m6voDZO5+etwNMcXf45afVM3XAtokMqxuDyddRl9l1YqSJfS+3u8hpolJ50c2q6ZN20BQiJwKT1o0bB7vKkA== +vega-scenegraph@^4.13.1, vega-scenegraph@~4.13.1: + version "4.13.1" + resolved "https://registry.yarnpkg.com/vega-scenegraph/-/vega-scenegraph-4.13.1.tgz#5a7ab99cc8c4ae48a2322823faab4edef2080df9" + integrity sha512-LFY9+sLIxRfdDI9ZTKjLoijMkIAzPLBWHpPkwv4NPYgdyx+0qFmv+puBpAUGUY9VZqAZ736Uj5NJY9zw+/M3yQ== dependencies: d3-path "^3.1.0" d3-shape "^3.2.0" vega-canvas "^1.2.7" - vega-loader "^4.5.1" - vega-scale "^7.3.0" - vega-util "^1.17.1" + vega-loader "^4.5.3" + vega-scale "^7.4.2" + vega-util "^1.17.3" vega-schema-url-parser@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/vega-schema-url-parser/-/vega-schema-url-parser-2.2.0.tgz#a0d1e02915adfbfcb1fd517c8c2ebe2419985c1e" integrity sha512-yAtdBnfYOhECv9YC70H2gEiqfIbVkq09aaE4y/9V/ovEFmH9gPKaEgzIZqgT7PSPQjKhsNkb6jk6XvSoboxOBw== -vega-selections@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/vega-selections/-/vega-selections-5.4.1.tgz#3233acb920703bfc323df8b960aa52e55ac08c70" - integrity sha512-EtYc4DvA+wXqBg9tq+kDomSoVUPCmQfS7hUxy2qskXEed79YTimt3Hcl1e1fW226I4AVDBEqTTKebmKMzbSgAA== +vega-selections@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/vega-selections/-/vega-selections-5.5.0.tgz#ccdd2320ea13d619f2ba2595301b7d280e4b473b" + integrity sha512-TkpklUg9yhKjnTEs3Ls0eSI2aMJ8+tRicrFAKlDyrEBNMSSEaMsSJ84Ro5xpRra+GMBkGXFYgwTPC7y3tj20Gg== dependencies: - d3-array "3.2.2" - vega-expression "^5.0.1" - vega-util "^1.17.1" + d3-array "3.2.4" + vega-expression "^5.1.2" + vega-util "^1.17.3" vega-spec-injector@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/vega-spec-injector/-/vega-spec-injector-0.0.2.tgz#f1d990109dd9d845c524738f818baa4b72a60ca6" integrity sha512-wOMMqmpssn0/ZFPW7wl1v26vbseRX7zHPWzEyS9TwNXTRCu1TcjIBIR+X23lCWocxhoBqFxmqyn8UowMhlGtAg== -vega-statistics@^1.7.9, vega-statistics@^1.8.1, vega-statistics@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/vega-statistics/-/vega-statistics-1.8.1.tgz#596fc3713ac68cc649bf28d0faf7def5ef34fef6" - integrity sha512-eRR3LZBusnTXUkc/uunAvWi1PjCJK+Ba4vFvEISc5Iv5xF4Aw2cBhEz1obEt6ID5fGVCTAl0E1LOSFxubS89hQ== +vega-statistics@^1.9.0, vega-statistics@~1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/vega-statistics/-/vega-statistics-1.9.0.tgz#7d6139cea496b22d60decfa6abd73346f70206f9" + integrity sha512-GAqS7mkatpXcMCQKWtFu1eMUKLUymjInU0O8kXshWaQrVWjPIO2lllZ1VNhdgE0qGj4oOIRRS11kzuijLshGXQ== dependencies: d3-array "^3.2.2" -vega-time@^2.1.1, vega-time@~2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/vega-time/-/vega-time-2.1.1.tgz#0f1fb4e220dd5ed57401b58fb2293241f049ada0" - integrity sha512-z1qbgyX0Af2kQSGFbApwBbX2meenGvsoX8Nga8uyWN8VIbiySo/xqizz1KrP6NbB6R+x5egKmkjdnyNThPeEWA== +vega-time@^2.1.3, vega-time@~2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/vega-time/-/vega-time-2.1.3.tgz#507e3b0af61ebcd6a9c56de89fe1213924c2c1f2" + integrity sha512-hFcWPdTV844IiY0m97+WUoMLADCp+8yUQR1NStWhzBzwDDA7QEGGwYGxALhdMOaDTwkyoNj3V/nox2rQAJD/vQ== dependencies: d3-array "^3.2.2" d3-time "^3.1.0" - vega-util "^1.17.1" + vega-util "^1.17.3" vega-tooltip@^0.28.0: version "0.28.0" @@ -33107,107 +33129,107 @@ vega-tooltip@^0.28.0: dependencies: vega-util "^1.17.0" -vega-transforms@~4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/vega-transforms/-/vega-transforms-4.10.1.tgz#5e51f4f3a745d43609e0d8ba1d74a7e53014030a" - integrity sha512-0uWrUZaYl8kjWrGbvPOQSKk6kcNXQFY9moME+bUmkADAvFptphCGbaEIn/nSsG6uCxj8E3rqKmKfjSWdU5yOqA== +vega-transforms@~4.12.1: + version "4.12.1" + resolved "https://registry.yarnpkg.com/vega-transforms/-/vega-transforms-4.12.1.tgz#81a5c5505a2844542f99ab966b094c7b29d7d9f8" + integrity sha512-Qxo+xeEEftY1jYyKgzOGc9NuW4/MqGm1YPZ5WrL9eXg2G0410Ne+xL/MFIjHF4hRX+3mgFF4Io2hPpfy/thjLg== dependencies: d3-array "^3.2.2" - vega-dataflow "^5.7.5" - vega-statistics "^1.8.1" - vega-time "^2.1.1" - vega-util "^1.17.1" + vega-dataflow "^5.7.7" + vega-statistics "^1.9.0" + vega-time "^2.1.3" + vega-util "^1.17.3" -vega-typings@~0.24.0: - version "0.24.0" - resolved "https://registry.yarnpkg.com/vega-typings/-/vega-typings-0.24.0.tgz#e659286c43c63b68cf29a3131360829d129eeb84" - integrity sha512-FFYf67Dn5VNPbYoYHgO2T9Z1I81qcwrXjwKEe0rlJk0MX7CNWPJr9Y3VZEWfxyEx7J9anAm69hGIv0Ehb2G85A== +vega-typings@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/vega-typings/-/vega-typings-1.4.0.tgz#5223287f2e5aa891900f0b70ea9a48c4cdbf01a6" + integrity sha512-UTXjuasq0Q8uMuzz/qow4moVHFJ5atYdQu871QZJ/zgWY3Po4du3dIGBVQN4fYEv6seKhDvxpEFke2rqx81Wqw== dependencies: - "@types/geojson" "^7946.0.10" + "@types/geojson" "7946.0.4" vega-event-selector "^3.0.1" - vega-expression "^5.0.1" - vega-util "^1.17.1" + vega-expression "^5.1.2" + vega-util "^1.17.3" -vega-util@^1.15.2, vega-util@^1.17.0, vega-util@^1.17.1, vega-util@~1.17.0, vega-util@~1.17.1: - version "1.17.1" - resolved "https://registry.yarnpkg.com/vega-util/-/vega-util-1.17.1.tgz#717865fc6b660ceb3ae16273d21166ed471c2db4" - integrity sha512-ToPkWoBdP6awoK+bnYaFhgdqZhsNwKxWbuMnFell+4K/Cb6Q1st5Pi9I7iI5Y6n5ZICDDsd6eL7/IhBjEg1NUQ== +vega-util@^1.17.0, vega-util@^1.17.1, vega-util@^1.17.3, vega-util@~1.17.0, vega-util@~1.17.2: + version "1.17.3" + resolved "https://registry.yarnpkg.com/vega-util/-/vega-util-1.17.3.tgz#8f24d867daae69580874dcf75de10c65ac9ede5d" + integrity sha512-nSNpZLUrRvFo46M5OK4O6x6f08WD1yOcEzHNlqivF+sDLSsVpstaF6fdJYwrbf/debFi2L9Tkp4gZQtssup9iQ== -vega-view-transforms@~4.5.9: - version "4.5.9" - resolved "https://registry.yarnpkg.com/vega-view-transforms/-/vega-view-transforms-4.5.9.tgz#5f109555c08ee9ac23ff9183d578eb9cbac6fe61" - integrity sha512-NxEq4ZD4QwWGRrl2yDLnBRXM9FgCI+vvYb3ZC2+nVDtkUxOlEIKZsMMw31op5GZpfClWLbjCT3mVvzO2xaTF+g== +vega-view-transforms@~4.6.1: + version "4.6.1" + resolved "https://registry.yarnpkg.com/vega-view-transforms/-/vega-view-transforms-4.6.1.tgz#423a1e2dae14c1506876272281e4835778fa6914" + integrity sha512-RYlyMJu5kZV4XXjmyTQKADJWDB25SMHsiF+B1rbE1p+pmdQPlp5tGdPl9r5dUJOp3p8mSt/NGI8GPGucmPMxtw== dependencies: - vega-dataflow "^5.7.5" - vega-scenegraph "^4.10.2" - vega-util "^1.17.1" + vega-dataflow "^5.7.7" + vega-scenegraph "^4.13.1" + vega-util "^1.17.3" -vega-view@~5.11.1: - version "5.11.1" - resolved "https://registry.yarnpkg.com/vega-view/-/vega-view-5.11.1.tgz#a703d7d6344489c6a6e9e9d9c7a732519bf4432c" - integrity sha512-RoWxuoEMI7xVQJhPqNeLEHCezudsf3QkVMhH5tCovBqwBADQGqq9iWyax3ZzdyX1+P3eBgm7cnLvpqtN2hU8kA== +vega-view@~5.14.0: + version "5.14.0" + resolved "https://registry.yarnpkg.com/vega-view/-/vega-view-5.14.0.tgz#b0f21c448e8c43af6014a76fad31cd5e5fb232d4" + integrity sha512-gg2ukCviKG6Nofmr0Y6hFbr9romRMzmXHe3ljNJ5QyRnkwmQ7HbTvXOyS9cZZ0VtuhSRw+uiyd0Pg+nep0IhwA== dependencies: d3-array "^3.2.2" d3-timer "^3.0.1" - vega-dataflow "^5.7.5" - vega-format "^1.1.1" - vega-functions "^5.13.1" - vega-runtime "^6.1.4" - vega-scenegraph "^4.10.2" - vega-util "^1.17.1" - -vega-voronoi@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/vega-voronoi/-/vega-voronoi-4.2.1.tgz#521a22d3d4c545fe1d5eea19eac0fd3ac5e58b1b" - integrity sha512-zzi+fxU/SBad4irdLLsG3yhZgXWZezraGYVQfZFWe8kl7W/EHUk+Eqk/eetn4bDeJ6ltQskX+UXH3OP5Vh0Q0Q== + vega-dataflow "^5.7.7" + vega-format "^1.1.3" + vega-functions "^5.16.0" + vega-runtime "^6.2.1" + vega-scenegraph "^4.13.1" + vega-util "^1.17.3" + +vega-voronoi@~4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/vega-voronoi/-/vega-voronoi-4.2.4.tgz#f45addec69e7b40598106f221014300a58d061ef" + integrity sha512-lWNimgJAXGeRFu2Pz8axOUqVf1moYhD+5yhBzDSmckE9I5jLOyZc/XvgFTXwFnsVkMd1QW1vxJa+y9yfUblzYw== dependencies: d3-delaunay "^6.0.2" - vega-dataflow "^5.7.5" - vega-util "^1.17.1" + vega-dataflow "^5.7.7" + vega-util "^1.17.3" -vega-wordcloud@~4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/vega-wordcloud/-/vega-wordcloud-4.1.4.tgz#38584cf47ef52325d6a8dc38908b5d2378cc6e62" - integrity sha512-oeZLlnjiusLAU5vhk0IIdT5QEiJE0x6cYoGNq1th+EbwgQp153t4r026fcib9oq15glHFOzf81a8hHXHSJm1Jw== +vega-wordcloud@~4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/vega-wordcloud/-/vega-wordcloud-4.1.6.tgz#a428e8e7b2f83eca454631057d6864c226b41a14" + integrity sha512-lFmF3u9/ozU0P+WqPjeThQfZm0PigdbXDwpIUCxczrCXKYJLYFmZuZLZR7cxtmpZ0/yuvRvAJ4g123LXbSZF8A== dependencies: vega-canvas "^1.2.7" - vega-dataflow "^5.7.5" - vega-scale "^7.3.0" - vega-statistics "^1.8.1" - vega-util "^1.17.1" - -vega@^5.24.0: - version "5.24.0" - resolved "https://registry.yarnpkg.com/vega/-/vega-5.24.0.tgz#47ccf9288d06cf0be6f1e83bf38647de2bda3ca8" - integrity sha512-eahZ+4eryPywLuq9BpgcwWMyqiuVD3FAh7eMB3koOp7peQ4scPxAZxWdLwnh0t0kah+oE2QcXi2EHS4BabsMPg== - dependencies: - vega-crossfilter "~4.1.1" - vega-dataflow "~5.7.5" - vega-encode "~4.9.1" + vega-dataflow "^5.7.7" + vega-scale "^7.4.2" + vega-statistics "^1.9.0" + vega-util "^1.17.3" + +vega@^5.26.0: + version "5.31.0" + resolved "https://registry.yarnpkg.com/vega/-/vega-5.31.0.tgz#6d07f92f47df060a7c0fadcfadfc6a7cb705e1de" + integrity sha512-ZZ+8kcKqCeRi7pBdS7kfBpfhV2gDpa6N950GKGWFw0QL4fH319A9o8FAJzdY8zK0WW0PKrivZSoRmK9fWUxnhg== + dependencies: + vega-crossfilter "~4.1.3" + vega-dataflow "~5.7.7" + vega-encode "~4.10.2" vega-event-selector "~3.0.1" - vega-expression "~5.0.1" - vega-force "~4.2.0" - vega-format "~1.1.1" - vega-functions "~5.13.1" - vega-geo "~4.4.1" - vega-hierarchy "~4.1.1" - vega-label "~1.2.1" - vega-loader "~4.5.1" - vega-parser "~6.2.0" - vega-projection "~1.6.0" - vega-regression "~1.1.1" - vega-runtime "~6.1.4" - vega-scale "~7.3.0" - vega-scenegraph "~4.10.2" - vega-statistics "~1.8.1" - vega-time "~2.1.1" - vega-transforms "~4.10.1" - vega-typings "~0.24.0" - vega-util "~1.17.1" - vega-view "~5.11.1" - vega-view-transforms "~4.5.9" - vega-voronoi "~4.2.1" - vega-wordcloud "~4.1.4" + vega-expression "~5.1.2" + vega-force "~4.2.2" + vega-format "~1.1.3" + vega-functions "~5.16.0" + vega-geo "~4.4.3" + vega-hierarchy "~4.1.3" + vega-label "~1.3.1" + vega-loader "~4.5.3" + vega-parser "~6.4.1" + vega-projection "~1.6.2" + vega-regression "~1.3.1" + vega-runtime "~6.2.1" + vega-scale "~7.4.2" + vega-scenegraph "~4.13.1" + vega-statistics "~1.9.0" + vega-time "~2.1.3" + vega-transforms "~4.12.1" + vega-typings "~1.4.0" + vega-util "~1.17.2" + vega-view "~5.14.0" + vega-view-transforms "~4.6.1" + vega-voronoi "~4.2.4" + vega-wordcloud "~4.1.6" verror@1.10.0: version "1.10.0" From e0886ba73f2bada9a4e892ff153978f38a9eab2b Mon Sep 17 00:00:00 2001 From: Sid Date: Tue, 18 Feb 2025 10:26:30 +0100 Subject: [PATCH 49/78] [Session cleanup] Update session index cleanup to check for missing shards (#205744) Closes https://github.com/elastic/kibana/issues/205146 ## Summary We run a session clean up task that opens a point in time query to try and delete any older sessions in the session index. We've noticed that this task fails quite often with the same error `no_shard_available_action_exception`. On investigating, it's possible that the point in time query is opened when there are no shards available for that index. This PR fixes that by checking if the PIT query fails with 503 bails if it throws the error - allowing the task to be tried again in the next run of the task manager. We allow for up to 10 failures of the clean up task in succession before logging an error. ### Testing Unfortunately, there's no reliable way to simulate missing shards locally. I've added a new integration test config here: ``` node scripts/functional_tests_server.js --config x-pack/test/security_api_integration/session_shard_missing.config.ts ``` This overrides the ES function to return 503 when opening PIT query and then attempts to assert the result from the task manager. ### Release note Updates session cleanup mechanism to account for potential missing shards in Session index. ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [x] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed [kibana-flaky-test-suite-runner#7836](https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/7836) - [ ] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --------- Co-authored-by: Elastic Machine Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .buildkite/ftr_platform_stateful_configs.yml | 1 + .../session_management/session_index.test.ts | 102 +++++++++-- .../session_management/session_index.ts | 76 ++++++-- .../session_management_service.test.ts | 6 +- .../session_management_service.ts | 2 +- .../session_shard_missing.config.ts | 68 +++++++ .../tests/session_shard_missing/index.ts | 14 ++ .../session_shard_missing/shard_missing.ts | 169 ++++++++++++++++++ .../test_endpoints/server/init_routes.ts | 56 +++++- 9 files changed, 455 insertions(+), 39 deletions(-) create mode 100644 x-pack/test/security_api_integration/session_shard_missing.config.ts create mode 100644 x-pack/test/security_api_integration/tests/session_shard_missing/index.ts create mode 100644 x-pack/test/security_api_integration/tests/session_shard_missing/shard_missing.ts diff --git a/.buildkite/ftr_platform_stateful_configs.yml b/.buildkite/ftr_platform_stateful_configs.yml index f9d21fbb4934d..73c9b46dba3ad 100644 --- a/.buildkite/ftr_platform_stateful_configs.yml +++ b/.buildkite/ftr_platform_stateful_configs.yml @@ -328,6 +328,7 @@ enabled: - x-pack/test/security_api_integration/chips.config.ts - x-pack/test/security_api_integration/features.config.ts - x-pack/test/security_api_integration/session_idle.config.ts + - x-pack/test/security_api_integration/session_shard_missing.config.ts - x-pack/test/security_api_integration/session_invalidate.config.ts - x-pack/test/security_api_integration/session_lifespan.config.ts - x-pack/test/security_api_integration/session_concurrent_limit.config.ts diff --git a/x-pack/platform/plugins/shared/security/server/session_management/session_index.test.ts b/x-pack/platform/plugins/shared/security/server/session_management/session_index.test.ts index 74bebb961cfbe..bf20ade0b2fec 100644 --- a/x-pack/platform/plugins/shared/security/server/session_management/session_index.test.ts +++ b/x-pack/platform/plugins/shared/security/server/session_management/session_index.test.ts @@ -17,6 +17,7 @@ import type { import { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; import type { AuditLogger } from '@kbn/security-plugin-types-server'; +import { type RunContext, TaskStatus } from '@kbn/task-manager-plugin/server'; import { getSessionIndexSettings, @@ -39,6 +40,22 @@ describe('Session index', () => { const aliasName = '.kibana_some_tenant_security_session'; const indexTemplateName = '.kibana_some_tenant_security_session_index_template_1'; + const mockRunContext: RunContext = { + taskInstance: { + id: 'TASK_ID', + taskType: 'TASK_TYPE', + params: {}, + state: {}, + scheduledAt: new Date(), + attempts: 0, + retryAt: new Date(), + ownerId: 'OWNER_ID', + startedAt: new Date(), + runAt: new Date(), + status: TaskStatus.Idle, + }, + }; + const createSessionIndexOptions = ( config: Record = { session: { idleTimeout: null, lifespan: null } } ) => ({ @@ -428,6 +445,7 @@ describe('Session index', () => { _source: { usernameHash: 'USERNAME_HASH', provider: { name: 'basic1', type: 'basic' } }, sort: [0], }; + beforeEach(() => { mockElasticsearchClient.openPointInTime.mockResponse({ id: 'PIT_ID', @@ -449,7 +467,7 @@ describe('Session index', () => { ); mockElasticsearchClient.search.mockRejectedValue(failureReason); - await expect(sessionIndex.cleanUp()).rejects.toBe(failureReason); + await expect(sessionIndex.cleanUp(mockRunContext)).rejects.toBe(failureReason); expect(mockElasticsearchClient.openPointInTime).toHaveBeenCalledTimes(1); expect(mockElasticsearchClient.search).toHaveBeenCalledTimes(1); expect(mockElasticsearchClient.bulk).not.toHaveBeenCalled(); @@ -463,7 +481,7 @@ describe('Session index', () => { ); mockElasticsearchClient.bulk.mockRejectedValue(failureReason); - await expect(sessionIndex.cleanUp()).rejects.toBe(failureReason); + await expect(sessionIndex.cleanUp(mockRunContext)).rejects.toBe(failureReason); expect(mockElasticsearchClient.openPointInTime).toHaveBeenCalledTimes(1); expect(mockElasticsearchClient.search).toHaveBeenCalledTimes(1); expect(mockElasticsearchClient.bulk).toHaveBeenCalledTimes(1); @@ -476,7 +494,7 @@ describe('Session index', () => { ); mockElasticsearchClient.indices.refresh.mockRejectedValue(failureReason); - await sessionIndex.cleanUp(); + await sessionIndex.cleanUp(mockRunContext); expect(mockElasticsearchClient.openPointInTime).toHaveBeenCalledTimes(1); expect(mockElasticsearchClient.search).toHaveBeenCalledTimes(1); expect(mockElasticsearchClient.bulk).toHaveBeenCalledTimes(1); @@ -500,7 +518,7 @@ describe('Session index', () => { }; }); - await sessionIndex.cleanUp(); + await sessionIndex.cleanUp(mockRunContext); expect(mockElasticsearchClient.openPointInTime).toHaveBeenCalledTimes(2); expect(mockElasticsearchClient.openPointInTime).toHaveBeenNthCalledWith( 1, @@ -529,7 +547,7 @@ describe('Session index', () => { }); it('when neither `lifespan` nor `idleTimeout` is configured', async () => { - await sessionIndex.cleanUp(); + await sessionIndex.cleanUp(mockRunContext); expect(mockElasticsearchClient.openPointInTime).toHaveBeenCalledTimes(1); expect(mockElasticsearchClient.search).toHaveBeenCalledTimes(1); @@ -611,7 +629,7 @@ describe('Session index', () => { auditLogger, }); - await sessionIndex.cleanUp(); + await sessionIndex.cleanUp(mockRunContext); expect(mockElasticsearchClient.openPointInTime).toHaveBeenCalledTimes(1); expect(mockElasticsearchClient.search).toHaveBeenCalledTimes(1); @@ -705,7 +723,7 @@ describe('Session index', () => { auditLogger, }); - await sessionIndex.cleanUp(); + await sessionIndex.cleanUp(mockRunContext); expect(mockElasticsearchClient.openPointInTime).toHaveBeenCalledTimes(1); expect(mockElasticsearchClient.search).toHaveBeenCalledTimes(1); @@ -793,7 +811,7 @@ describe('Session index', () => { auditLogger, }); - await sessionIndex.cleanUp(); + await sessionIndex.cleanUp(mockRunContext); expect(mockElasticsearchClient.openPointInTime).toHaveBeenCalledTimes(1); expect(mockElasticsearchClient.search).toHaveBeenCalledTimes(1); @@ -906,7 +924,7 @@ describe('Session index', () => { auditLogger, }); - await sessionIndex.cleanUp(); + await sessionIndex.cleanUp(mockRunContext); expect(mockElasticsearchClient.openPointInTime).toHaveBeenCalledTimes(1); expect(mockElasticsearchClient.search).toHaveBeenCalledTimes(1); @@ -1030,7 +1048,7 @@ describe('Session index', () => { } as SearchResponse); } - await sessionIndex.cleanUp(); + await sessionIndex.cleanUp(mockRunContext); expect(mockElasticsearchClient.openPointInTime).toHaveBeenCalledTimes(1); expect(mockElasticsearchClient.search).toHaveBeenCalledTimes(2); @@ -1044,7 +1062,7 @@ describe('Session index', () => { hits: { hits: new Array(10_000).fill(sessionValue, 0) }, } as SearchResponse); - await sessionIndex.cleanUp(); + await sessionIndex.cleanUp(mockRunContext); expect(mockElasticsearchClient.openPointInTime).toHaveBeenCalledTimes(1); expect(mockElasticsearchClient.search).toHaveBeenCalledTimes(10); @@ -1054,7 +1072,7 @@ describe('Session index', () => { }); it('should log audit event', async () => { - await sessionIndex.cleanUp(); + await sessionIndex.cleanUp(mockRunContext); expect(auditLogger.log).toHaveBeenCalledWith( expect.objectContaining({ @@ -1063,6 +1081,54 @@ describe('Session index', () => { ); }); + it('should fail silently if shards are missing', async () => { + const failureReason = new errors.ResponseError({ + statusCode: 503, + body: { + error: { + type: 'search_phase_execution_exception Root causes: no_shard_available_action_exception', + }, + }, + warnings: null, + meta: {} as any, + }); + + mockElasticsearchClient.openPointInTime.mockRejectedValue(failureReason); + + const runResult = await sessionIndex.cleanUp(mockRunContext); + + expect(runResult?.state).toBeTruthy(); + expect(runResult?.state.shardMissingCounter).toBe(1); + }); + + it('should throw error if shards are missing for more than 10 tries', async () => { + const failureReason = new errors.ResponseError({ + statusCode: 503, + body: { + error: { + type: 'search_phase_execution_exception Root causes: no_shard_available_action_exception', + }, + }, + warnings: null, + meta: {} as any, + }); + + mockElasticsearchClient.openPointInTime.mockRejectedValue(failureReason); + + const runContext = { + taskInstance: { + ...mockRunContext.taskInstance, + state: { shardMissingCounter: 9 }, + }, + }; + + await expect(sessionIndex.cleanUp(runContext)).resolves.toEqual({ + error: + 'Failed to clean up sessions: Shards for session index are missing. Cleanup routine has failed 10 times. {"error":{"type":"search_phase_execution_exception Root causes: no_shard_available_action_exception"}}', + state: { shardMissingCounter: 0 }, + }); + }); + describe('concurrent session limit', () => { const expectedSearchParameters = () => ({ index: '.kibana_some_tenant_security_session', @@ -1137,7 +1203,7 @@ describe('Session index', () => { it('when concurrent session limit is not configured', async () => { sessionIndex = new SessionIndex(createSessionIndexOptions()); - await sessionIndex.cleanUp(); + await sessionIndex.cleanUp(mockRunContext); // Only search call for the invalid sessions (use `pit` as marker, since concurrent session limit cleanup // routine doesn't rely on PIT). @@ -1155,7 +1221,7 @@ describe('Session index', () => { aggregations: { sessions_grouped_by_user: { sum_other_doc_count: 1 } }, } as unknown as SearchResponse); - await sessionIndex.cleanUp(); + await sessionIndex.cleanUp(mockRunContext); // Only search call for the invalid sessions (use `pit` as marker, since concurrent session limit cleanup // routine doesn't rely on PIT). @@ -1182,7 +1248,7 @@ describe('Session index', () => { responses: [{ status: 200, hits: { hits: [{ _id: 'some-id' }, { _id: 'some-id-2' }] } }], } as MsearchMultiSearchResult); - await sessionIndex.cleanUp(); + await sessionIndex.cleanUp(mockRunContext); // Only search call for the invalid sessions (use `pit` as marker, since concurrent session limit cleanup // routine doesn't rely on PIT). @@ -1234,7 +1300,7 @@ describe('Session index', () => { ], } as MsearchMultiSearchResult); - await sessionIndex.cleanUp(); + await sessionIndex.cleanUp(mockRunContext); // Only search call for the invalid sessions (use `pit` as marker, since concurrent session limit cleanup // routine doesn't rely on PIT). @@ -1296,7 +1362,7 @@ describe('Session index', () => { ], } as MsearchMultiSearchResult); - await sessionIndex.cleanUp(); + await sessionIndex.cleanUp(mockRunContext); expect(mockElasticsearchClient.bulk).toHaveBeenCalledTimes(2); expect(mockElasticsearchClient.bulk).toHaveBeenNthCalledWith( @@ -1347,7 +1413,7 @@ describe('Session index', () => { ], } as MsearchMultiSearchResult); - await sessionIndex.cleanUp(); + await sessionIndex.cleanUp(mockRunContext); expect(auditLogger.log).toHaveBeenCalledTimes(2); expect(auditLogger.log).toHaveBeenCalledWith( diff --git a/x-pack/platform/plugins/shared/security/server/session_management/session_index.ts b/x-pack/platform/plugins/shared/security/server/session_management/session_index.ts index 33d1603fc602c..b916b3ce874f9 100644 --- a/x-pack/platform/plugins/shared/security/server/session_management/session_index.ts +++ b/x-pack/platform/plugins/shared/security/server/session_management/session_index.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { errors } from '@elastic/elasticsearch'; import type { AggregateName, AggregationsMultiTermsAggregate, @@ -19,6 +20,7 @@ import semver from 'semver'; import type { ElasticsearchClient, Logger } from '@kbn/core/server'; import type { AuditLogger } from '@kbn/security-plugin-types-server'; +import type { RunContext } from '@kbn/task-manager-plugin/server'; import type { AuthenticationProvider } from '../../common'; import { sessionCleanupConcurrentLimitEvent, sessionCleanupEvent } from '../audit'; @@ -475,12 +477,15 @@ export class SessionIndex { /** * Trigger a removal of any outdated session values. */ - async cleanUp() { + async cleanUp(taskManagerRunContext: RunContext) { + const { taskInstance } = taskManagerRunContext; const { auditLogger, logger } = this.options; logger.debug('Running cleanup routine.'); let error: Error | undefined; let indexNeedsRefresh = false; + let shardMissingCounter = taskInstance.state?.shardMissingCounter ?? 0; + try { for await (const sessionValues of this.getSessionValuesInBatches()) { const operations = sessionValues.map(({ _id, _source }) => { @@ -492,8 +497,37 @@ export class SessionIndex { indexNeedsRefresh = (await this.bulkDeleteSessions(operations)) || indexNeedsRefresh; } } catch (err) { - logger.error(`Failed to clean up sessions: ${err.message}`); - error = err; + if ( + err instanceof errors.ResponseError && + err.statusCode === 503 && + err.message.includes('no_shard_available_action_exception') + ) { + shardMissingCounter++; + if (shardMissingCounter < 10) { + logger.warn( + `No shards found for session index, skipping session cleanup. This operation has failed ${shardMissingCounter} time(s)` + ); + return { + state: { + shardMissingCounter, + }, + }; + } + + const errorMesage = `Failed to clean up sessions: Shards for session index are missing. Cleanup routine has failed ${shardMissingCounter} times. ${getDetailedErrorMessage( + err + )}`; + logger.error(errorMesage); + return { + error: errorMesage, + state: { + shardMissingCounter: 0, + }, + }; + } else { + logger.error(`Failed to clean up sessions: ${err.message}`); + error = err; + } } // Only refresh the index if we have actually deleted one or more sessions. The index will auto-refresh eventually anyway, this just @@ -545,6 +579,11 @@ export class SessionIndex { } logger.debug('Cleanup routine successfully completed.'); + return { + state: { + shardMissingCounter: 0, + }, + }; } /** @@ -839,29 +878,30 @@ export class SessionIndex { }); } - let { body: openPitResponse, statusCode } = - await this.options.elasticsearchClient.openPointInTime( + let response = await this.options.elasticsearchClient.openPointInTime( + { + index: this.aliasName, + keep_alive: SESSION_INDEX_CLEANUP_KEEP_ALIVE, + allow_partial_search_results: true, + }, + { ignore: [404], meta: true } + ); + + if (response.statusCode === 404) { + await this.ensureSessionIndexExists(); + response = await this.options.elasticsearchClient.openPointInTime( { index: this.aliasName, keep_alive: SESSION_INDEX_CLEANUP_KEEP_ALIVE, allow_partial_search_results: true, }, - { ignore: [404], meta: true } + { meta: true } ); - - if (statusCode === 404) { - await this.ensureSessionIndexExists(); - ({ body: openPitResponse, statusCode } = - await this.options.elasticsearchClient.openPointInTime( - { - index: this.aliasName, - keep_alive: SESSION_INDEX_CLEANUP_KEEP_ALIVE, - allow_partial_search_results: true, - }, - { meta: true } - )); + } else if (response.statusCode === 503) { + throw new errors.ResponseError(response); } + const openPitResponse = response.body; try { let searchAfter: SortResults | undefined; for (let i = 0; i < SESSION_INDEX_CLEANUP_BATCH_LIMIT; i++) { diff --git a/x-pack/platform/plugins/shared/security/server/session_management/session_management_service.test.ts b/x-pack/platform/plugins/shared/security/server/session_management/session_management_service.test.ts index e59ba59600b29..6a30cb414ed91 100644 --- a/x-pack/platform/plugins/shared/security/server/session_management/session_management_service.test.ts +++ b/x-pack/platform/plugins/shared/security/server/session_management/session_management_service.test.ts @@ -30,7 +30,11 @@ const mockSessionIndexInitialize = jest.spyOn(SessionIndex.prototype, 'initializ mockSessionIndexInitialize.mockResolvedValue(); const mockSessionIndexCleanUp = jest.spyOn(SessionIndex.prototype, 'cleanUp'); -mockSessionIndexCleanUp.mockResolvedValue(); +mockSessionIndexCleanUp.mockResolvedValue({ + state: { + shardMissingCounter: 0, + }, +}); describe('SessionManagementService', () => { let service: SessionManagementService; diff --git a/x-pack/platform/plugins/shared/security/server/session_management/session_management_service.ts b/x-pack/platform/plugins/shared/security/server/session_management/session_management_service.ts index 448f5f060500f..04aefcc0075af 100644 --- a/x-pack/platform/plugins/shared/security/server/session_management/session_management_service.ts +++ b/x-pack/platform/plugins/shared/security/server/session_management/session_management_service.ts @@ -71,7 +71,7 @@ export class SessionManagementService { taskManager.registerTaskDefinitions({ [SESSION_INDEX_CLEANUP_TASK_NAME]: { title: 'Cleanup expired or invalid user sessions', - createTaskRunner: () => ({ run: () => this.sessionIndex.cleanUp() }), + createTaskRunner: (context) => ({ run: () => this.sessionIndex.cleanUp(context) }), }, }); } diff --git a/x-pack/test/security_api_integration/session_shard_missing.config.ts b/x-pack/test/security_api_integration/session_shard_missing.config.ts new file mode 100644 index 0000000000000..80ae2e14a9207 --- /dev/null +++ b/x-pack/test/security_api_integration/session_shard_missing.config.ts @@ -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 { resolve } from 'path'; + +import type { FtrConfigProviderContext } from '@kbn/test'; + +import { services } from './services'; + +// the default export of config files must be a config provider +// that returns an object with the projects config values +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const xPackAPITestsConfig = await readConfigFile(require.resolve('../api_integration/config.ts')); + + const kibanaPort = xPackAPITestsConfig.get('servers.kibana.port'); + const idpPath = require.resolve('@kbn/security-api-integration-helpers/saml/idp_metadata.xml'); + + const testEndpointsPlugin = resolve(__dirname, '../security_functional/plugins/test_endpoints'); + + return { + testFiles: [resolve(__dirname, './tests/session_shard_missing')], + services, + servers: xPackAPITestsConfig.get('servers'), + esTestCluster: { + ...xPackAPITestsConfig.get('esTestCluster'), + serverArgs: [ + ...xPackAPITestsConfig.get('esTestCluster.serverArgs'), + 'xpack.security.authc.token.enabled=true', + 'xpack.security.authc.token.timeout=15s', + 'xpack.security.authc.realms.saml.saml1.order=0', + `xpack.security.authc.realms.saml.saml1.idp.metadata.path=${idpPath}`, + 'xpack.security.authc.realms.saml.saml1.idp.entity_id=http://www.elastic.co/saml1', + `xpack.security.authc.realms.saml.saml1.sp.entity_id=http://localhost:${kibanaPort}`, + `xpack.security.authc.realms.saml.saml1.sp.logout=http://localhost:${kibanaPort}/logout`, + `xpack.security.authc.realms.saml.saml1.sp.acs=http://localhost:${kibanaPort}/api/security/saml/callback`, + 'xpack.security.authc.realms.saml.saml1.attributes.principal=urn:oid:0.0.7', + ], + }, + + kbnTestServer: { + ...xPackAPITestsConfig.get('kbnTestServer'), + serverArgs: [ + ...xPackAPITestsConfig.get('kbnTestServer.serverArgs'), + `--plugin-path=${testEndpointsPlugin}`, + '--xpack.security.session.idleTimeout=10s', + '--xpack.security.session.cleanupInterval=20s', + `--xpack.security.authc.providers=${JSON.stringify({ + basic: { basic1: { order: 0 } }, + saml: { + saml_fallback: { order: 1, realm: 'saml1' }, + saml_override: { order: 2, realm: 'saml1', session: { idleTimeout: '2m' } }, + saml_disable: { order: 3, realm: 'saml1', session: { idleTimeout: 0 } }, + }, + })}`, + // Exclude Uptime tasks to not interfere (additional ES load) with the session cleanup task. + `--xpack.task_manager.unsafe.exclude_task_types=${JSON.stringify(['UPTIME:*'])}`, + ], + }, + + junit: { + reportName: 'X-Pack Security API Integration Tests (Session Idle Timeout)', + }, + }; +} diff --git a/x-pack/test/security_api_integration/tests/session_shard_missing/index.ts b/x-pack/test/security_api_integration/tests/session_shard_missing/index.ts new file mode 100644 index 0000000000000..ed0268f88252f --- /dev/null +++ b/x-pack/test/security_api_integration/tests/session_shard_missing/index.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. + */ + +import type { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('security APIs - Session Index Shard Missing', function () { + loadTestFile(require.resolve('./shard_missing')); + }); +} diff --git a/x-pack/test/security_api_integration/tests/session_shard_missing/shard_missing.ts b/x-pack/test/security_api_integration/tests/session_shard_missing/shard_missing.ts new file mode 100644 index 0000000000000..e01492acbba04 --- /dev/null +++ b/x-pack/test/security_api_integration/tests/session_shard_missing/shard_missing.ts @@ -0,0 +1,169 @@ +/* + * 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 { setTimeout as setTimeoutAsync } from 'timers/promises'; + +import expect from '@kbn/expect'; +import { adminTestUser } from '@kbn/test'; + +import type { FtrProviderContext } from '../../ftr_provider_context'; + +export default function ({ getService }: FtrProviderContext) { + const supertest = getService('supertestWithoutAuth'); + const esSupertest = getService('esSupertest'); + const es = getService('es'); + const esDeleteAllIndices = getService('esDeleteAllIndices'); + const retry = getService('retry'); + const log = getService('log'); + + const { username: basicUsername, password: basicPassword } = adminTestUser; + + async function getNumberOfSessionDocuments() { + await es.indices.refresh({ index: '.kibana_security_session*' }); + return ( + // @ts-expect-error doesn't handle total as number + (await es.search({ index: '.kibana_security_session*' })).hits.total.value as number + ); + } + + async function runCleanupTaskSoon() { + // In most cases, an error would mean the task is currently running so let's run it again + await retry.tryForTime(30000, async () => { + await supertest + .post('/session/_run_cleanup') + .set('kbn-xsrf', 'xxx') + .auth(adminTestUser.username, adminTestUser.password) + .send() + .expect(200); + }); + } + + async function addESDebugLoggingSettings() { + const addLogging = { + persistent: { + 'logger.org.elasticsearch.xpack.security.authc': 'debug', + }, + }; + await esSupertest.put('/_cluster/settings').send(addLogging).expect(200); + } + + async function simulatePointInTimeFailure(simulateOpenPointInTimeFailure: boolean) { + await supertest + .post('/simulate_point_in_time_failure') + .send({ simulateOpenPointInTimeFailure }) + .expect(200); + } + + async function getCleanupTaskStatus() { + log.debug('Attempting to get task status'); + const response = await supertest.get('/cleanup_task_status').expect(200); + const { state } = response.body; + return state; + } + + async function resetCleanupTask() { + log.debug('Resetting cleanup task state to 0'); + await runCleanupTaskSoon(); + let shardMissingCounter = -1; + while (shardMissingCounter !== 0) { + await setTimeoutAsync(5000); + + const state = await getCleanupTaskStatus(); + log.debug(`Task status: ${JSON.stringify(state)}`); + shardMissingCounter = state.shardMissingCounter ?? 0; + } + await simulatePointInTimeFailure(false); + log.debug('Cleanup task reset'); + } + + describe('Session index shard missing', () => { + beforeEach(async () => { + await es.cluster.health({ index: '.kibana_security_session*', wait_for_status: 'green' }); + await addESDebugLoggingSettings(); + await esDeleteAllIndices('.kibana_security_session*'); + }); + + afterEach(async () => { + await simulatePointInTimeFailure(false); + }); + + it('quietly fails if shards are unavailable', async function () { + this.timeout(100000); + + await resetCleanupTask(); + await simulatePointInTimeFailure(true); + + log.debug(`Log in as ${basicUsername} using ${basicPassword} password.`); + await supertest + .post('/internal/security/login') + .set('kbn-xsrf', 'xxx') + .send({ + providerType: 'basic', + providerName: 'basic1', + currentURL: '/', + params: { username: basicUsername, password: basicPassword }, + }) + .expect(200); + + await runCleanupTaskSoon(); + + log.debug('Waiting for cleanup job to run...'); + + await setTimeoutAsync(5000); + await retry.tryForTime(20000, async () => { + // Session does not clean up but the cleanup task has not failed either + expect(await getNumberOfSessionDocuments()).to.be(1); + }); + + await simulatePointInTimeFailure(false); + }); + + it('fails if shards are unavailable more than 10 times', async function () { + this.timeout(600000); + + await resetCleanupTask(); + + await simulatePointInTimeFailure(true); + + await supertest + .post('/internal/security/login') + .set('kbn-xsrf', 'xxx') + .send({ + providerType: 'basic', + providerName: 'basic1', + currentURL: '/', + params: { username: basicUsername, password: basicPassword }, + }) + .expect(200); + + let shardMissingCounter = 0; + while (shardMissingCounter < 9) { + log.debug('Waiting for cleanup job to run...'); + const currentCounter = shardMissingCounter; + await runCleanupTaskSoon(); + + while (shardMissingCounter <= currentCounter) { + log.debug( + `current counter: ${currentCounter}, shard missing counter: ${shardMissingCounter}` + ); + await setTimeoutAsync(5000); + const state = await getCleanupTaskStatus(); + shardMissingCounter = state.shardMissingCounter ?? 0; + } + } + if (shardMissingCounter === 9) { + log.debug('Shard missing counter reached 10, attempting next failure and expecting reset'); + await runCleanupTaskSoon(); + await setTimeoutAsync(5000); + const state = await getCleanupTaskStatus(); + expect(state.shardMissingCounter).to.be(0); + } + + await simulatePointInTimeFailure(false); + }); + }); +} diff --git a/x-pack/test/security_functional/plugins/test_endpoints/server/init_routes.ts b/x-pack/test/security_functional/plugins/test_endpoints/server/init_routes.ts index 23fb20c02e42a..7f0fa4c936ae2 100644 --- a/x-pack/test/security_functional/plugins/test_endpoints/server/init_routes.ts +++ b/x-pack/test/security_functional/plugins/test_endpoints/server/init_routes.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { errors } from '@elastic/elasticsearch'; +import { type DiagnosticResult, errors } from '@elastic/elasticsearch'; import { schema } from '@kbn/config-schema'; import type { CoreSetup, CoreStart, PluginInitializerContext } from '@kbn/core/server'; @@ -290,4 +290,58 @@ export function initRoutes( return response.ok(); } ); + + router.post( + { + path: '/simulate_point_in_time_failure', + validate: { body: schema.object({ simulateOpenPointInTimeFailure: schema.boolean() }) }, + options: { authRequired: false, xsrfRequired: false }, + }, + async (context, request, response) => { + const esClient = (await context.core).elasticsearch.client.asInternalUser; + const originalOpenPointInTime = esClient.openPointInTime; + + if (request.body.simulateOpenPointInTimeFailure) { + // @ts-expect-error + esClient.openPointInTime = async function (params, options) { + const { index } = params; + if (index.includes('kibana_security_session')) { + return { + statusCode: 503, + meta: {}, + body: { + error: { + type: 'no_shard_available_action_exception', + reason: 'no shard available for [open]', + }, + }, + }; + return { + statusCode: 503, + message: 'no_shard_available_action_exception', + } as unknown as DiagnosticResult; + } + return originalOpenPointInTime.call(this, params, options); + }; + } else { + esClient.openPointInTime = originalOpenPointInTime; + } + + return response.ok(); + } + ); + + router.get( + { + path: '/cleanup_task_status', + validate: false, + options: { authRequired: false }, + }, + async (context, request, response) => { + const [, { taskManager }] = await core.getStartServices(); + const res = await taskManager.get(SESSION_INDEX_CLEANUP_TASK_NAME); + const { attempts, state, status } = res; + return response.ok({ body: { attempts, state, status } }); + } + ); } From f6b31b76d39eacb9cc4326ea83f794d28c69787d Mon Sep 17 00:00:00 2001 From: "elastic-renovate-prod[bot]" <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 10:29:17 +0100 Subject: [PATCH 50/78] Update OpenFeature (main) (#200273) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [@openfeature/server-sdk](https://togithub.com/open-feature/js-sdk) | dependencies | patch | [`^1.16.1` -> `^1.16.2`](https://renovatebot.com/diffs/npm/@openfeature%2fserver-sdk/1.16.1/1.16.2) | | [@openfeature/web-sdk](https://togithub.com/open-feature/js-sdk) | dependencies | patch | [`^1.3.1` -> `^1.3.2`](https://renovatebot.com/diffs/npm/@openfeature%2fweb-sdk/1.3.1/1.3.2) | --- ### Release Notes

open-feature/js-sdk (@​openfeature/server-sdk) ### [`v1.16.2`](https://togithub.com/open-feature/js-sdk/compare/0cc2590d02ade510a814b02da9eac17aff25072e...1ba149d8e5f56608e87fc10326d1a6acdbcedc05) [Compare Source](https://togithub.com/open-feature/js-sdk/compare/0cc2590d02ade510a814b02da9eac17aff25072e...1ba149d8e5f56608e87fc10326d1a6acdbcedc05)
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). Co-authored-by: elastic-renovate-prod[bot] <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Co-authored-by: Elastic Machine --- package.json | 6 +++--- yarn.lock | 24 ++++++++++++------------ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 96a462264799a..b5dc92ece335e 100644 --- a/package.json +++ b/package.json @@ -1035,10 +1035,10 @@ "@mapbox/mapbox-gl-rtl-text": "0.2.3", "@mapbox/mapbox-gl-supported": "2.0.1", "@mapbox/vector-tile": "1.3.1", - "@openfeature/core": "^1.5.0", + "@openfeature/core": "^1.7.0", "@openfeature/launchdarkly-client-provider": "^0.3.1", - "@openfeature/server-sdk": "^1.16.1", - "@openfeature/web-sdk": "^1.3.1", + "@openfeature/server-sdk": "^1.17.1", + "@openfeature/web-sdk": "^1.4.1", "@opentelemetry/api": "^1.1.0", "@opentelemetry/api-metrics": "^0.31.0", "@opentelemetry/exporter-metrics-otlp-grpc": "^0.34.0", diff --git a/yarn.lock b/yarn.lock index 1fbba72b2badb..79913008f7cdb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8906,10 +8906,10 @@ resolved "https://registry.yarnpkg.com/@open-draft/until/-/until-2.1.0.tgz#0acf32f470af2ceaf47f095cdecd40d68666efda" integrity sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg== -"@openfeature/core@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@openfeature/core/-/core-1.5.0.tgz#5fda73aa125dfb5729f5dd7362df00b6dca23a24" - integrity sha512-dRBJjnYhEa6XoF9BNf9sW4sHuXmigfBbbatA5djbRXRBDExrXsMydMpEWQqKYhd7XwdwFatuh2q+UkVbXriUKA== +"@openfeature/core@^1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@openfeature/core/-/core-1.7.1.tgz#d81aecce13184fdbd1e59ac76d857b0eed97a50d" + integrity sha512-6w3MvNp8aR3BZRxafKunS76I2FGzDL/ehmbzgRTjh2ohWGnfIgOV2IpG1UFMpPRu1qw0KazwvqXowqec5DKSeQ== "@openfeature/launchdarkly-client-provider@^0.3.1": version "0.3.1" @@ -8918,15 +8918,15 @@ dependencies: lodash.isempty "4.4.0" -"@openfeature/server-sdk@^1.16.1": - version "1.16.1" - resolved "https://registry.yarnpkg.com/@openfeature/server-sdk/-/server-sdk-1.16.1.tgz#2f32aeca5ff8d5e97deb2ee8a72daae38cc40461" - integrity sha512-5xcsuQTyomKFSs+VbW1fGZATGFE1mLewHZ220IRzLtlSeNNRoRIpYMtkxn7N9dG9k+rqikv+SrVD0/LoPDJiqg== +"@openfeature/server-sdk@^1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@openfeature/server-sdk/-/server-sdk-1.17.1.tgz#d160a3b99100daef95eb3f4f673a2837644ba4d2" + integrity sha512-z5MaVvSNnk1SpRSuU02usnoX9rY9BtnLBNp9T08JOitwiuXs4byR8R5Es4WpsGRnnzBSoBQJL1iGIIYEeeEyxw== -"@openfeature/web-sdk@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@openfeature/web-sdk/-/web-sdk-1.3.1.tgz#001bfdcb5cb38b760670a319d66cf3d0febf2b6d" - integrity sha512-KpsekYseZ0zQcDa/WzylqBA5SOxS4xv2goEZl2SB4nd6lEJMTEW2qOkXPhJiV3qXAt8bcrv+Yr0sbCwJ+u+U/Q== +"@openfeature/web-sdk@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@openfeature/web-sdk/-/web-sdk-1.4.1.tgz#69f194bf658ea77095d5e40ad37b5ded6bd63e86" + integrity sha512-MgM55G/Ps8dNDsT75Yh6TYbp8XUVk0TdqSGSuo+6D9s4GyDzYHZHkcepp+j76Vvl4WwZPobdhADocUmUGskL1w== "@opentelemetry/api-metrics@0.31.0", "@opentelemetry/api-metrics@^0.31.0": version "0.31.0" From ff2e3dd36f4d9b0dd1705bc0e1235fc5fa92a94c Mon Sep 17 00:00:00 2001 From: Tomasz Kajtoch Date: Tue, 18 Feb 2025 10:31:23 +0100 Subject: [PATCH 51/78] Fix `SolutionNav` padding in pages that use overridden EUI breakpoints (#211513) --- .../shared/shared-ux/page/solution_nav/src/solution_nav.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/platform/packages/shared/shared-ux/page/solution_nav/src/solution_nav.tsx b/src/platform/packages/shared/shared-ux/page/solution_nav/src/solution_nav.tsx index a1564b0bc114d..e387cff29808f 100644 --- a/src/platform/packages/shared/shared-ux/page/solution_nav/src/solution_nav.tsx +++ b/src/platform/packages/shared/shared-ux/page/solution_nav/src/solution_nav.tsx @@ -29,7 +29,7 @@ import { useEuiThemeCSSVariables, EuiPageSidebar, useEuiOverflowScroll, - useEuiBreakpoint, + useEuiMinBreakpoint, euiCanAnimate, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -222,7 +222,7 @@ export const SolutionNav: FC = ({ ${useEuiOverflowScroll('y')}; - ${useEuiBreakpoint(['m', 'l', 'xl'])} { + ${useEuiMinBreakpoint('m')} { width: ${FLYOUT_SIZE_CSS}; padding: ${euiTheme.size.l}; } From 38439bb7e12313453ff520c3eed2fb334a69640e Mon Sep 17 00:00:00 2001 From: Elena Shostak <165678770+elena-shostak@users.noreply.github.com> Date: Tue, 18 Feb 2025 16:46:38 +0700 Subject: [PATCH 52/78] Upgraded octokit to 21.1.1 (#211450) ## Summary Upgraded octokit to `21.1.1` --- package.json | 2 +- .../shared/download_telemetry_template.ts | 2 +- yarn.lock | 217 ++++++++---------- 3 files changed, 103 insertions(+), 118 deletions(-) diff --git a/package.json b/package.json index b5dc92ece335e..b81f08a5b8faf 100644 --- a/package.json +++ b/package.json @@ -1536,7 +1536,7 @@ "@kbn/yarn-lock-validator": "link:packages/kbn-yarn-lock-validator", "@mapbox/vector-tile": "1.3.1", "@mswjs/http-middleware": "0.10.1", - "@octokit/rest": "^17.11.2", + "@octokit/rest": "^21.1.1", "@parcel/watcher": "^2.1.0", "@playwright/test": "1.49.0", "@redocly/cli": "^1.28.5", diff --git a/x-pack/solutions/observability/plugins/apm/scripts/shared/download_telemetry_template.ts b/x-pack/solutions/observability/plugins/apm/scripts/shared/download_telemetry_template.ts index 9ef9993f5597f..263e228084ebf 100644 --- a/x-pack/solutions/observability/plugins/apm/scripts/shared/download_telemetry_template.ts +++ b/x-pack/solutions/observability/plugins/apm/scripts/shared/download_telemetry_template.ts @@ -11,7 +11,7 @@ export async function downloadTelemetryTemplate({ githubToken }: { githubToken: const octokit = new Octokit({ auth: githubToken, }); - const file = await octokit.repos.getContents({ + const file = await octokit.repos.getContent({ owner: 'elastic', repo: 'telemetry', path: 'config/templates/xpack-phone-home.json', diff --git a/yarn.lock b/yarn.lock index 79913008f7cdb..86b8417af4ea0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8666,13 +8666,6 @@ dependencies: mkdirp "^1.0.4" -"@octokit/auth-token@^2.4.0": - version "2.4.4" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.4.tgz#ee31c69b01d0378c12fd3ffe406030f3d94d3b56" - integrity sha512-LNfGu3Ro9uFAYh10MUZVaT7X2CnNm2C8IDQmabx+3DygYIQjs9FwzFAHN/0t6mu5HEPhxcb1XOuxdpY82vCg2Q== - dependencies: - "@octokit/types" "^6.0.0" - "@octokit/auth-token@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.0.tgz#6f22c5fc56445c496628488ba6810131558fa4a9" @@ -8680,17 +8673,10 @@ dependencies: "@octokit/types" "^6.0.3" -"@octokit/core@^2.4.3": - version "2.5.4" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-2.5.4.tgz#f7fbf8e4f86c5cc2497a8887ba2561ec8d358054" - integrity sha512-HCp8yKQfTITYK+Nd09MHzAlP1v3Ii/oCohv0/TW9rhSLvzb98BOVs2QmVYuloE6a3l6LsfyGIwb6Pc4ycgWlIQ== - dependencies: - "@octokit/auth-token" "^2.4.0" - "@octokit/graphql" "^4.3.1" - "@octokit/request" "^5.4.0" - "@octokit/types" "^5.0.0" - before-after-hook "^2.1.0" - universal-user-agent "^5.0.0" +"@octokit/auth-token@^5.0.0": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-5.1.2.tgz#68a486714d7a7fd1df56cb9bc89a860a0de866de" + integrity sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw== "@octokit/core@^4.2.1": version "4.2.4" @@ -8705,14 +8691,26 @@ before-after-hook "^2.2.0" universal-user-agent "^6.0.0" -"@octokit/endpoint@^6.0.1": - version "6.0.6" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.6.tgz#4f09f2b468976b444742a1d5069f6fa45826d999" - integrity sha512-7Cc8olaCoL/mtquB7j/HTbPM+sY6Ebr4k2X2y4JoXpVKQ7r5xB4iGQE0IoO58wIPsUk4AzoT65AMEpymSbWTgQ== +"@octokit/core@^6.1.4": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-6.1.4.tgz#f5ccf911cc95b1ce9daf6de425d1664392f867db" + integrity sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg== dependencies: - "@octokit/types" "^5.0.0" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" + "@octokit/auth-token" "^5.0.0" + "@octokit/graphql" "^8.1.2" + "@octokit/request" "^9.2.1" + "@octokit/request-error" "^6.1.7" + "@octokit/types" "^13.6.2" + before-after-hook "^3.0.2" + universal-user-agent "^7.0.0" + +"@octokit/endpoint@^10.1.3": + version "10.1.3" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-10.1.3.tgz#bfe8ff2ec213eb4216065e77654bfbba0fc6d4de" + integrity sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA== + dependencies: + "@octokit/types" "^13.6.2" + universal-user-agent "^7.0.2" "@octokit/endpoint@^7.0.0": version "7.0.0" @@ -8723,15 +8721,6 @@ is-plain-object "^5.0.0" universal-user-agent "^6.0.0" -"@octokit/graphql@^4.3.1": - version "4.5.8" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.5.8.tgz#d42373633c3015d0eafce64a8ce196be167fdd9b" - integrity sha512-WnCtNXWOrupfPJgXe+vSmprZJUr0VIu14G58PMlkWGj3cH+KLZEfKMmbUQ6C3Wwx6fdhzVW1CD5RTnBdUHxhhA== - dependencies: - "@octokit/request" "^5.3.0" - "@octokit/types" "^6.0.0" - universal-user-agent "^6.0.0" - "@octokit/graphql@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.0.tgz#2cc6eb3bf8e0278656df1a7d0ca0d7591599e3b3" @@ -8741,6 +8730,15 @@ "@octokit/types" "^6.0.3" universal-user-agent "^6.0.0" +"@octokit/graphql@^8.1.2": + version "8.2.1" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-8.2.1.tgz#0cb83600e6b4009805acc1c56ae8e07e6c991b78" + integrity sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw== + dependencies: + "@octokit/request" "^9.2.2" + "@octokit/types" "^13.8.0" + universal-user-agent "^7.0.0" + "@octokit/openapi-types@^12.10.0": version "12.10.1" resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.10.1.tgz#57b5cc6c7b4e55d8642c93d06401fb1af4839899" @@ -8751,12 +8749,17 @@ resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-18.0.0.tgz#f43d765b3c7533fd6fb88f3f25df079c24fccf69" integrity sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw== -"@octokit/plugin-paginate-rest@^2.2.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.7.0.tgz#6bb7b043c246e0654119a6ec4e72a172c9e2c7f3" - integrity sha512-+zARyncLjt9b0FjqPAbJo4ss7HOlBi1nprq+cPlw5vu2+qjy7WvlXhtXFdRHQbSL1Pt+bfAKaLADEkkvg8sP8w== +"@octokit/openapi-types@^23.0.1": + version "23.0.1" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-23.0.1.tgz#3721646ecd36b596ddb12650e0e89d3ebb2dd50e" + integrity sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g== + +"@octokit/plugin-paginate-rest@^11.4.2": + version "11.4.2" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.2.tgz#8f46a1de74c35e016c86701ef4ea0e8ef25a06e0" + integrity sha512-BXJ7XPCTDXFF+wxcg/zscfgw2O/iDPtNSkwwR1W1W5c4Mb3zav/M2XvxQ23nVmKj7jpweB4g8viMeCQdm7LMVA== dependencies: - "@octokit/types" "^6.0.1" + "@octokit/types" "^13.7.0" "@octokit/plugin-paginate-rest@^6.1.2": version "6.1.2" @@ -8766,18 +8769,22 @@ "@octokit/tsconfig" "^1.0.2" "@octokit/types" "^9.2.3" -"@octokit/plugin-request-log@^1.0.0", "@octokit/plugin-request-log@^1.0.4": +"@octokit/plugin-request-log@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== -"@octokit/plugin-rest-endpoint-methods@3.17.0": - version "3.17.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-3.17.0.tgz#d8ba04eb883849dd98666c55bf49d8c9fe7be055" - integrity sha512-NFV3vq7GgoO2TrkyBRUOwflkfTYkFKS0tLAPym7RNpkwLCttqShaEGjthOsPEEL+7LFcYv3mU24+F2yVd3npmg== +"@octokit/plugin-request-log@^5.3.1": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-5.3.1.tgz#ccb75d9705de769b2aa82bcd105cc96eb0c00f69" + integrity sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw== + +"@octokit/plugin-rest-endpoint-methods@^13.3.0": + version "13.3.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.1.tgz#1915976b689662f14d033a16e7d9307c22842234" + integrity sha512-o8uOBdsyR+WR8MK9Cco8dCgvG13H1RlM1nWnK/W7TEACQBFux/vPREgKucxUfuDQ5yi1T3hGf4C5ZmZXAERgwQ== dependencies: - "@octokit/types" "^4.1.6" - deprecation "^2.3.1" + "@octokit/types" "^13.8.0" "@octokit/plugin-rest-endpoint-methods@^7.1.2": version "7.2.3" @@ -8786,15 +8793,6 @@ dependencies: "@octokit/types" "^10.0.0" -"@octokit/request-error@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" - integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== - dependencies: - "@octokit/types" "^6.0.3" - deprecation "^2.0.0" - once "^1.4.0" - "@octokit/request-error@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.0.tgz#f527d178f115a3b62d76ce4804dd5bdbc0270a81" @@ -8804,17 +8802,12 @@ deprecation "^2.0.0" once "^1.4.0" -"@octokit/request@^5.3.0", "@octokit/request@^5.4.0": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.2.tgz#1aa74d5da7b9e04ac60ef232edd9a7438dcf32d8" - integrity sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA== +"@octokit/request-error@^6.1.7": + version "6.1.7" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-6.1.7.tgz#44fc598f5cdf4593e0e58b5155fe2e77230ff6da" + integrity sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g== dependencies: - "@octokit/endpoint" "^6.0.1" - "@octokit/request-error" "^2.1.0" - "@octokit/types" "^6.16.1" - is-plain-object "^5.0.0" - node-fetch "^2.6.1" - universal-user-agent "^6.0.0" + "@octokit/types" "^13.6.2" "@octokit/request@^6.0.0": version "6.2.0" @@ -8828,15 +8821,16 @@ node-fetch "^2.6.7" universal-user-agent "^6.0.0" -"@octokit/rest@^17.11.2": - version "17.11.2" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-17.11.2.tgz#f3dbd46f9f06361c646230fd0ef8598e59183ead" - integrity sha512-4jTmn8WossTUaLfNDfXk4fVJgbz5JgZE8eCs4BvIb52lvIH8rpVMD1fgRCrHbSd6LRPE5JFZSfAEtszrOq3ZFQ== +"@octokit/request@^9.2.1", "@octokit/request@^9.2.2": + version "9.2.2" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-9.2.2.tgz#754452ec4692d7fdc32438a14e028eba0e6b2c09" + integrity sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg== dependencies: - "@octokit/core" "^2.4.3" - "@octokit/plugin-paginate-rest" "^2.2.0" - "@octokit/plugin-request-log" "^1.0.0" - "@octokit/plugin-rest-endpoint-methods" "3.17.0" + "@octokit/endpoint" "^10.1.3" + "@octokit/request-error" "^6.1.7" + "@octokit/types" "^13.6.2" + fast-content-type-parse "^2.0.0" + universal-user-agent "^7.0.2" "@octokit/rest@^19.0.7": version "19.0.13" @@ -8848,6 +8842,16 @@ "@octokit/plugin-request-log" "^1.0.4" "@octokit/plugin-rest-endpoint-methods" "^7.1.2" +"@octokit/rest@^21.1.1": + version "21.1.1" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-21.1.1.tgz#7a70455ca451b1d253e5b706f35178ceefb74de2" + integrity sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg== + dependencies: + "@octokit/core" "^6.1.4" + "@octokit/plugin-paginate-rest" "^11.4.2" + "@octokit/plugin-request-log" "^5.3.1" + "@octokit/plugin-rest-endpoint-methods" "^13.3.0" + "@octokit/tsconfig@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@octokit/tsconfig/-/tsconfig-1.0.2.tgz#59b024d6f3c0ed82f00d08ead5b3750469125af7" @@ -8860,21 +8864,14 @@ dependencies: "@octokit/openapi-types" "^18.0.0" -"@octokit/types@^4.1.6": - version "4.1.10" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-4.1.10.tgz#e4029c11e2cc1335051775bc1600e7e740e4aca4" - integrity sha512-/wbFy1cUIE5eICcg0wTKGXMlKSbaAxEr00qaBXzscLXpqhcwgXeS6P8O0pkysBhRfyjkKjJaYrvR1ExMO5eOXQ== +"@octokit/types@^13.6.2", "@octokit/types@^13.7.0", "@octokit/types@^13.8.0": + version "13.8.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-13.8.0.tgz#3815885e5abd16ed9ffeea3dced31d37ce3f8a0a" + integrity sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A== dependencies: - "@types/node" ">= 8" + "@octokit/openapi-types" "^23.0.1" -"@octokit/types@^5.0.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-5.5.0.tgz#e5f06e8db21246ca102aa28444cdb13ae17a139b" - integrity sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ== - dependencies: - "@types/node" ">= 8" - -"@octokit/types@^6.0.0", "@octokit/types@^6.0.1", "@octokit/types@^6.0.3", "@octokit/types@^6.16.1": +"@octokit/types@^6.0.3", "@octokit/types@^6.16.1": version "6.40.0" resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.40.0.tgz#f2e665196d419e19bb4265603cf904a820505d0e" integrity sha512-MFZOU5r8SwgJWDMhrLUSvyJPtVsqA6VnbVI3TNbsmw+Jnvrktzvq2fYES/6RiJA/5Ykdwq4mJmtlYUfW7CGjmw== @@ -12216,7 +12213,7 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@14 || 16 || 17", "@types/node@20.10.5", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=18.0.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.0.0", "@types/node@^18.11.18", "@types/node@^20.13.0": +"@types/node@*", "@types/node@14 || 16 || 17", "@types/node@20.10.5", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=18.0.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.0.0", "@types/node@^18.11.18", "@types/node@^20.13.0": version "20.10.5" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.5.tgz#47ad460b514096b7ed63a1dae26fad0914ed3ab2" integrity sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw== @@ -14597,11 +14594,16 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -before-after-hook@^2.1.0, before-after-hook@^2.2.0: +before-after-hook@^2.2.0: version "2.2.2" resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== +before-after-hook@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-3.0.2.tgz#d5665a5fa8b62294a5aa0a499f933f4a1016195d" + integrity sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A== + bent@~7.3.6: version "7.3.12" resolved "https://registry.yarnpkg.com/bent/-/bent-7.3.12.tgz#e0a2775d4425e7674c64b78b242af4f49da6b035" @@ -17484,7 +17486,7 @@ dependency-tree@^10.0.9: precinct "^11.0.5" typescript "^5.0.4" -deprecation@^2.0.0, deprecation@^2.3.1: +deprecation@^2.0.0: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== @@ -19170,6 +19172,11 @@ fancy-log@^1.3.3: parse-node-version "^1.0.0" time-stamp "^1.0.0" +fast-content-type-parse@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz#c236124534ee2cb427c8d8e5ba35a4856947847b" + integrity sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q== + fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" @@ -24053,11 +24060,6 @@ lz-string@^1.4.4, lz-string@^1.5.0: resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== -macos-release@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.2.0.tgz#ab58d55dd4714f0a05ad4b0e90f4370fef5cdea8" - integrity sha512-iV2IDxZaX8dIcM7fG6cI46uNmHUxHE4yN+Z8tKHAW1TBPMZDIKHf/3L+YnOuj/FK9il14UaVdHmiQ1tsi90ltA== - magic-string@^0.30.0: version "0.30.9" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.9.tgz#8927ae21bfdd856310e07a1bc8dd5e73cb6c251d" @@ -26130,14 +26132,6 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-name@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" - integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== - dependencies: - macos-release "^2.2.0" - windows-release "^3.1.0" - os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -32550,18 +32544,16 @@ unist-util-visit@^1.4.1: dependencies: unist-util-visit-parents "^2.0.0" -universal-user-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9" - integrity sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q== - dependencies: - os-name "^3.1.0" - universal-user-agent@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== +universal-user-agent@^7.0.0, universal-user-agent@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-7.0.2.tgz#52e7d0e9b3dc4df06cc33cb2b9fd79041a54827e" + integrity sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q== + universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -33868,13 +33860,6 @@ window-size@^0.1.4: resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= -windows-release@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f" - integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA== - dependencies: - execa "^1.0.0" - winston-transport@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" From dca5f18b7e98e6d5b15b74a3f9ff7c7172bb3cff Mon Sep 17 00:00:00 2001 From: Julia Bardi <90178898+juliaElastic@users.noreply.github.com> Date: Tue, 18 Feb 2025 11:09:01 +0100 Subject: [PATCH 53/78] [Fleet] show auto upgrade agent status (#210866) ## Summary Closes https://github.com/elastic/ingest-dev/issues/4731 Added API to query agents per each version enrolled to an agent policy, including the count of agents that failed to upgrade to the target version. This API is used on the UI to calculate the status of auto upgrade status. - Complete status: agent count reaches or exceeds target percentage without upgrade failures - Not started status: 0 agents on target percentage - In progress status: agent count doesn't reach target percentage - Failed status: there is at least one agent in failed upgrade status on the target version Added click handler to navigate from the status to agent list. [UI Design](https://www.figma.com/design/ZH58ySPR1nhI3lRHrkds1t/%5BFleet%5D-Automatic-target-agent-version?node-id=2128-4286&p=f&t=3GvdUYkqdCAJj99q-0) ``` GET kbn:/api/fleet/agent_policies/{agentPolicyId}/auto_upgrade_agents_status { "currentVersions": [ { "version": "8.16.2", "agents": 1, "failedAgents": 0 }, { "version": "8.16.3", "agents": 0, "failedAgents": 1 } ], "totalAgents": 1 } ``` image image image image image ### Checklist - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- oas_docs/bundle.json | 3 + oas_docs/bundle.serverless.json | 3 + oas_docs/output/kibana.serverless.yaml | 2 + oas_docs/output/kibana.yaml | 2 + .../shared/fleet/common/constants/routes.ts | 1 + .../shared/fleet/common/services/routes.ts | 7 + .../common/types/rest_spec/agent_policy.ts | 15 +- .../index.tsx | 38 ++--- .../status_column.tsx | 146 ++++++++++++++++++ .../fleet/public/constants/page_paths.ts | 2 + .../public/hooks/use_request/agent_policy.ts | 12 ++ .../server/routes/agent_policy/handlers.ts | 20 ++- .../fleet/server/routes/agent_policy/index.ts | 42 ++++- .../shared/fleet/server/routes/index.ts | 2 +- .../fleet/server/services/agent_policy.ts | 3 +- .../agents/auto_upgrade_agents_status.ts | 80 ++++++++++ .../fleet/server/services/agents/index.ts | 1 + .../fleet/server/types/models/agent_policy.ts | 11 ++ .../server/types/rest_spec/agent_policy.ts | 7 + .../apis/agent_policy/agent_policy.ts | 43 ++++++ x-pack/test/fleet_api_integration/helpers.ts | 7 +- 21 files changed, 422 insertions(+), 25 deletions(-) create mode 100644 x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/components/manage_auto_upgrade_agents_modal/status_column.tsx create mode 100644 x-pack/platform/plugins/shared/fleet/server/services/agents/auto_upgrade_agents_status.ts diff --git a/oas_docs/bundle.json b/oas_docs/bundle.json index b2800db8a6b1a..29afbe54c6a66 100644 --- a/oas_docs/bundle.json +++ b/oas_docs/bundle.json @@ -13989,6 +13989,9 @@ }, "type": "object" }, + "bumpRevision": { + "type": "boolean" + }, "data_output_id": { "nullable": true, "type": "string" diff --git a/oas_docs/bundle.serverless.json b/oas_docs/bundle.serverless.json index ea622580a01f3..b508ad84d062f 100644 --- a/oas_docs/bundle.serverless.json +++ b/oas_docs/bundle.serverless.json @@ -13989,6 +13989,9 @@ }, "type": "object" }, + "bumpRevision": { + "type": "boolean" + }, "data_output_id": { "nullable": true, "type": "string" diff --git a/oas_docs/output/kibana.serverless.yaml b/oas_docs/output/kibana.serverless.yaml index 0f95b399e2029..d53c24740a06b 100644 --- a/oas_docs/output/kibana.serverless.yaml +++ b/oas_docs/output/kibana.serverless.yaml @@ -16183,6 +16183,8 @@ paths: type: string memory: type: string + bumpRevision: + type: boolean data_output_id: nullable: true type: string diff --git a/oas_docs/output/kibana.yaml b/oas_docs/output/kibana.yaml index c93b9dfce09df..4ec2afae2b5e7 100644 --- a/oas_docs/output/kibana.yaml +++ b/oas_docs/output/kibana.yaml @@ -18313,6 +18313,8 @@ paths: type: string memory: type: string + bumpRevision: + type: boolean data_output_id: nullable: true type: string diff --git a/x-pack/platform/plugins/shared/fleet/common/constants/routes.ts b/x-pack/platform/plugins/shared/fleet/common/constants/routes.ts index 436d476db16d2..662080c44b48d 100644 --- a/x-pack/platform/plugins/shared/fleet/common/constants/routes.ts +++ b/x-pack/platform/plugins/shared/fleet/common/constants/routes.ts @@ -81,6 +81,7 @@ export const AGENT_POLICY_API_ROUTES = { FULL_INFO_DOWNLOAD_PATTERN: `${AGENT_POLICY_API_ROOT}/{agentPolicyId}/download`, LIST_OUTPUTS_PATTERN: `${AGENT_POLICY_API_ROOT}/outputs`, INFO_OUTPUTS_PATTERN: `${AGENT_POLICY_API_ROOT}/{agentPolicyId}/outputs`, + AUTO_UPGRADE_AGENTS_STATUS_PATTERN: `${AGENT_POLICY_API_ROOT}/{agentPolicyId}/auto_upgrade_agents_status`, }; // Kubernetes Manifest API routes diff --git a/x-pack/platform/plugins/shared/fleet/common/services/routes.ts b/x-pack/platform/plugins/shared/fleet/common/services/routes.ts index fcf40a2286589..bc029ce97e2e1 100644 --- a/x-pack/platform/plugins/shared/fleet/common/services/routes.ts +++ b/x-pack/platform/plugins/shared/fleet/common/services/routes.ts @@ -174,6 +174,13 @@ export const agentPolicyRouteService = { return AGENT_POLICY_API_ROUTES.INFO_PATTERN.replace('{agentPolicyId}', agentPolicyId); }, + getAutoUpgradeAgentsStatusPath: (agentPolicyId: string) => { + return AGENT_POLICY_API_ROUTES.AUTO_UPGRADE_AGENTS_STATUS_PATTERN.replace( + '{agentPolicyId}', + agentPolicyId + ); + }, + getCreatePath: () => { return AGENT_POLICY_API_ROUTES.CREATE_PATTERN; }, diff --git a/x-pack/platform/plugins/shared/fleet/common/types/rest_spec/agent_policy.ts b/x-pack/platform/plugins/shared/fleet/common/types/rest_spec/agent_policy.ts index 7432d1d00e61e..39c3405b37978 100644 --- a/x-pack/platform/plugins/shared/fleet/common/types/rest_spec/agent_policy.ts +++ b/x-pack/platform/plugins/shared/fleet/common/types/rest_spec/agent_policy.ts @@ -37,6 +37,17 @@ export interface GetOneAgentPolicyResponse { item: AgentPolicy; } +export interface CurrentVersionCount { + version: string; + agents: number; + failedUpgradeAgents: number; +} + +export interface GetAutoUpgradeAgentsStatusResponse { + currentVersions: CurrentVersionCount[]; + totalAgents: number; +} + export interface CreateAgentPolicyRequest { body: NewAgentPolicy; } @@ -46,7 +57,9 @@ export interface CreateAgentPolicyResponse { } export type UpdateAgentPolicyRequest = GetOneAgentPolicyRequest & { - body: NewAgentPolicy; + body: NewAgentPolicy & { + bumpRevision?: boolean; + }; }; export interface UpdateAgentPolicyResponse { diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/components/manage_auto_upgrade_agents_modal/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/components/manage_auto_upgrade_agents_modal/index.tsx index 0a52b268e6a63..baf4e6e53e02b 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/components/manage_auto_upgrade_agents_modal/index.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/components/manage_auto_upgrade_agents_modal/index.tsx @@ -9,7 +9,6 @@ import React, { useState } from 'react'; import { EuiButton, EuiButtonEmpty, - EuiCallOut, EuiConfirmModal, EuiFieldNumber, EuiFlexGroup, @@ -30,6 +29,8 @@ import { useGetAgentsAvailableVersionsQuery, useStartServices } from '../../../. import { checkTargetVersionsValidity } from '../../../../../../../common/services'; import { sendUpdateAgentPolicyForRq } from '../../../../../../hooks/use_request/agent_policy'; +import { StatusColumn } from './status_column'; + export interface ManageAutoUpgradeAgentsModalProps { onClose: (refreshPolicy: boolean) => void; agentPolicy: AgentPolicy; @@ -56,6 +57,8 @@ export const ManageAutoUpgradeAgentsModal: React.FunctionComponent< name: agentPolicy.name, namespace: agentPolicy.namespace, required_versions: targetVersions, + // required_versions are not sent to agents, so no need to bump revision + bumpRevision: false, }); notifications.toasts.addSuccess( i18n.translate('xpack.fleet.manageAutoUpgradeAgents.successNotificationTitle', { @@ -114,21 +117,6 @@ export const ManageAutoUpgradeAgentsModal: React.FunctionComponent< > - {agentCount > 0 ? ( - <> - - - - ) : null} @@ -189,7 +178,8 @@ const TargetVersionsRow: React.FunctionComponent<{ requiredVersion: AgentTargetVersion; onRemove: () => void; onUpdate: (version: string, percentage: number) => void; -}> = ({ agentsAvailableVersions, requiredVersion, onRemove, onUpdate }) => { + agentPolicyId: string; +}> = ({ agentsAvailableVersions, requiredVersion, onRemove, onUpdate, agentPolicyId }) => { const options = agentsAvailableVersions.map((version) => ({ value: version, inputDisplay: version, @@ -208,7 +198,7 @@ const TargetVersionsRow: React.FunctionComponent<{ }; return ( - + + + } + > + + + + = ({ agentPolicyId, version, percentage }) => { + const { getHref } = useLink(); + const { data: autoUpgradeAgentsStatus } = useGetAutoUpgradeAgentsStatusQuery(agentPolicyId); + + const getAgentsHref = useCallback( + (failed?: boolean): string => { + const kuery = failed + ? `policy_id:"${agentPolicyId}" AND upgrade_details.state:"UPG_FAILED" AND upgrade_details.target_version:"${version}"` + : `policy_id:"${agentPolicyId}" AND agent.version:"${version}"`; + return getHref('agent_list', { + kuery, + }); + }, + [getHref, agentPolicyId, version] + ); + + const calcPercentage = useCallback( + (agents: number): number => + autoUpgradeAgentsStatus + ? Math.round((agents / autoUpgradeAgentsStatus.totalAgents) * 100) + : 0, + [autoUpgradeAgentsStatus] + ); + + const agentVersionCounts = useMemo(() => { + return ( + autoUpgradeAgentsStatus?.currentVersions.find((value) => value.version === version) ?? { + version, + agents: 0, + failedUpgradeAgents: 0, + } + ); + }, [autoUpgradeAgentsStatus, version]); + + const currentPercentage = useMemo(() => { + const result = calcPercentage(agentVersionCounts.agents); + return `${result}%`; + }, [agentVersionCounts, calcPercentage]); + + const currentStatus = useMemo(() => { + const inProgressStatus = ( + + + + ); + const failedStatus = ( + + + + ); + const completedStatus = ( + + + + ); + const notStartedStatus = ( + + + + ); + let statusButton = inProgressStatus; + + if (agentVersionCounts.failedUpgradeAgents > 0) { + statusButton = failedStatus; + } else if (agentVersionCounts.agents === 0) { + statusButton = notStartedStatus; + } else { + const currPercentage = calcPercentage(agentVersionCounts.agents); + if (currPercentage >= percentage) { + statusButton = completedStatus; + } else { + statusButton = inProgressStatus; + } + } + + return ( + 0 ? ( + + ) : agentVersionCounts.failedUpgradeAgents > 0 ? ( + + ) : null + } + > + {statusButton} + + ); + }, [agentVersionCounts, percentage, calcPercentage, getAgentsHref]); + + return ( + + + {currentPercentage} + + {currentStatus} + + ); +}; diff --git a/x-pack/platform/plugins/shared/fleet/public/constants/page_paths.ts b/x-pack/platform/plugins/shared/fleet/public/constants/page_paths.ts index 1b33c6937c29d..ee2f33bf8478d 100644 --- a/x-pack/platform/plugins/shared/fleet/public/constants/page_paths.ts +++ b/x-pack/platform/plugins/shared/fleet/public/constants/page_paths.ts @@ -230,6 +230,8 @@ export const pagePathGetters: { ? `?kuery=${kuery}&showInactive=true` : showInactive ? '?showInactive=true' + : kuery + ? `?kuery=${kuery}` : '' }`, ], diff --git a/x-pack/platform/plugins/shared/fleet/public/hooks/use_request/agent_policy.ts b/x-pack/platform/plugins/shared/fleet/public/hooks/use_request/agent_policy.ts index 5d699a841326e..26b02f4daa872 100644 --- a/x-pack/platform/plugins/shared/fleet/public/hooks/use_request/agent_policy.ts +++ b/x-pack/platform/plugins/shared/fleet/public/hooks/use_request/agent_policy.ts @@ -6,6 +6,8 @@ */ import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; +import type { GetAutoUpgradeAgentsStatusResponse } from '../../../common/types'; + import { agentPolicyRouteService } from '../../services'; import { API_VERSIONS } from '../../../common/constants'; @@ -143,6 +145,16 @@ export const sendGetOneAgentPolicy = (agentPolicyId: string) => { }); }; +export function useGetAutoUpgradeAgentsStatusQuery(agentPolicyId: string) { + return useQuery(['auto_upgrade_agents_status'], () => + sendRequestForRq({ + method: 'get', + path: agentPolicyRouteService.getAutoUpgradeAgentsStatusPath(agentPolicyId), + version: API_VERSIONS.public.v1, + }) + ); +} + export const sendCreateAgentPolicy = ( body: CreateAgentPolicyRequest['body'], { withSysMonitoring }: { withSysMonitoring: boolean } = { withSysMonitoring: false } diff --git a/x-pack/platform/plugins/shared/fleet/server/routes/agent_policy/handlers.ts b/x-pack/platform/plugins/shared/fleet/server/routes/agent_policy/handlers.ts index 218920d029c6b..032d1a71acd25 100644 --- a/x-pack/platform/plugins/shared/fleet/server/routes/agent_policy/handlers.ts +++ b/x-pack/platform/plugins/shared/fleet/server/routes/agent_policy/handlers.ts @@ -39,6 +39,7 @@ import type { FleetRequestHandlerContext, GetAgentPolicyOutputsRequestSchema, GetListAgentPolicyOutputsRequestSchema, + GetAutoUpgradeAgentsStatusRequestSchema, } from '../../types'; import type { @@ -60,6 +61,7 @@ import { AgentPolicyNotFoundError, FleetUnauthorizedError, FleetError } from '.. import { createAgentPolicyWithPackages } from '../../services/agent_policy_create'; import { updateAgentPolicySpaces } from '../../services/spaces/agent_policy'; import { packagePolicyToSimplifiedPackagePolicy } from '../../../common/services/simplified_package_policy_helper'; +import { getAutoUpgradeAgentsStatus } from '../../services/agents'; export async function populateAssignedAgentsCount( agentClient: AgentClient, @@ -277,6 +279,20 @@ export const getOneAgentPolicyHandler: FleetRequestHandler< } }; +export const getAutoUpgradeAgentsStatusHandler: FleetRequestHandler< + TypeOf, + undefined +> = async (context, request, response) => { + const [_, fleetContext] = await Promise.all([context.core, context.fleet]); + + const agentClient = fleetContext.agentClient.asCurrentUser; + + const body = await getAutoUpgradeAgentsStatus(agentClient, request.params.agentPolicyId); + return response.ok({ + body, + }); +}; + export const createAgentPolicyHandler: FleetRequestHandler< undefined, TypeOf, @@ -365,7 +381,7 @@ export const updateAgentPolicyHandler: FleetRequestHandler< const fleetContext = await context.fleet; const esClient = coreContext.elasticsearch.client.asInternalUser; const user = appContextService.getSecurityCore().authc.getCurrentUser(request) || undefined; - const { force, space_ids: spaceIds, ...data } = request.body; + const { force, bumpRevision, space_ids: spaceIds, ...data } = request.body; let spaceId = fleetContext.spaceId; @@ -391,7 +407,7 @@ export const updateAgentPolicyHandler: FleetRequestHandler< esClient, request.params.agentPolicyId, data, - { force, user, spaceId } + { force, bumpRevision, user, spaceId } ); let item: any = agentPolicy; diff --git a/x-pack/platform/plugins/shared/fleet/server/routes/agent_policy/index.ts b/x-pack/platform/plugins/shared/fleet/server/routes/agent_policy/index.ts index 9450b5e0da089..45fb73bb011a8 100644 --- a/x-pack/platform/plugins/shared/fleet/server/routes/agent_policy/index.ts +++ b/x-pack/platform/plugins/shared/fleet/server/routes/agent_policy/index.ts @@ -11,6 +11,7 @@ import type { FleetAuthzRouter } from '../../services/security'; import { API_VERSIONS } from '../../../common/constants'; import { FLEET_API_PRIVILEGES } from '../../constants/api_privileges'; import { AGENT_POLICY_API_ROUTES } from '../../constants'; +import { type FleetConfigType } from '../../config'; import { GetAgentPoliciesRequestSchema, GetOneAgentPolicyRequestSchema, @@ -32,9 +33,12 @@ import { GetAgentPolicyOutputsResponseSchema, GetListAgentPolicyOutputsResponseSchema, GetListAgentPolicyOutputsRequestSchema, + GetAutoUpgradeAgentsStatusRequestSchema, + GetAutoUpgradeAgentsStatusResponseSchema, } from '../../types'; import { K8S_API_ROUTES } from '../../../common/constants'; +import { parseExperimentalConfigValue } from '../../../common/experimental_features'; import { genericErrorResponse } from '../schema/errors'; import { ListResponseSchema } from '../schema/utils'; @@ -53,9 +57,10 @@ import { bulkGetAgentPoliciesHandler, GetAgentPolicyOutputsHandler, GetListAgentPolicyOutputsHandler, + getAutoUpgradeAgentsStatusHandler, } from './handlers'; -export const registerRoutes = (router: FleetAuthzRouter) => { +export const registerRoutes = (router: FleetAuthzRouter, config: FleetConfigType) => { // List - Fleet Server needs access to run setup router.versioned .get({ @@ -177,6 +182,41 @@ export const registerRoutes = (router: FleetAuthzRouter) => { getOneAgentPolicyHandler ); + const experimentalFeatures = parseExperimentalConfigValue(config.enableExperimental); + if (experimentalFeatures.enableAutomaticAgentUpgrades) { + router.versioned + .get({ + path: AGENT_POLICY_API_ROUTES.AUTO_UPGRADE_AGENTS_STATUS_PATTERN, + security: { + authz: { + requiredPrivileges: [FLEET_API_PRIVILEGES.AGENTS.READ], + }, + }, + summary: `Get auto upgrade agent status`, + description: `Get auto upgrade agent status`, + options: { + tags: ['oas-tag:Elastic Agent policies'], + }, + }) + .addVersion( + { + version: API_VERSIONS.public.v1, + validate: { + request: GetAutoUpgradeAgentsStatusRequestSchema, + response: { + 200: { + body: () => GetAutoUpgradeAgentsStatusResponseSchema, + }, + 400: { + body: genericErrorResponse, + }, + }, + }, + }, + getAutoUpgradeAgentsStatusHandler + ); + } + // Create router.versioned .post({ diff --git a/x-pack/platform/plugins/shared/fleet/server/routes/index.ts b/x-pack/platform/plugins/shared/fleet/server/routes/index.ts index 41ce57e85de2b..6c464727bf21f 100644 --- a/x-pack/platform/plugins/shared/fleet/server/routes/index.ts +++ b/x-pack/platform/plugins/shared/fleet/server/routes/index.ts @@ -37,7 +37,7 @@ export function registerRoutes(fleetAuthzRouter: FleetAuthzRouter, config: Fleet registerEPMRoutes(fleetAuthzRouter, config); registerSetupRoutes(fleetAuthzRouter, config); - registerAgentPolicyRoutes(fleetAuthzRouter); + registerAgentPolicyRoutes(fleetAuthzRouter, config); registerPackagePolicyRoutes(fleetAuthzRouter); registerOutputRoutes(fleetAuthzRouter); registerSettingsRoutes(fleetAuthzRouter, config); diff --git a/x-pack/platform/plugins/shared/fleet/server/services/agent_policy.ts b/x-pack/platform/plugins/shared/fleet/server/services/agent_policy.ts index 7fcec4e5653ce..0010245a7aae7 100644 --- a/x-pack/platform/plugins/shared/fleet/server/services/agent_policy.ts +++ b/x-pack/platform/plugins/shared/fleet/server/services/agent_policy.ts @@ -701,6 +701,7 @@ class AgentPolicyService { spaceId?: string; authorizationHeader?: HTTPAuthorizationHeader | null; skipValidation?: boolean; + bumpRevision?: boolean; } ): Promise { const logger = appContextService.getLogger(); @@ -772,7 +773,7 @@ class AgentPolicyService { } return this._update(soClient, esClient, id, agentPolicy, options?.user, { - bumpRevision: true, + bumpRevision: options?.bumpRevision ?? true, removeProtection: false, skipValidation: options?.skipValidation ?? false, }).then((updatedAgentPolicy) => { diff --git a/x-pack/platform/plugins/shared/fleet/server/services/agents/auto_upgrade_agents_status.ts b/x-pack/platform/plugins/shared/fleet/server/services/agents/auto_upgrade_agents_status.ts new file mode 100644 index 0000000000000..ee99d6d70071d --- /dev/null +++ b/x-pack/platform/plugins/shared/fleet/server/services/agents/auto_upgrade_agents_status.ts @@ -0,0 +1,80 @@ +/* + * 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 { AGENTS_PREFIX } from '../../../common'; +import type { + CurrentVersionCount, + GetAutoUpgradeAgentsStatusResponse, +} from '../../../common/types/rest_spec/agent_policy'; + +import type { AgentClient } from './agent_service'; + +export async function getAutoUpgradeAgentsStatus( + agentClient: AgentClient, + agentPolicyId: string +): Promise { + const currentVersionsMap: { + [version: string]: CurrentVersionCount; + } = {}; + let total = 0; + + await agentClient + .listAgents({ + showInactive: false, + perPage: 0, + kuery: `${AGENTS_PREFIX}.policy_id:"${agentPolicyId}"`, + aggregations: { + versions: { + terms: { + field: 'agent.version', + size: 1000, + }, + }, + }, + }) + .then((result) => { + (result.aggregations?.versions as any)?.buckets.forEach( + (bucket: { key: string; doc_count: number }) => + (currentVersionsMap[bucket.key] = { + version: bucket.key, + agents: bucket.doc_count, + failedUpgradeAgents: 0, + }) + ); + total = result.total; + }); + + await agentClient + .listAgents({ + showInactive: false, + perPage: 0, + kuery: `${AGENTS_PREFIX}.policy_id:"${agentPolicyId}" AND ${AGENTS_PREFIX}.upgrade_details.state:"UPG_FAILED"`, + aggregations: { + versions: { + terms: { + field: 'upgrade_details.target_version.keyword', + size: 1000, + }, + }, + }, + }) + .then((result) => { + (result.aggregations?.versions as any)?.buckets.forEach( + (bucket: { key: string; doc_count: number }) => + (currentVersionsMap[bucket.key] = { + version: bucket.key, + agents: currentVersionsMap[bucket.key]?.agents ?? 0, + failedUpgradeAgents: bucket.doc_count, + }) + ); + }); + + return { + currentVersions: Object.values(currentVersionsMap), + totalAgents: total, + }; +} diff --git a/x-pack/platform/plugins/shared/fleet/server/services/agents/index.ts b/x-pack/platform/plugins/shared/fleet/server/services/agents/index.ts index 6ffd24f5777cf..f318324d2303d 100644 --- a/x-pack/platform/plugins/shared/fleet/server/services/agents/index.ts +++ b/x-pack/platform/plugins/shared/fleet/server/services/agents/index.ts @@ -20,3 +20,4 @@ export { AgentServiceImpl } from './agent_service'; export type { AgentClient, AgentService } from './agent_service'; export { BulkActionsResolver } from './bulk_actions_resolver'; export { getAvailableVersions, getLatestAvailableAgentVersion } from './versions'; +export { getAutoUpgradeAgentsStatus } from './auto_upgrade_agents_status'; diff --git a/x-pack/platform/plugins/shared/fleet/server/types/models/agent_policy.ts b/x-pack/platform/plugins/shared/fleet/server/types/models/agent_policy.ts index 7ecf181adbf3d..29149e59031e4 100644 --- a/x-pack/platform/plugins/shared/fleet/server/types/models/agent_policy.ts +++ b/x-pack/platform/plugins/shared/fleet/server/types/models/agent_policy.ts @@ -295,6 +295,17 @@ export const GetAgentPolicyResponseSchema = schema.object({ item: AgentPolicyResponseSchema, }); +export const GetAutoUpgradeAgentsStatusResponseSchema = schema.object({ + currentVersions: schema.arrayOf( + schema.object({ + version: schema.string(), + agents: schema.number(), + failedUpgradeAgents: schema.number(), + }) + ), + totalAgents: schema.number(), +}); + export const FullAgentPolicyResponseSchema = schema.object({ id: schema.string(), namespaces: schema.maybe(schema.arrayOf(schema.string())), diff --git a/x-pack/platform/plugins/shared/fleet/server/types/rest_spec/agent_policy.ts b/x-pack/platform/plugins/shared/fleet/server/types/rest_spec/agent_policy.ts index ebb5c41d5bb43..d20745fdfc267 100644 --- a/x-pack/platform/plugins/shared/fleet/server/types/rest_spec/agent_policy.ts +++ b/x-pack/platform/plugins/shared/fleet/server/types/rest_spec/agent_policy.ts @@ -105,6 +105,12 @@ export const GetOneAgentPolicyRequestSchema = { }), }; +export const GetAutoUpgradeAgentsStatusRequestSchema = { + params: schema.object({ + agentPolicyId: schema.string(), + }), +}; + export const CreateAgentPolicyRequestSchema = { body: NewAgentPolicySchema, query: schema.object({ @@ -116,6 +122,7 @@ export const UpdateAgentPolicyRequestSchema = { ...GetOneAgentPolicyRequestSchema, body: NewAgentPolicySchema.extends({ force: schema.maybe(schema.boolean()), + bumpRevision: schema.maybe(schema.boolean()), }), }; diff --git a/x-pack/test/fleet_api_integration/apis/agent_policy/agent_policy.ts b/x-pack/test/fleet_api_integration/apis/agent_policy/agent_policy.ts index 731901644fd5c..f3e26e1ccb118 100644 --- a/x-pack/test/fleet_api_integration/apis/agent_policy/agent_policy.ts +++ b/x-pack/test/fleet_api_integration/apis/agent_policy/agent_policy.ts @@ -1994,5 +1994,48 @@ export default function (providerContext: FtrProviderContext) { expect(items.length).equal(1); }); }); + + describe('GET /api/fleet/agent_policies/{id}/auto_upgrade_agents_status', () => { + it('should get auto upgrade agents status', async () => { + const { + body: { item: policyWithAgents }, + } = await supertest + .post(`/api/fleet/agent_policies`) + .set('kbn-xsrf', 'xxxx') + .send({ + name: 'Policy with agents 2', + namespace: 'default', + }) + .expect(200); + await generateAgent(providerContext, 'healhty', 'agent-1', policyWithAgents.id, '8.16.1'); + await generateAgent(providerContext, 'healhty', 'agent-2', policyWithAgents.id, '8.16.1', { + state: 'UPG_FAILED', + target_version: '8.16.3', + }); + const { body } = await supertest + .get(`/api/fleet/agent_policies/${policyWithAgents.id}/auto_upgrade_agents_status`) + .set('kbn-xsrf', 'xxx') + .expect(200); + + expect(body).to.eql({ + currentVersions: [ + { + agents: 2, + failedUpgradeAgents: 0, + version: '8.16.1', + }, + { + agents: 0, + failedUpgradeAgents: 1, + version: '8.16.3', + }, + ], + totalAgents: 2, + }); + + await supertest.delete(`/api/fleet/agents/agent-1`).set('kbn-xsrf', 'xx').expect(200); + await supertest.delete(`/api/fleet/agents/agent-2`).set('kbn-xsrf', 'xx').expect(200); + }); + }); }); } diff --git a/x-pack/test/fleet_api_integration/helpers.ts b/x-pack/test/fleet_api_integration/helpers.ts index 6ae7845522733..0cdb86e0ef518 100644 --- a/x-pack/test/fleet_api_integration/helpers.ts +++ b/x-pack/test/fleet_api_integration/helpers.ts @@ -65,7 +65,8 @@ export async function generateAgent( status: string, id: string, policyId: string, - version?: string + version?: string, + upgradeDetails?: any ) { let data: any = {}; const { getService } = providerContext; @@ -112,6 +113,9 @@ export async function generateAgent( last_checkin: new Date().toISOString(), policy_id: policyId, policy_revision: 1, + agent: { + version, + }, local_metadata: { elastic: { agent: { @@ -121,6 +125,7 @@ export async function generateAgent( }, }, ...data, + ...(upgradeDetails ? { upgrade_details: upgradeDetails } : {}), }, refresh: 'wait_for', }); From e5bd422f6eb7dd846e17cd1f9b111f16c4f553e3 Mon Sep 17 00:00:00 2001 From: Umberto Pepato Date: Tue, 18 Feb 2025 11:40:34 +0100 Subject: [PATCH 54/78] [ResponseOps][Observability][Alerts] Fix missing alert grouping controls in o11y alerts page (#211160) ## Summary Adds back the additional alerts table toolbar controls to edit the grouping configuration. Adds test cases to check the correctness of the Observability alerts table configurations. ## To verify 1. Create one or more rules that fire alerts in Observability 2. Navigate to Observability > Alerts 3. Verify that the grouping toggle shows and works correctly in the table toolbar (`Group by: ...`) --- .../components/error_fallback.tsx | 2 + .../response-ops/alerts-table/constants.ts | 1 + .../grouping_toolbar_controls.ts} | 34 ++--- .../components/related_alerts.test.tsx | 69 ++++++++++ .../components/related_alerts.tsx | 7 + .../public/pages/alerts/alerts.tsx | 7 + .../services/observability/alerts/common.ts | 6 + .../apps/observability/index.ts | 2 +- .../pages/alerts/table_configuration.ts | 120 ++++++++++++++++++ .../pages/alerts/table_storage.ts | 53 -------- 10 files changed, 223 insertions(+), 78 deletions(-) rename x-pack/solutions/observability/plugins/observability/public/components/alerts_table/{alerts/get_persistent_controls.ts => grouping/grouping_toolbar_controls.ts} (64%) create mode 100644 x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/related_alerts.test.tsx create mode 100644 x-pack/test/observability_functional/apps/observability/pages/alerts/table_configuration.ts delete mode 100644 x-pack/test/observability_functional/apps/observability/pages/alerts/table_storage.ts diff --git a/src/platform/packages/shared/response-ops/alerts-table/components/error_fallback.tsx b/src/platform/packages/shared/response-ops/alerts-table/components/error_fallback.tsx index 3f00851610b1b..20d7cb655ce37 100644 --- a/src/platform/packages/shared/response-ops/alerts-table/components/error_fallback.tsx +++ b/src/platform/packages/shared/response-ops/alerts-table/components/error_fallback.tsx @@ -9,6 +9,7 @@ import React from 'react'; import { EuiButton, EuiCode, EuiCopy, EuiEmptyPrompt } from '@elastic/eui'; +import { ERROR_PROMPT_TEST_ID } from '../constants'; import { FallbackComponent } from './error_boundary'; import { ALERTS_TABLE_UNKNOWN_ERROR_COPY_TO_CLIPBOARD_LABEL, @@ -37,6 +38,7 @@ export const ErrorFallback: FallbackComponent = ({ error }) => { )} } + data-test-subj={ERROR_PROMPT_TEST_ID} /> ); }; diff --git a/src/platform/packages/shared/response-ops/alerts-table/constants.ts b/src/platform/packages/shared/response-ops/alerts-table/constants.ts index d6b89eb64d5a6..35892e9563a9d 100644 --- a/src/platform/packages/shared/response-ops/alerts-table/constants.ts +++ b/src/platform/packages/shared/response-ops/alerts-table/constants.ts @@ -137,3 +137,4 @@ export const CELL_ACTIONS_EXPAND_TEST_ID = 'euiDataGridCellExpandButton'; export const FIELD_BROWSER_TEST_ID = 'fields-browser-container'; export const FIELD_BROWSER_BTN_TEST_ID = 'show-field-browser'; export const FIELD_BROWSER_CUSTOM_CREATE_BTN_TEST_ID = 'field-browser-custom-create-btn'; +export const ERROR_PROMPT_TEST_ID = 'alertsTableErrorPrompt'; diff --git a/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/alerts/get_persistent_controls.ts b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/grouping_toolbar_controls.ts similarity index 64% rename from x-pack/solutions/observability/plugins/observability/public/components/alerts_table/alerts/get_persistent_controls.ts rename to x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/grouping_toolbar_controls.ts index 6e0f697e831a9..a386e0c6d222b 100644 --- a/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/alerts/get_persistent_controls.ts +++ b/x-pack/solutions/observability/plugins/observability/public/components/alerts_table/grouping/grouping_toolbar_controls.ts @@ -5,30 +5,21 @@ * 2.0. */ -import { useMemo, useCallback } from 'react'; -import { type AlertsGroupingProps, useAlertsGroupingState } from '@kbn/alerts-grouping'; +import React, { useCallback } from 'react'; +import { useAlertsGroupingState } from '@kbn/alerts-grouping'; import { useAlertsDataView } from '@kbn/alerts-ui-shared/src/common/hooks/use_alerts_data_view'; import { useGetGroupSelectorStateless } from '@kbn/grouping/src/hooks/use_get_group_selector'; -import { AlertsByGroupingAgg } from '../types'; +import { useKibana } from '../../../utils/kibana_react'; -interface GetPersistentControlsParams { +interface GroupingToolbarControlsProps { groupingId: string; ruleTypeIds: string[]; maxGroupingLevels?: number; - services: Pick< - AlertsGroupingProps['services'], - 'dataViews' | 'http' | 'notifications' - >; } -export const getPersistentControlsHook = - ({ - groupingId, - ruleTypeIds, - maxGroupingLevels = 3, - services: { dataViews, http, notifications }, - }: GetPersistentControlsParams) => - () => { +export const GroupingToolbarControls = React.memo( + ({ groupingId, ruleTypeIds, maxGroupingLevels = 3 }) => { + const { dataViews, http, notifications } = useKibana().services; const { grouping, updateGrouping } = useAlertsGroupingState(groupingId); const onGroupChange = useCallback( @@ -48,7 +39,7 @@ export const getPersistentControlsHook = toasts: notifications.toasts, }); - const groupSelector = useGetGroupSelectorStateless({ + return useGetGroupSelectorStateless({ groupingId, onGroupChange, fields: dataView?.fields ?? [], @@ -56,10 +47,5 @@ export const getPersistentControlsHook = grouping.options?.filter((option) => !grouping.activeGroups.includes(option.key)) ?? [], maxGroupingLevels, }); - - return useMemo(() => { - return { - right: groupSelector, - }; - }, [groupSelector]); - }; + } +); diff --git a/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/related_alerts.test.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/related_alerts.test.tsx new file mode 100644 index 0000000000000..d51513240ac23 --- /dev/null +++ b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/related_alerts.test.tsx @@ -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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { render } from '../../../utils/test_helper'; +import { alertWithGroupsAndTags } from '../mock/alert'; +import { useKibana } from '../../../utils/kibana_react'; +import { kibanaStartMock } from '../../../utils/kibana_react.mock'; +import { RelatedAlerts } from './related_alerts'; +import { ObservabilityAlertsTable } from '../../../components/alerts_table/alerts_table_lazy'; +import { + OBSERVABILITY_RULE_TYPE_IDS_WITH_SUPPORTED_STACK_RULE_TYPES, + observabilityAlertFeatureIds, +} from '../../../../common/constants'; + +jest.mock('react-router-dom', () => ({ + ...jest.requireActual('react-router-dom'), + useParams: jest.fn(), +})); + +jest.mock('../../../utils/kibana_react'); + +jest.mock('../../../components/alerts_table/alerts_table_lazy'); +const mockAlertsTable = jest.mocked(ObservabilityAlertsTable).mockReturnValue(
); + +jest.mock('@kbn/alerts-grouping', () => ({ + AlertsGrouping: jest.fn().mockImplementation(({ children }) =>
{children([])}
), +})); + +const useKibanaMock = useKibana as jest.Mock; +const mockKibana = () => { + useKibanaMock.mockReturnValue({ + services: { + ...kibanaStartMock.startContract().services, + http: { + basePath: { + prepend: jest.fn(), + }, + }, + }, + }); +}; + +describe('Related alerts', () => { + beforeEach(() => { + jest.clearAllMocks(); + mockKibana(); + }); + + it('should pass the correct configuration options to the alerts table', async () => { + render(); + + expect(mockAlertsTable).toHaveBeenLastCalledWith( + expect.objectContaining({ + id: 'xpack.observability.related.alerts.table', + ruleTypeIds: OBSERVABILITY_RULE_TYPE_IDS_WITH_SUPPORTED_STACK_RULE_TYPES, + consumers: observabilityAlertFeatureIds, + initialPageSize: 50, + renderAdditionalToolbarControls: expect.any(Function), + showInspectButton: true, + }), + expect.anything() + ); + }); +}); diff --git a/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/related_alerts.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/related_alerts.tsx index 50883729be74d..82f558ec28e46 100644 --- a/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/related_alerts.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/pages/alert_details/components/related_alerts.tsx @@ -27,6 +27,7 @@ import { } from '@kbn/rule-data-utils'; import { BoolQuery, Filter, type Query } from '@kbn/es-query'; import { AlertsGrouping } from '@kbn/alerts-grouping'; +import { GroupingToolbarControls } from '../../../components/alerts_table/grouping/grouping_toolbar_controls'; import { ObservabilityFields } from '../../../../common/utils/alerting/types'; import { @@ -150,6 +151,12 @@ export function InternalRelatedAlerts({ alert }: Props) { consumers={observabilityAlertFeatureIds} query={mergeBoolQueries(esQuery, groupQuery)} initialPageSize={ALERTS_PER_PAGE} + renderAdditionalToolbarControls={() => ( + + )} showInspectButton /> ); diff --git a/x-pack/solutions/observability/plugins/observability/public/pages/alerts/alerts.tsx b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/alerts.tsx index d2eae85660a32..24556488d553c 100644 --- a/x-pack/solutions/observability/plugins/observability/public/pages/alerts/alerts.tsx +++ b/x-pack/solutions/observability/plugins/observability/public/pages/alerts/alerts.tsx @@ -54,6 +54,7 @@ import { HeaderMenu } from '../overview/components/header_menu/header_menu'; import { buildEsQuery } from '../../utils/build_es_query'; import { renderRuleStats, RuleStatsState } from './components/rule_stats'; import { mergeBoolQueries } from './helpers/merge_bool_queries'; +import { GroupingToolbarControls } from '../../components/alerts_table/grouping/grouping_toolbar_controls'; const ALERTS_SEARCH_BAR_ID = 'alerts-search-bar-o11y'; const ALERTS_PER_PAGE = 50; @@ -319,6 +320,12 @@ function InternalAlertsPage() { initialPageSize={ALERTS_PER_PAGE} onUpdate={onUpdate} columns={tableColumns} + renderAdditionalToolbarControls={() => ( + + )} showInspectButton /> ); diff --git a/x-pack/test/functional/services/observability/alerts/common.ts b/x-pack/test/functional/services/observability/alerts/common.ts index 4124f97df74a4..adde416503afc 100644 --- a/x-pack/test/functional/services/observability/alerts/common.ts +++ b/x-pack/test/functional/services/observability/alerts/common.ts @@ -22,6 +22,7 @@ const DATE_WITH_DATA = { const ALERTS_FLYOUT_SELECTOR = 'alertsFlyout'; const FILTER_FOR_VALUE_BUTTON_SELECTOR = 'filterForValue'; const ALERTS_TABLE_CONTAINER_SELECTOR = 'alertsTable'; +const ALERTS_TABLE_ERROR_PROMPT_SELECTOR = 'alertsTableErrorPrompt'; const ALERTS_TABLE_ACTIONS_MENU_SELECTOR = 'alertsTableActionsMenu'; const VIEW_RULE_DETAILS_SELECTOR = 'viewRuleDetails'; const VIEW_RULE_DETAILS_FLYOUT_SELECTOR = 'viewRuleDetailsFlyout'; @@ -134,6 +135,10 @@ export function ObservabilityAlertsCommonProvider({ return await testSubjects.existOrFail(ALERTS_TABLE_CONTAINER_SELECTOR); }; + const ensureNoTableErrorPrompt = async () => { + return await testSubjects.missingOrFail(ALERTS_TABLE_ERROR_PROMPT_SELECTOR); + }; + const getNoDataPageOrFail = async () => { return await testSubjects.existOrFail('noDataPage'); }; @@ -404,6 +409,7 @@ export function ObservabilityAlertsCommonProvider({ getTableCellsInRows, getTableColumnHeaders, getTableOrFail, + ensureNoTableErrorPrompt, navigateToTimeWithData, setKibanaTimeZoneToUTC, openAlertsFlyout, diff --git a/x-pack/test/observability_functional/apps/observability/index.ts b/x-pack/test/observability_functional/apps/observability/index.ts index dce84cee32dfa..39b288363b350 100644 --- a/x-pack/test/observability_functional/apps/observability/index.ts +++ b/x-pack/test/observability_functional/apps/observability/index.ts @@ -16,7 +16,7 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./pages/alerts/pagination')); loadTestFile(require.resolve('./pages/alerts/rule_stats')); loadTestFile(require.resolve('./pages/alerts/state_synchronization')); - loadTestFile(require.resolve('./pages/alerts/table_storage')); + loadTestFile(require.resolve('./pages/alerts/table_configuration')); loadTestFile(require.resolve('./pages/alerts/custom_threshold_preview_chart')); loadTestFile(require.resolve('./pages/alerts/custom_threshold')); loadTestFile(require.resolve('./pages/cases/case_details')); diff --git a/x-pack/test/observability_functional/apps/observability/pages/alerts/table_configuration.ts b/x-pack/test/observability_functional/apps/observability/pages/alerts/table_configuration.ts new file mode 100644 index 0000000000000..39a14ec9c2566 --- /dev/null +++ b/x-pack/test/observability_functional/apps/observability/pages/alerts/table_configuration.ts @@ -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 expect from '@kbn/expect'; + +import { + ALERT_EVALUATION_VALUE, + ALERT_EVALUATION_THRESHOLD, + ALERT_DURATION, + ALERT_REASON, + ALERT_RULE_NAME, + ALERT_START, + ALERT_STATUS, + ALERT_INSTANCE_ID, + TAGS, + ALERT_STATUS_ACTIVE, +} from '@kbn/rule-data-utils'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default ({ getService, getPageObject }: FtrProviderContext) => { + describe('Observability alerts table configuration', function () { + this.tags('includeFirefox'); + + const observability = getService('observability'); + const esArchiver = getService('esArchiver'); + const testSubjects = getService('testSubjects'); + const dataGrid = getService('dataGrid'); + const browser = getService('browser'); + const retry = getService('retry'); + + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/observability/alerts'); + await esArchiver.load('x-pack/test/functional/es_archives/infra/simple_logs'); + }); + + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/infra/simple_logs'); + await esArchiver.unload('x-pack/test/functional/es_archives/observability/alerts'); + }); + + it('renders correctly with a pre-existing persisted configuration', async () => { + await observability.alerts.common.navigateWithoutFilter(); + const LOCAL_STORAGE_KEY = 'xpack.observability.alerts.alert.table'; + await browser.setLocalStorageItem( + LOCAL_STORAGE_KEY, + `{"columns":[{"displayAsText":"Alert Status","id":"kibana.alert.status","initialWidth":120,"schema":"string"},{"displayAsText":"Triggered","id":"kibana.alert.start","initialWidth":190,"schema":"datetime"},{"displayAsText":"Duration","id":"kibana.alert.duration.us","initialWidth":70,"schema":"numeric"},{"displayAsText":"Rule name","id":"kibana.alert.rule.name","initialWidth":150,"schema":"string"},{"displayAsText":"Group","id":"kibana.alert.instance.id","initialWidth":100,"schema":"string"},{"displayAsText":"Observed value","id":"kibana.alert.evaluation.value","initialWidth":100,"schema":"conflict"},{"displayAsText":"Threshold","id":"kibana.alert.evaluation.threshold","initialWidth":100,"schema":"numeric"},{"displayAsText":"Tags","id":"tags","initialWidth":150,"schema":"string"},{"displayAsText":"Reason","id":"kibana.alert.reason","schema":"string"}],"sort":[{"kibana.alert.start":{"order":"desc"}}],"visibleColumns":["kibana.alert.status","kibana.alert.start","kibana.alert.duration.us","kibana.alert.rule.name","kibana.alert.instance.id","kibana.alert.evaluation.value","kibana.alert.evaluation.threshold","tags","kibana.alert.reason"]}` + ); + await observability.alerts.common.navigateWithoutFilter(); + await observability.alerts.common.ensureNoTableErrorPrompt(); + await browser.removeLocalStorageItem(LOCAL_STORAGE_KEY); + }); + + it('renders the correct columns', async () => { + await observability.alerts.common.navigateToTimeWithData(); + for (const colId of [ + ALERT_STATUS, + ALERT_START, + ALERT_DURATION, + ALERT_RULE_NAME, + ALERT_INSTANCE_ID, + ALERT_EVALUATION_VALUE, + ALERT_EVALUATION_THRESHOLD, + TAGS, + ALERT_REASON, + ]) { + expect(await testSubjects.exists(`dataGridHeaderCell-${colId}`)).to.be(true); + } + }); + + it('renders the group selector', async () => { + await observability.alerts.common.navigateToTimeWithData(); + expect(await testSubjects.exists('group-selector-dropdown')).to.be(true); + }); + + it('renders the correct alert actions', async () => { + await observability.alerts.common.navigateToTimeWithData(); + await observability.alerts.common.setAlertStatusFilter(ALERT_STATUS_ACTIVE); + await testSubjects.click('alertsTableRowActionMore'); + await retry.waitFor('alert actions popover visible', () => + testSubjects.exists('alertsTableActionsMenu') + ); + for (const action of [ + 'add-to-existing-case-action', + 'add-to-new-case-action', + 'viewRuleDetails', + 'viewAlertDetailsPage', + 'untrackAlert', + 'toggle-alert', + ]) { + expect(await testSubjects.exists(action, { allowHidden: true })).to.be(true); + } + }); + + it('remembers column changes', async () => { + await observability.alerts.common.navigateToTimeWithData(); + await dataGrid.clickHideColumn('kibana.alert.duration.us'); + + await observability.alerts.common.navigateToTimeWithData(); + + const durationColumnExists = await testSubjects.exists( + 'dataGridHeaderCell-kibana.alert.duration.us' + ); + expect(durationColumnExists).to.be(false); + }); + + it('remembers sorting changes', async () => { + await observability.alerts.common.navigateToTimeWithData(); + await dataGrid.clickDocSortAsc('kibana.alert.start'); + + await observability.alerts.common.navigateToTimeWithData(); + + const triggeredColumnHeading = await dataGrid.getHeaderElement('kibana.alert.start'); + expect(await triggeredColumnHeading.getAttribute('aria-sort')).to.be('ascending'); + }); + }); +}; diff --git a/x-pack/test/observability_functional/apps/observability/pages/alerts/table_storage.ts b/x-pack/test/observability_functional/apps/observability/pages/alerts/table_storage.ts deleted file mode 100644 index c39472715a353..0000000000000 --- a/x-pack/test/observability_functional/apps/observability/pages/alerts/table_storage.ts +++ /dev/null @@ -1,53 +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 expect from '@kbn/expect'; - -import { FtrProviderContext } from '../../../../ftr_provider_context'; - -export default ({ getService, getPageObject }: FtrProviderContext) => { - describe('Observability alert table state storage', function () { - this.tags('includeFirefox'); - - const observability = getService('observability'); - const esArchiver = getService('esArchiver'); - const testSubjects = getService('testSubjects'); - const dataGrid = getService('dataGrid'); - - before(async () => { - await esArchiver.load('x-pack/test/functional/es_archives/observability/alerts'); - await esArchiver.load('x-pack/test/functional/es_archives/infra/simple_logs'); - }); - - after(async () => { - await esArchiver.unload('x-pack/test/functional/es_archives/infra/simple_logs'); - await esArchiver.unload('x-pack/test/functional/es_archives/observability/alerts'); - }); - - it('remembers column changes', async () => { - await observability.alerts.common.navigateToTimeWithData(); - await dataGrid.clickHideColumn('kibana.alert.duration.us'); - - await observability.alerts.common.navigateToTimeWithData(); - - const durationColumnExists = await testSubjects.exists( - 'dataGridHeaderCell-kibana.alert.duration.us' - ); - expect(durationColumnExists).to.be(false); - }); - - it('remembers sorting changes', async () => { - await observability.alerts.common.navigateToTimeWithData(); - await dataGrid.clickDocSortAsc('kibana.alert.start'); - - await observability.alerts.common.navigateToTimeWithData(); - - const triggeredColumnHeading = await dataGrid.getHeaderElement('kibana.alert.start'); - expect(await triggeredColumnHeading.getAttribute('aria-sort')).to.be('ascending'); - }); - }); -}; From 4cd9ef318b493aeaebae70461472d8332df30b5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Louv-Jansen?= Date: Tue, 18 Feb 2025 12:50:01 +0100 Subject: [PATCH 55/78] [Obs AI Assistant] Defer KB migration until index assets have been updated (#211523) Follow-up to https://github.com/elastic/kibana/pull/210386 Closes: https://github.com/elastic/kibana/issues/211525 This ensures that we don't start executing the knowledge base migration until index assets have been updated --- .../shared/observability_ai_assistant/server/plugin.ts | 8 +++++--- .../register_kb_semantic_text_migration_task.ts | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/plugin.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/plugin.ts index fd2e8d0d4b45e..b77669730185a 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/plugin.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/plugin.ts @@ -130,9 +130,10 @@ export class ObservabilityAIAssistantPlugin })); // Update existing index assets (mappings, templates, etc). This will not create assets if they do not exist. - updateExistingIndexAssets({ logger: this.logger.get('index_assets'), core }).catch((e) => - this.logger.error(`Index assets could not be updated: ${e.message}`) - ); + const indexAssetsUpdatedPromise = updateExistingIndexAssets({ + logger: this.logger.get('index_assets'), + core, + }).catch((e) => this.logger.error(`Index assets could not be updated: ${e.message}`)); // register task to migrate knowledge base entries to include semantic_text field registerAndScheduleKbSemanticTextMigrationTask({ @@ -140,6 +141,7 @@ export class ObservabilityAIAssistantPlugin taskManager: plugins.taskManager, logger: this.logger.get('kb_semantic_text_migration_task'), config: this.config, + indexAssetsUpdatedPromise, }).catch((e) => this.logger.error( `Knowledge base semantic_text migration task could not be registered: ${e.message}` diff --git a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/task_manager_definitions/register_kb_semantic_text_migration_task.ts b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/task_manager_definitions/register_kb_semantic_text_migration_task.ts index 29dd1418b2818..4f83e61a67a4d 100644 --- a/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/task_manager_definitions/register_kb_semantic_text_migration_task.ts +++ b/x-pack/platform/plugins/shared/observability_ai_assistant/server/service/task_manager_definitions/register_kb_semantic_text_migration_task.ts @@ -28,17 +28,22 @@ export async function registerAndScheduleKbSemanticTextMigrationTask({ logger, core, config, + indexAssetsUpdatedPromise, }: { taskManager: TaskManagerSetupContract; logger: Logger; core: CoreSetup; config: ObservabilityAIAssistantConfig; + indexAssetsUpdatedPromise: Promise; }) { const [coreStart, pluginsStart] = await core.getStartServices(); // register task registerKbSemanticTextMigrationTask({ taskManager, logger, coreStart, config }); + // wait for index assets to be updated + await indexAssetsUpdatedPromise; + // schedule task await scheduleKbSemanticTextMigrationTask({ taskManager: pluginsStart.taskManager, logger }); } From 46132d8c3e85afc9233422b21a2fe8b37b50da11 Mon Sep 17 00:00:00 2001 From: Krzysztof Kowalczyk Date: Tue, 18 Feb 2025 12:53:27 +0100 Subject: [PATCH 56/78] [Spaces] Show callout on spaces permission tab when security is disabled (#210961) ## Summary This PR updates the behavior of `Permissions` tab in `Space Management` when `xpack.security.enabled` is set to `false` to show a callout with a meaningful explanation. ![Screenshot 2025-02-17 at 12 42 58](https://github.com/user-attachments/assets/881d0bbe-e30b-41b4-8c0a-5b8e127786ab) Closes: #210241 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../shared/kbn-doc-links/src/get_doc_links.ts | 1 + .../shared/kbn-doc-links/src/types.ts | 1 + .../management/edit_space/edit_space.tsx | 5 +++ .../edit_space_content_tab.test.tsx | 1 + .../edit_space_general_tab.test.tsx | 1 + .../edit_space/edit_space_roles_tab.test.tsx | 1 + ..._tabs.test.ts => edit_space_tabs.test.tsx} | 39 ++++++++++++++++- .../management/edit_space/edit_space_tabs.tsx | 9 +++- .../management/edit_space/hooks/use_tabs.ts | 2 + .../provider/edit_space_provider.test.tsx | 1 + .../provider/edit_space_provider.tsx | 1 + .../space_assign_role_privilege_form.test.tsx | 1 + .../edit_space/security_disabled_callout.tsx | 43 +++++++++++++++++++ .../management/spaces_management_app.test.tsx | 2 +- .../management/spaces_management_app.tsx | 4 +- 15 files changed, 108 insertions(+), 4 deletions(-) rename x-pack/platform/plugins/shared/spaces/public/management/edit_space/{edit_space_tabs.test.ts => edit_space_tabs.test.tsx} (74%) create mode 100644 x-pack/platform/plugins/shared/spaces/public/management/edit_space/security_disabled_callout.tsx diff --git a/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts b/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts index e30a6200e07c4..4d4cbaf34294e 100644 --- a/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts +++ b/src/platform/packages/shared/kbn-doc-links/src/get_doc_links.ts @@ -677,6 +677,7 @@ export const getDocLinks = ({ kibanaBranch, buildFlavor }: GetDocLinkOptions): D mappingRolesFieldRules: `${ELASTICSEARCH_DOCS}role-mapping-resources.html#mapping-roles-rule-field`, runAsPrivilege: `${ELASTICSEARCH_DOCS}security-privileges.html#_run_as_privilege`, deprecatedV1Endpoints: `${KIBANA_DOCS}breaking-changes-summary.html#breaking-199656`, + enableElasticSearchSecurityFeatures: `${ELASTICSEARCH_DOCS}security-minimal-setup.html#_enable_elasticsearch_security_features`, }, spaces: { kibanaLegacyUrlAliases: `${KIBANA_DOCS}legacy-url-aliases.html`, diff --git a/src/platform/packages/shared/kbn-doc-links/src/types.ts b/src/platform/packages/shared/kbn-doc-links/src/types.ts index 0fff5c2a92125..98e5418ac1ffb 100644 --- a/src/platform/packages/shared/kbn-doc-links/src/types.ts +++ b/src/platform/packages/shared/kbn-doc-links/src/types.ts @@ -458,6 +458,7 @@ export interface DocLinks { mappingRolesFieldRules: string; runAsPrivilege: string; deprecatedV1Endpoints: string; + enableElasticSearchSecurityFeatures: string; }>; readonly spaces: Readonly<{ kibanaLegacyUrlAliases: string; diff --git a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space.tsx b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space.tsx index 910c481a33da3..7fb5a3320d243 100644 --- a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space.tsx +++ b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space.tsx @@ -75,6 +75,8 @@ export const EditSpace: FC = ({ logger, notifications, isRoleManagementEnabled, + license, + enableSecurityLink, } = useEditSpaceServices(); const [space, setSpace] = useState(null); const [userActiveSpace, setUserActiveSpace] = useState(null); @@ -83,6 +85,7 @@ export const EditSpace: FC = ({ const [isLoadingFeatures, setIsLoadingFeatures] = useState(true); const [isLoadingRoles, setIsLoadingRoles] = useState(true); const selectedTabId = getSelectedTabId(Boolean(capabilities?.roles?.view), _selectedTabId); + const isSecurityEnabled = Boolean(license?.isEnabled()); const [tabs, selectedTabContent] = useTabs({ space, features, @@ -91,6 +94,8 @@ export const EditSpace: FC = ({ capabilities, history, currentSelectedTabId: selectedTabId, + isSecurityEnabled, + enableSecurityLink, ...props, }); diff --git a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_content_tab.test.tsx b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_content_tab.test.tsx index 5946706874c4a..4e30c9d2e4d8d 100644 --- a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_content_tab.test.tsx +++ b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_content_tab.test.tsx @@ -67,6 +67,7 @@ const TestComponent: React.FC = ({ children }) => { userProfile={userProfile} i18n={i18n} logger={logger} + enableSecurityLink="" > {children} diff --git a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_general_tab.test.tsx b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_general_tab.test.tsx index ac3e84f8d4c4c..f2ea7d05ec498 100644 --- a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_general_tab.test.tsx +++ b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_general_tab.test.tsx @@ -89,6 +89,7 @@ describe('EditSpaceSettings', () => { theme={theme} i18n={i18n} logger={logger} + enableSecurityLink="" > {children} diff --git a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_roles_tab.test.tsx b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_roles_tab.test.tsx index 02a754e9d93f0..f46447c270d2e 100644 --- a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_roles_tab.test.tsx +++ b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_roles_tab.test.tsx @@ -83,6 +83,7 @@ describe('EditSpaceAssignedRolesTab', () => { theme={theme} i18n={i18n} logger={logger} + enableSecurityLink="" > {children} diff --git a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_tabs.test.ts b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_tabs.test.tsx similarity index 74% rename from x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_tabs.test.ts rename to x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_tabs.test.tsx index ef0015516eccd..2b2f19e97720b 100644 --- a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_tabs.test.ts +++ b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_tabs.test.tsx @@ -4,12 +4,13 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - import { render } from '@testing-library/react'; +import React from 'react'; import { DEFAULT_APP_CATEGORIES } from '@kbn/core/public'; import { scopedHistoryMock } from '@kbn/core-application-browser-mocks'; import { KibanaFeature } from '@kbn/features-plugin/common'; +import { __IntlProvider as IntlProvider } from '@kbn/i18n-react'; import type { GetTabsProps } from './edit_space_tabs'; import { getTabs } from './edit_space_tabs'; @@ -45,6 +46,7 @@ const getCapabilities = ( describe('Edit Space Tabs: getTabs', () => { it('can include a Permissions tab', () => { const isRoleManagementEnabled = true; + const isSecurityEnabled = true; const capabilities = getCapabilities(); expect( @@ -56,6 +58,8 @@ describe('Edit Space Tabs: getTabs', () => { history, allowFeatureVisibility, allowSolutionVisibility, + isSecurityEnabled, + enableSecurityLink: '', }).map(({ id, name }) => ({ name, id })) ).toEqual([ { id: 'general', name: 'General settings' }, @@ -66,6 +70,7 @@ describe('Edit Space Tabs: getTabs', () => { it('can include count of roles as a badge for Permissions tab', () => { const isRoleManagementEnabled = true; + const isSecurityEnabled = true; const capabilities = getCapabilities(); const rolesTab = getTabs({ @@ -77,6 +82,8 @@ describe('Edit Space Tabs: getTabs', () => { history, allowFeatureVisibility, allowSolutionVisibility, + isSecurityEnabled, + enableSecurityLink: '', }).find((tab) => tab.id === 'roles'); if (!rolesTab?.append) { @@ -87,6 +94,32 @@ describe('Edit Space Tabs: getTabs', () => { expect(getByText('42')).toBeInTheDocument(); }); + it('should show a warning callout when security is disabled', () => { + const isRoleManagementEnabled = true; + const isSecurityEnabled = false; + const capabilities = getCapabilities(); + + const rolesTab = getTabs({ + rolesCount: 0, + isRoleManagementEnabled, + capabilities, + space, + features, + history, + allowFeatureVisibility, + allowSolutionVisibility, + isSecurityEnabled, + enableSecurityLink: '', + }).find((tab) => tab.id === 'roles'); + + if (!rolesTab?.content) { + throw new Error('roles tab did not exist!'); + } + const { getByTestId } = render({rolesTab.content}); + + expect(getByTestId('securityDisabledCallout')).toBeInTheDocument(); + }); + it('hides Permissions tab when role management is not enabled', () => { expect( getTabs({ @@ -97,6 +130,8 @@ describe('Edit Space Tabs: getTabs', () => { history, allowFeatureVisibility, allowSolutionVisibility, + isSecurityEnabled: true, + enableSecurityLink: '', }).map(({ id, name }) => ({ name, id })) ).toEqual([ { id: 'general', name: 'General settings' }, @@ -114,6 +149,8 @@ describe('Edit Space Tabs: getTabs', () => { history, allowFeatureVisibility, allowSolutionVisibility, + isSecurityEnabled: true, + enableSecurityLink: '', }).map(({ id, name }) => ({ name, id })) ).toEqual([ { id: 'general', name: 'General settings' }, diff --git a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_tabs.tsx b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_tabs.tsx index 49d70d6d6beee..5eb5fb88789d7 100644 --- a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_tabs.tsx +++ b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/edit_space_tabs.tsx @@ -14,6 +14,7 @@ import { i18n } from '@kbn/i18n'; import { withSuspense } from '@kbn/shared-ux-utility'; import { TAB_ID_CONTENT, TAB_ID_GENERAL, TAB_ID_ROLES } from './constants'; +import { SecurityDisabledCallout } from './security_disabled_callout'; import type { Space } from '../../../common'; export interface EditSpaceTab { @@ -35,6 +36,8 @@ export interface GetTabsProps { }; allowFeatureVisibility: boolean; allowSolutionVisibility: boolean; + isSecurityEnabled: boolean; + enableSecurityLink: string; } const SuspenseEditSpaceSettingsTab = withSuspense( @@ -68,6 +71,8 @@ export const getTabs = ({ capabilities, rolesCount, isRoleManagementEnabled, + isSecurityEnabled, + enableSecurityLink, ...props }: GetTabsProps): EditSpaceTab[] => { const reloadWindow = () => { @@ -105,12 +110,14 @@ export const getTabs = ({ {rolesCount ?? 0} ), - content: ( + content: isSecurityEnabled ? ( + ) : ( + ), }); } diff --git a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/hooks/use_tabs.ts b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/hooks/use_tabs.ts index e3c65f40cc9ad..cc5689a38c7ae 100644 --- a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/hooks/use_tabs.ts +++ b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/hooks/use_tabs.ts @@ -21,6 +21,8 @@ type UseTabsProps = Pick & { history: ScopedHistory; allowFeatureVisibility: boolean; allowSolutionVisibility: boolean; + isSecurityEnabled: boolean; + enableSecurityLink: string; }; export const useTabs = ({ diff --git a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/provider/edit_space_provider.test.tsx b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/provider/edit_space_provider.test.tsx index df2135e256970..e2a8214d133e7 100644 --- a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/provider/edit_space_provider.test.tsx +++ b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/provider/edit_space_provider.test.tsx @@ -70,6 +70,7 @@ const SUTProvider = ({ getSecurityLicense: getSecurityLicenseMock, navigateToUrl: jest.fn(), capabilities, + enableSecurityLink: '', }} > {children} diff --git a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/provider/edit_space_provider.tsx b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/provider/edit_space_provider.tsx index 8de774797c974..b8f429c705359 100644 --- a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/provider/edit_space_provider.tsx +++ b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/provider/edit_space_provider.tsx @@ -49,6 +49,7 @@ export interface EditSpaceProviderRootProps getRolesAPIClient: () => Promise; getPrivilegesAPIClient: () => Promise; getSecurityLicense: () => Promise; + enableSecurityLink: string; } interface EditSpaceClients { diff --git a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/roles/component/space_assign_role_privilege_form.test.tsx b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/roles/component/space_assign_role_privilege_form.test.tsx index ea24864bb092c..124ebbcb1ec18 100644 --- a/x-pack/platform/plugins/shared/spaces/public/management/edit_space/roles/component/space_assign_role_privilege_form.test.tsx +++ b/x-pack/platform/plugins/shared/spaces/public/management/edit_space/roles/component/space_assign_role_privilege_form.test.tsx @@ -113,6 +113,7 @@ const renderPrivilegeRolesForm = ({ fetchRolesError: false, }, invokeClient: spacesClientsInvocatorMock, + enableSecurityLink: '', }} > ( + + + + + ), + }} + /> + +); diff --git a/x-pack/platform/plugins/shared/spaces/public/management/spaces_management_app.test.tsx b/x-pack/platform/plugins/shared/spaces/public/management/spaces_management_app.test.tsx index ff5a709765901..933ed5933a9af 100644 --- a/x-pack/platform/plugins/shared/spaces/public/management/spaces_management_app.test.tsx +++ b/x-pack/platform/plugins/shared/spaces/public/management/spaces_management_app.test.tsx @@ -189,7 +189,7 @@ describe('spacesManagementApp', () => { css="You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop)." data-test-subj="kbnRedirectAppLink" > - Spaces Edit Page: {"capabilities":{"catalogue":{},"management":{},"navLinks":{}},"serverBasePath":"","http":{"basePath":{"basePath":"","serverBasePath":"","assetsHrefBase":""},"anonymousPaths":{},"externalUrl":{},"staticAssets":{}},"overlays":{"banners":{}},"notifications":{"toasts":{}},"userProfile":{},"theme":{"theme$":{}},"i18n":{},"logger":{"context":[]},"spacesManager":{"onActiveSpaceChange$":{}},"spaceId":"some-space","history":{"action":"PUSH","length":1,"location":{"pathname":"/edit/some-space","search":"","hash":""}},"allowFeatureVisibility":true,"allowSolutionVisibility":true} + Spaces Edit Page: {"capabilities":{"catalogue":{},"management":{},"navLinks":{}},"serverBasePath":"","http":{"basePath":{"basePath":"","serverBasePath":"","assetsHrefBase":""},"anonymousPaths":{},"externalUrl":{},"staticAssets":{}},"overlays":{"banners":{}},"notifications":{"toasts":{}},"userProfile":{},"theme":{"theme$":{}},"i18n":{},"logger":{"context":[]},"spacesManager":{"onActiveSpaceChange$":{}},"spaceId":"some-space","history":{"action":"PUSH","length":1,"location":{"pathname":"/edit/some-space","search":"","hash":""}},"allowFeatureVisibility":true,"allowSolutionVisibility":true,"enableSecurityLink":"https://www.elastic.co/guide/en/elasticsearch/reference/mocked-test-branch/security-minimal-setup.html#_enable_elasticsearch_security_features"}
`); diff --git a/x-pack/platform/plugins/shared/spaces/public/management/spaces_management_app.tsx b/x-pack/platform/plugins/shared/spaces/public/management/spaces_management_app.tsx index 3e72ce63caeb9..f084938c7d7da 100644 --- a/x-pack/platform/plugins/shared/spaces/public/management/spaces_management_app.tsx +++ b/x-pack/platform/plugins/shared/spaces/public/management/spaces_management_app.tsx @@ -82,7 +82,8 @@ export const spacesManagementApp = Object.freeze({ text: title, href: `/`, }; - const { notifications, application, chrome, http, overlays } = coreStart; + const { notifications, application, chrome, http, overlays, docLinks } = coreStart; + const enableSecurityLink = docLinks.links.security.enableElasticSearchSecurityFeatures; chrome.docTitle.change(title); @@ -174,6 +175,7 @@ export const spacesManagementApp = Object.freeze({ allowFeatureVisibility={config.allowFeatureVisibility} allowSolutionVisibility={config.allowSolutionVisibility} getPrivilegesAPIClient={getPrivilegesAPIClient} + enableSecurityLink={enableSecurityLink} /> ); }; From 148d47ced142456d68322fe6097287e84255ca7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Efe=20G=C3=BCrkan=20YALAMAN?= Date: Tue, 18 Feb 2025 12:59:27 +0100 Subject: [PATCH 57/78] [Fix]Removes synonyms read-only permission. (#211471) ## Summary Kibana permission for read-only is removed. This is not a breaking change while the feature is not yet released. Cluster requirements make it obsolete. Also fixed warnings on permission names. ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [x] This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The `release_note:breaking` label should be applied in these situations. - [x] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) --- .../plugins/search_synonyms/server/plugin.ts | 11 ++++----- .../plugins/search_synonyms/server/routes.ts | 24 +++++++------------ .../security_and_spaces/tests/nav_links.ts | 1 + 3 files changed, 14 insertions(+), 22 deletions(-) diff --git a/x-pack/solutions/search/plugins/search_synonyms/server/plugin.ts b/x-pack/solutions/search/plugins/search_synonyms/server/plugin.ts index 5e07a6ae80d3d..2a9555f17c36c 100644 --- a/x-pack/solutions/search/plugins/search_synonyms/server/plugin.ts +++ b/x-pack/solutions/search/plugins/search_synonyms/server/plugin.ts @@ -49,22 +49,21 @@ export class SearchSynonymsPlugin privileges: { all: { app: ['kibana', PLUGIN_ID], - api: ['synonyms:manage', 'synonyms:read'], + api: ['manage_synonyms'], catalogue: [PLUGIN_ID], savedObject: { all: [], read: [], }, - ui: ['read', 'save'], + ui: ['manage'], }, read: { - app: ['kibana', PLUGIN_ID], - api: ['synonyms:read'], + disabled: true, savedObject: { all: [], read: [], }, - ui: ['read'], + ui: [], }, }, }); @@ -72,7 +71,7 @@ export class SearchSynonymsPlugin return {}; } - public start(core: CoreStart) { + public start(_: CoreStart) { return {}; } diff --git a/x-pack/solutions/search/plugins/search_synonyms/server/routes.ts b/x-pack/solutions/search/plugins/search_synonyms/server/routes.ts index 01e9ea7a0b0d9..f512a2ee860fd 100644 --- a/x-pack/solutions/search/plugins/search_synonyms/server/routes.ts +++ b/x-pack/solutions/search/plugins/search_synonyms/server/routes.ts @@ -26,11 +26,10 @@ export function defineRoutes({ logger, router }: { logger: Logger; router: IRout path: APIRoutes.SYNONYM_SETS, options: { access: 'internal', - tags: ['synonyms:read'], }, security: { authz: { - requiredPrivileges: ['synonyms:read'], + requiredPrivileges: ['manage_synonyms'], }, }, validate: { @@ -78,11 +77,10 @@ export function defineRoutes({ logger, router }: { logger: Logger; router: IRout path: APIRoutes.SYNONYM_SET_ID, options: { access: 'internal', - tags: ['synonyms:write', 'synonyms:read'], }, security: { authz: { - requiredPrivileges: ['synonyms:write', 'synonyms:read'], + requiredPrivileges: ['manage_synonyms'], }, }, validate: { @@ -119,11 +117,10 @@ export function defineRoutes({ logger, router }: { logger: Logger; router: IRout path: APIRoutes.SYNONYM_SET_ID, options: { access: 'internal', - tags: ['synonyms:read'], }, security: { authz: { - requiredPrivileges: ['synonyms:read'], + requiredPrivileges: ['manage_synonyms'], }, }, validate: { @@ -177,11 +174,10 @@ export function defineRoutes({ logger, router }: { logger: Logger; router: IRout path: APIRoutes.SYNONYM_SET_ID_RULE_ID, options: { access: 'internal', - tags: ['synonyms:read'], }, security: { authz: { - requiredPrivileges: ['synonyms:read'], + requiredPrivileges: ['manage_synonyms'], }, }, validate: { @@ -228,11 +224,10 @@ export function defineRoutes({ logger, router }: { logger: Logger; router: IRout path: APIRoutes.SYNONYM_SET_ID_RULE_ID, options: { access: 'internal', - tags: ['synonyms:write', 'synonyms:read'], }, security: { authz: { - requiredPrivileges: ['synonyms:write', 'synonyms:read'], + requiredPrivileges: ['manage_synonyms'], }, }, validate: { @@ -279,11 +274,10 @@ export function defineRoutes({ logger, router }: { logger: Logger; router: IRout path: APIRoutes.SYNONYM_SET_ID, options: { access: 'internal', - tags: ['synonyms:write', 'synonyms:read'], }, security: { authz: { - requiredPrivileges: ['synonyms:write', 'synonyms:read'], + requiredPrivileges: ['manage_synonyms'], }, }, validate: { @@ -328,11 +322,10 @@ export function defineRoutes({ logger, router }: { logger: Logger; router: IRout path: APIRoutes.GENERATE_SYNONYM_RULE_ID, options: { access: 'internal', - tags: ['synonyms:write', 'synonyms:read'], }, security: { authz: { - requiredPrivileges: ['synonyms:write', 'synonyms:read'], + requiredPrivileges: ['manage_synonyms'], }, }, validate: { @@ -377,11 +370,10 @@ export function defineRoutes({ logger, router }: { logger: Logger; router: IRout path: APIRoutes.SYNONYM_SET_ID_RULE_ID, options: { access: 'internal', - tags: ['synonyms:write', 'synonyms:read'], }, security: { authz: { - requiredPrivileges: ['synonyms:write', 'synonyms:read'], + requiredPrivileges: ['manage_synonyms'], }, }, validate: { diff --git a/x-pack/test/ui_capabilities/security_and_spaces/tests/nav_links.ts b/x-pack/test/ui_capabilities/security_and_spaces/tests/nav_links.ts index d96c5f3039a1a..afd8792db701b 100644 --- a/x-pack/test/ui_capabilities/security_and_spaces/tests/nav_links.ts +++ b/x-pack/test/ui_capabilities/security_and_spaces/tests/nav_links.ts @@ -62,6 +62,7 @@ export default function navLinksTests({ getService }: FtrProviderContext) { 'enterpriseSearchApplications', 'enterpriseSearchAnalytics', 'searchPlayground', + 'searchSynonyms', 'searchInferenceEndpoints', 'guidedOnboardingFeature', 'securitySolutionAssistant', From 91a19c0969bc140ad4c16e69eb23f424b0ecae4f Mon Sep 17 00:00:00 2001 From: Marta Bondyra <4283304+mbondyra@users.noreply.github.com> Date: Tue, 18 Feb 2025 13:31:09 +0100 Subject: [PATCH 58/78] [Lens] Remove scss from annotations plugin, visualization-ui-components and gauge expression (#208891) ## Summary part of https://github.com/elastic/kibana/issues/208908 Replaces scss to css-in-js. I've tested all the changes. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../annotation_editor_controls.tsx | 2 - .../annotation_editor_controls/index.scss | 15 -- .../annotation_editor_controls/index.test.tsx | 165 ++++++++---------- .../query_annotation_panel.tsx | 1 - .../range_annotation_panel.tsx | 18 +- .../tooltip_annotation_panel.tsx | 8 +- .../package.json | 4 +- .../tsconfig.json | 8 +- .../dimension_buttons/palette_indicator.tsx | 6 - .../components/dimension_editor_section.scss | 29 --- .../components/dimension_editor_section.tsx | 37 +++- .../drag_drop_bucket/new_bucket_button.tsx | 3 - .../components/field_picker/field_picker.scss | 7 - .../components/field_picker/field_picker.tsx | 21 ++- .../query_input/filter_query_input.scss | 11 -- .../query_input/filter_query_input.tsx | 18 +- .../package.json | 4 +- .../tsconfig.json | 1 + .../group_editor_controls.test.tsx | 24 ++- .../event_annotation_listing/tsconfig.json | 1 - .../public/components/gauge.scss | 12 -- .../public/components/gauge_component.tsx | 24 ++- .../public/components/index.scss | 9 - .../expression_renderers/gauge_renderer.tsx | 14 +- .../public/components/xy_chart.test.tsx | 17 +- .../annotation_library_editor_page.ts | 5 +- .../dimension_panel/dimension_panel.test.tsx | 23 ++- 27 files changed, 235 insertions(+), 252 deletions(-) delete mode 100644 src/platform/packages/shared/kbn-event-annotation-components/components/annotation_editor_controls/index.scss delete mode 100644 src/platform/packages/shared/kbn-visualization-ui-components/components/dimension_editor_section.scss delete mode 100644 src/platform/packages/shared/kbn-visualization-ui-components/components/field_picker/field_picker.scss delete mode 100644 src/platform/packages/shared/kbn-visualization-ui-components/components/query_input/filter_query_input.scss delete mode 100644 src/platform/plugins/shared/chart_expressions/expression_gauge/public/components/gauge.scss delete mode 100644 src/platform/plugins/shared/chart_expressions/expression_gauge/public/components/index.scss diff --git a/src/platform/packages/shared/kbn-event-annotation-components/components/annotation_editor_controls/annotation_editor_controls.tsx b/src/platform/packages/shared/kbn-event-annotation-components/components/annotation_editor_controls/annotation_editor_controls.tsx index 9053494071c03..7c037c653a401 100644 --- a/src/platform/packages/shared/kbn-event-annotation-components/components/annotation_editor_controls/annotation_editor_controls.tsx +++ b/src/platform/packages/shared/kbn-event-annotation-components/components/annotation_editor_controls/annotation_editor_controls.tsx @@ -7,7 +7,6 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import './index.scss'; import { isFieldLensCompatible } from '@kbn/visualization-ui-components'; import React, { useCallback, useEffect, useMemo } from 'react'; import { i18n } from '@kbn/i18n'; @@ -365,7 +364,6 @@ const AnnotationEditorControls = ({ > ({ QueryStringInput: () => { @@ -70,18 +71,27 @@ describe('AnnotationsPanel', () => { data: {}, } as QueryInputServices; - describe('Dimension Editor', () => { - test('shows correct options for line annotations', () => { - const component = mount( + const mountWithThemeProvider = ( + propsOverrides: Partial = {} + ) => { + return mount( + {}} - dataView={{} as DataView} + dataView={mockDataView} getDefaultRangeEnd={() => ''} queryInputServices={mockQueryInputServices} appName="myApp" + {...propsOverrides} /> - ); + + ); + }; + + describe('Dimension Editor', () => { + test('shows correct options for line annotations', () => { + const component = mountWithThemeProvider(); expect( component.find('EuiDatePicker[data-test-subj="lns-xyAnnotation-time"]').prop('selected') @@ -124,16 +134,7 @@ describe('AnnotationsPanel', () => { lineWidth: 3, }; - const component = mount( - {}} - dataView={{} as DataView} - getDefaultRangeEnd={() => ''} - queryInputServices={mockQueryInputServices} - appName="myApp" - /> - ); + const component = mountWithThemeProvider({ annotation: rangeAnnotation }); expect( component.find('EuiDatePicker[data-test-subj="lns-xyAnnotation-fromTime"]').prop('selected') @@ -156,21 +157,26 @@ describe('AnnotationsPanel', () => { expect(component.find('[data-test-subj="lns-xyAnnotation-fillStyle"]').exists()).toBeTruthy(); }); - test('calculates correct endTimstamp and transparent color when switching for range annotation and back', async () => { + test('calculates correct endTimestamp and transparent color when switching for range annotation and back', async () => { const onAnnotationChange = jest.fn(); const rangeEndTimestamp = new Date().toISOString(); - const component = mount( - rangeEndTimestamp} - queryInputServices={mockQueryInputServices} - appName="myApp" - /> + + const { rerender } = render( + + rangeEndTimestamp} + queryInputServices={mockQueryInputServices} + appName="myApp" + /> + ); - component.find('button[data-test-subj="lns-xyAnnotation-rangeSwitch"]').simulate('click'); + act(() => { + screen.getByTestId('lns-xyAnnotation-rangeSwitch').click(); + }); const expectedRangeAnnotation: RangeEventAnnotationConfig = { color: '#FF00001A', @@ -185,19 +191,30 @@ describe('AnnotationsPanel', () => { }, }; - expect(onAnnotationChange).toBeCalledWith(expectedRangeAnnotation); + expect(onAnnotationChange).toHaveBeenCalledWith(expectedRangeAnnotation); + + rerender( + + rangeEndTimestamp} + queryInputServices={mockQueryInputServices} + appName="myApp" + /> + + ); + + expect(screen.getByTestId('lns-xyAnnotation-rangeSwitch').getAttribute('aria-checked')).toBe( + 'true' + ); act(() => { - component.setProps({ annotation: expectedRangeAnnotation }); + screen.getByTestId('lns-xyAnnotation-rangeSwitch').click(); }); - expect( - component.find('EuiSwitch[data-test-subj="lns-xyAnnotation-rangeSwitch"]').prop('checked') - ).toEqual(true); - - component.find('button[data-test-subj="lns-xyAnnotation-rangeSwitch"]').simulate('click'); - - expect(onAnnotationChange).toBeCalledWith({ + expect(onAnnotationChange).toHaveBeenCalledWith({ color: '#FF0000', id: 'ann1', isHidden: undefined, @@ -227,16 +244,7 @@ describe('AnnotationsPanel', () => { filter: { type: 'kibana_query', query: '', language: 'kuery' }, }; - const component = mount( - {}} - dataView={mockDataView} - getDefaultRangeEnd={() => ''} - queryInputServices={mockQueryInputServices} - appName="myApp" - /> - ); + const component = mountWithThemeProvider({ annotation }); expect( component.find('[data-test-subj="lnsXY-annotation-query-based-field-picker"]').exists() @@ -264,16 +272,10 @@ describe('AnnotationsPanel', () => { test('should prefill timeField with the default time field when switching to query based annotations', () => { const onAnnotationChange = jest.fn(); - const component = mount( - ''} - queryInputServices={mockQueryInputServices} - appName="myApp" - /> - ); + const component = mountWithThemeProvider({ + annotation: customLineStaticAnnotation, + onAnnotationChange, + }); act(() => { component @@ -291,16 +293,10 @@ describe('AnnotationsPanel', () => { test('should avoid to retain specific manual configurations when switching to query based annotations', () => { const onAnnotationChange = jest.fn(); - const component = mount( - ''} - queryInputServices={mockQueryInputServices} - appName="myApp" - /> - ); + const component = mountWithThemeProvider({ + annotation: customLineStaticAnnotation, + onAnnotationChange, + }); act(() => { component @@ -336,16 +332,7 @@ describe('AnnotationsPanel', () => { const onAnnotationChange = jest.fn(); - const component = mount( - ''} - queryInputServices={mockQueryInputServices} - appName="myApp" - /> - ); + const component = mountWithThemeProvider({ annotation, onAnnotationChange }); act(() => { component @@ -379,16 +366,7 @@ describe('AnnotationsPanel', () => { const onAnnotationChange = jest.fn(); - const component = mount( - ''} - queryInputServices={mockQueryInputServices} - appName="myApp" - /> - ); + const component = mountWithThemeProvider({ annotation, onAnnotationChange }); act(() => { component @@ -412,16 +390,11 @@ describe('AnnotationsPanel', () => { test('should fallback to the first date field available in the dataView if not time-based', () => { const onAnnotationChange = jest.fn(); - const component = mount( - ''} - queryInputServices={mockQueryInputServices} - appName="myApp" - /> - ); + const component = mountWithThemeProvider({ + annotation: customLineStaticAnnotation, + onAnnotationChange, + dataView: { ...mockDataView, timeFieldName: '' } as DataView, + }); act(() => { component diff --git a/src/platform/packages/shared/kbn-event-annotation-components/components/annotation_editor_controls/query_annotation_panel.tsx b/src/platform/packages/shared/kbn-event-annotation-components/components/annotation_editor_controls/query_annotation_panel.tsx index dee84a0a3716c..1c0b8df3d4367 100644 --- a/src/platform/packages/shared/kbn-event-annotation-components/components/annotation_editor_controls/query_annotation_panel.tsx +++ b/src/platform/packages/shared/kbn-event-annotation-components/components/annotation_editor_controls/query_annotation_panel.tsx @@ -70,7 +70,6 @@ export const ConfigPanelQueryAnnotation = ({ { const isRange = isRangeAnnotationConfig(annotation); return ( - + ` + & + .lnsRowCompressedMargin { + margin-top: ${euiTheme.size.s}; + } + .euiFormControlLayout__prepend { + min-width: 50px; // makes both labels ("from" and "to") the same width + } +`; + export const ConfigPanelRangeDatePicker = ({ value, label, @@ -102,9 +111,10 @@ export const ConfigPanelRangeDatePicker = ({ return ( ` + margin-top: ${euiTheme.size.xs}; +`; + interface LocalFieldEntry { name: string; id: string; @@ -78,7 +82,7 @@ export function TooltipSection({ currentConfig, setConfig, dataView }: FieldInpu const addFieldButton = ( { setFields([...currentFields, { name: '', id: generateId() }]); diff --git a/src/platform/packages/shared/kbn-event-annotation-components/package.json b/src/platform/packages/shared/kbn-event-annotation-components/package.json index a50f23ce64044..902406e3378f8 100644 --- a/src/platform/packages/shared/kbn-event-annotation-components/package.json +++ b/src/platform/packages/shared/kbn-event-annotation-components/package.json @@ -3,7 +3,5 @@ "private": true, "version": "1.0.0", "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0", - "sideEffects": [ - "*.scss" - ] + "sideEffects": false } diff --git a/src/platform/packages/shared/kbn-event-annotation-components/tsconfig.json b/src/platform/packages/shared/kbn-event-annotation-components/tsconfig.json index 037ef70bfaf82..bb6799d573f02 100644 --- a/src/platform/packages/shared/kbn-event-annotation-components/tsconfig.json +++ b/src/platform/packages/shared/kbn-event-annotation-components/tsconfig.json @@ -1,15 +1,11 @@ { "extends": "../../../../../tsconfig.base.json", "compilerOptions": { - "outDir": "target/types", - "types": [ - "jest", - "node", - "@emotion/react/types/css-prop", - ] + "outDir": "target/types" }, "include": [ "**/*", + "../../../../../typings/**/*", ], "exclude": [ "target/**/*" diff --git a/src/platform/packages/shared/kbn-visualization-ui-components/components/dimension_buttons/palette_indicator.tsx b/src/platform/packages/shared/kbn-visualization-ui-components/components/dimension_buttons/palette_indicator.tsx index 94c11efd7577f..526399e5b3509 100644 --- a/src/platform/packages/shared/kbn-visualization-ui-components/components/dimension_buttons/palette_indicator.tsx +++ b/src/platform/packages/shared/kbn-visualization-ui-components/components/dimension_buttons/palette_indicator.tsx @@ -10,7 +10,6 @@ import React from 'react'; import { EuiColorPaletteDisplay } from '@elastic/eui'; import { css } from '@emotion/react'; -import { euiThemeVars } from '@kbn/ui-theme'; import type { AccessorConfig } from './types'; export function PaletteIndicator({ accessorConfig }: { accessorConfig: AccessorConfig }) { @@ -25,12 +24,7 @@ export function PaletteIndicator({ accessorConfig }: { accessorConfig: AccessorC `} > { return ( -
-
+
+
{title && ( - +

{title}

)} @@ -30,3 +33,27 @@ export const DimensionEditorSection = ({
); }; + +const DimensionEditorSectionStyles = { + self: ({ euiTheme }: UseEuiTheme) => ` + padding-bottom: ${euiTheme.size.base}; + padding-top: ${euiTheme.size.base}; + &:first-child { + padding-top: 0; + } + `, + divider: ({ euiTheme }: UseEuiTheme) => ` + position: relative; + &:before { + content: ''; + position: absolute; + top: -${euiTheme.size.base}; + right: -${euiTheme.size.base}; + left: -${euiTheme.size.base}; + border-top: 1px solid ${euiTheme.colors.lightShade}; + } + `, + heading: ({ euiTheme }: UseEuiTheme) => ` + padding-bottom: ${euiTheme.size.base}; + `, +}; diff --git a/src/platform/packages/shared/kbn-visualization-ui-components/components/drag_drop_bucket/new_bucket_button.tsx b/src/platform/packages/shared/kbn-visualization-ui-components/components/drag_drop_bucket/new_bucket_button.tsx index a4cacca0ade1c..90b749aa36be7 100644 --- a/src/platform/packages/shared/kbn-visualization-ui-components/components/drag_drop_bucket/new_bucket_button.tsx +++ b/src/platform/packages/shared/kbn-visualization-ui-components/components/drag_drop_bucket/new_bucket_button.tsx @@ -14,7 +14,6 @@ interface NewBucketButtonProps { label: string; onClick: () => void; isDisabled?: boolean; - className?: string; 'data-test-subj'?: string; } @@ -22,7 +21,6 @@ export const NewBucketButton = ({ label, onClick, isDisabled, - className, 'data-test-subj': dataTestSubj = 'lns-newBucket-add', }: NewBucketButtonProps) => ( {label} diff --git a/src/platform/packages/shared/kbn-visualization-ui-components/components/field_picker/field_picker.scss b/src/platform/packages/shared/kbn-visualization-ui-components/components/field_picker/field_picker.scss deleted file mode 100644 index d8e4e9b8f7207..0000000000000 --- a/src/platform/packages/shared/kbn-visualization-ui-components/components/field_picker/field_picker.scss +++ /dev/null @@ -1,7 +0,0 @@ -.lnFieldPicker__option--incompatible { - color: $euiColorLightShade; -} - -.lnFieldPicker__option--nonExistant { - background-color: $euiColorLightestShade; -} \ No newline at end of file diff --git a/src/platform/packages/shared/kbn-visualization-ui-components/components/field_picker/field_picker.tsx b/src/platform/packages/shared/kbn-visualization-ui-components/components/field_picker/field_picker.tsx index 8dcb97c161813..cc1f1d2a9e931 100644 --- a/src/platform/packages/shared/kbn-visualization-ui-components/components/field_picker/field_picker.tsx +++ b/src/platform/packages/shared/kbn-visualization-ui-components/components/field_picker/field_picker.tsx @@ -7,12 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import './field_picker.scss'; import React from 'react'; import { i18n } from '@kbn/i18n'; -import classNames from 'classnames'; import { comboBoxFieldOptionMatcher } from '@kbn/field-utils'; -import { EuiComboBox, EuiComboBoxOptionOption, EuiComboBoxProps } from '@elastic/eui'; +import { EuiComboBox, EuiComboBoxOptionOption, EuiComboBoxProps, useEuiTheme } from '@elastic/eui'; import { FieldIcon } from '@kbn/field-utils/src/components/field_icon'; import { calculateWidthFromCharCount } from '@kbn/calculate-width-from-char-count'; import type { FieldOptionValue, FieldOption } from './types'; @@ -43,6 +41,7 @@ export function FieldPicker( ...rest } = props; + const { euiTheme } = useEuiTheme(); const [selectedOption, setSelectedOption] = React.useState(activeField); let maxLabelLength = 0; @@ -63,10 +62,10 @@ export function FieldPicker( className="eui-alignMiddle" /> ) : null, - className: classNames({ - 'lnFieldPicker__option--incompatible': !fieldOption.compatible, - 'lnFieldPicker__option--nonExistant': !fieldOptionExists, - }), + css: { + color: !fieldOption.compatible ? euiTheme.colors.lightShade : undefined, + backgroundColor: !fieldOptionExists ? euiTheme.colors.lightestShade : undefined, + }, }; }), }; @@ -77,10 +76,10 @@ export function FieldPicker( prepend: otherAttr.value.dataType ? ( ) : null, - className: classNames({ - 'lnFieldPicker__option--incompatible': !compatible, - 'lnFieldPicker__option--nonExistant': !exists, - }), + css: { + color: !compatible ? euiTheme.colors.lightShade : undefined, + backgroundColor: !exists ? euiTheme.colors.lightestShade : undefined, + }, }; }); diff --git a/src/platform/packages/shared/kbn-visualization-ui-components/components/query_input/filter_query_input.scss b/src/platform/packages/shared/kbn-visualization-ui-components/components/query_input/filter_query_input.scss deleted file mode 100644 index b971b65e897ce..0000000000000 --- a/src/platform/packages/shared/kbn-visualization-ui-components/components/query_input/filter_query_input.scss +++ /dev/null @@ -1,11 +0,0 @@ -// TODO - use emotion instead -.filterQueryInput__popoverButton { - @include euiTextBreakWord; - @include euiFontSizeS; - min-height: $euiSizeXL; - width: 100%; -} - -.filterQueryInput__popover { - width: $euiSize * 60; -} \ No newline at end of file diff --git a/src/platform/packages/shared/kbn-visualization-ui-components/components/query_input/filter_query_input.tsx b/src/platform/packages/shared/kbn-visualization-ui-components/components/query_input/filter_query_input.tsx index 997016ef0b833..6171ede72d050 100644 --- a/src/platform/packages/shared/kbn-visualization-ui-components/components/query_input/filter_query_input.tsx +++ b/src/platform/packages/shared/kbn-visualization-ui-components/components/query_input/filter_query_input.tsx @@ -18,11 +18,14 @@ import { EuiFlexGroup, EuiIconTip, EuiPopoverProps, + euiTextBreakWord, + useEuiFontSize, + UseEuiTheme, } from '@elastic/eui'; import type { DataViewBase, Query } from '@kbn/es-query'; +import { css } from '@emotion/react'; import { QueryInput, validateQuery } from '.'; import type { QueryInputServices } from '.'; -import './filter_query_input.scss'; const filterByLabel = i18n.translate('visualizationUiComponents.filterQueryInput.label', { defaultMessage: 'Filter by', @@ -46,6 +49,13 @@ export interface FilterQueryInputProps { appName: string; } +const LinkStyles = ({ euiTheme }: UseEuiTheme) => ` + ${euiTextBreakWord()}; + ${useEuiFontSize('s')}; + min-height: ${euiTheme.size.xl}; + width: 100%; +`; + export function FilterQueryInput({ inputFilter, onChange, @@ -100,6 +110,11 @@ export function FilterQueryInput({ isOpen={filterPopoverOpen} closePopover={onClosePopup} display="block" + panelProps={{ + css: css` + width: 960px; + `, + }} panelClassName="filterQueryInput__popover" initialFocus={dataTestSubj ? `textarea[data-test-subj='${dataTestSubj}']` : undefined} button={ @@ -113,6 +128,7 @@ export function FilterQueryInput({ onClick={() => { setFilterPopoverOpen(!filterPopoverOpen); }} + css={LinkStyles} color={isInputFilterValid ? 'text' : 'danger'} title={i18n.translate( 'visualizationUiComponents.filterQueryInput.clickToEdit', diff --git a/src/platform/packages/shared/kbn-visualization-ui-components/package.json b/src/platform/packages/shared/kbn-visualization-ui-components/package.json index 0fe637f3c69ad..aea09d5c502f5 100644 --- a/src/platform/packages/shared/kbn-visualization-ui-components/package.json +++ b/src/platform/packages/shared/kbn-visualization-ui-components/package.json @@ -3,7 +3,5 @@ "private": true, "version": "1.0.0", "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0", - "sideEffects": [ - "*.scss" - ] + "sideEffects": false } diff --git a/src/platform/packages/shared/kbn-visualization-ui-components/tsconfig.json b/src/platform/packages/shared/kbn-visualization-ui-components/tsconfig.json index f65b144e8b86d..c6e6dc0518e24 100644 --- a/src/platform/packages/shared/kbn-visualization-ui-components/tsconfig.json +++ b/src/platform/packages/shared/kbn-visualization-ui-components/tsconfig.json @@ -11,6 +11,7 @@ }, "include": [ "**/*", + "../../../../../typings/**/*" ], "exclude": [ "target/**/*" diff --git a/src/platform/plugins/private/event_annotation_listing/public/components/group_editor_flyout/group_editor_controls/group_editor_controls.test.tsx b/src/platform/plugins/private/event_annotation_listing/public/components/group_editor_flyout/group_editor_controls/group_editor_controls.test.tsx index d79fe5d913343..8e3f9b5bab667 100644 --- a/src/platform/plugins/private/event_annotation_listing/public/components/group_editor_flyout/group_editor_controls/group_editor_controls.test.tsx +++ b/src/platform/plugins/private/event_annotation_listing/public/components/group_editor_flyout/group_editor_controls/group_editor_controls.test.tsx @@ -10,14 +10,14 @@ import React, { ChangeEvent, FormEvent } from 'react'; import type { EventAnnotationGroupConfig } from '@kbn/event-annotation-common'; import { getDefaultManualAnnotation } from '@kbn/event-annotation-common'; -import { ReactWrapper } from 'enzyme'; -import { mountWithIntl } from '@kbn/test-jest-helpers'; +import { ComponentType, ReactWrapper, mount } from 'enzyme'; import { GroupEditorControls } from './group_editor_controls'; -import { EuiTextAreaProps, EuiTextProps } from '@elastic/eui'; +import { EuiTextAreaProps, EuiTextProps, EuiThemeProvider } from '@elastic/eui'; import type { DataView } from '@kbn/data-views-plugin/common'; import { act } from 'react-dom/test-utils'; import type { QueryInputServices } from '@kbn/visualization-ui-components'; import { AnnotationEditorControls } from '@kbn/event-annotation-components'; +import { I18nProvider } from '@kbn/i18n-react'; jest.mock('@elastic/eui', () => { return { @@ -53,8 +53,17 @@ describe('event annotation group editor', () => { beforeEach(async () => { updateMock = jest.fn(); setSelectedAnnotationMock = jest.fn(); - - wrapper = mountWithIntl( + const wrappingComponent: React.FC<{ + children: React.ReactNode; + }> = ({ children }) => { + return ( + + {children} + + ); + }; + + wrapper = mount( { queryInputServices={{} as QueryInputServices} showValidation={false} isAdHocDataView={() => false} - /> + />, + { + wrappingComponent: wrappingComponent as ComponentType<{}>, + } ); await act(async () => { diff --git a/src/platform/plugins/private/event_annotation_listing/tsconfig.json b/src/platform/plugins/private/event_annotation_listing/tsconfig.json index 5cd9cf340bf1d..a92f36d0032ac 100644 --- a/src/platform/plugins/private/event_annotation_listing/tsconfig.json +++ b/src/platform/plugins/private/event_annotation_listing/tsconfig.json @@ -33,7 +33,6 @@ "@kbn/event-annotation-common", "@kbn/lens-plugin", "@kbn/ui-theme", - "@kbn/test-jest-helpers", "@kbn/expressions-plugin", "@kbn/es-query", "@kbn/core-ui-settings-browser", diff --git a/src/platform/plugins/shared/chart_expressions/expression_gauge/public/components/gauge.scss b/src/platform/plugins/shared/chart_expressions/expression_gauge/public/components/gauge.scss deleted file mode 100644 index cb7d6718d4dcd..0000000000000 --- a/src/platform/plugins/shared/chart_expressions/expression_gauge/public/components/gauge.scss +++ /dev/null @@ -1,12 +0,0 @@ -.gauge__wrapper { - flex: 1 1 0; - display: flex; - flex-direction: column; - // it is used for rendering at `Canvas`. - height: 100%; -} - -.gauge__label { - width: 100%; - text-align: center; -} diff --git a/src/platform/plugins/shared/chart_expressions/expression_gauge/public/components/gauge_component.tsx b/src/platform/plugins/shared/chart_expressions/expression_gauge/public/components/gauge_component.tsx index dfb408e3a3c70..e080a8a9e09b2 100644 --- a/src/platform/plugins/shared/chart_expressions/expression_gauge/public/components/gauge_component.tsx +++ b/src/platform/plugins/shared/chart_expressions/expression_gauge/public/components/gauge_component.tsx @@ -8,6 +8,7 @@ */ import React, { FC, useCallback } from 'react'; +import { css } from '@emotion/react'; import { Chart, Bullet, BulletProps, Settings } from '@elastic/charts'; import { useEuiTheme } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -38,10 +39,7 @@ import { computeMinMax, } from './utils'; import { getGaugeIconByType } from './utils/icons'; -import './index.scss'; import { GaugeCentralMajorMode, GaugeTicksPosition } from '../../common/types'; - -import './gauge.scss'; import { useGaugeSizeByType } from './utils/use_gauge_size_by_type'; declare global { @@ -366,7 +364,14 @@ export const GaugeComponent: FC = ({ }; return ( -
+
} @@ -413,7 +418,16 @@ export const GaugeComponent: FC = ({ ]} /> - {commonLabel &&
{commonLabel}
} + {commonLabel && ( +
+ {commonLabel} +
+ )}
); }; diff --git a/src/platform/plugins/shared/chart_expressions/expression_gauge/public/components/index.scss b/src/platform/plugins/shared/chart_expressions/expression_gauge/public/components/index.scss deleted file mode 100644 index ea2b35fba9718..0000000000000 --- a/src/platform/plugins/shared/chart_expressions/expression_gauge/public/components/index.scss +++ /dev/null @@ -1,9 +0,0 @@ -.gauge-container { - height: 100%; - width: 100%; - // the FocusTrap is adding extra divs which are making the visualization redraw twice - // with a visible glitch. This make the chart library resilient to this extra reflow - overflow: hidden; - user-select: text; - @include euiScrollBar; -} diff --git a/src/platform/plugins/shared/chart_expressions/expression_gauge/public/expression_renderers/gauge_renderer.tsx b/src/platform/plugins/shared/chart_expressions/expression_gauge/public/expression_renderers/gauge_renderer.tsx index bf2c9130f45a6..0b9881587d2be 100644 --- a/src/platform/plugins/shared/chart_expressions/expression_gauge/public/expression_renderers/gauge_renderer.tsx +++ b/src/platform/plugins/shared/chart_expressions/expression_gauge/public/expression_renderers/gauge_renderer.tsx @@ -9,6 +9,7 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; +import { css } from '@emotion/react'; import { render, unmountComponentAtNode } from 'react-dom'; import { PersistedState } from '@kbn/visualizations-plugin/public'; import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; @@ -93,7 +94,18 @@ export const gaugeRenderer: ( const { GaugeComponent } = await import('../components/gauge_component'); render( -
+
{ }, ]), ]); - const component = mount(); + const component = mount( + + + + ); const groupedAnnotation = component.find(LineAnnotation); expect(groupedAnnotation.length).toEqual(1); // styles are passed because they are shared, dataValues is rounded to the interval expect(groupedAnnotation).toMatchSnapshot(); // renders numeric icon for grouped annotations - const marker = mount(
{groupedAnnotation.prop('marker') as React.ReactNode}
); + const marker = mount( + +
{groupedAnnotation.prop('marker') as React.ReactNode}
+
+ ); const numberIcon = marker.find('NumberIcon'); expect(numberIcon.length).toEqual(1); expect(numberIcon.text()).toEqual('3'); // checking tooltip const renderLinks = mount( -
{(groupedAnnotation.prop('customTooltip') as Function)!()}
+ +
{(groupedAnnotation.prop('customTooltip') as Function)!()}
+
); expect(renderLinks.text()).toEqual( 'Event 1Mar 18, 2022 @ 04:25:00.000Event 2Mar 18, 2022 @ 04:25:00.020Event 3Mar 18, 2022 @ 04:25:00.001' diff --git a/test/functional/page_objects/annotation_library_editor_page.ts b/test/functional/page_objects/annotation_library_editor_page.ts index e339aeb33f2be..4d67150374b5d 100644 --- a/test/functional/page_objects/annotation_library_editor_page.ts +++ b/test/functional/page_objects/annotation_library_editor_page.ts @@ -11,7 +11,6 @@ import { FtrService } from '../ftr_provider_context'; export class AnnotationEditorPageObject extends FtrService { private readonly testSubjects = this.ctx.getService('testSubjects'); - private readonly find = this.ctx.getService('find'); private readonly retry = this.ctx.getService('retry'); /** @@ -58,9 +57,7 @@ export class AnnotationEditorPageObject extends FtrService { const queryInput = await this.testSubjects.find('annotation-query-based-query-input'); await queryInput.type(config.query); - const titles = await this.find.allByCssSelector( - '.euiFlyout h3.lnsDimensionEditorSection__heading' - ); + const titles = await this.testSubjects.findAll(`lnsDimensionEditorSectionHeading`); const lastTitle = titles[titles.length - 1]; await lastTitle.click(); // close query input pop-up await lastTitle.focus(); // scroll down to the bottom of the section diff --git a/x-pack/platform/plugins/shared/lens/public/datasources/form_based/dimension_panel/dimension_panel.test.tsx b/x-pack/platform/plugins/shared/lens/public/datasources/form_based/dimension_panel/dimension_panel.test.tsx index ff08447f2a247..3df7248ae3f3d 100644 --- a/x-pack/platform/plugins/shared/lens/public/datasources/form_based/dimension_panel/dimension_panel.test.tsx +++ b/x-pack/platform/plugins/shared/lens/public/datasources/form_based/dimension_panel/dimension_panel.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { ReactWrapper, ShallowWrapper, ComponentType } from 'enzyme'; +import { ReactWrapper, ShallowWrapper, ComponentType, mount } from 'enzyme'; import React, { ChangeEvent } from 'react'; import { screen, act, render, within } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; @@ -17,6 +17,7 @@ import { EuiRange, EuiSelect, EuiComboBoxProps, + EuiThemeProvider, } from '@elastic/eui'; import { unifiedSearchPluginMock } from '@kbn/unified-search-plugin/public/mocks'; import { dataViewPluginMocks } from '@kbn/data-views-plugin/public/mocks'; @@ -26,7 +27,6 @@ import { FormBasedDimensionEditorComponent, FormBasedDimensionEditorProps, } from './dimension_panel'; -import { mount } from 'enzyme'; import { IUiSettingsClient, HttpSetup, CoreStart, NotificationsStart } from '@kbn/core/public'; import { IStorageWrapper } from '@kbn/kibana-utils-plugin/public'; import { useExistingFieldsReader } from '@kbn/unified-field-list/src/hooks/use_existing_fields'; @@ -167,15 +167,22 @@ const bytesColumn: GenericIndexPatternColumn = { params: { format: { id: 'bytes' } }, }; -const services = coreMock.createStart() as unknown as LensAppServices; +const wrappingComponent: React.FC<{ + children: React.ReactNode; +}> = ({ children }) => { + return ( + + {children} + + ); +}; function mountWithServices(component: React.ReactElement): ReactWrapper { return mount(component, { // This is an elegant way to wrap a component in Enzyme // preserving the root at the component level rather than // at the wrapper one - wrappingComponent: KibanaContextProvider as ComponentType<{}>, - wrappingComponentProps: { services }, + wrappingComponent: wrappingComponent as ComponentType<{}>, }); } @@ -288,7 +295,11 @@ describe('FormBasedDimensionEditor', () => { const Wrapper: React.FC<{ children: React.ReactNode; }> = ({ children }) => { - return {children}; + return ( + + {children} + + ); }; const rtlRender = render( From 2673b9b93be5be8bf86d7f651ce864fa5f5fd39f Mon Sep 17 00:00:00 2001 From: Joe Reuter Date: Tue, 18 Feb 2025 14:12:36 +0100 Subject: [PATCH 59/78] =?UTF-8?q?=F0=9F=8C=8A=20Move=20kbn-streams-schema?= =?UTF-8?q?=20to=20platform=20(#211230)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit First part of moving streams into the platform. This PR moves the package only, will stack PRs on top of this. --- .github/CODEOWNERS | 2 +- package.json | 2 +- tsconfig.base.json | 4 ++-- .../packages/shared}/kbn-streams-schema/README.md | 0 .../packages/shared}/kbn-streams-schema/index.ts | 0 .../packages/shared}/kbn-streams-schema/jest.config.js | 2 +- .../packages/shared}/kbn-streams-schema/kibana.jsonc | 2 +- .../packages/shared}/kbn-streams-schema/package.json | 0 .../kbn-streams-schema/src/fixtures/ingest_read_stream.ts | 0 .../shared}/kbn-streams-schema/src/fixtures/ingest_stream.ts | 0 .../kbn-streams-schema/src/fixtures/ingest_stream_config.ts | 0 .../kbn-streams-schema/src/fixtures/read_streams_response.ts | 0 .../kbn-streams-schema/src/fixtures/wired_read_stream.ts | 0 .../shared}/kbn-streams-schema/src/fixtures/wired_stream.ts | 0 .../kbn-streams-schema/src/fixtures/wired_stream_config.ts | 0 .../kbn-streams-schema/src/helpers/condition_fields.ts | 0 .../kbn-streams-schema/src/helpers/condition_to_query_dsl.ts | 0 .../kbn-streams-schema/src/helpers/field_definition.ts | 0 .../shared}/kbn-streams-schema/src/helpers/hierarchy.ts | 0 .../packages/shared}/kbn-streams-schema/src/helpers/index.ts | 0 .../shared}/kbn-streams-schema/src/helpers/lifecycle.test.ts | 0 .../shared}/kbn-streams-schema/src/helpers/lifecycle.ts | 0 .../shared}/kbn-streams-schema/src/helpers/type_guards.ts | 0 .../packages/shared}/kbn-streams-schema/src/models/api.ts | 0 .../shared}/kbn-streams-schema/src/models/base/api.ts | 0 .../shared}/kbn-streams-schema/src/models/base/index.ts | 0 .../packages/shared}/kbn-streams-schema/src/models/core.ts | 0 .../shared}/kbn-streams-schema/src/models/group/api.ts | 0 .../shared}/kbn-streams-schema/src/models/group/base.ts | 0 .../shared}/kbn-streams-schema/src/models/group/index.ts | 0 .../packages/shared}/kbn-streams-schema/src/models/helpers.ts | 0 .../packages/shared}/kbn-streams-schema/src/models/index.ts | 0 .../shared}/kbn-streams-schema/src/models/ingest/api.ts | 0 .../shared}/kbn-streams-schema/src/models/ingest/base.ts | 0 .../shared}/kbn-streams-schema/src/models/ingest/common.ts | 0 .../kbn-streams-schema/src/models/ingest/conditions/index.ts | 0 .../kbn-streams-schema/src/models/ingest/fields/index.ts | 0 .../shared}/kbn-streams-schema/src/models/ingest/index.ts | 0 .../kbn-streams-schema/src/models/ingest/lifecycle/index.ts | 0 .../kbn-streams-schema/src/models/ingest/processors/index.ts | 0 .../kbn-streams-schema/src/models/ingest/routing/index.ts | 0 .../packages/shared}/kbn-streams-schema/tsconfig.json | 0 yarn.lock | 2 +- 43 files changed, 7 insertions(+), 7 deletions(-) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/README.md (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/index.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/jest.config.js (79%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/kibana.jsonc (82%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/package.json (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/fixtures/ingest_read_stream.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/fixtures/ingest_stream.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/fixtures/ingest_stream_config.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/fixtures/read_streams_response.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/fixtures/wired_read_stream.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/fixtures/wired_stream.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/fixtures/wired_stream_config.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/helpers/condition_fields.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/helpers/condition_to_query_dsl.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/helpers/field_definition.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/helpers/hierarchy.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/helpers/index.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/helpers/lifecycle.test.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/helpers/lifecycle.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/helpers/type_guards.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/api.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/base/api.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/base/index.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/core.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/group/api.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/group/base.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/group/index.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/helpers.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/index.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/ingest/api.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/ingest/base.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/ingest/common.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/ingest/conditions/index.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/ingest/fields/index.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/ingest/index.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/ingest/lifecycle/index.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/ingest/processors/index.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/src/models/ingest/routing/index.ts (100%) rename x-pack/{solutions/observability/packages => platform/packages/shared}/kbn-streams-schema/tsconfig.json (100%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 3b0c9db5810fd..eb31f59db49cd 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -822,6 +822,7 @@ x-pack/platform/packages/shared/kbn-inference-endpoint-ui-common @elastic/respon x-pack/platform/packages/shared/kbn-key-value-metadata-table @elastic/obs-ux-infra_services-team @elastic/obs-ux-logs-team x-pack/platform/packages/shared/kbn-langchain @elastic/security-generative-ai x-pack/platform/packages/shared/kbn-slo-schema @elastic/obs-ux-management-team +x-pack/platform/packages/shared/kbn-streams-schema @elastic/streams-program-team x-pack/platform/packages/shared/logs-overview @elastic/obs-ux-logs-team x-pack/platform/packages/shared/ml/aiops_common @elastic/ml-ui x-pack/platform/packages/shared/ml/aiops_log_pattern_analysis @elastic/ml-ui @@ -924,7 +925,6 @@ x-pack/solutions/observability/packages/kbn-alerts-grouping @elastic/response-op x-pack/solutions/observability/packages/kbn-custom-integrations @elastic/obs-ux-logs-team x-pack/solutions/observability/packages/kbn-investigation-shared @elastic/obs-ux-management-team x-pack/solutions/observability/packages/kbn-scout-oblt @elastic/appex-qa -x-pack/solutions/observability/packages/kbn-streams-schema @elastic/streams-program-team x-pack/solutions/observability/packages/observability-ai/observability-ai-common @elastic/obs-ai-assistant x-pack/solutions/observability/packages/observability-ai/observability-ai-server @elastic/obs-ai-assistant x-pack/solutions/observability/packages/synthetics_test_data @elastic/obs-ux-management-team diff --git a/package.json b/package.json index b81f08a5b8faf..f49a796762aa6 100644 --- a/package.json +++ b/package.json @@ -934,7 +934,7 @@ "@kbn/std": "link:src/platform/packages/shared/kbn-std", "@kbn/streams-app-plugin": "link:x-pack/solutions/observability/plugins/streams_app", "@kbn/streams-plugin": "link:x-pack/solutions/observability/plugins/streams", - "@kbn/streams-schema": "link:x-pack/solutions/observability/packages/kbn-streams-schema", + "@kbn/streams-schema": "link:x-pack/platform/packages/shared/kbn-streams-schema", "@kbn/synthetics-plugin": "link:x-pack/solutions/observability/plugins/synthetics", "@kbn/task-manager-fixture-plugin": "link:x-pack/test/alerting_api_integration/common/plugins/task_manager_fixture", "@kbn/task-manager-performance-plugin": "link:x-pack/test/plugin_api_perf/plugins/task_manager_performance", diff --git a/tsconfig.base.json b/tsconfig.base.json index 2515856bd6ca8..472dcfd87f567 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1900,8 +1900,8 @@ "@kbn/streams-app-plugin/*": ["x-pack/solutions/observability/plugins/streams_app/*"], "@kbn/streams-plugin": ["x-pack/solutions/observability/plugins/streams"], "@kbn/streams-plugin/*": ["x-pack/solutions/observability/plugins/streams/*"], - "@kbn/streams-schema": ["x-pack/solutions/observability/packages/kbn-streams-schema"], - "@kbn/streams-schema/*": ["x-pack/solutions/observability/packages/kbn-streams-schema/*"], + "@kbn/streams-schema": ["x-pack/platform/packages/shared/kbn-streams-schema"], + "@kbn/streams-schema/*": ["x-pack/platform/packages/shared/kbn-streams-schema/*"], "@kbn/styled-components-mapping-cli": ["packages/kbn-styled-components-mapping-cli"], "@kbn/styled-components-mapping-cli/*": ["packages/kbn-styled-components-mapping-cli/*"], "@kbn/synthetics-e2e": ["x-pack/solutions/observability/plugins/synthetics/e2e"], diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/README.md b/x-pack/platform/packages/shared/kbn-streams-schema/README.md similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/README.md rename to x-pack/platform/packages/shared/kbn-streams-schema/README.md diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/index.ts b/x-pack/platform/packages/shared/kbn-streams-schema/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/index.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/index.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/jest.config.js b/x-pack/platform/packages/shared/kbn-streams-schema/jest.config.js similarity index 79% rename from x-pack/solutions/observability/packages/kbn-streams-schema/jest.config.js rename to x-pack/platform/packages/shared/kbn-streams-schema/jest.config.js index 080d412a983d1..1cc983046084f 100644 --- a/x-pack/solutions/observability/packages/kbn-streams-schema/jest.config.js +++ b/x-pack/platform/packages/shared/kbn-streams-schema/jest.config.js @@ -8,5 +8,5 @@ module.exports = { preset: '@kbn/test', rootDir: '../../../../..', - roots: ['/x-pack/solutions/observability/packages/kbn-streams-schema'], + roots: ['/x-pack/platform/packages/shared/kbn-streams-schema'], }; diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/kibana.jsonc b/x-pack/platform/packages/shared/kbn-streams-schema/kibana.jsonc similarity index 82% rename from x-pack/solutions/observability/packages/kbn-streams-schema/kibana.jsonc rename to x-pack/platform/packages/shared/kbn-streams-schema/kibana.jsonc index 61129483995e9..1d5a603dffb83 100644 --- a/x-pack/solutions/observability/packages/kbn-streams-schema/kibana.jsonc +++ b/x-pack/platform/packages/shared/kbn-streams-schema/kibana.jsonc @@ -2,7 +2,7 @@ "type": "shared-common", "id": "@kbn/streams-schema", "owner": "@elastic/streams-program-team", - "group": "observability", + "group": "platform", "visibility": "shared" } diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/package.json b/x-pack/platform/packages/shared/kbn-streams-schema/package.json similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/package.json rename to x-pack/platform/packages/shared/kbn-streams-schema/package.json diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/fixtures/ingest_read_stream.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/fixtures/ingest_read_stream.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/fixtures/ingest_read_stream.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/fixtures/ingest_read_stream.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/fixtures/ingest_stream.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/fixtures/ingest_stream.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/fixtures/ingest_stream.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/fixtures/ingest_stream.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/fixtures/ingest_stream_config.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/fixtures/ingest_stream_config.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/fixtures/ingest_stream_config.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/fixtures/ingest_stream_config.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/fixtures/read_streams_response.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/fixtures/read_streams_response.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/fixtures/read_streams_response.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/fixtures/read_streams_response.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/fixtures/wired_read_stream.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/fixtures/wired_read_stream.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/fixtures/wired_read_stream.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/fixtures/wired_read_stream.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/fixtures/wired_stream.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/fixtures/wired_stream.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/fixtures/wired_stream.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/fixtures/wired_stream.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/fixtures/wired_stream_config.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/fixtures/wired_stream_config.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/fixtures/wired_stream_config.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/fixtures/wired_stream_config.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/condition_fields.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/helpers/condition_fields.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/condition_fields.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/helpers/condition_fields.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/condition_to_query_dsl.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/helpers/condition_to_query_dsl.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/condition_to_query_dsl.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/helpers/condition_to_query_dsl.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/field_definition.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/helpers/field_definition.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/field_definition.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/helpers/field_definition.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/hierarchy.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/helpers/hierarchy.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/hierarchy.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/helpers/hierarchy.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/index.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/helpers/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/index.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/helpers/index.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/lifecycle.test.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/helpers/lifecycle.test.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/lifecycle.test.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/helpers/lifecycle.test.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/lifecycle.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/helpers/lifecycle.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/lifecycle.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/helpers/lifecycle.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/type_guards.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/helpers/type_guards.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/helpers/type_guards.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/helpers/type_guards.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/api.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/api.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/api.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/api.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/base/api.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/base/api.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/base/api.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/base/api.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/base/index.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/base/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/base/index.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/base/index.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/core.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/core.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/core.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/core.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/group/api.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/group/api.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/group/api.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/group/api.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/group/base.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/group/base.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/group/base.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/group/base.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/group/index.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/group/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/group/index.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/group/index.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/helpers.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/helpers.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/helpers.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/helpers.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/index.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/index.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/index.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/api.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/api.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/api.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/api.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/base.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/base.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/base.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/base.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/common.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/common.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/common.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/common.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/conditions/index.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/conditions/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/conditions/index.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/conditions/index.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/fields/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/fields/index.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/fields/index.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/index.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/index.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/index.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/lifecycle/index.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/lifecycle/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/lifecycle/index.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/lifecycle/index.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/processors/index.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/processors/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/processors/index.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/processors/index.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/routing/index.ts b/x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/routing/index.ts similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/src/models/ingest/routing/index.ts rename to x-pack/platform/packages/shared/kbn-streams-schema/src/models/ingest/routing/index.ts diff --git a/x-pack/solutions/observability/packages/kbn-streams-schema/tsconfig.json b/x-pack/platform/packages/shared/kbn-streams-schema/tsconfig.json similarity index 100% rename from x-pack/solutions/observability/packages/kbn-streams-schema/tsconfig.json rename to x-pack/platform/packages/shared/kbn-streams-schema/tsconfig.json diff --git a/yarn.lock b/yarn.lock index 86b8417af4ea0..484ca11b10265 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7669,7 +7669,7 @@ version "0.0.0" uid "" -"@kbn/streams-schema@link:x-pack/solutions/observability/packages/kbn-streams-schema": +"@kbn/streams-schema@link:x-pack/platform/packages/shared/kbn-streams-schema": version "0.0.0" uid "" From dac36902f2779e97d613a0050850a74348ea962c Mon Sep 17 00:00:00 2001 From: Alex Prozorov Date: Tue, 18 Feb 2025 15:14:24 +0200 Subject: [PATCH 60/78] 10973 migrate flaky e2e tests to jest 2 (#211363) ## Summary This PR tries to fix the following issues - which are flaky FTR tests: - https://github.com/elastic/kibana/issues/209529 - https://github.com/elastic/kibana/issues/201686 - https://github.com/elastic/kibana/issues/203680 - https://github.com/elastic/kibana/issues/178413 - test is still skipped, added unit tests for rules table, header and counter components. - https://github.com/elastic/kibana/issues/193073 - https://github.com/elastic/kibana/issues/193616 - https://github.com/elastic/kibana/issues/191604 - https://github.com/elastic/kibana/issues/191593 - https://github.com/elastic/kibana/issues/191511 - https://github.com/elastic/kibana/issues/191474 - https://github.com/elastic/kibana/issues/191322 - https://github.com/elastic/kibana/issues/191128 - https://github.com/elastic/kibana/issues/191144 - https://github.com/elastic/kibana/issues/191027 - https://github.com/elastic/kibana/issues/190831 - https://github.com/elastic/kibana/issues/190779 There will be an RFC document which is going to be released to help us better understand and decide which tests are more suitable to make as E2E tests and which as unit tests. ### Checklist - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [x] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed ### Closes this PR closes the above mentioned issues in relation for this ticket - https://github.com/elastic/security-team/issues/10973 --- .../no_vulnerabilities_states.test.tsx | 2 +- .../configurations/configurations.test.tsx | 18 ++ .../public/pages/rules/__mocks__/index.ts | 8 + .../rules/__mocks__/rules_counters.mock.ts | 86 ++++++++ .../__mocks__/rules_table_headers.mock.ts | 72 ++++++ .../pages/rules/rules_counters.test.tsx | 137 ++++++++++++ .../public/pages/rules/rules_table.test.tsx | 143 ++++++++++++ .../public/pages/rules/rules_table.tsx | 9 +- .../pages/rules/rules_table_header.test.tsx | 163 ++++++++++++++ .../public/pages/rules/rules_table_header.tsx | 31 ++- .../public/pages/rules/test_subjects.ts | 20 ++ .../agentless/create_agent.ts | 8 +- .../data_views/data_views.ts | 115 ++++++---- .../cspm/cis_integration_aws.ts | 177 ++++++++------- .../cspm/cis_integration_azure.ts | 207 ++++++++++-------- .../cspm/cis_integration_gcp.ts | 195 ++++++++++------- .../kspm/cis_integration_k8s.ts | 21 +- .../pages/findings_onboarding.ts | 16 +- 18 files changed, 1112 insertions(+), 316 deletions(-) create mode 100644 x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/__mocks__/index.ts create mode 100644 x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/__mocks__/rules_counters.mock.ts create mode 100644 x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/__mocks__/rules_table_headers.mock.ts create mode 100644 x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_counters.test.tsx create mode 100644 x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table.test.tsx create mode 100644 x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table_header.test.tsx diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_vulnerabilities_states.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_vulnerabilities_states.test.tsx index 8cd0f320df91b..e2db60cdb8290 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_vulnerabilities_states.test.tsx +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/components/no_vulnerabilities_states.test.tsx @@ -65,7 +65,7 @@ describe('NoVulnerabilitiesStates', () => { expect(button).toHaveAttribute('href', expect.stringContaining(cnvmintegrationLink)); }); - it('Vulnerabilities - `Add Wiz integration`: should have link element to CNVM integration installation page', async () => { + it('Vulnerabilities - `Add Wiz integration`: should have link element to wiz integration installation page', async () => { await waitFor(() => expect(screen.getByText(/Already using a\s+cloud security product?/i)).toBeInTheDocument() ); diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx index cd834f4606356..7d63a4d670aba 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/configurations/configurations.test.tsx @@ -53,6 +53,24 @@ describe('', () => { expect(screen.getByText(/add kspm integration/i)).toBeInTheDocument(); }); + it('verifies CSPM and KSPM integration buttons have link and are clickable', async () => { + server.use(statusHandlers.notInstalledHandler); + renderFindingsPage(); + + expect(screen.getByText(/loading/i)).toBeInTheDocument(); + const cspmButton = await waitFor(() => + screen.getByRole('link', { name: /add cspm integration/i }) + ); + const kspmButton = await waitFor(() => + screen.getByRole('link', { name: /add kspm integration/i }) + ); + + expect(cspmButton).toHaveAttribute('href', expect.stringContaining('add-integration/cspm')); + expect(cspmButton).toBeEnabled(); + expect(kspmButton).toHaveAttribute('href', expect.stringContaining('add-integration/kspm')); + expect(kspmButton).toBeEnabled(); + }); + it("renders the 'latest misconfigurations findings' DataTable component when the CSPM/KSPM integration status is not installed but there are findings", async () => { const finding1 = generateCspFinding('0003', 'failed'); const finding2 = generateCspFinding('0004', 'passed'); diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/__mocks__/index.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/__mocks__/index.ts new file mode 100644 index 0000000000000..942eba35f2053 --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/__mocks__/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 * from './rules_counters.mock'; +export * from './rules_table_headers.mock'; diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/__mocks__/rules_counters.mock.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/__mocks__/rules_counters.mock.ts new file mode 100644 index 0000000000000..9d69ff95710fd --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/__mocks__/rules_counters.mock.ts @@ -0,0 +1,86 @@ +/* + * 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 benchmarkValuesMock = { + integrationType: 'KSPM', + integrationName: 'EKS', + resourceName: 'Clusters', + resourceCountLabel: 'clusters', + integrationLink: '/kbn/app/fleet/integrations/cloud_security_posture-1.12.0/add-integration/kspm', + learnMoreLink: 'https://ela.st/kspm-get-started', +}; + +export const itemsDataMock = [ + { + id: 'cis_k8s', + name: 'CIS Kubernetes V1.23', + version: '1.0.1', + score: { + totalFailed: 47, + totalPassed: 321, + totalFindings: 368, + postureScore: 87.2, + resourcesEvaluated: 180, + }, + evaluation: 1, + }, + { + id: 'cis_azure', + name: 'CIS Microsoft Azure Foundations', + version: '2.0.0', + score: { + totalFailed: 0, + totalPassed: 0, + totalFindings: 0, + postureScore: 0, + }, + evaluation: 0, + }, + { + id: 'cis_gcp', + name: 'CIS Google Cloud Platform Foundation', + version: '2.0.0', + score: { + totalFailed: 366, + totalPassed: 62, + totalFindings: 428, + postureScore: 14.5, + resourcesEvaluated: 376, + }, + evaluation: 1, + }, + { + id: 'cis_aws', + name: 'CIS Amazon Web Services Foundations', + version: '1.5.0', + score: { + totalFailed: 0, + totalPassed: 0, + totalFindings: 0, + postureScore: 0, + }, + evaluation: 0, + }, + { + id: 'cis_eks', + name: 'CIS Amazon Elastic Kubernetes Service (EKS)', + version: '1.0.1', + score: { + totalFailed: 20, + totalPassed: 62, + totalFindings: 82, + postureScore: 75.6, + resourcesEvaluated: 14, + }, + evaluation: 1, + }, +]; + +export const paramsMock = { + benchmarkId: 'cis_eks', + benchmarkVersion: '1.0.1', +}; diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/__mocks__/rules_table_headers.mock.ts b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/__mocks__/rules_table_headers.mock.ts new file mode 100644 index 0000000000000..45874491285d0 --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/__mocks__/rules_table_headers.mock.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const selectRulesMock = [ + { + metadata: { + impact: + 'Audit logs will be created on the master nodes, which will consume disk space. Care should be taken to avoid generating too large volumes of log information as this could impact the available of the cluster nodes.\nS3 lifecycle features can be used to manage the accumulation and management of logs over time. \n\nSee the following AWS resource for more information on these features:\nhttp://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html', + default_value: + "By default, cluster control plane logs aren't sent to CloudWatch Logs. ... When you enable a log type, the logs are sent with a log verbosity level of 2 . To enable or disable control plane logs with the console. Open the Amazon EKS console at https://console.aws.amazon.com/eks/home#/clusters . Amazon EKS Information in CloudTrail CloudTrail is enabled on your AWS account when you create the account. When activity occurs in Amazon EKS, that activity is recorded in a CloudTrail event along with other AWS service events in Event history.\n", + references: + '1. https://kubernetes.io/docs/tasks/debug-application-cluster/audit/\n2. https://aws.github.io/aws-eks-best-practices/detective/\n3. https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html\n4. https://docs.aws.amazon.com/eks/latest/userguide/logging-using-cloudtrail.html', + id: '66cd0518-cfa3-5917-a399-a7dfde4e19db', + name: 'Enable audit Logs', + profile_applicability: '* Level 1', + description: + 'The audit logs are part of the EKS managed Kubernetes control plane logs that are managed by Amazon EKS.\nAmazon EKS is integrated with AWS CloudTrail, a service that provides a record of actions taken by a user, role, or an AWS service in Amazon EKS.\nCloudTrail captures all API calls for Amazon EKS as events.\nThe calls captured include calls from the Amazon EKS console and code calls to the Amazon EKS API operations.', + rationale: + 'Exporting logs and metrics to a dedicated, persistent datastore such as CloudTrail ensures availability of audit data following a cluster security event, and provides a central location for analysis of log and metric data collated from multiple sources.', + audit: + 'Perform the following to determine if CloudTrail is enabled for all regions:\n\n**Via the Management Console**\n\n1. Sign in to the AWS Management Console and open the EKS console at https://console.aws.amazon.com/eks\n2. Click on Cluster Name of the cluster you are auditing\n3. Click Logging\n You will see Control Plane Logging info\n\n ```\n API Server Audit Authenticator\n Enabled/Disabled Enabled/Disabled Enabled/Disabled\n\n Controller Manager Scheduler\n Enabled/Disabled Enabled/Disabled\n```\n4. Ensure all 5 choices are set to Enabled', + remediation: + 'Perform the following to determine if CloudTrail is enabled for all regions:\n\n**Via The Management Console**\n\n1. Sign in to the AWS Management Console and open the EKS console at https://console.aws.amazon.com/eks\n2. Click on Cluster Name of the cluster you are auditing\n3. Click Logging\n4. Select Manage Logging from the button on the right hand side\n5. Toggle each selection to the Enabled position.\n6. Click Save Changes\n\n**Via CLI**\n\n`aws --region "${REGION_CODE}" eks describe-cluster --name "${CLUSTER_NAME}" --query \'cluster.logging.clusterLogging[?enabled==true].types`', + section: 'Logging', + version: '1.0', + tags: ['CIS', 'EKS', 'CIS 2.1.1', 'Logging'], + benchmark: { + name: 'CIS Amazon Elastic Kubernetes Service (EKS)', + version: 'v1.0.1', + id: 'cis_eks', + rule_number: '2.1.1', + posture_type: 'kspm', + }, + rego_rule_id: 'cis_2_1_1', + }, + state: 'unmuted', + }, + { + metadata: { + impact: 'None.', + default_value: 'See the AWS EKS documentation for the default value.\n', + references: '1. https://kubernetes.io/docs/admin/kube-proxy/', + id: '90b8ae5e-df30-5ba6-9fe9-03aab2b7a1c3', + name: 'Ensure that the kubeconfig file permissions are set to 644 or more restrictive', + profile_applicability: '* Level 1', + description: + 'If `kubelet` is running, and if it is using a file-based kubeconfig file, ensure that the proxy kubeconfig file has permissions of `644` or more restrictive.', + rationale: + 'The `kubelet` kubeconfig file controls various parameters of the `kubelet` service in the worker node.\nYou should restrict its file permissions to maintain the integrity of the file.\nThe file should be writable by only the administrators on the system.\n\nIt is possible to run `kubelet` with the kubeconfig parameters configured as a Kubernetes ConfigMap instead of a file.\nIn this case, there is no proxy kubeconfig file.', + audit: + "SSH to the worker nodes\n\nTo check to see if the Kubelet Service is running:\n```\nsudo systemctl status kubelet\n```\nThe output should return `Active: active (running) since..`\n\nRun the following command on each node to find the appropriate kubeconfig file:\n\n```\nps -ef | grep kubelet\n```\nThe output of the above command should return something similar to `--kubeconfig /var/lib/kubelet/kubeconfig` which is the location of the kubeconfig file.\n\nRun this command to obtain the kubeconfig file permissions:\n\n```\nstat -c %a /var/lib/kubelet/kubeconfig\n```\nThe output of the above command gives you the kubeconfig file's permissions.\n\nVerify that if a file is specified and it exists, the permissions are `644` or more restrictive.", + remediation: + 'Run the below command (based on the file location on your system) on the each worker\nnode.\nFor example,\n```\nchmod 644 \n```', + section: 'Worker Node Configuration Files', + version: '1.0', + tags: ['CIS', 'EKS', 'CIS 3.1.1', 'Worker Node Configuration Files'], + benchmark: { + name: 'CIS Amazon Elastic Kubernetes Service (EKS)', + version: 'v1.0.1', + id: 'cis_eks', + rule_number: '3.1.1', + posture_type: 'kspm', + }, + rego_rule_id: 'cis_3_1_1', + }, + state: 'unmuted', + }, +]; diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_counters.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_counters.test.tsx new file mode 100644 index 0000000000000..4852866aaaae4 --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_counters.test.tsx @@ -0,0 +1,137 @@ +/* + * 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 { render, screen } from '@testing-library/react'; +import { RulesCounters } from './rules_counters'; +import { useBenchmarkDynamicValues } from '../../common/hooks/use_benchmark_dynamic_values'; +import { useParams } from 'react-router-dom'; +import { RULE_COUNTERS_TEST_SUBJ } from './test_subjects'; +import { useNavigateFindings } from '@kbn/cloud-security-posture/src/hooks/use_navigate_findings'; +import { useCspBenchmarkIntegrationsV2 } from '../benchmarks/use_csp_benchmark_integrations'; +import { useKibana } from '../../common/hooks/use_kibana'; +import { within } from '@testing-library/dom'; +import { cloudPosturePages } from '../../common/navigation/constants'; +import { RULE_FAILED } from '../../../common/constants'; +import userEvent from '@testing-library/user-event'; +import { benchmarkValuesMock, itemsDataMock, paramsMock } from './__mocks__'; + +jest.mock('../../common/hooks/use_benchmark_dynamic_values'); +jest.mock('react-router-dom', () => ({ + useParams: jest.fn(), +})); +jest.mock('@kbn/cloud-security-posture/src/hooks/use_navigate_findings'); +jest.mock('../benchmarks/use_csp_benchmark_integrations'); +jest.mock('../../common/hooks/use_kibana'); + +describe('RulesCounters', () => { + const mockNavigate = jest.fn(); + + beforeEach(() => { + (useKibana as jest.Mock).mockReturnValue({ + services: { + http: { + basePath: { + basePath: '/kbn', + serverBasePath: '/kbn', + assetsHrefBase: '/kbn/XXXXXXXXXXXX', + prepend: (path: string) => path, + }, + }, + charts: { + theme: { + useChartsBaseTheme: () => ({}), + }, + }, + }, + }); + + (useCspBenchmarkIntegrationsV2 as jest.Mock).mockReturnValue({ + status: 'success', + data: { + items: itemsDataMock, + }, + }); + + (useBenchmarkDynamicValues as jest.Mock).mockReturnValue({ + getBenchmarkDynamicValues: () => benchmarkValuesMock, + }); + + (useParams as jest.Mock).mockReturnValue(paramsMock); + + (useNavigateFindings as jest.Mock).mockReturnValue(mockNavigate); // Store the mock function + }); + + it('should not show empty state and show correct posture score', () => { + render( {}} />); + + expect( + screen.queryByTestId(RULE_COUNTERS_TEST_SUBJ.RULE_COUNTERS_EMPTY_STATE) + ).not.toBeInTheDocument(); + const postureScoreContainer = screen.getByTestId(RULE_COUNTERS_TEST_SUBJ.POSTURE_SCORE_COUNTER); + + expect(within(postureScoreContainer).getByText('76%')).toBeInTheDocument(); + }); + + it('have correct href on posture score button', () => { + render( {}} />); + + const postureScoreButton = screen.getByTestId(RULE_COUNTERS_TEST_SUBJ.POSTURE_SCORE_BUTTON); + expect(postureScoreButton).toHaveAttribute( + 'href', + expect.stringContaining(`/app/security${cloudPosturePages.dashboard.path}`) + ); + }); + + it('shows integrations count when there are findings', () => { + render( {}} />); + screen.debug(); + const integrationsCounter = screen.getByTestId( + RULE_COUNTERS_TEST_SUBJ.INTEGRATIONS_EVALUATED_COUNTER + ); + expect(within(integrationsCounter).getByText('1')).toBeInTheDocument(); + }); + + it('have correct href on integrations counter button', () => { + render( {}} />); + + const postureScoreButton = screen.getByTestId( + RULE_COUNTERS_TEST_SUBJ.INTEGRATIONS_EVALUATED_BUTTON + ); + expect(postureScoreButton).toHaveAttribute( + 'href', + expect.stringContaining(benchmarkValuesMock.integrationLink) + ); + }); + + it('shows the failed findings counter when there are findings', () => { + render( {}} />); + const failedFindingsCounter = screen.getByTestId( + RULE_COUNTERS_TEST_SUBJ.FAILED_FINDINGS_COUNTER + ); + expect(within(failedFindingsCounter).getByText('20')).toBeInTheDocument(); + }); + + it('call useNavigateFindings with correct params when clicking on failed findings button', async () => { + render( {}} />); + + const failedFindingsButton = screen.getByTestId(RULE_COUNTERS_TEST_SUBJ.FAILED_FINDINGS_BUTTON); + await userEvent.click(failedFindingsButton); + + expect(mockNavigate).toHaveBeenCalledWith({ + 'result.evaluation': RULE_FAILED, + 'rule.benchmark.id': paramsMock.benchmarkId, + 'rule.benchmark.version': `v${paramsMock.benchmarkVersion}`, + }); + }); + + it('shows the disabled rules count', async () => { + render( {}} />); + const dislabedRulesCounter = screen.getByTestId(RULE_COUNTERS_TEST_SUBJ.DISABLED_RULES_COUNTER); + expect(within(dislabedRulesCounter).getByText('0')).toBeInTheDocument(); + }); +}); diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table.test.tsx new file mode 100644 index 0000000000000..ed9b45c88d55b --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table.test.tsx @@ -0,0 +1,143 @@ +/* + * 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, { FC, PropsWithChildren } from 'react'; +import { render, screen } from '@testing-library/react'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { coreMock } from '@kbn/core/public/mocks'; +import { TestProvider } from '../../test/test_provider'; +import { RulesTable } from './rules_table'; +import * as TEST_SUBJECTS from './test_subjects'; +import { selectRulesMock } from './__mocks__/rules_table_headers.mock'; +import { CspBenchmarkRulesWithStates } from './rules_container'; +import { METRIC_TYPE } from '@kbn/analytics'; +import { + CHANGE_RULE_STATE, + uiMetricService, +} from '@kbn/cloud-security-posture-common/utils/ui_metrics'; +import { useChangeCspRuleState } from './use_change_csp_rule_state'; +import userEvent from '@testing-library/user-event'; +import { RULES_TABLE } from './test_subjects'; + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { retry: false }, + }, +}); + +const getWrapper = + ( + { canUpdate = true }: { canUpdate: boolean } = { canUpdate: true } + ): FC> => + ({ children }) => { + const coreStart = coreMock.createStart(); + const core = { + ...coreStart, + application: { + ...coreStart.application, + capabilities: { + ...coreStart.application.capabilities, + siemV2: { crud: canUpdate }, + }, + }, + }; + return ( + + {children} + + ); + }; + +jest.mock('@kbn/cloud-security-posture-common/utils/ui_metrics', () => ({ + uiMetricService: { + trackUiMetric: jest.fn(), + }, + CHANGE_RULE_STATE: 'cloud_security_posture.rule.change_state', +})); + +jest.mock('./use_change_csp_rule_state'); + +describe('RulesTable', () => { + const Wrapper = getWrapper(); + const mockProps = { + setPagination: jest.fn(), + perPage: 25, + rules_page: selectRulesMock as CspBenchmarkRulesWithStates[], + page: 0, + total: selectRulesMock.length, + loading: false, + error: undefined, + selectedRuleId: undefined, + selectedRules: [], + setSelectedRules: jest.fn(), + onRuleClick: jest.fn(), + onSortChange: jest.fn(), + }; + + beforeEach(() => { + (useChangeCspRuleState as jest.Mock).mockReturnValue({ + mutate: jest.fn(), + isLoading: false, + }); + jest.clearAllMocks(); + }); + + it('renders table with correct test id', () => { + render( + + + + ); + + expect(screen.getByTestId(TEST_SUBJECTS.CSP_RULES_TABLE)).toBeInTheDocument(); + }); + + it('tracks metric when toggling rule state', async () => { + render( + + + + ); + + const switchButtons = screen.getAllByTestId(RULES_TABLE.RULES_ROWS_ENABLE_SWITCH_BUTTON); + await userEvent.click(switchButtons[0]); + + expect(uiMetricService.trackUiMetric).toHaveBeenCalledWith( + METRIC_TYPE.COUNT, + CHANGE_RULE_STATE + ); + }); + + it('calls mutateRulesStates with correct params when toggling rule state', async () => { + const mutateMock = jest.fn(); + (useChangeCspRuleState as jest.Mock).mockReturnValue({ + mutate: mutateMock, + isLoading: false, + }); + + render( + + + + ); + + const switchButtons = screen.getAllByTestId(RULES_TABLE.RULES_ROWS_ENABLE_SWITCH_BUTTON); + await userEvent.click(switchButtons[0]); + + expect(mutateMock).toHaveBeenCalledWith({ + newState: 'mute', + ruleIds: [ + { + benchmark_id: selectRulesMock[0].metadata.benchmark.id, + benchmark_version: selectRulesMock[0].metadata.benchmark.version, + rule_number: selectRulesMock[0].metadata.benchmark.rule_number, + rule_id: selectRulesMock[0].metadata.id, + }, + ], + }); + }); +}); diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx index a30e009c85198..f350d07695400 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table.tsx @@ -28,10 +28,9 @@ import { uniqBy } from 'lodash'; import { ColumnNameWithTooltip } from '../../components/column_name_with_tooltip'; import type { CspBenchmarkRulesWithStates, RulesState } from './rules_container'; import * as TEST_SUBJECTS from './test_subjects'; -import { useChangeCspRuleState } from './use_change_csp_rule_state'; +import { RULES_TABLE } from './test_subjects'; -export const RULES_ROWS_ENABLE_SWITCH_BUTTON = 'rules-row-enable-switch-button'; -export const RULES_ROW_SELECT_ALL_CURRENT_PAGE = 'cloud-security-fields-selector-item-all'; +import { useChangeCspRuleState } from './use_change_csp_rule_state'; type RulesTableProps = Pick< RulesState, @@ -168,7 +167,7 @@ const getColumns = ({ field: 'action', name: ( { const uniqueSelectedRules = uniqBy([...selectedRules, ...items], 'metadata.id'); @@ -300,7 +299,7 @@ const RuleStateSwitch = ({ rule }: { rule: CspBenchmarkRulesWithStates }) => { className="eui-textTruncate" checked={!isRuleMuted} onChange={changeCspRuleStateFn} - data-test-subj={RULES_ROWS_ENABLE_SWITCH_BUTTON} + data-test-subj={RULES_TABLE.RULES_ROWS_ENABLE_SWITCH_BUTTON} label="" compressed={true} /> diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table_header.test.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table_header.test.tsx new file mode 100644 index 0000000000000..5226731ff2f0f --- /dev/null +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table_header.test.tsx @@ -0,0 +1,163 @@ +/* + * 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, { FC, PropsWithChildren } from 'react'; +import { render, screen } from '@testing-library/react'; +import { RulesTableHeader } from './rules_table_header'; +import { CspBenchmarkRulesWithStates } from './rules_container'; +import { TestProvider } from '../../test/test_provider'; +import { coreMock } from '@kbn/core/public/mocks'; +import { RULES_TABLE_HEADER_TEST_SUBJ } from './test_subjects'; +import userEvent from '@testing-library/user-event'; +import { useChangeCspRuleState } from './use_change_csp_rule_state'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { selectRulesMock } from './__mocks__'; + +jest.mock('./use_change_csp_rule_state'); + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { retry: false }, + }, +}); + +const getWrapper = + ( + { canUpdate = true }: { canUpdate: boolean } = { canUpdate: true } + ): FC> => + ({ children }) => { + const coreStart = coreMock.createStart(); + const core = { + ...coreStart, + application: { + ...coreStart.application, + capabilities: { + ...coreStart.application.capabilities, + siemV2: { crud: canUpdate }, + }, + }, + }; + return ( + + {children} + + ); + }; + +describe('RulesTableHeader', () => { + const Wrapper = getWrapper(); + + const mockProps = { + search: jest.fn(), + searchValue: '', + isSearching: false, + totalRulesCount: 2, + pageSize: 25, + onSectionChange: jest.fn(), + onRuleNumberChange: jest.fn(), + sectionSelectOptions: ['Logging', 'Worker Node Configuration Files'], + ruleNumberSelectOptions: ['2.1.1', '3.1.1'], + selectedRules: selectRulesMock as CspBenchmarkRulesWithStates[], + setEnabledDisabledItemsFilter: jest.fn(), + enabledDisabledItemsFilterState: 'no-filter', + setSelectAllRules: jest.fn(), + setSelectedRules: jest.fn(), + }; + + beforeEach(() => { + (useChangeCspRuleState as jest.Mock).mockReturnValue({ + mutate: jest.fn(), + isLoading: false, + }); + }); + + it('renders header with correct initial state', () => { + render( + + + + ); + expect( + screen.getByTestId(RULES_TABLE_HEADER_TEST_SUBJ.RULES_TABLE_HEADER_SEARCH_INPUT) + ).toBeInTheDocument(); + expect( + screen.getByTestId(RULES_TABLE_HEADER_TEST_SUBJ.RULES_TABLE_HEADER_MULTI_SELECT) + ).toBeInTheDocument(); + expect( + screen.getByTestId(RULES_TABLE_HEADER_TEST_SUBJ.RULES_TABLE_HEADER_RULE_NUMBER_SELECT) + ).toBeInTheDocument(); + expect( + screen.getByTestId(RULES_TABLE_HEADER_TEST_SUBJ.RULES_TABLE_HEADER_RULE_SHOWING_LABEL) + ).toBeInTheDocument(); + }); + + it('update multi-select filter when selecting an option', async () => { + render( + + + + ); + + const multiSelectFilterId = 'cis-section-multi-select-filter'; + const multiSelectFilter = await screen.findByTestId( + `options-filter-popover-button-${multiSelectFilterId}` + ); + + await userEvent.click(multiSelectFilter); + + const firstOption = screen.getByText('Logging'); + await userEvent.click(firstOption); + const updatedMultiSelect = screen.getByTestId( + RULES_TABLE_HEADER_TEST_SUBJ.RULES_TABLE_HEADER_MULTI_SELECT + ); + expect(updatedMultiSelect).toHaveTextContent('1'); + }); + + it('calls onRuleNumberChange with correct params on rule selection change', async () => { + render( + + + + ); + + const multiSelectFilterId = 'rule-number-multi-select-filter'; + + const ruleNumberSelectFilter = await screen.findByTestId( + `options-filter-popover-button-${multiSelectFilterId}` + ); + + await userEvent.click(ruleNumberSelectFilter); + + const firstOption = await screen.findByText('2.1.1'); + await userEvent.click(firstOption); + expect(mockProps.onRuleNumberChange).toHaveBeenCalledWith(['2.1.1']); + }); + + it('calls setEnabledDisabledItemsFilter with correct params on click', async () => { + render( + + + + ); + + const enableFilterButton = await screen.findByTestId( + RULES_TABLE_HEADER_TEST_SUBJ.RULES_ENABLED_FILTER + ); + + const disableFilterButton = await screen.findByTestId( + RULES_TABLE_HEADER_TEST_SUBJ.RULES_DISABLED_FILTER + ); + + await userEvent.click(enableFilterButton); + + expect(mockProps.setEnabledDisabledItemsFilter).toHaveBeenCalledWith('enabled'); + + await userEvent.click(disableFilterButton); + + expect(mockProps.setEnabledDisabledItemsFilter).toHaveBeenCalledWith('disabled'); + }); +}); diff --git a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx index a7c69326d3964..9405bdd20dd57 100644 --- a/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx +++ b/x-pack/solutions/security/plugins/cloud_security_posture/public/pages/rules/rules_table_header.tsx @@ -29,14 +29,7 @@ import { } from './use_change_csp_rule_state'; import { CspBenchmarkRulesWithStates } from './rules_container'; import { MultiSelectFilter } from '../../common/component/multi_select_filter'; - -export const RULES_BULK_ACTION_BUTTON = 'bulk-action-button'; -export const RULES_BULK_ACTION_OPTION_ENABLE = 'bulk-action-option-enable'; -export const RULES_BULK_ACTION_OPTION_DISABLE = 'bulk-action-option-disable'; -export const RULES_SELECT_ALL_RULES = 'select-all-rules-button'; -export const RULES_CLEAR_ALL_RULES_SELECTION = 'clear-rules-selection-button'; -export const RULES_DISABLED_FILTER = 'rules-disabled-filter'; -export const RULES_ENABLED_FILTER = 'rules-enabled-filter'; +import { RULES_TABLE_HEADER_TEST_SUBJ } from './test_subjects'; interface RulesTableToolbarProps { search: (value: string) => void; @@ -109,6 +102,7 @@ export const RulesTableHeader = ({ Bulk actions @@ -287,7 +283,7 @@ const CurrentPageOfTotal = ({ @@ -296,7 +292,7 @@ const CurrentPageOfTotal = ({ @@ -308,7 +304,10 @@ const CurrentPageOfTotal = ({ - + setSelectedRules([])} size="xs" iconType="cross" - data-test-subj={RULES_CLEAR_ALL_RULES_SELECTION} + data-test-subj={RULES_TABLE_HEADER_TEST_SUBJ.CLEAR_ALL_RULES_SELECTION} > `${CSP_RULES_TABLE_ROW_ITEM_NAME}_${id}`; diff --git a/x-pack/test/cloud_security_posture_functional/agentless/create_agent.ts b/x-pack/test/cloud_security_posture_functional/agentless/create_agent.ts index 7bc3a6cbd64be..e478225de9a33 100644 --- a/x-pack/test/cloud_security_posture_functional/agentless/create_agent.ts +++ b/x-pack/test/cloud_security_posture_functional/agentless/create_agent.ts @@ -135,9 +135,13 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await pageObjects.header.waitUntilLoadingHasFinished(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect(await cisIntegrationAws.showPostInstallCloudFormationModal()).to.be(true); + // add timeout to give extra time for the modal to show up + await retry.tryForTime(agentCreationTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + const resStatus = await cisIntegrationAws.showPostInstallCloudFormationModal(); + expect(resStatus).to.be(true); + }); await cisIntegration.navigateToIntegrationCspList(); await pageObjects.header.waitUntilLoadingHasFinished(); diff --git a/x-pack/test/cloud_security_posture_functional/data_views/data_views.ts b/x-pack/test/cloud_security_posture_functional/data_views/data_views.ts index d3e68d11d7694..27b3eca90578b 100644 --- a/x-pack/test/cloud_security_posture_functional/data_views/data_views.ts +++ b/x-pack/test/cloud_security_posture_functional/data_views/data_views.ts @@ -40,6 +40,7 @@ export default ({ getService, getPageObjects }: FtrProviderContext) => { const kibanaServer = getService('kibanaServer'); const spacesService = getService('spaces'); const retry = getService('retry'); + const fetchingOfDataViewsTimeout = 1000 * 20; // 20 seconds const pageObjects = getPageObjects([ 'common', @@ -56,6 +57,16 @@ export default ({ getService, getPageObjects }: FtrProviderContext) => { let cspSecurity = pageObjects.cspSecurity; let findings: typeof pageObjects.findings; + const waitForDataViews = async ({ + timeout, + action, + }: { + timeout: number; + action: () => Promise; + }) => { + await retry.tryForTime(timeout, action); + }; + before(async () => { await spacesService.delete(TEST_SPACE); @@ -98,14 +109,21 @@ export default ({ getService, getPageObjects }: FtrProviderContext) => { } await findings.navigateToLatestVulnerabilitiesPage(); - await pageObjects.header.waitUntilLoadingHasFinished(); - - const idDataViewExistsPostFindingsNavigation = await getDataViewSafe( - kibanaServer.savedObjects, - expectedDataViewId, - 'default' - ); - expect(idDataViewExistsPostFindingsNavigation).to.be(true); + + // give more time for the data view to be fetched before checking loading status + await waitForDataViews({ + timeout: fetchingOfDataViewsTimeout, + action: async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + + const idDataViewExistsPostFindingsNavigation = await getDataViewSafe( + kibanaServer.savedObjects, + expectedDataViewId, + 'default' + ); + expect(idDataViewExistsPostFindingsNavigation).to.be(true); + }, + }); }); }); @@ -129,14 +147,19 @@ export default ({ getService, getPageObjects }: FtrProviderContext) => { const cspDashboard = pageObjects.cloudPostureDashboard; await cspDashboard.navigateToComplianceDashboardPage(); - await pageObjects.header.waitUntilLoadingHasFinished(); - - const idDataViewExistsPostFindingsNavigation = await getDataViewSafe( - kibanaServer.savedObjects, - expectedDataViewId, - 'default' - ); - expect(idDataViewExistsPostFindingsNavigation).to.be(true); + await waitForDataViews({ + timeout: fetchingOfDataViewsTimeout, + action: async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + + const idDataViewExistsPostFindingsNavigation = await getDataViewSafe( + kibanaServer.savedObjects, + expectedDataViewId, + 'default' + ); + expect(idDataViewExistsPostFindingsNavigation).to.be(true); + }, + }); }); }); @@ -164,14 +187,18 @@ export default ({ getService, getPageObjects }: FtrProviderContext) => { } await findings.navigateToLatestFindingsPage(TEST_SPACE); - await pageObjects.header.waitUntilLoadingHasFinished(); - const idDataViewExistsPostFindingsNavigation = await getDataViewSafe( - kibanaServer.savedObjects, - expectedDataViewId, - TEST_SPACE - ); - - expect(idDataViewExistsPostFindingsNavigation).to.be(true); + await waitForDataViews({ + timeout: fetchingOfDataViewsTimeout, + action: async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + const idDataViewExistsPostFindingsNavigation = await getDataViewSafe( + kibanaServer.savedObjects, + expectedDataViewId, + TEST_SPACE + ); + expect(idDataViewExistsPostFindingsNavigation).to.be(true); + }, + }); }); }); @@ -200,14 +227,18 @@ export default ({ getService, getPageObjects }: FtrProviderContext) => { const cspDashboard = pageObjects.cloudPostureDashboard; await cspDashboard.navigateToComplianceDashboardPage(TEST_SPACE); - await pageObjects.header.waitUntilLoadingHasFinished(); - const idDataViewExistsPostFindingsNavigation = await getDataViewSafe( - kibanaServer.savedObjects, - expectedDataViewId, - TEST_SPACE - ); - - expect(idDataViewExistsPostFindingsNavigation).to.be(true); + await waitForDataViews({ + timeout: fetchingOfDataViewsTimeout, + action: async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + const idDataViewExistsPostFindingsNavigation = await getDataViewSafe( + kibanaServer.savedObjects, + expectedDataViewId, + TEST_SPACE + ); + expect(idDataViewExistsPostFindingsNavigation).to.be(true); + }, + }); }); }); @@ -234,14 +265,18 @@ export default ({ getService, getPageObjects }: FtrProviderContext) => { const cspDashboard = pageObjects.cloudPostureDashboard; await cspDashboard.navigateToComplianceDashboardPage(); - await pageObjects.header.waitUntilLoadingHasFinished(); - const idDataViewExistsPostFindingsNavigation = await getDataViewSafe( - kibanaServer.savedObjects, - expectedDataViewId, - 'default' - ); - - expect(idDataViewExistsPostFindingsNavigation).to.be(true); + await waitForDataViews({ + timeout: fetchingOfDataViewsTimeout, + action: async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + const idDataViewExistsPostFindingsNavigation = await getDataViewSafe( + kibanaServer.savedObjects, + expectedDataViewId, + 'default' + ); + expect(idDataViewExistsPostFindingsNavigation).to.be(true); + }, + }); }); }); }); diff --git a/x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts b/x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts index 35d35311c6669..0265fd7a55202 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_aws.ts @@ -30,6 +30,7 @@ export default function (providerContext: FtrProviderContext) { const pageObjects = getPageObjects(['cloudPostureDashboard', 'cisAddIntegration', 'header']); const retry = getService('retry'); const logger = getService('log'); + const saveIntegrationPolicyTimeout = 1000 * 30; // 30 seconds describe('Test adding Cloud Security Posture Integrations CSPM AWS', function () { this.tags(['cloud_security_posture_cis_integration_cspm_aws']); @@ -51,6 +52,7 @@ export default function (providerContext: FtrProviderContext) { }); it('Hyperlink on PostInstallation Modal should have the correct URL', async () => { await cisIntegration.clickOptionButton(CIS_AWS_OPTION_TEST_ID); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); await pageObjects.header.waitUntilLoadingHasFinished(); expect((await cisIntegrationAws.getPostInstallCloudFormationModal()) !== undefined).to.be( @@ -83,6 +85,7 @@ export default function (providerContext: FtrProviderContext) { await cisIntegration.clickOptionButton(CIS_AWS_OPTION_TEST_ID); await cisIntegration.clickOptionButton(AWS_MANUAL_TEST_ID); await cisIntegration.fillInTextField(ROLE_ARN_TEST_ID, roleArn); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); await pageObjects.header.waitUntilLoadingHasFinished(); @@ -119,15 +122,18 @@ export default function (providerContext: FtrProviderContext) { DIRECT_ACCESS_SECRET_KEY_TEST_ID, directAccessSecretKey ); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); - await cisIntegration.navigateToIntegrationCspList(); - expect( - (await cisIntegration.getFieldValueInEditPage(DIRECT_ACCESS_KEY_ID_TEST_ID)) === - directAccessKeyId - ).to.be(true); - expect(await cisIntegration.getReplaceSecretButton('secret-access-key')).to.not.be(null); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + expect( + (await cisIntegration.getFieldValueInEditPage(DIRECT_ACCESS_KEY_ID_TEST_ID)) === + directAccessKeyId + ).to.be(true); + expect(await cisIntegration.getReplaceSecretButton('secret-access-key')).to.not.be(null); + }); }); }); @@ -151,19 +157,22 @@ export default function (providerContext: FtrProviderContext) { TEMP_ACCESS_SESSION_TOKEN_TEST_ID, tempAccessSessionToken ); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); - await cisIntegration.navigateToIntegrationCspList(); - await cisIntegration.clickFirstElementOnIntegrationTable(); - expect( - (await cisIntegration.getValueInEditPage(TEMP_ACCESS_KEY_ID_TEST_ID)) === accessKeyId - ).to.be(true); - expect( - (await cisIntegration.getValueInEditPage(TEMP_ACCESS_SESSION_TOKEN_TEST_ID)) === - tempAccessSessionToken - ).to.be(true); - expect(await cisIntegration.getReplaceSecretButton('secret-access-key')).to.not.be(null); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + await cisIntegration.clickFirstElementOnIntegrationTable(); + expect( + (await cisIntegration.getValueInEditPage(TEMP_ACCESS_KEY_ID_TEST_ID)) === accessKeyId + ).to.be(true); + expect( + (await cisIntegration.getValueInEditPage(TEMP_ACCESS_SESSION_TOKEN_TEST_ID)) === + tempAccessSessionToken + ).to.be(true); + expect(await cisIntegration.getReplaceSecretButton('secret-access-key')).to.not.be(null); + }); }); }); @@ -182,19 +191,22 @@ export default function (providerContext: FtrProviderContext) { SHARED_CREDETIALS_PROFILE_NAME_TEST_ID, sharedCredentialProfileName ); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); - await cisIntegration.navigateToIntegrationCspList(); - await cisIntegration.clickFirstElementOnIntegrationTable(); - expect( - (await cisIntegration.getValueInEditPage(SHARED_CREDENTIALS_FILE_TEST_ID)) === - sharedCredentialFile - ).to.be(true); - expect( - (await cisIntegration.getValueInEditPage(SHARED_CREDETIALS_PROFILE_NAME_TEST_ID)) === - sharedCredentialProfileName - ).to.be(true); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + await cisIntegration.clickFirstElementOnIntegrationTable(); + expect( + (await cisIntegration.getValueInEditPage(SHARED_CREDENTIALS_FILE_TEST_ID)) === + sharedCredentialFile + ).to.be(true); + expect( + (await cisIntegration.getValueInEditPage(SHARED_CREDETIALS_PROFILE_NAME_TEST_ID)) === + sharedCredentialProfileName + ).to.be(true); + }); }); }); @@ -202,12 +214,15 @@ export default function (providerContext: FtrProviderContext) { it('CIS_AWS Single Cloud Formation workflow', async () => { await cisIntegration.clickOptionButton(CIS_AWS_OPTION_TEST_ID); await cisIntegration.clickOptionButton(AWS_SINGLE_ACCOUNT_TEST_ID); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect( - (await cisIntegration.getUrlOnPostInstallModal()) === - 'https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-whatis-howdoesitwork.html' - ); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect( + (await cisIntegration.getUrlOnPostInstallModal()) === + 'https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-whatis-howdoesitwork.html' + ); + }); }); }); @@ -218,13 +233,16 @@ export default function (providerContext: FtrProviderContext) { await cisIntegration.clickOptionButton(AWS_SINGLE_ACCOUNT_TEST_ID); await cisIntegration.clickOptionButton(AWS_MANUAL_TEST_ID); await cisIntegration.fillInTextField(ROLE_ARN_TEST_ID, roleArn); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); - await cisIntegration.navigateToIntegrationCspList(); - expect((await cisIntegration.getFieldValueInEditPage(ROLE_ARN_TEST_ID)) === roleArn).to.be( - true - ); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + expect( + (await cisIntegration.getFieldValueInEditPage(ROLE_ARN_TEST_ID)) === roleArn + ).to.be(true); + }); }); }); @@ -244,15 +262,18 @@ export default function (providerContext: FtrProviderContext) { DIRECT_ACCESS_SECRET_KEY_TEST_ID, directAccessSecretKey ); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); - await cisIntegration.navigateToIntegrationCspList(); - expect( - (await cisIntegration.getFieldValueInEditPage(DIRECT_ACCESS_KEY_ID_TEST_ID)) === - directAccessKeyId - ).to.be(true); - expect(await cisIntegration.getReplaceSecretButton('secret-access-key')).to.not.be(null); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + expect( + (await cisIntegration.getFieldValueInEditPage(DIRECT_ACCESS_KEY_ID_TEST_ID)) === + directAccessKeyId + ).to.be(true); + expect(await cisIntegration.getReplaceSecretButton('secret-access-key')).to.not.be(null); + }); }); }); @@ -277,19 +298,22 @@ export default function (providerContext: FtrProviderContext) { TEMP_ACCESS_SESSION_TOKEN_TEST_ID, tempAccessSessionToken ); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); - await cisIntegration.navigateToIntegrationCspList(); - await cisIntegration.clickFirstElementOnIntegrationTable(); - expect( - (await cisIntegration.getValueInEditPage(TEMP_ACCESS_KEY_ID_TEST_ID)) === accessKeyId - ).to.be(true); - expect( - (await cisIntegration.getValueInEditPage(TEMP_ACCESS_SESSION_TOKEN_TEST_ID)) === - tempAccessSessionToken - ).to.be(true); - expect(await cisIntegration.getReplaceSecretButton('secret-access-key')).to.not.be(null); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + await cisIntegration.clickFirstElementOnIntegrationTable(); + expect( + (await cisIntegration.getValueInEditPage(TEMP_ACCESS_KEY_ID_TEST_ID)) === accessKeyId + ).to.be(true); + expect( + (await cisIntegration.getValueInEditPage(TEMP_ACCESS_SESSION_TOKEN_TEST_ID)) === + tempAccessSessionToken + ).to.be(true); + expect(await cisIntegration.getReplaceSecretButton('secret-access-key')).to.not.be(null); + }); }); }); @@ -309,19 +333,22 @@ export default function (providerContext: FtrProviderContext) { SHARED_CREDETIALS_PROFILE_NAME_TEST_ID, sharedCredentialProfileName ); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); - await cisIntegration.navigateToIntegrationCspList(); - await cisIntegration.clickFirstElementOnIntegrationTable(); - expect( - (await cisIntegration.getValueInEditPage(SHARED_CREDENTIALS_FILE_TEST_ID)) === - sharedCredentialFile - ).to.be(true); - expect( - (await cisIntegration.getValueInEditPage(SHARED_CREDETIALS_PROFILE_NAME_TEST_ID)) === - sharedCredentialProfileName - ).to.be(true); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + await cisIntegration.clickFirstElementOnIntegrationTable(); + expect( + (await cisIntegration.getValueInEditPage(SHARED_CREDENTIALS_FILE_TEST_ID)) === + sharedCredentialFile + ).to.be(true); + expect( + (await cisIntegration.getValueInEditPage(SHARED_CREDETIALS_PROFILE_NAME_TEST_ID)) === + sharedCredentialProfileName + ).to.be(true); + }); }); }); }); diff --git a/x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts b/x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts index 1fe76970ae5d6..6282f74e58987 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_azure.ts @@ -25,8 +25,10 @@ const clientCertificatePassword = 'clientCertificatePasswordTest'; // eslint-disable-next-line import/no-default-export export default function (providerContext: FtrProviderContext) { - const { getPageObjects } = providerContext; + const { getPageObjects, getService } = providerContext; + const retry = getService('retry'); const pageObjects = getPageObjects(['cloudPostureDashboard', 'cisAddIntegration', 'header']); + const saveIntegrationPolicyTimeout = 1000 * 30; // 30 seconds describe('Test adding Cloud Security Posture Integrations CSPM AZURE', function () { this.tags(['cloud_security_posture_cis_integration_cspm_azure']); @@ -44,15 +46,18 @@ export default function (providerContext: FtrProviderContext) { it('Azure Organization ARM Template Workflow', async () => { await cisIntegration.clickOptionButton(CIS_AZURE_OPTION_TEST_ID); await cisIntegration.clickOptionButton(CIS_AZURE_SETUP_FORMAT_TEST_SUBJECTS.ARM_TEMPLATE); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegrationAzure.getPostInstallArmTemplateModal()) !== undefined).to.be( - true - ); - expect( - (await cisIntegration.getUrlOnPostInstallModal()) === - 'https://azure.microsoft.com/en-us/get-started/azure-portal/resource-manager' - ); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegrationAzure.getPostInstallArmTemplateModal()) !== undefined).to.be( + true + ); + expect( + (await cisIntegration.getUrlOnPostInstallModal()) === + 'https://azure.microsoft.com/en-us/get-started/azure-portal/resource-manager' + ); + }); }); }); @@ -61,9 +66,13 @@ export default function (providerContext: FtrProviderContext) { await cisIntegration.clickOptionButton(CIS_AZURE_OPTION_TEST_ID); await cisIntegration.clickOptionButton(CIS_AZURE_SETUP_FORMAT_TEST_SUBJECTS.MANUAL); await cisIntegration.selectValue(AZURE_CREDENTIAL_SELECTOR, 'managed_identity'); + await cisIntegration.inputUniqueIntegrationName(); + await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + }); }); }); @@ -88,22 +97,26 @@ export default function (providerContext: FtrProviderContext) { CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.CLIENT_SECRET, clientSecret ); + await cisIntegration.inputUniqueIntegrationName(); + await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); - await cisIntegration.navigateToIntegrationCspList(); - await cisIntegration.clickFirstElementOnIntegrationTable(); - expect( - (await cisIntegration.getValueInEditPage( - CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.CLIENT_ID - )) === clientId - ).to.be(true); - expect( - (await cisIntegration.getValueInEditPage( - CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.TENANT_ID - )) === tenantId - ).to.be(true); - expect(await cisIntegration.getReplaceSecretButton('client-secret')).to.not.be(null); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + await cisIntegration.clickFirstElementOnIntegrationTable(); + expect( + (await cisIntegration.getValueInEditPage( + CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.CLIENT_ID + )) === clientId + ).to.be(true); + expect( + (await cisIntegration.getValueInEditPage( + CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.TENANT_ID + )) === tenantId + ).to.be(true); + expect(await cisIntegration.getReplaceSecretButton('client-secret')).to.not.be(null); + }); }); }); @@ -133,27 +146,30 @@ export default function (providerContext: FtrProviderContext) { CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.CLIENT_CERTIFICATE_PASSWORD, clientCertificatePassword ); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); - await cisIntegration.navigateToIntegrationCspList(); - await cisIntegration.clickFirstElementOnIntegrationTable(); - expect( - (await cisIntegration.getValueInEditPage( - CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.CLIENT_ID - )) === clientId - ).to.be(true); - expect( - (await cisIntegration.getValueInEditPage( - CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.TENANT_ID - )) === tenantId - ).to.be(true); - expect( - (await cisIntegration.getValueInEditPage( - CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.CLIENT_CERTIFICATE_PATH - )) === clientCertificatePath - ).to.be(true); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + await cisIntegration.clickFirstElementOnIntegrationTable(); + expect( + (await cisIntegration.getValueInEditPage( + CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.CLIENT_ID + )) === clientId + ).to.be(true); + expect( + (await cisIntegration.getValueInEditPage( + CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.TENANT_ID + )) === tenantId + ).to.be(true); + expect( + (await cisIntegration.getValueInEditPage( + CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.CLIENT_CERTIFICATE_PATH + )) === clientCertificatePath + ).to.be(true); + }); }); }); @@ -161,15 +177,18 @@ export default function (providerContext: FtrProviderContext) { it('Azure Single ARM Template Workflow', async () => { await cisIntegration.clickOptionButton(CIS_AZURE_OPTION_TEST_ID); await cisIntegration.clickOptionButton(CIS_AZURE_SINGLE_SUB_TEST_ID); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegrationAzure.getPostInstallArmTemplateModal()) !== undefined).to.be( - true - ); - expect( - (await cisIntegration.getUrlOnPostInstallModal()) === - 'https://azure.microsoft.com/en-us/get-started/azure-portal/resource-manager' - ); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegrationAzure.getPostInstallArmTemplateModal()) !== undefined).to.be( + true + ); + expect( + (await cisIntegration.getUrlOnPostInstallModal()) === + 'https://azure.microsoft.com/en-us/get-started/azure-portal/resource-manager' + ); + }); }); }); @@ -179,9 +198,12 @@ export default function (providerContext: FtrProviderContext) { await cisIntegration.clickOptionButton(CIS_AZURE_SINGLE_SUB_TEST_ID); await cisIntegration.clickOptionButton(CIS_AZURE_SETUP_FORMAT_TEST_SUBJECTS.MANUAL); await cisIntegration.selectValue(AZURE_CREDENTIAL_SELECTOR, 'managed_identity'); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + }); }); }); @@ -206,22 +228,25 @@ export default function (providerContext: FtrProviderContext) { CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.CLIENT_SECRET, clientSecret ); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); - await cisIntegration.navigateToIntegrationCspList(); - await cisIntegration.clickFirstElementOnIntegrationTable(); - expect( - (await cisIntegration.getValueInEditPage( - CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.CLIENT_ID - )) === clientId - ).to.be(true); - expect( - (await cisIntegration.getValueInEditPage( - CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.TENANT_ID - )) === tenantId - ).to.be(true); - expect(await cisIntegration.getReplaceSecretButton('client-secret')).to.not.be(null); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + await cisIntegration.clickFirstElementOnIntegrationTable(); + expect( + (await cisIntegration.getValueInEditPage( + CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.CLIENT_ID + )) === clientId + ).to.be(true); + expect( + (await cisIntegration.getValueInEditPage( + CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.TENANT_ID + )) === tenantId + ).to.be(true); + expect(await cisIntegration.getReplaceSecretButton('client-secret')).to.not.be(null); + }); }); }); @@ -251,27 +276,29 @@ export default function (providerContext: FtrProviderContext) { CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.CLIENT_CERTIFICATE_PASSWORD, clientCertificatePassword ); - + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); - await cisIntegration.navigateToIntegrationCspList(); - await cisIntegration.clickFirstElementOnIntegrationTable(); - expect( - (await cisIntegration.getValueInEditPage( - CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.CLIENT_ID - )) === clientId - ).to.be(true); - expect( - (await cisIntegration.getValueInEditPage( - CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.TENANT_ID - )) === tenantId - ).to.be(true); - expect( - (await cisIntegration.getValueInEditPage( - CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.CLIENT_CERTIFICATE_PATH - )) === clientCertificatePath - ).to.be(true); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + await cisIntegration.clickFirstElementOnIntegrationTable(); + expect( + (await cisIntegration.getValueInEditPage( + CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.CLIENT_ID + )) === clientId + ).to.be(true); + expect( + (await cisIntegration.getValueInEditPage( + CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.TENANT_ID + )) === tenantId + ).to.be(true); + expect( + (await cisIntegration.getValueInEditPage( + CIS_AZURE_INPUT_FIELDS_TEST_SUBJECTS.CLIENT_CERTIFICATE_PATH + )) === clientCertificatePath + ).to.be(true); + }); }); }); }); diff --git a/x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts b/x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts index 7f6f4e1cebfd0..1c7bf62c6c9a2 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/cis_integrations/cspm/cis_integration_gcp.ts @@ -24,8 +24,10 @@ const { // eslint-disable-next-line import/no-default-export export default function (providerContext: FtrProviderContext) { - const { getPageObjects } = providerContext; + const { getPageObjects, getService } = providerContext; const pageObjects = getPageObjects(['cloudPostureDashboard', 'cisAddIntegration', 'header']); + const retry = getService('retry'); + const saveIntegrationPolicyTimeout = 1000 * 30; // 30 seconds describe('Test adding Cloud Security Posture Integrations CSPM GCP', function () { this.tags(['cloud_security_posture_cis_integration_cspm_gcp']); @@ -65,11 +67,15 @@ export default function (providerContext: FtrProviderContext) { await cisIntegration.clickOptionButton(CIS_GCP_OPTION_TEST_ID); await cisIntegration.clickOptionButton(GCP_ORGANIZATION_TEST_ID); await cisIntegration.clickOptionButton(GCP_CLOUD_SHELL_TEST_ID); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegrationGcp.isPostInstallGoogleCloudShellModal(true)) === true).to.be( - true - ); + + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegrationGcp.isPostInstallGoogleCloudShellModal(true)) === true).to.be( + true + ); + }); }); it('Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are Project ID or Organization ID provided, it should use that value', async () => { @@ -80,16 +86,19 @@ export default function (providerContext: FtrProviderContext) { await cisIntegration.clickOptionButton(GCP_CLOUD_SHELL_TEST_ID); await cisIntegration.fillInTextField('project_id_test_id', projectName); await cisIntegration.fillInTextField('organization_id_test_id', organizationName); - + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect( - (await cisIntegrationGcp.isPostInstallGoogleCloudShellModal( - true, - organizationName, - projectName - )) === true - ).to.be(true); + + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect( + (await cisIntegrationGcp.isPostInstallGoogleCloudShellModal( + true, + organizationName, + projectName + )) === true + ).to.be(true); + }); }); it('Add Agent FLyout - Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are Project ID or Organization ID provided, it should use that value', async () => { @@ -103,40 +112,51 @@ export default function (providerContext: FtrProviderContext) { await cisIntegration.clickOptionButton(CIS_GCP_OPTION_TEST_ID); await cisIntegration.clickOptionButton(GCP_SINGLE_ACCOUNT_TEST_ID); await cisIntegration.clickOptionButton(GCP_CLOUD_SHELL_TEST_ID); - + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegrationGcp.isPostInstallGoogleCloudShellModal(false)) === true).to.be( - true - ); + + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect( + (await cisIntegrationGcp.isPostInstallGoogleCloudShellModal(false)) === true + ).to.be(true); + }); }); it('Hyperlink on PostInstallation Modal should have the correct URL', async () => { await cisIntegration.clickOptionButton(CIS_GCP_OPTION_TEST_ID); + await cisIntegration.inputUniqueIntegrationName(); + await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect( - (await cisIntegration.getUrlOnPostInstallModal()) === - 'https://cloud.google.com/shell/docs' - ); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect( + (await cisIntegration.getUrlOnPostInstallModal()) === + 'https://cloud.google.com/shell/docs' + ); + }); }); it('Clicking on Launch CloudShell on post intall modal should lead user to CloudShell page', async () => { await cisIntegration.clickOptionButton(CIS_GCP_OPTION_TEST_ID); + await cisIntegration.inputUniqueIntegrationName(); + await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect( - ( - await cisIntegration.clickLaunchAndGetCurrentUrl( - 'confirmGoogleCloudShellModalConfirmButton' - ) - ).includes('shell.cloud.google.com%2Fcloudshell') - ).to.be(true); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect( + ( + await cisIntegration.clickLaunchAndGetCurrentUrl( + 'confirmGoogleCloudShellModalConfirmButton' + ) + ).includes('shell.cloud.google.com%2Fcloudshell') + ).to.be(true); + }); }); }); // FLAKY: https://github.com/elastic/kibana/issues/190779 - describe.skip('CIS_GCP Organization Credentials File', () => { + describe('CIS_GCP Organization Credentials File', () => { it('CIS_GCP Organization Credentials File workflow', async () => { const projectName = 'PRJ_NAME_TEST'; const credentialFileName = 'CRED_FILE_TEST_NAME'; @@ -145,14 +165,18 @@ export default function (providerContext: FtrProviderContext) { await cisIntegration.clickOptionButton(GCP_MANUAL_TEST_ID); await cisIntegration.fillInTextField(PRJ_ID_TEST_ID, projectName); await cisIntegration.fillInTextField(CREDENTIALS_FILE_TEST_ID, credentialFileName); + await cisIntegration.inputUniqueIntegrationName(); + await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); - await cisIntegration.navigateToIntegrationCspList(); - expect( - (await cisIntegration.getFieldValueInEditPage(CREDENTIALS_FILE_TEST_ID)) === - credentialFileName - ).to.be(true); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + expect( + (await cisIntegration.getFieldValueInEditPage(CREDENTIALS_FILE_TEST_ID)) === + credentialFileName + ).to.be(true); + }); }); }); @@ -169,30 +193,38 @@ export default function (providerContext: FtrProviderContext) { 'credentials_json_option_test_id' ); await cisIntegration.fillInTextField(CREDENTIALS_JSON_TEST_ID, credentialJsonName); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); - await cisIntegration.navigateToIntegrationCspList(); - await cisIntegration.clickFirstElementOnIntegrationTable(); - expect( - (await cisIntegration.getSecretComponentReplaceButton( - 'button-replace-credentials-json' - )) !== undefined - ).to.be(true); + + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + await cisIntegration.clickFirstElementOnIntegrationTable(); + expect( + (await cisIntegration.getSecretComponentReplaceButton( + 'button-replace-credentials-json' + )) !== undefined + ).to.be(true); + }); }); }); // FLAKY: https://github.com/elastic/kibana/issues/191144 - describe.skip('CIS_GCP Single', () => { + describe('CIS_GCP Single', () => { it('Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are no Project ID, it should use default value', async () => { await cisIntegration.clickOptionButton(CIS_GCP_OPTION_TEST_ID); await cisIntegration.clickOptionButton(GCP_SINGLE_ACCOUNT_TEST_ID); await cisIntegration.clickOptionButton(GCP_CLOUD_SHELL_TEST_ID); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegrationGcp.isPostInstallGoogleCloudShellModal(false)) === true).to.be( - true - ); + + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect( + (await cisIntegrationGcp.isPostInstallGoogleCloudShellModal(false)) === true + ).to.be(true); + }); }); it('Post Installation Google Cloud Shell modal pops up after user clicks on Save button when adding integration, when there are Project ID, it should use that value', async () => { const projectName = 'PRJ_NAME_TEST'; @@ -200,12 +232,16 @@ export default function (providerContext: FtrProviderContext) { await cisIntegration.clickOptionButton(GCP_SINGLE_ACCOUNT_TEST_ID); await cisIntegration.clickOptionButton(GCP_CLOUD_SHELL_TEST_ID); await cisIntegration.fillInTextField('project_id_test_id', projectName); + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect( - (await cisIntegrationGcp.isPostInstallGoogleCloudShellModal(false, '', projectName)) === - true - ).to.be(true); + + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect( + (await cisIntegrationGcp.isPostInstallGoogleCloudShellModal(false, '', projectName)) === + true + ).to.be(true); + }); }); it('Add Agent FLyout - Organization ID field on cloud shell command should only be shown if user chose Google Cloud Shell, if user chose Single Account it shouldn not show up', async () => { await cisIntegration.navigateToIntegrationCspList(); @@ -235,14 +271,19 @@ export default function (providerContext: FtrProviderContext) { await cisIntegration.clickOptionButton(GCP_MANUAL_TEST_ID); await cisIntegration.fillInTextField(PRJ_ID_TEST_ID, projectName); await cisIntegration.fillInTextField(CREDENTIALS_FILE_TEST_ID, credentialFileName); + await cisIntegration.inputUniqueIntegrationName(); + await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); - await cisIntegration.navigateToIntegrationCspList(); - expect( - (await cisIntegration.getFieldValueInEditPage(CREDENTIALS_FILE_TEST_ID)) === - credentialFileName - ).to.be(true); + + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + expect( + (await cisIntegration.getFieldValueInEditPage(CREDENTIALS_FILE_TEST_ID)) === + credentialFileName + ).to.be(true); + }); }); it('Users are able to switch credentials_type from/to Credential JSON fields ', async () => { const credentialJsonName = 'CRED_JSON_TEST_NAME'; @@ -274,16 +315,20 @@ export default function (providerContext: FtrProviderContext) { 'credentials_json_option_test_id' ); await cisIntegration.fillInTextField(CREDENTIALS_JSON_TEST_ID, credentialJsonName); + await cisIntegration.inputUniqueIntegrationName(); + await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); - await cisIntegration.navigateToIntegrationCspList(); - await cisIntegration.clickFirstElementOnIntegrationTable(); - expect( - (await cisIntegration.getSecretComponentReplaceButton( - 'button-replace-credentials-json' - )) !== undefined - ).to.be(true); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + await cisIntegration.clickFirstElementOnIntegrationTable(); + expect( + (await cisIntegration.getSecretComponentReplaceButton( + 'button-replace-credentials-json' + )) !== undefined + ).to.be(true); + }); }); it('Users are able to switch credentials_type from/to Credential File fields ', async () => { const credentialFileName = 'CRED_FILE_TEST_NAME'; diff --git a/x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_k8s.ts b/x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_k8s.ts index 872c786e3ce28..b657b05be7ddd 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_k8s.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/cis_integrations/kspm/cis_integration_k8s.ts @@ -10,8 +10,10 @@ import type { FtrProviderContext } from '../../../ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function (providerContext: FtrProviderContext) { - const { getPageObjects } = providerContext; + const { getPageObjects, getService } = providerContext; const pageObjects = getPageObjects(['cloudPostureDashboard', 'cisAddIntegration', 'header']); + const retry = getService('retry'); + const saveIntegrationPolicyTimeout = 1000 * 30; // 30 seconds describe('Test adding Cloud Security Posture Integrations KSPM K8S', function () { this.tags(['cloud_security_posture_cis_integration_kspm_k8s']); @@ -24,14 +26,17 @@ export default function (providerContext: FtrProviderContext) { describe('KSPM K8S', () => { it('KSPM K8S Workflow', async () => { + await cisIntegration.inputUniqueIntegrationName(); await cisIntegration.clickSaveButton(); - await pageObjects.header.waitUntilLoadingHasFinished(); - expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); - await cisIntegration.navigateToIntegrationCspList(); - await cisIntegration.clickFirstElementOnIntegrationTable(); - expect( - (await cisIntegration.isOptionChecked('cisK8sTestId', 'cloudbeat/cis_k8s')) === 'true' - ).to.be(true); + await retry.tryForTime(saveIntegrationPolicyTimeout, async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + expect((await cisIntegration.getPostInstallModal()) !== undefined).to.be(true); + await cisIntegration.navigateToIntegrationCspList(); + await cisIntegration.clickFirstElementOnIntegrationTable(); + expect( + (await cisIntegration.isOptionChecked('cisK8sTestId', 'cloudbeat/cis_k8s')) === 'true' + ).to.be(true); + }); }); }); }); diff --git a/x-pack/test/cloud_security_posture_functional/pages/findings_onboarding.ts b/x-pack/test/cloud_security_posture_functional/pages/findings_onboarding.ts index 3bd88a6803b6b..2fa3edd920618 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/findings_onboarding.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/findings_onboarding.ts @@ -9,8 +9,9 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../ftr_provider_context'; // eslint-disable-next-line import/no-default-export -export default ({ getPageObjects }: FtrProviderContext) => { +export default ({ getPageObjects, getService }: FtrProviderContext) => { const PageObjects = getPageObjects(['common', 'findings', 'header']); + const retry = getService('retry'); describe('Findings Page onboarding', function () { this.tags(['cloud_security_posture_findings_onboarding']); @@ -18,6 +19,13 @@ export default ({ getPageObjects }: FtrProviderContext) => { let notInstalledCSP: typeof findings.notInstalledCSP; let thirdPartyIntegrationsNoMisconfigurationsFindingsPrompt: typeof findings.thirdPartyIntegrationsNoMisconfigurationsFindingsPrompt; + // wrapper function to waitUntilLoadingHasFinished + const navigateToMisconfigurationsWithRetry = async () => { + await retry.try(async () => { + await PageObjects.header.waitUntilLoadingHasFinished(); + }); + }; + beforeEach(async () => { findings = PageObjects.findings; notInstalledCSP = findings.notInstalledCSP; @@ -29,7 +37,7 @@ export default ({ getPageObjects }: FtrProviderContext) => { it('Misconfigurations - clicking on the `No integrations installed` prompt action button - `install cloud posture integration`: navigates to the CSPM integration installation page', async () => { await findings.navigateToMisconfigurations(); - await PageObjects.header.waitUntilLoadingHasFinished(); + await navigateToMisconfigurationsWithRetry(); const element = await notInstalledCSP.getElement(); expect(element).to.not.be(null); @@ -40,7 +48,7 @@ export default ({ getPageObjects }: FtrProviderContext) => { it('Misconfigurations - clicking on the `No integrations installed` prompt action button - `install kubernetes posture integration`: navigates to the KSPM integration installation page', async () => { await findings.navigateToMisconfigurations(); - await PageObjects.header.waitUntilLoadingHasFinished(); + await navigateToMisconfigurationsWithRetry(); const element = await notInstalledCSP.getElement(); expect(element).to.not.be(null); @@ -51,7 +59,7 @@ export default ({ getPageObjects }: FtrProviderContext) => { it('Misconfigurations - clicking on the `Third party integrations` prompt action button - `Wiz Integration`: navigates to the Wiz integration installation page', async () => { await findings.navigateToMisconfigurations(); - await PageObjects.header.waitUntilLoadingHasFinished(); + await navigateToMisconfigurationsWithRetry(); const element = await thirdPartyIntegrationsNoMisconfigurationsFindingsPrompt.getElement(); expect(element).to.not.be(null); From aa96382c716ea256424019a7dcd6fc4c1dd21aae Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Tue, 18 Feb 2025 08:56:38 -0500 Subject: [PATCH 61/78] [Fleet] Add UI to add additional datastreams permissions (#210935) --- .../steps/step_define_package_policy.test.tsx | 14 ++-- .../steps/step_define_package_policy.tsx | 75 ++++++++++++++++++- .../server/services/epm/data_streams/get.ts | 12 ++- 3 files changed, 90 insertions(+), 11 deletions(-) diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_define_package_policy.test.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_define_package_policy.test.tsx index 2d1b31bc6e000..9f6f626f11b30 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_define_package_policy.test.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_define_package_policy.test.tsx @@ -159,10 +159,9 @@ describe('StepDefinePackagePolicy', () => { await userEvent.click(renderResult.getByText('Advanced options').closest('button')!); await waitFor(() => { - expect(renderResult.getByTestId('comboBoxSearchInput')).toHaveAttribute( - 'placeholder', - 'ns' - ); + expect( + renderResult.getByTestId('packagePolicyNamespaceInput').querySelector('input') + ).toHaveAttribute('placeholder', 'ns'); }); }); @@ -175,10 +174,9 @@ describe('StepDefinePackagePolicy', () => { await userEvent.click(renderResult.getByText('Advanced options').closest('button')!); await waitFor(() => { - expect(renderResult.getByTestId('comboBoxSearchInput')).toHaveAttribute( - 'placeholder', - 'default' - ); + expect( + renderResult.getByTestId('packagePolicyNamespaceInput').querySelector('input') + ).toHaveAttribute('placeholder', 'default'); }); }); }); diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_define_package_policy.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_define_package_policy.tsx index f49d07f23ab13..df077a029fb4f 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_define_package_policy.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/step_define_package_policy.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { memo, useState, useEffect } from 'react'; +import React, { memo, useState, useEffect, useMemo } from 'react'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { @@ -21,13 +21,15 @@ import { EuiCallOut, EuiSpacer, EuiSelect, + type EuiComboBoxOptionOption, + EuiIconTip, } from '@elastic/eui'; import styled from 'styled-components'; import type { PackageInfo, NewPackagePolicy, RegistryVarsEntry } from '../../../../../types'; import { Loading } from '../../../../../components'; -import { useStartServices } from '../../../../../hooks'; +import { useGetEpmDatastreams, useStartServices } from '../../../../../hooks'; import { isAdvancedVar } from '../../services'; import type { PackagePolicyValidationResults } from '../../services'; @@ -90,6 +92,26 @@ export const StepDefinePackagePolicy: React.FunctionComponent<{ allowedOutputs, } = useOutputs(packagePolicy, packageInfo.name); + const { data: epmDatastreamsRes } = useGetEpmDatastreams(); + + const datastreamsOptions = useMemo>>( + () => + epmDatastreamsRes?.items?.map((item) => ({ + label: item.name, + value: item.name, + })) ?? [], + [epmDatastreamsRes] + ); + + const selectedDatastreamOptions = useMemo( + () => + packagePolicy?.additional_datastreams_permissions?.map((item) => ({ + label: item, + value: item, + })) ?? [], + [packagePolicy?.additional_datastreams_permissions] + ); + // Reset output if switching to agentless and the current // selected output is not allowed useEffect(() => { @@ -404,6 +426,55 @@ export const StepDefinePackagePolicy: React.FunctionComponent<{
+ + + } + position="right" + /> + ), + }} + /> + } + > + { + updatePackagePolicy({ + additional_datastreams_permissions: val.map((v) => v.label), + }); + }} + onCreateOption={(option) => { + const additionalPermissions = + packagePolicy.additional_datastreams_permissions ?? []; + + updatePackagePolicy({ + additional_datastreams_permissions: [...additionalPermissions, option], + }); + }} + placeholder={i18n.translate( + 'xpack.fleet.createPackagePolicy.stepConfigure.additionalPermissionsPlaceholder', + { + defaultMessage: 'Add a permission', + } + )} + /> + + {/* Advanced vars */} {advancedVars.map((varDef) => { const { name: varName, type: varType } = varDef; diff --git a/x-pack/platform/plugins/shared/fleet/server/services/epm/data_streams/get.ts b/x-pack/platform/plugins/shared/fleet/server/services/epm/data_streams/get.ts index 562a8280ca051..c93c0c309a3cc 100644 --- a/x-pack/platform/plugins/shared/fleet/server/services/epm/data_streams/get.ts +++ b/x-pack/platform/plugins/shared/fleet/server/services/epm/data_streams/get.ts @@ -11,6 +11,8 @@ import type { PackageDataStreamTypes } from '../../../../common/types'; import { dataStreamService } from '../../data_streams'; +const VALID_STREAM_TYPES = ['logs', 'metrics', 'traces', 'synthetics', 'profiling']; + export async function getDataStreams(options: { esClient: ElasticsearchClient; type?: PackageDataStreamTypes; @@ -25,12 +27,20 @@ export async function getDataStreams(options: { dataset: datasetQuery ? `*${datasetQuery}*` : '*', }); - const filteredDataStreams = uncategorisedOnly + let filteredDataStreams = uncategorisedOnly ? allDataStreams.filter((stream) => { return !stream._meta || !stream._meta.managed_by || stream._meta.managed_by !== 'fleet'; }) : allDataStreams; + filteredDataStreams = filteredDataStreams.filter((stream) => { + const isValidStreamType = VALID_STREAM_TYPES.some((streamType) => + stream.name.startsWith(streamType) + ); + + return isValidStreamType; + }); + const mappedDataStreams = filteredDataStreams.map((dataStream) => { return { name: dataStream.name }; }); From e6709dd78f0243c1defcfac4383dcfd2d6438368 Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Tue, 18 Feb 2025 08:57:08 -0500 Subject: [PATCH 62/78] [Fleet] Fix flaky agent status field (#211453) ## Summary Resolve https://github.com/elastic/kibana/issues/209008 It seems with ES > 9 that runtime field is sometimes failing, while I am not sure why, that PR make it more robust and should avoid test flakyness. --------- Co-authored-by: Julia Bardi <90178898+juliaElastic@users.noreply.github.com> Co-authored-by: Elastic Machine --- .../agents/build_status_runtime_field.test.ts | 6 +++--- .../agents/build_status_runtime_field.ts | 16 ++++++++++++++-- .../change_space_agent_policies.ts | 4 +--- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/x-pack/platform/plugins/shared/fleet/server/services/agents/build_status_runtime_field.test.ts b/x-pack/platform/plugins/shared/fleet/server/services/agents/build_status_runtime_field.test.ts index 983c0620fdc10..297824da83a87 100644 --- a/x-pack/platform/plugins/shared/fleet/server/services/agents/build_status_runtime_field.test.ts +++ b/x-pack/platform/plugins/shared/fleet/server/services/agents/build_status_runtime_field.test.ts @@ -56,7 +56,7 @@ describe('buildStatusRuntimeField', () => { "status": Object { "script": Object { "lang": "painless", - "source": " long lastCheckinMillis = doc['last_checkin'].size() > 0 ? doc['last_checkin'].value.toInstant().toEpochMilli() : ( doc['enrolled_at'].size() > 0 ? doc['enrolled_at'].value.toInstant().toEpochMilli() : -1 ); if (doc['active'].size() > 0 && doc['active'].value == false) { emit('unenrolled'); } else if (lastCheckinMillis > 0 && doc['policy_id'].size() > 0 && ['policy-1'].contains(doc['policy_id'].value) && lastCheckinMillis < 1234567590123L) {emit('inactive');} else if (doc.containsKey('audit_unenrolled_reason') && doc['audit_unenrolled_reason'].size() > 0 && doc['audit_unenrolled_reason'].value == 'uninstall'){emit('uninstalled');} else if (doc.containsKey('audit_unenrolled_reason') && doc['audit_unenrolled_reason'].size() > 0 && doc['audit_unenrolled_reason'].value == 'orphaned'){emit('orphaned');} else if ( lastCheckinMillis > 0 && lastCheckinMillis < 1234567590123L ) { emit('offline'); } else if ( doc['policy_revision_idx'].size() == 0 || ( doc['upgrade_started_at'].size() > 0 && doc['upgraded_at'].size() == 0 ) ) { emit('updating'); } else if (doc['last_checkin'].size() == 0) { emit('enrolling'); } else if (doc['unenrollment_started_at'].size() > 0) { emit('unenrolling'); } else if ( doc['last_checkin_status'].size() > 0 && doc['last_checkin_status'].value.toLowerCase() == 'error' ) { emit('error'); } else if ( doc['last_checkin_status'].size() > 0 && doc['last_checkin_status'].value.toLowerCase() == 'degraded' ) { emit('degraded'); } else { emit('online'); }", + "source": " long lastCheckinMillis = doc['last_checkin'].size() > 0 ? doc['last_checkin'].value.toInstant().toEpochMilli() : ( doc['enrolled_at'].size() > 0 ? doc['enrolled_at'].value.toInstant().toEpochMilli() : -1 ); if (doc['active'].size() > 0 && doc['active'].value == false) { emit('unenrolled'); } else if (lastCheckinMillis > 0 && doc.containsKey('policy_id') && doc['policy_id'].size() > 0 && ['policy-1'].contains(doc['policy_id'].value) && lastCheckinMillis < 1234567590123L) {emit('inactive');} else if (doc.containsKey('audit_unenrolled_reason') && doc['audit_unenrolled_reason'].size() > 0 && doc['audit_unenrolled_reason'].value == 'uninstall'){emit('uninstalled');} else if (doc.containsKey('audit_unenrolled_reason') && doc['audit_unenrolled_reason'].size() > 0 && doc['audit_unenrolled_reason'].value == 'orphaned'){emit('orphaned');} else if ( lastCheckinMillis > 0 && lastCheckinMillis < 1234567590123L ) { emit('offline'); } else if ( doc['policy_revision_idx'].size() == 0 || ( doc['upgrade_started_at'].size() > 0 && doc['upgraded_at'].size() == 0 ) ) { emit('updating'); } else if (doc['last_checkin'].size() == 0) { emit('enrolling'); } else if (doc['unenrollment_started_at'].size() > 0) { emit('unenrolling'); } else if ( doc['last_checkin_status'].size() > 0 && doc['last_checkin_status'].value.toLowerCase() == 'error' ) { emit('error'); } else if ( doc['last_checkin_status'].size() > 0 && doc['last_checkin_status'].value.toLowerCase() == 'degraded' ) { emit('degraded'); } else { emit('online'); }", }, "type": "keyword", }, @@ -76,7 +76,7 @@ describe('buildStatusRuntimeField', () => { "status": Object { "script": Object { "lang": "painless", - "source": " long lastCheckinMillis = doc['last_checkin'].size() > 0 ? doc['last_checkin'].value.toInstant().toEpochMilli() : ( doc['enrolled_at'].size() > 0 ? doc['enrolled_at'].value.toInstant().toEpochMilli() : -1 ); if (doc['active'].size() > 0 && doc['active'].value == false) { emit('unenrolled'); } else if (lastCheckinMillis > 0 && doc['policy_id'].size() > 0 && ['policy-1','policy-2'].contains(doc['policy_id'].value) && lastCheckinMillis < 1234567590123L) {emit('inactive');} else if (doc.containsKey('audit_unenrolled_reason') && doc['audit_unenrolled_reason'].size() > 0 && doc['audit_unenrolled_reason'].value == 'uninstall'){emit('uninstalled');} else if (doc.containsKey('audit_unenrolled_reason') && doc['audit_unenrolled_reason'].size() > 0 && doc['audit_unenrolled_reason'].value == 'orphaned'){emit('orphaned');} else if ( lastCheckinMillis > 0 && lastCheckinMillis < 1234567590123L ) { emit('offline'); } else if ( doc['policy_revision_idx'].size() == 0 || ( doc['upgrade_started_at'].size() > 0 && doc['upgraded_at'].size() == 0 ) ) { emit('updating'); } else if (doc['last_checkin'].size() == 0) { emit('enrolling'); } else if (doc['unenrollment_started_at'].size() > 0) { emit('unenrolling'); } else if ( doc['last_checkin_status'].size() > 0 && doc['last_checkin_status'].value.toLowerCase() == 'error' ) { emit('error'); } else if ( doc['last_checkin_status'].size() > 0 && doc['last_checkin_status'].value.toLowerCase() == 'degraded' ) { emit('degraded'); } else { emit('online'); }", + "source": " long lastCheckinMillis = doc['last_checkin'].size() > 0 ? doc['last_checkin'].value.toInstant().toEpochMilli() : ( doc['enrolled_at'].size() > 0 ? doc['enrolled_at'].value.toInstant().toEpochMilli() : -1 ); if (doc['active'].size() > 0 && doc['active'].value == false) { emit('unenrolled'); } else if (lastCheckinMillis > 0 && doc.containsKey('policy_id') && doc['policy_id'].size() > 0 && ['policy-1','policy-2'].contains(doc['policy_id'].value) && lastCheckinMillis < 1234567590123L) {emit('inactive');} else if (doc.containsKey('audit_unenrolled_reason') && doc['audit_unenrolled_reason'].size() > 0 && doc['audit_unenrolled_reason'].value == 'uninstall'){emit('uninstalled');} else if (doc.containsKey('audit_unenrolled_reason') && doc['audit_unenrolled_reason'].size() > 0 && doc['audit_unenrolled_reason'].value == 'orphaned'){emit('orphaned');} else if ( lastCheckinMillis > 0 && lastCheckinMillis < 1234567590123L ) { emit('offline'); } else if ( doc['policy_revision_idx'].size() == 0 || ( doc['upgrade_started_at'].size() > 0 && doc['upgraded_at'].size() == 0 ) ) { emit('updating'); } else if (doc['last_checkin'].size() == 0) { emit('enrolling'); } else if (doc['unenrollment_started_at'].size() > 0) { emit('unenrolling'); } else if ( doc['last_checkin_status'].size() > 0 && doc['last_checkin_status'].value.toLowerCase() == 'error' ) { emit('error'); } else if ( doc['last_checkin_status'].size() > 0 && doc['last_checkin_status'].value.toLowerCase() == 'degraded' ) { emit('degraded'); } else { emit('online'); }", }, "type": "keyword", }, @@ -124,7 +124,7 @@ describe('buildStatusRuntimeField', () => { "status": Object { "script": Object { "lang": "painless", - "source": " long lastCheckinMillis = doc['last_checkin'].size() > 0 ? doc['last_checkin'].value.toInstant().toEpochMilli() : ( doc['enrolled_at'].size() > 0 ? doc['enrolled_at'].value.toInstant().toEpochMilli() : -1 ); if (doc['active'].size() > 0 && doc['active'].value == false) { emit('unenrolled'); } else if (lastCheckinMillis > 0 && doc['policy_id'].size() > 0 && ['policy-1','policy-2'].contains(doc['policy_id'].value) && lastCheckinMillis < 1234567590123L || ['policy-3'].contains(doc['policy_id'].value) && lastCheckinMillis < 1234567490123L) {emit('inactive');} else if (doc.containsKey('audit_unenrolled_reason') && doc['audit_unenrolled_reason'].size() > 0 && doc['audit_unenrolled_reason'].value == 'uninstall'){emit('uninstalled');} else if (doc.containsKey('audit_unenrolled_reason') && doc['audit_unenrolled_reason'].size() > 0 && doc['audit_unenrolled_reason'].value == 'orphaned'){emit('orphaned');} else if ( lastCheckinMillis > 0 && lastCheckinMillis < 1234567590123L ) { emit('offline'); } else if ( doc['policy_revision_idx'].size() == 0 || ( doc['upgrade_started_at'].size() > 0 && doc['upgraded_at'].size() == 0 ) ) { emit('updating'); } else if (doc['last_checkin'].size() == 0) { emit('enrolling'); } else if (doc['unenrollment_started_at'].size() > 0) { emit('unenrolling'); } else if ( doc['last_checkin_status'].size() > 0 && doc['last_checkin_status'].value.toLowerCase() == 'error' ) { emit('error'); } else if ( doc['last_checkin_status'].size() > 0 && doc['last_checkin_status'].value.toLowerCase() == 'degraded' ) { emit('degraded'); } else { emit('online'); }", + "source": " long lastCheckinMillis = doc['last_checkin'].size() > 0 ? doc['last_checkin'].value.toInstant().toEpochMilli() : ( doc['enrolled_at'].size() > 0 ? doc['enrolled_at'].value.toInstant().toEpochMilli() : -1 ); if (doc['active'].size() > 0 && doc['active'].value == false) { emit('unenrolled'); } else if (lastCheckinMillis > 0 && doc.containsKey('policy_id') && doc['policy_id'].size() > 0 && ['policy-1','policy-2'].contains(doc['policy_id'].value) && lastCheckinMillis < 1234567590123L || ['policy-3'].contains(doc['policy_id'].value) && lastCheckinMillis < 1234567490123L) {emit('inactive');} else if (doc.containsKey('audit_unenrolled_reason') && doc['audit_unenrolled_reason'].size() > 0 && doc['audit_unenrolled_reason'].value == 'uninstall'){emit('uninstalled');} else if (doc.containsKey('audit_unenrolled_reason') && doc['audit_unenrolled_reason'].size() > 0 && doc['audit_unenrolled_reason'].value == 'orphaned'){emit('orphaned');} else if ( lastCheckinMillis > 0 && lastCheckinMillis < 1234567590123L ) { emit('offline'); } else if ( doc['policy_revision_idx'].size() == 0 || ( doc['upgrade_started_at'].size() > 0 && doc['upgraded_at'].size() == 0 ) ) { emit('updating'); } else if (doc['last_checkin'].size() == 0) { emit('enrolling'); } else if (doc['unenrollment_started_at'].size() > 0) { emit('unenrolling'); } else if ( doc['last_checkin_status'].size() > 0 && doc['last_checkin_status'].value.toLowerCase() == 'error' ) { emit('error'); } else if ( doc['last_checkin_status'].size() > 0 && doc['last_checkin_status'].value.toLowerCase() == 'degraded' ) { emit('degraded'); } else { emit('online'); }", }, "type": "keyword", }, diff --git a/x-pack/platform/plugins/shared/fleet/server/services/agents/build_status_runtime_field.ts b/x-pack/platform/plugins/shared/fleet/server/services/agents/build_status_runtime_field.ts index 3aaa56816be12..fb260c50512bb 100644 --- a/x-pack/platform/plugins/shared/fleet/server/services/agents/build_status_runtime_field.ts +++ b/x-pack/platform/plugins/shared/fleet/server/services/agents/build_status_runtime_field.ts @@ -26,9 +26,17 @@ const _buildInactiveCondition = (opts: { inactivityTimeouts: InactivityTimeouts; maxAgentPoliciesWithInactivityTimeout: number; field: (path: string) => string; + fieldPath: (path: string) => string; logger?: Logger; }): string | null => { - const { now, inactivityTimeouts, maxAgentPoliciesWithInactivityTimeout, field, logger } = opts; + const { + now, + inactivityTimeouts, + maxAgentPoliciesWithInactivityTimeout, + field, + fieldPath, + logger, + } = opts; // if there are no policies with inactivity timeouts, then no agents are inactive if (inactivityTimeouts.length === 0) { return null; @@ -70,7 +78,9 @@ const _buildInactiveCondition = (opts: { }) .join(' || '); - return `lastCheckinMillis > 0 && ${field('policy_id')}.size() > 0 && ${policyClauses}`; + return `lastCheckinMillis > 0 && doc.containsKey(${fieldPath('policy_id')}) && ${field( + 'policy_id' + )}.size() > 0 && ${policyClauses}`; }; function _buildSource( @@ -81,12 +91,14 @@ function _buildSource( ) { const normalizedPrefix = pathPrefix ? `${pathPrefix}${pathPrefix.endsWith('.') ? '' : '.'}` : ''; const field = (path: string) => `doc['${normalizedPrefix + path}']`; + const fieldPath = (path: string) => `'${normalizedPrefix + path}'`; const now = Date.now(); const agentIsInactiveCondition = _buildInactiveCondition({ now, inactivityTimeouts, maxAgentPoliciesWithInactivityTimeout, field, + fieldPath, logger, }); diff --git a/x-pack/test/fleet_api_integration/apis/space_awareness/change_space_agent_policies.ts b/x-pack/test/fleet_api_integration/apis/space_awareness/change_space_agent_policies.ts index cae40fd71aa9c..575e360af02b3 100644 --- a/x-pack/test/fleet_api_integration/apis/space_awareness/change_space_agent_policies.ts +++ b/x-pack/test/fleet_api_integration/apis/space_awareness/change_space_agent_policies.ts @@ -58,9 +58,7 @@ export default function (providerContext: FtrProviderContext) { const spaces = getService('spaces'); let TEST_SPACE_1: string; - // Failing: See https://github.com/elastic/kibana/issues/209008 - // Failing: See https://github.com/elastic/kibana/issues/209008 - describe.skip('change space agent policies', function () { + describe('change space agent policies', function () { skipIfNoDockerRegistry(providerContext); const apiClient = new SpaceTestApiClient(supertest); From 169230eb442a241a12c2957795dff6e5cf2c4293 Mon Sep 17 00:00:00 2001 From: Samiul Monir <150824886+Samiul-TheSoccerFan@users.noreply.github.com> Date: Tue, 18 Feb 2025 09:21:09 -0500 Subject: [PATCH 63/78] [Search] Adding tech preview for sprinkles model (#211519) ## Summary Adding `Tech Preview` for `rainbow sprinkles` model ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [X] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --- .../tabular_page.test.tsx | 38 +++++++++++++------ .../public/utils/reranker_helper.test.ts | 14 +++++++ .../public/utils/reranker_helper.ts | 22 +++++++---- 3 files changed, 54 insertions(+), 20 deletions(-) diff --git a/x-pack/solutions/search/plugins/search_inference_endpoints/public/components/all_inference_endpoints/tabular_page.test.tsx b/x-pack/solutions/search/plugins/search_inference_endpoints/public/components/all_inference_endpoints/tabular_page.test.tsx index a026088044e0a..85e8fe656d1c3 100644 --- a/x-pack/solutions/search/plugins/search_inference_endpoints/public/components/all_inference_endpoints/tabular_page.test.tsx +++ b/x-pack/solutions/search/plugins/search_inference_endpoints/public/components/all_inference_endpoints/tabular_page.test.tsx @@ -80,6 +80,14 @@ const inferenceEndpoints = [ return_documents: true, }, }, + { + inference_id: '.sparkles', + task_type: 'chat_completion', + service: 'elastic', + service_settings: { + model_id: 'rainbow-sprinkles', + }, + }, ] as InferenceAPIConfigResponse[]; jest.mock('../../hooks/use_delete_endpoint', () => ({ @@ -95,10 +103,11 @@ describe('When the tabular page is loaded', () => { const rows = screen.getAllByRole('row'); expect(rows[1]).toHaveTextContent('.elser-2-elasticsearch'); expect(rows[2]).toHaveTextContent('.multilingual-e5-small-elasticsearch'); - expect(rows[3]).toHaveTextContent('elastic-rerank'); - expect(rows[4]).toHaveTextContent('local-model'); - expect(rows[5]).toHaveTextContent('my-elser-model-05'); - expect(rows[6]).toHaveTextContent('third-party-model'); + expect(rows[3]).toHaveTextContent('.sparkles'); + expect(rows[4]).toHaveTextContent('elastic-rerank'); + expect(rows[5]).toHaveTextContent('local-model'); + expect(rows[6]).toHaveTextContent('my-elser-model-05'); + expect(rows[7]).toHaveTextContent('third-party-model'); }); it('should display all service and model ids in the table', () => { @@ -111,17 +120,20 @@ describe('When the tabular page is loaded', () => { expect(rows[2]).toHaveTextContent('Elasticsearch'); expect(rows[2]).toHaveTextContent('.multilingual-e5-small'); - expect(rows[3]).toHaveTextContent('Elasticsearch'); - expect(rows[3]).toHaveTextContent('.rerank-v1'); + expect(rows[3]).toHaveTextContent('Elastic'); + expect(rows[3]).toHaveTextContent('rainbow-sprinkles'); expect(rows[4]).toHaveTextContent('Elasticsearch'); - expect(rows[4]).toHaveTextContent('.own_model'); + expect(rows[4]).toHaveTextContent('.rerank-v1'); expect(rows[5]).toHaveTextContent('Elasticsearch'); - expect(rows[5]).toHaveTextContent('.elser_model_2'); + expect(rows[5]).toHaveTextContent('.own_model'); + + expect(rows[6]).toHaveTextContent('Elasticsearch'); + expect(rows[6]).toHaveTextContent('.elser_model_2'); - expect(rows[6]).toHaveTextContent('OpenAI'); - expect(rows[6]).toHaveTextContent('.own_model'); + expect(rows[7]).toHaveTextContent('OpenAI'); + expect(rows[7]).toHaveTextContent('.own_model'); }); it('should only disable delete action for preconfigured endpoints', () => { @@ -152,9 +164,10 @@ describe('When the tabular page is loaded', () => { const rows = screen.getAllByRole('row'); expect(rows[1]).toHaveTextContent(preconfigured); expect(rows[2]).toHaveTextContent(preconfigured); - expect(rows[3]).not.toHaveTextContent(preconfigured); + expect(rows[3]).toHaveTextContent(preconfigured); expect(rows[4]).not.toHaveTextContent(preconfigured); expect(rows[5]).not.toHaveTextContent(preconfigured); + expect(rows[6]).not.toHaveTextContent(preconfigured); }); it('should show tech preview badge only for reranker-v1 model', () => { @@ -166,8 +179,9 @@ describe('When the tabular page is loaded', () => { expect(rows[1]).not.toHaveTextContent(techPreview); expect(rows[2]).not.toHaveTextContent(techPreview); expect(rows[3]).toHaveTextContent(techPreview); - expect(rows[4]).not.toHaveTextContent(techPreview); + expect(rows[4]).toHaveTextContent(techPreview); expect(rows[5]).not.toHaveTextContent(techPreview); expect(rows[6]).not.toHaveTextContent(techPreview); + expect(rows[7]).not.toHaveTextContent(techPreview); }); }); diff --git a/x-pack/solutions/search/plugins/search_inference_endpoints/public/utils/reranker_helper.test.ts b/x-pack/solutions/search/plugins/search_inference_endpoints/public/utils/reranker_helper.test.ts index 3eb3fa46634db..18d998c613ee8 100644 --- a/x-pack/solutions/search/plugins/search_inference_endpoints/public/utils/reranker_helper.test.ts +++ b/x-pack/solutions/search/plugins/search_inference_endpoints/public/utils/reranker_helper.test.ts @@ -26,6 +26,20 @@ describe('Reranker Tech preview badge', () => { expect(isProviderTechPreview(mockProvider)).toEqual(true); }); + it('return true for rainbow-sprinkles', () => { + const elasticProviderServiceSettings = { + ...mockProvider.service_settings, + model_id: 'rainbow-sprinkles', + }; + const elasticProvider = { + ...mockProvider, + task_type: 'chat_completion', + service: 'elastic', + service_settings: elasticProviderServiceSettings, + } as any; + expect(isProviderTechPreview(elasticProvider)).toEqual(true); + }); + it('return false for other provider', () => { const otherProviderServiceSettings = { ...mockProvider.service_settings, diff --git a/x-pack/solutions/search/plugins/search_inference_endpoints/public/utils/reranker_helper.ts b/x-pack/solutions/search/plugins/search_inference_endpoints/public/utils/reranker_helper.ts index ac930971fa458..f0fa6d2368412 100644 --- a/x-pack/solutions/search/plugins/search_inference_endpoints/public/utils/reranker_helper.ts +++ b/x-pack/solutions/search/plugins/search_inference_endpoints/public/utils/reranker_helper.ts @@ -7,15 +7,21 @@ import { InferenceAPIConfigResponse } from '@kbn/ml-trained-models-utils'; export const isProviderTechPreview = (provider: InferenceAPIConfigResponse) => { - if (hasModelId(provider)) { - return provider.task_type === 'rerank' && provider.service_settings?.model_id?.startsWith('.'); + const { service_settings: serviceSettings, task_type: taskType } = provider; + const modelId = serviceSettings?.model_id; + + // If there's no model ID in service settings, it's not a tech preview + if (!modelId) { + return false; + } + + /* + For rerank task type, model ID starting with '.' indicates tech preview + Special case for 'rainbow-sprinkles' model + */ + if ((taskType === 'rerank' && modelId.startsWith('.')) || modelId === 'rainbow-sprinkles') { + return true; } return false; }; - -function hasModelId( - service: InferenceAPIConfigResponse -): service is Extract { - return 'model_id' in service.service_settings; -} From 729287f0e033609f68326557beb971498f3db4ea Mon Sep 17 00:00:00 2001 From: Kevin Delemme Date: Tue, 18 Feb 2025 09:47:56 -0500 Subject: [PATCH 64/78] chore(slo): link to SLO details page from create and update toast (#211475) --- .../translations/translations/fr-FR.json | 2 - .../translations/translations/ja-JP.json | 2 - .../translations/translations/zh-CN.json | 1 - .../slo/public/hooks/use_create_slo.tsx | 19 +++++-- .../{use_update_slo.ts => use_update_slo.tsx} | 52 ++++++++++++++++--- 5 files changed, 61 insertions(+), 15 deletions(-) rename x-pack/solutions/observability/plugins/slo/public/hooks/{use_update_slo.ts => use_update_slo.tsx} (55%) diff --git a/x-pack/platform/plugins/private/translations/translations/fr-FR.json b/x-pack/platform/plugins/private/translations/translations/fr-FR.json index bfbf74090e2cc..4419a27f5beda 100644 --- a/x-pack/platform/plugins/private/translations/translations/fr-FR.json +++ b/x-pack/platform/plugins/private/translations/translations/fr-FR.json @@ -40320,7 +40320,6 @@ "xpack.slo.slo.activeAlertsBadge.ariaLabel": "badge alertes actives", "xpack.slo.slo.activeAlertsBadge.label": "{count, plural, one {# alerte} other {# alertes}}", "xpack.slo.slo.activeAlertsBadge.tooltip": "{count, plural, one {# alerte de taux d'avancement} other {# alertes de taux d'avancement}}, cliquez pour afficher.", - "xpack.slo.slo.create.successNotification": "Le SLO a bien été créé : \"{name}\". {editSLO}", "xpack.slo.slo.delete.errorNotification": "Impossible de supprimer {name}", "xpack.slo.slo.delete.successNotification": "{name} supprimé", "xpack.slo.slo.deleteInstance.successNotification": "Suppression de {name} [instance : {instanceId}] réussie", @@ -40679,7 +40678,6 @@ "xpack.slo.timeWindowBadge.clickToFilter": "Cliquer pour filtrer par SLO {timeWindow}", "xpack.slo.toggleSLOView.euiButtonGroup.sloView": "Affichage SLO", "xpack.slo.update.errorNotification": "Un problème est survenu lors de la mise à jour de {name}", - "xpack.slo.update.successNotification": "Mise à jour de {name} réussie", "xpack.slo.useCreateSlo.editSLOLinkLabel": "Modifier le SLO", "xpack.slo.viewFormattedResourcesConfigsButtonLabel": "Voir les configurations des ressources formatées pour les SLO", "xpack.slo.wideChart.euiIcon.noResultsLabel": "aucun résultat", diff --git a/x-pack/platform/plugins/private/translations/translations/ja-JP.json b/x-pack/platform/plugins/private/translations/translations/ja-JP.json index bc1e1c98bb70a..a0d01311e5b31 100644 --- a/x-pack/platform/plugins/private/translations/translations/ja-JP.json +++ b/x-pack/platform/plugins/private/translations/translations/ja-JP.json @@ -40178,7 +40178,6 @@ "xpack.slo.slo.activeAlertsBadge.ariaLabel": "アクティブアラートバッジ", "xpack.slo.slo.activeAlertsBadge.label": "{count, plural, other {# 件のアラート}}", "xpack.slo.slo.activeAlertsBadge.tooltip": "{count, plural, other {#件のバーンレートアラート}}。表示するには、クリックしてください。", - "xpack.slo.slo.create.successNotification": "SLOが正常に作成されました:\"{name}\"。{editSLO}", "xpack.slo.slo.delete.errorNotification": "{name}を削除できませんでした", "xpack.slo.slo.delete.successNotification": "{name}を削除しました", "xpack.slo.slo.deleteInstance.successNotification": "{name} [インスタンス:{instanceId}]が削除されました", @@ -40536,7 +40535,6 @@ "xpack.slo.timeWindowBadge.clickToFilter": "クリックすると、{timeWindow} SLOでフィルタリングします", "xpack.slo.toggleSLOView.euiButtonGroup.sloView": "SLOビュー", "xpack.slo.update.errorNotification": "{name}の更新中にエラーが発生しました", - "xpack.slo.update.successNotification": "正常に\"{name}\"を更新しました", "xpack.slo.useCreateSlo.editSLOLinkLabel": "SLOの編集", "xpack.slo.viewFormattedResourcesConfigsButtonLabel": "SLOの書式設定されたリソース構成を表示", "xpack.slo.wideChart.euiIcon.noResultsLabel": "結果なし", diff --git a/x-pack/platform/plugins/private/translations/translations/zh-CN.json b/x-pack/platform/plugins/private/translations/translations/zh-CN.json index 8bd67350ef86e..68b511b504594 100644 --- a/x-pack/platform/plugins/private/translations/translations/zh-CN.json +++ b/x-pack/platform/plugins/private/translations/translations/zh-CN.json @@ -39960,7 +39960,6 @@ "xpack.slo.timeWindowBadge.clickToFilter": "单击以按 {timeWindow} SLO 筛选", "xpack.slo.toggleSLOView.euiButtonGroup.sloView": "SLO 视图", "xpack.slo.update.errorNotification": "更新 {name} 时出现问题", - "xpack.slo.update.successNotification": "已成功更新 {name}", "xpack.slo.useCreateSlo.editSLOLinkLabel": "编辑 SLO", "xpack.slo.viewFormattedResourcesConfigsButtonLabel": "查看 SLO 的格式化资源配置", "xpack.slo.wideChart.euiIcon.noResultsLabel": "无结果", diff --git a/x-pack/solutions/observability/plugins/slo/public/hooks/use_create_slo.tsx b/x-pack/solutions/observability/plugins/slo/public/hooks/use_create_slo.tsx index 2059c9b273592..fe1ac9a46553e 100644 --- a/x-pack/solutions/observability/plugins/slo/public/hooks/use_create_slo.tsx +++ b/x-pack/solutions/observability/plugins/slo/public/hooks/use_create_slo.tsx @@ -8,7 +8,12 @@ import React from 'react'; import { IHttpFetchError, ResponseErrorBody } from '@kbn/core/public'; import { encode } from '@kbn/rison'; -import type { CreateSLOInput, CreateSLOResponse, FindSLOResponse } from '@kbn/slo-schema'; +import { + ALL_VALUE, + type CreateSLOInput, + type CreateSLOResponse, + type FindSLOResponse, +} from '@kbn/slo-schema'; import { QueryKey, useMutation, useQueryClient } from '@tanstack/react-query'; import { EuiLink } from '@elastic/eui'; import { toMountPoint } from '@kbn/react-kibana-mount'; @@ -49,14 +54,15 @@ export function useCreateSlo() { queryClient.invalidateQueries({ queryKey: sloKeys.lists(), exact: false }); const sloEditUrl = http.basePath.prepend(paths.sloEdit(data.id)); + const sloViewUrl = http.basePath.prepend(paths.sloDetails(data.id, ALL_VALUE)); toasts.addSuccess( { title: toMountPoint( ), + viewSLO: ( + + {i18n.translate('xpack.slo.useCreateSlo.viewSLOLinkLabel', { + defaultMessage: 'View SLO', + })} + + ), }} /> , diff --git a/x-pack/solutions/observability/plugins/slo/public/hooks/use_update_slo.ts b/x-pack/solutions/observability/plugins/slo/public/hooks/use_update_slo.tsx similarity index 55% rename from x-pack/solutions/observability/plugins/slo/public/hooks/use_update_slo.ts rename to x-pack/solutions/observability/plugins/slo/public/hooks/use_update_slo.tsx index 2050b9cc101a7..402540d864abd 100644 --- a/x-pack/solutions/observability/plugins/slo/public/hooks/use_update_slo.ts +++ b/x-pack/solutions/observability/plugins/slo/public/hooks/use_update_slo.tsx @@ -5,25 +5,38 @@ * 2.0. */ +import { EuiLink } from '@elastic/eui'; import { IHttpFetchError, ResponseErrorBody } from '@kbn/core/public'; import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { toMountPoint } from '@kbn/react-kibana-mount'; import { encode } from '@kbn/rison'; -import type { FindSLOResponse, UpdateSLOInput, UpdateSLOResponse } from '@kbn/slo-schema'; +import { RedirectAppLinks } from '@kbn/shared-ux-link-redirect-app'; +import { + ALL_VALUE, + type FindSLOResponse, + type UpdateSLOInput, + type UpdateSLOResponse, +} from '@kbn/slo-schema'; import { QueryKey, useMutation, useQueryClient } from '@tanstack/react-query'; +import React from 'react'; import { paths } from '../../common/locators/paths'; -import { useKibana } from './use_kibana'; import { sloKeys } from './query_key_factory'; +import { useKibana } from './use_kibana'; import { usePluginContext } from './use_plugin_context'; type ServerError = IHttpFetchError; export function useUpdateSlo() { const { + i18n: i18nStart, + theme, application: { navigateToUrl }, http, notifications: { toasts }, } = useKibana().services; const queryClient = useQueryClient(); + const services = useKibana().services; const { sloClient } = usePluginContext(); return useMutation< @@ -39,14 +52,39 @@ export function useUpdateSlo() { }); }, { - onSuccess: (_data, { slo: { name } }) => { + onSuccess: (data, { slo: { name } }) => { queryClient.invalidateQueries({ queryKey: sloKeys.lists(), exact: false }); + const sloViewUrl = http.basePath.prepend(paths.sloDetails(data.id, ALL_VALUE)); + toasts.addSuccess( - i18n.translate('xpack.slo.update.successNotification', { - defaultMessage: 'Successfully updated {name}', - values: { name }, - }) + { + title: toMountPoint( + + + {i18n.translate('xpack.slo.useUpdateSlo.viewSLOLinkLabel', { + defaultMessage: 'View SLO', + })} + + ), + }} + /> + , + { + i18n: i18nStart, + theme, + } + ), + }, + { + toastLifeTimeMs: 30000, + } ); }, onError: (error, { slo, sloId }, context) => { From f5c9529e37ea3dddca4db748bfa7e2391303f87e Mon Sep 17 00:00:00 2001 From: Ido Cohen <90558359+CohenIdo@users.noreply.github.com> Date: Tue, 18 Feb 2025 16:49:32 +0200 Subject: [PATCH 65/78] Deprecate universal entity --- .buildkite/ftr_security_stateful_configs.yml | 1 - .github/CODEOWNERS | 1 - oas_docs/output/kibana.serverless.yaml | 2 - oas_docs/output/kibana.yaml | 2 - .../asset_criticality/common.gen.ts | 2 +- .../asset_criticality/common.schema.yaml | 1 - .../entity_store/common.gen.ts | 2 +- .../entity_store/common.schema.yaml | 1 - .../asset_criticality/utils.ts | 8 +- .../entity_analytics/risk_engine/utils.ts | 8 +- .../common/entity_analytics/types.ts | 3 - .../common/entity_analytics/utils.test.ts | 27 +-- .../common/entity_analytics/utils.ts | 5 - .../common/experimental_features.ts | 6 - .../security_solution/risk_score/all/index.ts | 2 - ...alytics_api_2023_10_31.bundled.schema.yaml | 2 - ...alytics_api_2023_10_31.bundled.schema.yaml | 2 - .../components/entity_store/helpers.tsx | 1 - .../flyout/entity_details/shared/constants.ts | 2 - .../entity_details/universal_right/header.tsx | 1 + .../asset_inventory_data_client.ts | 6 +- .../asset_inventory/ingest_pipelines/index.ts | 8 - .../keyword_builder_ingest_pipeline.ts | 167 ------------------ .../asset_criticality/helpers.ts | 1 - .../entity_definitions/constants.ts | 2 - .../entity_descriptions/index.ts | 1 - .../entity_descriptions/universal.ts | 96 ---------- .../entity_store_data_client.test.ts | 9 - .../entity_store/entity_store_data_client.ts | 27 --- .../installation/engine_description.ts | 2 - .../configs/ess.config.ts | 28 --- .../trial_license_complete_tier/index.ts | 14 -- .../keyword_builder_ingest_pipeline.ts | 64 ------- .../entity_store/utils/ingest.ts | 42 ----- .../asset_inventory_pipeline.ts | 157 ---------------- .../trial_license_complete_tier/index.ts | 1 - 36 files changed, 7 insertions(+), 697 deletions(-) delete mode 100644 x-pack/solutions/security/plugins/security_solution/server/lib/asset_inventory/ingest_pipelines/index.ts delete mode 100644 x-pack/solutions/security/plugins/security_solution/server/lib/asset_inventory/ingest_pipelines/keyword_builder_ingest_pipeline.ts delete mode 100644 x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_definitions/entity_descriptions/universal.ts delete mode 100644 x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/trial_license_complete_tier/configs/ess.config.ts delete mode 100644 x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/trial_license_complete_tier/index.ts delete mode 100644 x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/trial_license_complete_tier/keyword_builder_ingest_pipeline.ts delete mode 100644 x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/utils/ingest.ts delete mode 100644 x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/trial_license_complete_tier/asset_inventory_pipeline.ts diff --git a/.buildkite/ftr_security_stateful_configs.yml b/.buildkite/ftr_security_stateful_configs.yml index 269be53f635bd..9dcc4cba31b4f 100644 --- a/.buildkite/ftr_security_stateful_configs.yml +++ b/.buildkite/ftr_security_stateful_configs.yml @@ -106,7 +106,6 @@ enabled: - x-pack/test/cloud_security_posture_functional/data_views/config.ts - x-pack/test/automatic_import_api_integration/apis/config_basic.ts - x-pack/test/automatic_import_api_integration/apis/config_graphs.ts - - x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/trial_license_complete_tier/configs/ess.config.ts - x-pack/test/spaces_api_integration/deployment_agnostic/spaces_only/config.ts - x-pack/test/spaces_api_integration/deployment_agnostic/security_and_spaces/stateful.config_basic.ts - x-pack/test/spaces_api_integration/deployment_agnostic/security_and_spaces/stateful.config_trial.ts diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index eb31f59db49cd..e8b46ccd99f7d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -2540,7 +2540,6 @@ x-pack/solutions/security/plugins/security_solution/public/common/components/ses x-pack/solutions/security/plugins/security_solution/public/cloud_defend @elastic/kibana-cloud-security-posture x-pack/solutions/security/plugins/security_solution/public/cloud_security_posture @elastic/kibana-cloud-security-posture x-pack/solutions/security/plugins/security_solution/public/kubernetes @elastic/kibana-cloud-security-posture -x-pack/test/security_solution_api_integration/test_suites/asset_inventory @elastic/kibana-cloud-security-posture x-pack/solutions/security/plugins/security_solution/server/lib/asset_inventory @elastic/kibana-cloud-security-posture ## Fleet plugin (co-owned with Fleet team) diff --git a/oas_docs/output/kibana.serverless.yaml b/oas_docs/output/kibana.serverless.yaml index d53c24740a06b..f03b38ccb4125 100644 --- a/oas_docs/output/kibana.serverless.yaml +++ b/oas_docs/output/kibana.serverless.yaml @@ -52265,7 +52265,6 @@ components: - user - host - service - - universal type: string Security_Entity_Analytics_API_HostEntity: type: object @@ -52341,7 +52340,6 @@ components: - host.name - user.name - service.name - - related.entity type: string Security_Entity_Analytics_API_IndexPattern: type: string diff --git a/oas_docs/output/kibana.yaml b/oas_docs/output/kibana.yaml index 4ec2afae2b5e7..0b01543336d47 100644 --- a/oas_docs/output/kibana.yaml +++ b/oas_docs/output/kibana.yaml @@ -59032,7 +59032,6 @@ components: - user - host - service - - universal type: string Security_Entity_Analytics_API_HostEntity: type: object @@ -59108,7 +59107,6 @@ components: - host.name - user.name - service.name - - related.entity type: string Security_Entity_Analytics_API_IndexPattern: type: string diff --git a/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.gen.ts index 2c9cc0760f210..acae48846c82c 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.gen.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.gen.ts @@ -17,7 +17,7 @@ import { z } from '@kbn/zod'; export type IdField = z.infer; -export const IdField = z.enum(['host.name', 'user.name', 'service.name', 'related.entity']); +export const IdField = z.enum(['host.name', 'user.name', 'service.name']); export type IdFieldEnum = typeof IdField.enum; export const IdFieldEnum = IdField.enum; diff --git a/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.schema.yaml index 97485bb2c6605..32bbfc5122efb 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.schema.yaml +++ b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/asset_criticality/common.schema.yaml @@ -29,7 +29,6 @@ components: - 'host.name' - 'user.name' - 'service.name' - - 'related.entity' AssetCriticalityRecordIdParts: type: object properties: diff --git a/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/common.gen.ts b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/common.gen.ts index 628d0fb295a8e..f1cbc070792f8 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/common.gen.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/common.gen.ts @@ -17,7 +17,7 @@ import { z } from '@kbn/zod'; export type EntityType = z.infer; -export const EntityType = z.enum(['user', 'host', 'service', 'universal']); +export const EntityType = z.enum(['user', 'host', 'service']); export type EntityTypeEnum = typeof EntityType.enum; export const EntityTypeEnum = EntityType.enum; diff --git a/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/common.schema.yaml b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/common.schema.yaml index 4bcfba9fec891..82fc5b379a70c 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/common.schema.yaml +++ b/x-pack/solutions/security/plugins/security_solution/common/api/entity_analytics/entity_store/common.schema.yaml @@ -12,7 +12,6 @@ components: - user - host - service - - universal EngineDescriptor: type: object diff --git a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/utils.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/utils.ts index 697ca1858ef23..ae3b7fe8fc075 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/utils.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/asset_criticality/utils.ts @@ -7,17 +7,11 @@ import type { ExperimentalFeatures } from '../../experimental_features'; import { getAllEntityTypes, getDisabledEntityTypes } from '../utils'; -import { EntityType } from '../types'; - -const ASSET_CRITICALITY_UNAVAILABLE_TYPES = [EntityType.universal]; // TODO delete this function when the universal entity support is added export const getAssetCriticalityEntityTypes = (experimentalFeatures: ExperimentalFeatures) => { const allEntityTypes = getAllEntityTypes(); const disabledEntityTypes = getDisabledEntityTypes(experimentalFeatures); - return allEntityTypes.filter( - (value) => - !disabledEntityTypes.includes(value) && !ASSET_CRITICALITY_UNAVAILABLE_TYPES.includes(value) - ); + return allEntityTypes.filter((value) => !disabledEntityTypes.includes(value)); }; diff --git a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/utils.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/utils.ts index 005bfca6644cf..af38542da14f1 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/utils.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/risk_engine/utils.ts @@ -6,7 +6,6 @@ */ import * as t from 'io-ts'; -import { EntityType } from '../types'; import { getAllEntityTypes, getDisabledEntityTypes } from '../utils'; import type { ExperimentalFeatures } from '../../experimental_features'; @@ -28,15 +27,10 @@ export function fromEnum( ); } -const RISK_ENGINE_UNAVAILABLE_TYPES = [EntityType.universal]; - // TODO delete this function when the universal entity support is added export const getRiskEngineEntityTypes = (experimentalFeatures: ExperimentalFeatures) => { const allEntityTypes = getAllEntityTypes(); const disabledEntityTypes = getDisabledEntityTypes(experimentalFeatures); - return allEntityTypes.filter( - (value) => - !disabledEntityTypes.includes(value) && !RISK_ENGINE_UNAVAILABLE_TYPES.includes(value) - ); + return allEntityTypes.filter((value) => !disabledEntityTypes.includes(value)); }; diff --git a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/types.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/types.ts index ff8047da9877a..a47dd4dd18903 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/types.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/types.ts @@ -15,19 +15,16 @@ export enum EntityType { user = 'user', host = 'host', service = 'service', - universal = 'universal', } export enum EntityIdentifierFields { hostName = 'host.name', userName = 'user.name', serviceName = 'service.name', - universal = 'related.entity', } export const EntityTypeToIdentifierField: Record = { [EntityType.host]: EntityIdentifierFields.hostName, [EntityType.user]: EntityIdentifierFields.userName, [EntityType.service]: EntityIdentifierFields.serviceName, - [EntityType.universal]: EntityIdentifierFields.universal, }; diff --git a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/utils.test.ts index 4a878669c6f61..205f43ca0dfda 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/utils.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/utils.test.ts @@ -4,13 +4,8 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - -import { getAllEntityTypes, getDisabledEntityTypes } from './utils'; +import { getAllEntityTypes } from './utils'; import { EntityType } from './types'; -import type { ExperimentalFeatures } from '../experimental_features'; -import { mockGlobalState } from '../../public/common/mock'; - -const mockedExperimentalFeatures = mockGlobalState.app.enableExperimental; describe('utils', () => { describe('getAllEntityTypes', () => { @@ -19,24 +14,4 @@ describe('utils', () => { expect(entityTypes).toEqual(Object.values(EntityType)); }); }); - - describe('getDisabledEntityTypes', () => { - it('should return disabled entity types when assetInventoryStoreEnabled is false', () => { - const experimentalFeatures: ExperimentalFeatures = { - ...mockedExperimentalFeatures, - assetInventoryStoreEnabled: false, - }; - const disabledEntityTypes = getDisabledEntityTypes(experimentalFeatures); - expect(disabledEntityTypes).toEqual([EntityType.universal]); - }); - - it('should return no disabled entity types when both features are true', () => { - const experimentalFeatures: ExperimentalFeatures = { - ...mockedExperimentalFeatures, - assetInventoryStoreEnabled: true, - }; - const disabledEntityTypes = getDisabledEntityTypes(experimentalFeatures); - expect(disabledEntityTypes).toEqual([]); - }); - }); }); diff --git a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/utils.ts b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/utils.ts index 062f0909b0231..26e116ec28bd8 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/utils.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/entity_analytics/utils.ts @@ -13,11 +13,6 @@ export const getDisabledEntityTypes = ( experimentalFeatures: ExperimentalFeatures ): EntityType[] => { const disabledEntityTypes: EntityType[] = []; - const isUniversalEntityStoreEnabled = experimentalFeatures.assetInventoryStoreEnabled; - - if (!isUniversalEntityStoreEnabled) { - disabledEntityTypes.push(EntityType.universal); - } return disabledEntityTypes; }; diff --git a/x-pack/solutions/security/plugins/security_solution/common/experimental_features.ts b/x-pack/solutions/security/plugins/security_solution/common/experimental_features.ts index 218f62d181108..1d5aea12949d7 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/experimental_features.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/experimental_features.ts @@ -262,12 +262,6 @@ export const allowedExperimentalValues = Object.freeze({ */ crowdstrikeRunScriptEnabled: true, - /** - * Enables the Asset Inventory Entity Store feature. - * Allows initializing the Universal Entity Store via the API. - */ - assetInventoryStoreEnabled: false, - /** * Enables the Asset Inventory feature */ diff --git a/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/risk_score/all/index.ts b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/risk_score/all/index.ts index 9f31484a430ab..0062ed6c061df 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/risk_score/all/index.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/search_strategy/security_solution/risk_score/all/index.ts @@ -93,12 +93,10 @@ export const EntityTypeToLevelField: Record = { [EntityType.host]: RiskScoreFields.hostRisk, [EntityType.user]: RiskScoreFields.userRisk, [EntityType.service]: RiskScoreFields.serviceRisk, - [EntityType.universal]: RiskScoreFields.unsupported, // We don't calculate risk for the universal entity }; export const EntityTypeToScoreField: Record = { [EntityType.host]: RiskScoreFields.hostRiskScore, [EntityType.user]: RiskScoreFields.userRiskScore, [EntityType.service]: RiskScoreFields.serviceRiskScore, - [EntityType.universal]: RiskScoreFields.unsupported, // We don't calculate risk for the universal entity }; diff --git a/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml b/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml index 28d3927a98c12..999c2bdeb1fb7 100644 --- a/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml +++ b/x-pack/solutions/security/plugins/security_solution/docs/openapi/ess/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml @@ -1224,7 +1224,6 @@ components: - user - host - service - - universal type: string HostEntity: type: object @@ -1300,7 +1299,6 @@ components: - host.name - user.name - service.name - - related.entity type: string IndexPattern: type: string diff --git a/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml b/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml index 960e47a3e5f36..38565d2682036 100644 --- a/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml +++ b/x-pack/solutions/security/plugins/security_solution/docs/openapi/serverless/security_solution_entity_analytics_api_2023_10_31.bundled.schema.yaml @@ -1224,7 +1224,6 @@ components: - user - host - service - - universal type: string HostEntity: type: object @@ -1300,7 +1299,6 @@ components: - host.name - user.name - service.name - - related.entity type: string IndexPattern: type: string diff --git a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/helpers.tsx b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/helpers.tsx index 3ae178b22ac5a..a8096fda7b09a 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/helpers.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/entity_analytics/components/entity_store/helpers.tsx @@ -35,7 +35,6 @@ export const EntityIconByType: Record = { [EntityType.user]: 'user', [EntityType.host]: 'storage', [EntityType.service]: 'node', - [EntityType.universal]: 'globe', // random value since we don't support universal entity type }; export const sourceFieldToText = (source: string) => { diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/constants.ts b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/constants.ts index 64428b35056e0..2c25420a752d1 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/constants.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/shared/constants.ts @@ -35,7 +35,6 @@ export const EntityPanelKeyByType: Record = { [EntityType.host]: HostPanelKey, [EntityType.user]: UserPanelKey, [EntityType.service]: ServicePanelKey, - [EntityType.universal]: undefined, // TODO create universal flyout? }; // TODO rename all params and merged them as 'entityName' @@ -43,5 +42,4 @@ export const EntityPanelParamByType: Record = { [EntityType.host]: 'hostName', [EntityType.user]: 'userName', [EntityType.service]: 'serviceName', - [EntityType.universal]: undefined, // TODO create universal flyout? }; diff --git a/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/universal_right/header.tsx b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/universal_right/header.tsx index 5aee5f15930d1..2aa961882d408 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/universal_right/header.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/flyout/entity_details/universal_right/header.tsx @@ -29,6 +29,7 @@ export const UniversalEntityFlyoutHeader = ({ entity }: UniversalEntityFlyoutHea + {/* @ts-ignore Fix it once genetric entity is introduce*/} diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/asset_inventory/asset_inventory_data_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/asset_inventory/asset_inventory_data_client.ts index 96d397ed252b5..b3f20b5d545f0 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/asset_inventory/asset_inventory_data_client.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/asset_inventory/asset_inventory_data_client.ts @@ -34,11 +34,7 @@ export class AssetInventoryDataClient { // Initializes the asset inventory by validating experimental feature flags and triggering asynchronous setup. public async init() { - const { experimentalFeatures, logger } = this.options; - - if (!experimentalFeatures.assetInventoryStoreEnabled) { - throw new Error('Universal entity store is not enabled'); - } + const { logger } = this.options; logger.debug(`Initializing asset inventory`); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/asset_inventory/ingest_pipelines/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/asset_inventory/ingest_pipelines/index.ts deleted file mode 100644 index 41c9c45587e1c..0000000000000 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/asset_inventory/ingest_pipelines/index.ts +++ /dev/null @@ -1,8 +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 * from './keyword_builder_ingest_pipeline'; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/asset_inventory/ingest_pipelines/keyword_builder_ingest_pipeline.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/asset_inventory/ingest_pipelines/keyword_builder_ingest_pipeline.ts deleted file mode 100644 index 5b2ca91be98bb..0000000000000 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/asset_inventory/ingest_pipelines/keyword_builder_ingest_pipeline.ts +++ /dev/null @@ -1,167 +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 type { ElasticsearchClient, Logger } from '@kbn/core/server'; -import type { IngestProcessorContainer } from '@elastic/elasticsearch/lib/api/types'; - -const PIPELINE_ID = 'entity-keyword-builder@platform'; - -export const buildIngestPipeline = (): IngestProcessorContainer[] => { - return [ - { - script: { - lang: 'painless', - on_failure: [ - { - set: { - field: 'error.message', - value: - 'Processor {{ _ingest.on_failure_processor_type }} with tag {{ _ingest.on_failure_processor_tag }} in pipeline {{ _ingest.on_failure_pipeline }} failed with message {{ _ingest.on_failure_message }}', - }, - }, - ], - - // There are two layers of language to string scape on this script. - // - One is in javascript - // - Another one is in painless. - // - // .e.g, in painless we want the following line: - // entry.getKey().replace("\"", "\\\""); - // - // To do so we must scape each backslash in javascript, otherwise the backslashes will only scape the next character - // and the backslashes won't end up in the painless layer - // - // The code then becomes: - // entry.getKey().replace("\\"", "\\\\\\""); - // That is one extra backslash per backslash (there is no need to scape quotes in the javascript layer) - source: ` - String jsonFromMap(Map map) { - StringBuilder json = new StringBuilder("{"); - boolean first = true; - for (entry in map.entrySet()) { - if (!first) { - json.append(","); - } - first = false; - String key = entry.getKey().replace("\\"", "\\\\\\""); - Object value = entry.getValue(); - json.append("\\"").append(key).append("\\":"); - - if (value instanceof String) { - String escapedValue = ((String) value).replace("\\"", "\\\\\\"").replace("=", ":"); - json.append("\\"").append(escapedValue).append("\\""); - } else if (value instanceof Map) { - json.append(jsonFromMap((Map) value)); - } else if (value instanceof List) { - json.append(jsonFromList((List) value)); - } else if (value instanceof Boolean || value instanceof Number) { - json.append(value.toString()); - } else { - // For other types, treat as string - String escapedValue = value.toString().replace("\\"", "\\\\\\"").replace("=", ":"); - json.append("\\"").append(escapedValue).append("\\""); - } - } - json.append("}"); - return json.toString(); - } - - String jsonFromList(List list) { - StringBuilder json = new StringBuilder("["); - boolean first = true; - for (item in list) { - if (!first) { - json.append(","); - } - first = false; - if (item instanceof String) { - String escapedItem = ((String) item).replace("\\"", "\\\\\\"").replace("=", ":"); - json.append("\\"").append(escapedItem).append("\\""); - } else if (item instanceof Map) { - json.append(jsonFromMap((Map) item)); - } else if (item instanceof List) { - json.append(jsonFromList((List) item)); - } else if (item instanceof Boolean || item instanceof Number) { - json.append(item.toString()); - } else { - // For other types, treat as string - String escapedItem = item.toString().replace("\\"", "\\\\\\"").replace("=", ":"); - json.append("\\"").append(escapedItem).append("\\""); - } - } - json.append("]"); - return json.toString(); - } - - if (ctx.entities?.metadata == null) { - return; - } - - def keywords = []; - for (key in ctx.entities.metadata.keySet()) { - def value = ctx.entities.metadata[key]; - def metadata = jsonFromMap([key: value]); - keywords.add(metadata); - } - - ctx['entities']['keyword'] = keywords; - `, - }, - }, - { - set: { - field: 'event.ingested', - value: '{{{_ingest.timestamp}}}', - }, - }, - ]; -}; - -// developing the pipeline is a bit tricky, so we have a debug mode -// set xpack.securitySolution.entityAnalytics.entityStore.developer.pipelineDebugMode -// to true to keep the enrich field and the context field in the document to help with debugging. -export const createKeywordBuilderPipeline = async ({ - logger, - esClient, -}: { - logger: Logger; - esClient: ElasticsearchClient; -}) => { - const pipeline = { - id: PIPELINE_ID, - body: { - _meta: { - managed_by: 'entity_store', - managed: true, - }, - description: `Serialize entities.metadata into a keyword field`, - processors: buildIngestPipeline(), - }, - }; - - logger.debug(`Attempting to create pipeline: ${JSON.stringify(pipeline)}`); - - await esClient.ingest.putPipeline(pipeline); -}; - -export const deleteKeywordBuilderPipeline = ({ - logger, - esClient, -}: { - logger: Logger; - esClient: ElasticsearchClient; -}) => { - logger.debug(`Attempting to delete pipeline: ${PIPELINE_ID}`); - return esClient.ingest.deletePipeline( - { - id: PIPELINE_ID, - }, - { - ignore: [404], - } - ); -}; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.ts index caff482f139c9..ce249fb75909d 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/asset_criticality/helpers.ts @@ -82,7 +82,6 @@ const entityTypeByIdField = { 'host.name': 'host', 'user.name': 'user', 'service.name': 'service', - 'related.entity': 'universal', } as const; export const getImplicitEntityFields = (record: AssetCriticalityUpsertWithDeleted) => { diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_definitions/constants.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_definitions/constants.ts index c3665155c5ac7..a934b186f875e 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_definitions/constants.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_definitions/constants.ts @@ -8,7 +8,6 @@ import type { EntityType } from '../../../../../common/api/entity_analytics/entity_store'; import { HOST_DEFINITION_VERSION, - UNIVERSAL_DEFINITION_VERSION, USER_DEFINITION_VERSION, SERVICE_DEFINITION_VERSION, } from './entity_descriptions'; @@ -16,7 +15,6 @@ import { export const VERSIONS_BY_ENTITY_TYPE: Record = { host: HOST_DEFINITION_VERSION, user: USER_DEFINITION_VERSION, - universal: UNIVERSAL_DEFINITION_VERSION, service: SERVICE_DEFINITION_VERSION, }; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_definitions/entity_descriptions/index.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_definitions/entity_descriptions/index.ts index 8984c4aac0eca..58c9ce601094f 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_definitions/entity_descriptions/index.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_definitions/entity_descriptions/index.ts @@ -8,5 +8,4 @@ export * from './host'; export * from './user'; export * from './service'; -export * from './universal'; export { getCommonFieldDescriptions } from './common'; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_definitions/entity_descriptions/universal.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_definitions/entity_descriptions/universal.ts deleted file mode 100644 index e0dd82f0b330d..0000000000000 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_definitions/entity_descriptions/universal.ts +++ /dev/null @@ -1,96 +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 type { IngestProcessorContainer } from '@elastic/elasticsearch/lib/api/types'; -import type { EntityDescription } from '../types'; -import { collectValues } from './field_utils'; - -export const UNIVERSAL_DEFINITION_VERSION = '1.0.0'; -export const UNIVERSAL_IDENTITY_FIELD = 'related.entity'; - -export const entityMetadataExtractorProcessor = { - script: { - tag: 'entity_metadata_extractor', - on_failure: [ - { - set: { - field: 'error.message', - value: - 'Processor {{ _ingest.on_failure_processor_type }} with tag {{ _ingest.on_failure_processor_tag }} in pipeline {{ _ingest.on_failure_pipeline }} failed with message {{ _ingest.on_failure_message }}', - }, - }, - ], - lang: 'painless', - source: /* java */ ` - // Array, boolean, integer, ip, bytes, anything that is not a map, is a leaf field - void overwriteLeafFields(Object toBeOverwritten, Object toOverwrite) { - if (!(toBeOverwritten instanceof Map)) { - // We can't override anything that isn't a map - return; - } - if (toOverwrite instanceof Map) { - Map mapToBeOverwritten = (Map) toBeOverwritten; - for (entryToOverwrite in ((Map) toOverwrite).entrySet()) { - String keyToOverwrite = entryToOverwrite.getKey(); - Object valueToOverwrite = entryToOverwrite.getValue(); - - if (valueToOverwrite instanceof Map) { - // If no initial value, we just put everything we have to overwrite - if (mapToBeOverwritten.get(keyToOverwrite) == null) { - mapToBeOverwritten.put(keyToOverwrite, valueToOverwrite) - } else { - overwriteLeafFields(mapToBeOverwritten.get(keyToOverwrite), valueToOverwrite); - } - } else { - mapToBeOverwritten.put(keyToOverwrite, valueToOverwrite) - } - } - } - } - - def id = ctx.entity.id; - Map merged = ctx; - for (meta in ctx.collected.metadata) { - Object json = Processors.json(meta); - if (((Map)json)[id] == null) { - continue; - } - - if (((Map)json)[id] != null) { - overwriteLeafFields(merged, ((Map)json)[id]); - } - } - - merged.entity.id = id; - ctx = merged; - `, - }, -}; - -export const universalEntityEngineDescription: EntityDescription = { - version: UNIVERSAL_DEFINITION_VERSION, - entityType: 'universal', - identityField: UNIVERSAL_IDENTITY_FIELD, - fields: [collectValues({ source: 'entities.keyword', destination: 'collected.metadata' })], - settings: { - timestampField: 'event.ingested', - }, - pipeline: (processors: IngestProcessorContainer[]) => { - const index = processors.findIndex((p) => Boolean(p.enrich)); - - if (index === -1) { - throw new Error('Enrich processor not found'); - } - - const init = processors.slice(0, index); - const tail = processors.slice(index); - const pipe = [...init, entityMetadataExtractorProcessor, ...tail]; - - return pipe; - }, - dynamic: true, -}; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.test.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.test.ts index 9f6783ccc1df2..c085d857ba8cb 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.test.ts @@ -363,14 +363,5 @@ describe('EntityStoreDataClient', () => { expect(spyInit).toHaveBeenCalledWith(EntityType.host, expect.anything(), expect.anything()); }); - - it('does not enable engine when the given entity type is disabled', async () => { - await dataClient.enable({ - ...defaultOptions, - entityTypes: [EntityType.universal], - }); - - expect(spyInit).not.toHaveBeenCalled(); - }); }); }); diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts index 5c863d356a3a1..1747c5a53401a 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/entity_store_data_client.ts @@ -96,10 +96,6 @@ import { import { CRITICALITY_VALUES } from '../asset_criticality/constants'; import { createEngineDescription } from './installation/engine_description'; import { convertToEntityManagerDefinition } from './entity_definitions/entity_manager_conversion'; -import { - createKeywordBuilderPipeline, - deleteKeywordBuilderPipeline, -} from '../../asset_inventory/ingest_pipelines'; import type { ApiKeyManager } from './auth/api_key'; @@ -310,12 +306,6 @@ export class EntityStoreDataClient { requestBody: InitEntityEngineRequestBody, { pipelineDebugMode = false }: { pipelineDebugMode?: boolean } = {} ): Promise { - const { experimentalFeatures } = this.options; - - if (entityType === EntityType.universal && !experimentalFeatures.assetInventoryStoreEnabled) { - throw new Error('Universal entity store is not enabled'); - } - if (!this.options.taskManager) { throw new Error('Task Manager is not available'); } @@ -406,14 +396,6 @@ export class EntityStoreDataClient { }); this.log(`debug`, entityType, `Created entity definition`); - if (entityType === EntityType.universal) { - logger.debug('creating keyword builder pipeline'); - await createKeywordBuilderPipeline({ - logger, - esClient: this.esClient, - }); - } - // the index must be in place with the correct mapping before the enrich policy is created // this is because the enrich policy will fail if the index does not exist with the correct fields await createEntityIndexComponentTemplate(description, this.esClient); @@ -698,15 +680,6 @@ export class EntityStoreDataClient { }); this.log('debug', entityType, `Deleted field retention enrich policy`); - if (entityType === EntityType.universal) { - logger.debug(`Deleting asset inventory keyword builder pipeline`); - - await deleteKeywordBuilderPipeline({ - logger, - esClient: this.esClient, - }); - } - if (deleteData) { await deleteEntityIndex({ entityType, diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/installation/engine_description.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/installation/engine_description.ts index 2b09bd41e5497..7face22fbf959 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/installation/engine_description.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/entity_analytics/entity_store/installation/engine_description.ts @@ -14,7 +14,6 @@ import { generateIndexMappings } from '../elasticsearch_assets'; import { hostEntityEngineDescription, userEntityEngineDescription, - universalEntityEngineDescription, serviceEntityEngineDescription, } from '../entity_definitions/entity_descriptions'; import type { EntityStoreConfig } from '../types'; @@ -27,7 +26,6 @@ import { defaultOptions } from '../constants'; const engineDescriptionRegistry: Record = { host: hostEntityEngineDescription, user: userEntityEngineDescription, - universal: universalEntityEngineDescription, service: serviceEntityEngineDescription, }; diff --git a/x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/trial_license_complete_tier/configs/ess.config.ts b/x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/trial_license_complete_tier/configs/ess.config.ts deleted file mode 100644 index 03814bdd3daba..0000000000000 --- a/x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/trial_license_complete_tier/configs/ess.config.ts +++ /dev/null @@ -1,28 +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 { FtrConfigProviderContext } from '@kbn/test'; -export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const functionalConfig = await readConfigFile( - require.resolve('../../../../../config/ess/config.base.trial') - ); - - return { - ...functionalConfig.getAll(), - kbnTestServer: { - ...functionalConfig.get('kbnTestServer'), - serverArgs: [ - ...functionalConfig.get('kbnTestServer.serverArgs'), - `--xpack.securitySolution.enableExperimental=${JSON.stringify([])}`, - ], - }, - testFiles: [require.resolve('..')], - junit: { - reportName: 'Asset Inventory Integration Tests - ESS Env - Basic License', - }, - }; -} diff --git a/x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/trial_license_complete_tier/index.ts b/x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/trial_license_complete_tier/index.ts deleted file mode 100644 index 715fa42083f35..0000000000000 --- a/x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/trial_license_complete_tier/index.ts +++ /dev/null @@ -1,14 +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 { FtrProviderContext } from '../../../../ftr_provider_context'; - -export default function ({ loadTestFile }: FtrProviderContext) { - describe('Asset Inventory - Entity Store', function () { - loadTestFile(require.resolve('./keyword_builder_ingest_pipeline')); - }); -} diff --git a/x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/trial_license_complete_tier/keyword_builder_ingest_pipeline.ts b/x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/trial_license_complete_tier/keyword_builder_ingest_pipeline.ts deleted file mode 100644 index 67b2238176a3a..0000000000000 --- a/x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/trial_license_complete_tier/keyword_builder_ingest_pipeline.ts +++ /dev/null @@ -1,64 +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 expect from '@kbn/expect'; - -import { buildIngestPipeline } from '@kbn/security-solution-plugin/server/lib/asset_inventory/ingest_pipelines'; -import { applyIngestProcessorToDoc } from '../utils/ingest'; -import { FtrProviderContext } from '../../../../ftr_provider_context'; - -export default ({ getService }: FtrProviderContext) => { - const es = getService('es'); - const log = getService('log'); - - const applyOperatorToDoc = async (docSource: any): Promise => { - const steps = buildIngestPipeline(); - - return applyIngestProcessorToDoc(steps, docSource, es, log); - }; - - describe('@ess @skipInServerlessMKI Asset Inventory - Entity store - Keyword builder pipeline', () => { - it('should build entities.keyword when entities.metadata is provided ', async () => { - const doc = { - related: { - entity: ['entity-id-1', 'entity-id-2', 'entity-id-3'], - }, - entities: { - metadata: { - 'entity-id-1': { - entity: { - type: 'SomeType', - }, - cloud: { - region: 'us-east-1', - }, - someECSfield: 'someECSfieldValue', - SomeNonECSField: 'SomeNonECSValue', - }, - 'entity-id-2': { - entity: { - type: 'SomeOtherType', - }, - SomeNonECSField: 'SomeNonECSValue', - }, - 'entity-id-3': { - someECSfield: 'someECSfieldValue', - }, - }, - }, - }; - - const resultDoc = await applyOperatorToDoc(doc); - - expect(resultDoc.entities.keyword).to.eql([ - '{"entity-id-3":{"someECSfield":"someECSfieldValue"}}', - '{"entity-id-2":{"SomeNonECSField":"SomeNonECSValue","entity":{"type":"SomeOtherType"}}}', - '{"entity-id-1":{"cloud":{"region":"us-east-1"},"SomeNonECSField":"SomeNonECSValue","someECSfield":"someECSfieldValue","entity":{"type":"SomeType"}}}', - ]); - }); - }); -}; diff --git a/x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/utils/ingest.ts b/x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/utils/ingest.ts deleted file mode 100644 index aec5812332ab2..0000000000000 --- a/x-pack/test/security_solution_api_integration/test_suites/asset_inventory/entity_store/utils/ingest.ts +++ /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; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { Client } from '@elastic/elasticsearch'; -import { IngestProcessorContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { ToolingLog } from '@kbn/tooling-log'; - -export const applyIngestProcessorToDoc = async ( - steps: IngestProcessorContainer[], - docSource: any, - es: Client, - log: ToolingLog -): Promise => { - const doc = { - _index: 'index', - _id: 'id', - _source: docSource, - }; - - const res = await es.ingest.simulate({ - pipeline: { - description: 'test', - processors: steps, - }, - docs: [doc], - }); - - const firstDoc = res.docs?.[0]; - - const error = firstDoc?.error; - if (error) { - log.error('Full painless error below: '); - log.error(JSON.stringify(error, null, 2)); - throw new Error('Painless error running pipeline see logs for full detail : ' + error?.type); - } - - return firstDoc?.doc?._source; -}; diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/trial_license_complete_tier/asset_inventory_pipeline.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/trial_license_complete_tier/asset_inventory_pipeline.ts deleted file mode 100644 index ca8d7b15cb81e..0000000000000 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/trial_license_complete_tier/asset_inventory_pipeline.ts +++ /dev/null @@ -1,157 +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 expect from '@kbn/expect'; -import { entityMetadataExtractorProcessor } from '@kbn/security-solution-plugin/server/lib/entity_analytics/entity_store/entity_definitions/entity_descriptions/universal'; -import { dynamicNewestRetentionSteps } from '@kbn/security-solution-plugin/server/lib/entity_analytics/entity_store/field_retention/dynamic_retention'; -import { FtrProviderContext } from '../../../../ftr_provider_context'; -import { applyIngestProcessorToDoc } from '../utils/ingest'; - -export default ({ getService }: FtrProviderContext) => { - const es = getService('es'); - const log = getService('log'); - describe('@ess @serverless @skipInServerlessMKI Asset Inventory - universal entity engine pipeline ', () => { - describe('Entity metadata extractor processor step', () => { - it('should extract metadata from "collected.metadata" and add it to the document', async () => { - const metadata = { - test: { - cloud: { super: 123 }, - okta: { foo: { baz: { qux: 1 } } }, - }, - }; - const doc = { - collected: { - metadata: [JSON.stringify(metadata)], - }, - entity: { - id: 'test', - }, - }; - - const result = await applyIngestProcessorToDoc( - [entityMetadataExtractorProcessor], - doc, - es, - log - ); - - const processed = { - ...doc, - ...metadata.test, - }; - - return expect(result).to.eql(processed); - }); - }); - - describe('prefer newest value for dynamic entities', () => { - it('should return latest value if no history value', async () => { - const metadata = { - cloud: { super: 123 }, - }; - - const doc = metadata; - - const processor = dynamicNewestRetentionSteps([]); - const result = await applyIngestProcessorToDoc([processor], doc, es, log); - - return expect(result).to.eql(doc); - }); - - it('should return history value if no latest value is found', async () => { - const metadata = { - cloud: { super: 123 }, - }; - - const doc = { - historical: metadata, - }; - - const processor = dynamicNewestRetentionSteps([]); - const result = await applyIngestProcessorToDoc([processor], doc, es, log); - - return expect(result).to.eql({ - ...doc, - ...metadata, - }); - }); - - it('should return latest value if both historical and latest values exist', async () => { - const metadata = { - cloud: { super: 123 }, - }; - - const historical = { - cloud: { super: 456 }, - }; - - const doc = { - historical, - ...metadata, - }; - - const processor = dynamicNewestRetentionSteps([]); - const result = await applyIngestProcessorToDoc([processor], doc, es, log); - - return expect(result).to.eql(doc); - }); - - it('should merge nested object preserving historical values not found in latest', async () => { - const metadata = { - cloud: { host: 'test' }, - okta: { foo: { bar: { baz: 1 } } }, - }; - - const historical = { - cloud: { user: 'agent' }, - okta: { foo: { bar: { qux: 11 } } }, - }; - - const doc = { - historical, - ...metadata, - }; - - const processor = dynamicNewestRetentionSteps([]); - const result = await applyIngestProcessorToDoc([processor], doc, es, log); - - return expect(result).to.eql({ - historical, - cloud: { host: 'test', user: 'agent' }, - okta: { foo: { bar: { baz: 1, qux: 11 } } }, - }); - }); - - it('should ignore historical static fields', async () => { - const metadata = { - cloud: { host: 'test' }, - }; - - const historical = { - static: 'static', - cloud: { user: 'agent' }, - okta: { foo: { bar: { qux: 1 } } }, - }; - - const doc = { - historical, - ...metadata, - }; - - const staticFields = ['static']; - const processor = dynamicNewestRetentionSteps(staticFields); - const result = await applyIngestProcessorToDoc([processor], doc, es, log); - - return expect(result).to.eql({ - historical, - cloud: { host: 'test', user: 'agent' }, - okta: { foo: { bar: { qux: 1 } } }, - }); - }); - }); - }); -}; diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/trial_license_complete_tier/index.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/trial_license_complete_tier/index.ts index a6fb4cf805f2d..899dbc68102f3 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/trial_license_complete_tier/index.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/entity_store/trial_license_complete_tier/index.ts @@ -13,6 +13,5 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./entity_store')); loadTestFile(require.resolve('./field_retention_operators')); loadTestFile(require.resolve('./entity_store_nondefault_spaces')); - loadTestFile(require.resolve('./asset_inventory_pipeline')); }); } From 8f3a45fb2caafdbe1230d5a652065bfe612dd97e Mon Sep 17 00:00:00 2001 From: Meghan Murphy Date: Tue, 18 Feb 2025 10:22:51 -0500 Subject: [PATCH 66/78] [Search Connectors] : Unregister Kibana background task (#211091) ## Summary Since Agentless Connectors will not be released in 9.0 anymore, this PR should unregister and stop the background kibana task from creating new policies for elastic-managed connectors. ### Closes https://github.com/elastic/search-team/issues/9283 ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The `release_note:breaking` label should be applied in these situations. - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [x] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) ### Identify risks Does this PR introduce any risks? For example, consider risks like hard to test bugs, performance regression, potential of data loss. Describe the risk, its severity, and mitigation for each identified risk. Invite stakeholders and evaluate how to proceed before merging. - [ ] [See some risk examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx) - [ ] ... --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Elastic Machine --- .../server/task_type_dictionary.ts | 3 + .../search_connectors/server/plugin.ts | 60 +------------------ .../check_registered_task_types.ts | 1 - 3 files changed, 5 insertions(+), 59 deletions(-) diff --git a/x-pack/platform/plugins/shared/task_manager/server/task_type_dictionary.ts b/x-pack/platform/plugins/shared/task_manager/server/task_type_dictionary.ts index e0b28eccea3cb..e5760f862fa23 100644 --- a/x-pack/platform/plugins/shared/task_manager/server/task_type_dictionary.ts +++ b/x-pack/platform/plugins/shared/task_manager/server/task_type_dictionary.ts @@ -26,6 +26,9 @@ export const REMOVED_TYPES: string[] = [ // deprecated in https://github.com/elastic/kibana/pull/121442 'alerting:siem.signals', + // deprecated in https://github.com/elastic/kibana/pull/211091 + 'search:agentless-connectors-manager', + 'search_sessions_monitor', 'search_sessions_cleanup', 'search_sessions_expire', diff --git a/x-pack/solutions/search/plugins/search_connectors/server/plugin.ts b/x-pack/solutions/search/plugins/search_connectors/server/plugin.ts index bbe33b4716085..151240e93e414 100644 --- a/x-pack/solutions/search/plugins/search_connectors/server/plugin.ts +++ b/x-pack/solutions/search/plugins/search_connectors/server/plugin.ts @@ -5,15 +5,8 @@ * 2.0. */ -import type { - PluginInitializerContext, - Plugin, - CoreStart, - CoreSetup, - Logger, -} from '@kbn/core/server'; +import type { PluginInitializerContext, Plugin, CoreSetup } from '@kbn/core/server'; import { ConnectorServerSideDefinition } from '@kbn/search-connectors'; -import { isAgentlessEnabled } from '@kbn/fleet-plugin/server/services/utils/agentless'; import { getConnectorTypes } from '../common/lib/connector_types'; import type { SearchConnectorsPluginSetup as SearchConnectorsPluginSetup, @@ -22,9 +15,6 @@ import type { SearchConnectorsPluginStartDependencies, } from './types'; -import { AgentlessConnectorDeploymentsSyncService } from './task'; -import { SearchConnectorsConfig } from './config'; - export class SearchConnectorsPlugin implements Plugin< @@ -35,19 +25,9 @@ export class SearchConnectorsPlugin > { private connectors: ConnectorServerSideDefinition[]; - private log: Logger; - private readonly config: SearchConnectorsConfig; - private agentlessConnectorDeploymentsSyncService: AgentlessConnectorDeploymentsSyncService; - private isServerless: boolean; constructor(initializerContext: PluginInitializerContext) { this.connectors = []; - this.log = initializerContext.logger.get(); - this.config = initializerContext.config.get(); - this.agentlessConnectorDeploymentsSyncService = new AgentlessConnectorDeploymentsSyncService( - this.log - ); - this.isServerless = false; } public setup( @@ -57,49 +37,13 @@ export class SearchConnectorsPlugin const http = coreSetup.http; this.connectors = getConnectorTypes(http.staticAssets); - this.isServerless = plugins.cloud && plugins.cloud.isServerlessEnabled; - const coreStartServices = coreSetup.getStartServices(); - - // There seems to be no way to check for agentless here - // So we register a task, but do not execute it in `start` method - this.log.debug('Registering agentless connectors infra sync task'); - - coreStartServices - .then(([coreStart, searchConnectorsPluginStartDependencies]) => { - this.agentlessConnectorDeploymentsSyncService.registerInfraSyncTask( - plugins, - coreStart, - searchConnectorsPluginStartDependencies - ); - }) - .catch((err) => { - this.log.error(`Error registering agentless connectors infra sync task`, err); - }); return { getConnectorTypes: () => this.connectors, }; } - public start(coreStart: CoreStart, plugins: SearchConnectorsPluginStartDependencies) { - if (this.isServerless) { - this.log.info( - 'Serverless is not supported, skipping agentless connectors infrastructure watcher task' - ); - } else if (isAgentlessEnabled()) { - this.log.info( - 'Agentless is supported, scheduling initial agentless connectors infrastructure watcher task' - ); - this.agentlessConnectorDeploymentsSyncService - .scheduleInfraSyncTask(this.config, plugins.taskManager) - .catch((err) => { - this.log.error(`Error scheduling agentless connectors infra sync task`, err); - }); - } else { - this.log.info( - 'Agentless is not supported, skipping scheduling initial agentless connectors infrastructure watcher task' - ); - } + public start() { return { getConnectors: () => this.connectors, }; diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts index f5b46142cd9c5..90aac9a87dd92 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts @@ -163,7 +163,6 @@ export default function ({ getService }: FtrProviderContext) { 'osquery:telemetry-saved-queries', 'report:execute', 'risk_engine:risk_scoring', - 'search:agentless-connectors-manager', 'security-solution-ea-asset-criticality-ecs-migration', 'security:endpoint-diagnostics', 'security:endpoint-meta-telemetry', From 44a06206bb77a3a87c3ab89c4bb175b6bca52b4f Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Wed, 19 Feb 2025 02:34:54 +1100 Subject: [PATCH 67/78] skip failing test suite (#210245) --- x-pack/test/accessibility/apps/group1/uptime.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/x-pack/test/accessibility/apps/group1/uptime.ts b/x-pack/test/accessibility/apps/group1/uptime.ts index f1130cec5d999..72fccddf04399 100644 --- a/x-pack/test/accessibility/apps/group1/uptime.ts +++ b/x-pack/test/accessibility/apps/group1/uptime.ts @@ -19,7 +19,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const es = getService('es'); const toasts = getService('toasts'); - describe('uptime Accessibility', () => { + // Failing: See https://github.com/elastic/kibana/issues/210245 + describe.skip('uptime Accessibility', () => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/uptime/blank'); await makeChecks(es, A11Y_TEST_MONITOR_ID, 150, 1, 1000, { From 519d1c2b5d138fb0f4e7fe1cf52fd10db19e4edf Mon Sep 17 00:00:00 2001 From: Julia Bardi <90178898+juliaElastic@users.noreply.github.com> Date: Tue, 18 Feb 2025 16:49:05 +0100 Subject: [PATCH 68/78] [Fleet] Added warning icon next to auto upgrade agents badge (#211551) ## Summary Closes https://github.com/elastic/ingest-dev/issues/4731 Added warning icon to Agent policy details, next to Auto upgrade agents badge if there are failures in agents upgrade. UX Design: image UI: image --- .../header/manage_auto_upgrade_agents.tsx | 78 +++++++++++++++++++ .../components/header/right_content.tsx | 38 +++------ 2 files changed, 87 insertions(+), 29 deletions(-) create mode 100644 x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/details_page/components/header/manage_auto_upgrade_agents.tsx diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/details_page/components/header/manage_auto_upgrade_agents.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/details_page/components/header/manage_auto_upgrade_agents.tsx new file mode 100644 index 0000000000000..45a714c308f58 --- /dev/null +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/details_page/components/header/manage_auto_upgrade_agents.tsx @@ -0,0 +1,78 @@ +/* + * 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, { useMemo } from 'react'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + EuiLink, + EuiNotificationBadge, + EuiToolTip, +} from '@elastic/eui'; + +import type { AgentPolicy } from '../../../../../types'; +import { useGetAutoUpgradeAgentsStatusQuery } from '../../../../../hooks'; + +export interface Props { + agentPolicy: AgentPolicy; + isManageAutoUpgradeAgentsModalOpen: boolean; + setIsManageAutoUpgradeAgentsModalOpen: (isOpen: boolean) => void; +} + +export const ManageAutoUpgradeAgentsBadge: React.FC = ({ + agentPolicy, + isManageAutoUpgradeAgentsModalOpen, + setIsManageAutoUpgradeAgentsModalOpen, +}: Props) => { + const { data: autoUpgradeAgentsStatus } = useGetAutoUpgradeAgentsStatusQuery(agentPolicy.id); + const hasErrors = useMemo(() => { + return autoUpgradeAgentsStatus?.currentVersions.some((value) => value.failedUpgradeAgents > 0); + }, [autoUpgradeAgentsStatus]); + + return ( + + + { + setIsManageAutoUpgradeAgentsModalOpen(!isManageAutoUpgradeAgentsModalOpen); + }} + > + + + + + + {agentPolicy.required_versions?.length || 0} + + + {hasErrors && ( + + + } + > + + + + )} + + ); +}; diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/details_page/components/header/right_content.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/details_page/components/header/right_content.tsx index 46d3552eef556..e0f325ef68238 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/details_page/components/header/right_content.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/details_page/components/header/right_content.tsx @@ -21,7 +21,6 @@ import { EuiToolTip, EuiIconTip, EuiPortal, - EuiNotificationBadge, } from '@elastic/eui'; import { useAgentPolicyRefresh, useAuthz, useLink } from '../../../../../hooks'; @@ -34,6 +33,8 @@ import { ManageAutoUpgradeAgentsModal } from '../../../../agents/components/mana import { AutoUpgradeAgentsTour } from '../../../components/auto_upgrade_agents_tour'; import { ExperimentalFeaturesService } from '../../../../../services'; +import { ManageAutoUpgradeAgentsBadge } from './manage_auto_upgrade_agents'; + export interface HeaderRightContentProps { isLoading: boolean; agentPolicy?: AgentPolicy | null; @@ -223,34 +224,13 @@ export const HeaderRightContent: React.FunctionComponent - - { - setIsManageAutoUpgradeAgentsModalOpen( - !isManageAutoUpgradeAgentsModalOpen - ); - }} - > - - - - - - {agentPolicy.required_versions?.length || 0} - - - + ), }, { isDivider: true }, From bc3f77238dc7113955af61b99460c09ef9a559af Mon Sep 17 00:00:00 2001 From: Joe Reuter Date: Tue, 18 Feb 2025 17:00:16 +0100 Subject: [PATCH 69/78] Move useAbortController and useAbortableAsync hook into central package (#211295) The useAbortController and useAbortableAsync hooks are very generic hooks that are useful beyond observability. This PR moves them into `react-hooks` which already houses other similar hooks. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../packages/shared/kbn-react-hooks/README.md | 27 +++ .../packages/shared/kbn-react-hooks/index.ts | 3 + .../src/use_abort_controller/index.ts | 10 + .../use_abort_controller.test.ts | 56 +++++ .../use_abort_controller.ts | 8 +- .../src/use_abortable_async/index.ts | 10 + .../use_abortable_async.test.tsx | 207 ++++++++++++++++++ .../use_abortable_async.ts | 9 +- .../shared/kbn-react-hooks/tsconfig.json | 4 +- .../packages/utils-browser/tsconfig.json | 1 - .../hooks/use_fetch_entity_definition.ts | 2 +- .../hooks/use_inventory_abortable_async.ts | 2 +- .../plugins/inventory/tsconfig.json | 2 - .../items/esql_item/register_esql_item.tsx | 2 +- .../esql_widget_preview.tsx | 2 +- .../plugins/investigate_app/tsconfig.json | 1 + .../lib/streams/helpers/namespaced_ecs.ts | 6 + .../esql_chart/controlled_esql_chart.tsx | 2 +- .../schema_editor/hooks/use_schema_fields.ts | 2 +- .../components/stream_delete_modal/index.tsx | 2 +- .../hooks/use_definition.ts | 3 +- .../stream_detail_lifecycle/index.tsx | 2 +- .../stream_detail_routing/control_bar.tsx | 2 +- .../public/hooks/use_dashboards_api.ts | 2 +- .../public/hooks/use_streams_app_fetch.ts | 5 +- .../public/util/esql_result_to_timeseries.ts | 2 +- 26 files changed, 347 insertions(+), 27 deletions(-) create mode 100644 src/platform/packages/shared/kbn-react-hooks/src/use_abort_controller/index.ts create mode 100644 src/platform/packages/shared/kbn-react-hooks/src/use_abort_controller/use_abort_controller.test.ts rename {x-pack/solutions/observability/packages/utils-browser/hooks => src/platform/packages/shared/kbn-react-hooks/src/use_abort_controller}/use_abort_controller.ts (57%) create mode 100644 src/platform/packages/shared/kbn-react-hooks/src/use_abortable_async/index.ts create mode 100644 src/platform/packages/shared/kbn-react-hooks/src/use_abortable_async/use_abortable_async.test.tsx rename {x-pack/solutions/observability/packages/utils-browser/hooks => src/platform/packages/shared/kbn-react-hooks/src/use_abortable_async}/use_abortable_async.ts (89%) create mode 100644 x-pack/solutions/observability/plugins/streams/server/lib/streams/helpers/namespaced_ecs.ts diff --git a/src/platform/packages/shared/kbn-react-hooks/README.md b/src/platform/packages/shared/kbn-react-hooks/README.md index 6eba8db3641d6..3e12dbca0b07d 100644 --- a/src/platform/packages/shared/kbn-react-hooks/README.md +++ b/src/platform/packages/shared/kbn-react-hooks/README.md @@ -42,3 +42,30 @@ function App() { ); } ``` + +### [useAbortableAsync](./src/use_abortable_async/use_abortable_async.ts) + +Wrapper around async function which is called on dependency change and can be aborted via abort controller. + +```tsx + const { error, loading, value, refresh } = useAbortableAsync( + ({ signal }) => { + return fetch(url, { signal }) + }, + [url], + { onError: myErrorHandler } + ); +``` + +### [useAbortController](./src/use_abort_controller/use_abort_controller.ts) + +Hook managing an abort controller instance that aborts when it goes out of scope. + +```tsx + const { signal, abort, refresh } = useAbortController(); + + // ... + + // Will be aborted when the component unmounts + await fetch(url, { signal }) +``` \ No newline at end of file diff --git a/src/platform/packages/shared/kbn-react-hooks/index.ts b/src/platform/packages/shared/kbn-react-hooks/index.ts index 0c8550091ef5a..9866d28bdde39 100644 --- a/src/platform/packages/shared/kbn-react-hooks/index.ts +++ b/src/platform/packages/shared/kbn-react-hooks/index.ts @@ -9,4 +9,7 @@ export { useBoolean } from './src/use_boolean'; export { useErrorTextStyle } from './src/use_error_text_style'; +export { useAbortController } from './src/use_abort_controller'; +export { useAbortableAsync } from './src/use_abortable_async'; +export type { UseAbortableAsync, AbortableAsyncState } from './src/use_abortable_async'; export type { UseBooleanHandlers, UseBooleanResult } from './src/use_boolean'; diff --git a/src/platform/packages/shared/kbn-react-hooks/src/use_abort_controller/index.ts b/src/platform/packages/shared/kbn-react-hooks/src/use_abort_controller/index.ts new file mode 100644 index 0000000000000..c77e2de3c41a1 --- /dev/null +++ b/src/platform/packages/shared/kbn-react-hooks/src/use_abort_controller/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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './use_abort_controller'; diff --git a/src/platform/packages/shared/kbn-react-hooks/src/use_abort_controller/use_abort_controller.test.ts b/src/platform/packages/shared/kbn-react-hooks/src/use_abort_controller/use_abort_controller.test.ts new file mode 100644 index 0000000000000..6191c408c126b --- /dev/null +++ b/src/platform/packages/shared/kbn-react-hooks/src/use_abort_controller/use_abort_controller.test.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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { renderHook, act } from '@testing-library/react'; +import { useAbortController } from './use_abort_controller'; + +describe('useAbortController', () => { + it('should return a valid signal and abort function', () => { + const { result } = renderHook(() => useAbortController()); + + // Verify initial state + expect(result.current.signal).toBeDefined(); + expect(result.current.signal.aborted).toBe(false); + + // Call abort and test if signal becomes aborted + act(() => { + result.current.abort(); + }); + expect(result.current.signal.aborted).toBe(true); + }); + + it('should refresh with a new AbortController after calling refresh', () => { + const { result } = renderHook(() => useAbortController()); + + // Capture initial signal + const initialSignal = result.current.signal; + + // Abort the initial controller + act(() => { + result.current.abort(); + }); + expect(initialSignal.aborted).toBe(true); + + // Refresh to get a new controller + act(() => { + result.current.refresh(); + }); + // The new controller should not be aborted + expect(result.current.signal.aborted).toBe(false); + expect(result.current.signal).not.toBe(initialSignal); + }); + + it('should abort when the component is unmounted', () => { + const { result, unmount } = renderHook(() => useAbortController()); + // Capture the initial signal before unmounting + const initialSignal = result.current.signal; + unmount(); + expect(initialSignal.aborted).toBe(true); + }); +}); diff --git a/x-pack/solutions/observability/packages/utils-browser/hooks/use_abort_controller.ts b/src/platform/packages/shared/kbn-react-hooks/src/use_abort_controller/use_abort_controller.ts similarity index 57% rename from x-pack/solutions/observability/packages/utils-browser/hooks/use_abort_controller.ts rename to src/platform/packages/shared/kbn-react-hooks/src/use_abort_controller/use_abort_controller.ts index de5c70632b233..abac51e03ac0a 100644 --- a/x-pack/solutions/observability/packages/utils-browser/hooks/use_abort_controller.ts +++ b/src/platform/packages/shared/kbn-react-hooks/src/use_abort_controller/use_abort_controller.ts @@ -1,8 +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. + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". */ import { useEffect, useState } from 'react'; diff --git a/src/platform/packages/shared/kbn-react-hooks/src/use_abortable_async/index.ts b/src/platform/packages/shared/kbn-react-hooks/src/use_abortable_async/index.ts new file mode 100644 index 0000000000000..77d296ebbd44e --- /dev/null +++ b/src/platform/packages/shared/kbn-react-hooks/src/use_abortable_async/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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export * from './use_abortable_async'; diff --git a/src/platform/packages/shared/kbn-react-hooks/src/use_abortable_async/use_abortable_async.test.tsx b/src/platform/packages/shared/kbn-react-hooks/src/use_abortable_async/use_abortable_async.test.tsx new file mode 100644 index 0000000000000..4d6d07951e889 --- /dev/null +++ b/src/platform/packages/shared/kbn-react-hooks/src/use_abortable_async/use_abortable_async.test.tsx @@ -0,0 +1,207 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import React, { useEffect } from 'react'; +import { render, act, waitFor } from '@testing-library/react'; +import { useAbortableAsync } from './use_abortable_async'; + +// Helper component to expose hook state. +function TestComponent({ + hookFn, + onState, + deps = [], +}: { + hookFn: ({ signal }: { signal: AbortSignal }) => T | Promise; + onState: (state: ReturnType) => void; + deps?: any[]; +}) { + const state = useAbortableAsync(hookFn, deps); + useEffect(() => { + onState(state); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [state, ...deps]); + return null; +} + +describe('useAbortableAsync', () => { + it('should handle synchronous function', async () => { + let hookState: any; + render( + 42} + onState={(state) => { + hookState = state; + }} + /> + ); + await waitFor(() => expect(hookState).toBeDefined()); + expect(hookState.value).toBe(42); + expect(hookState.loading).toBe(false); + expect(hookState.error).toBeUndefined(); + }); + + it('should handle asynchronous success', async () => { + let hookState: any; + const asyncFn = ({ signal }: { signal: AbortSignal }) => + new Promise((resolve) => { + const id = setTimeout(() => resolve('async result'), 10); + // clean up + signal.addEventListener('abort', () => clearTimeout(id)); + }); + + render( + { + hookState = state; + }} + /> + ); + + // Initially loading should be true. + await waitFor(() => expect(hookState.loading).toBe(true)); + // After async completes. + await waitFor(() => expect(hookState.loading).toBeFalsy()); + expect(hookState.error).toBeUndefined(); + expect(hookState.value).toBe('async result'); + }); + + it('should handle asynchronous error', async () => { + let hookState: any; + const errorFn = ({ signal }: { signal: AbortSignal }) => + new Promise((_resolve, reject) => { + const id = setTimeout(() => reject(new Error('fail')), 10); + // clean up + signal.addEventListener('abort', () => clearTimeout(id)); + }); + + render( + { + hookState = state; + }} + /> + ); + + await waitFor(() => expect(hookState.loading).toBeFalsy()); + expect(hookState.error).toBeInstanceOf(Error); + expect(hookState.error?.message).toBe('fail'); + expect(hookState.value).toBeUndefined(); + }); + + it('should refresh and re-run the async function', async () => { + let hookState: any; + let counter = 0; + const asyncFn = ({ signal }: { signal: AbortSignal }) => + new Promise((resolve) => { + const id = setTimeout(() => resolve(++counter), 10); + signal.addEventListener('abort', () => clearTimeout(id)); + }); + + const { rerender } = render( + { + hookState = state; + }} + /> + ); + + await waitFor(() => expect(hookState.loading).toBeFalsy()); + expect(hookState.value).toBe(1); + + act(() => { + hookState.refresh(); + }); + + // rerender to trigger update. + rerender( + { + hookState = state; + }} + /> + ); + + await waitFor(() => expect(hookState.loading).toBeFalsy()); + expect(hookState.value).toBe(2); + }); + + it('should abort previous async function when dependencies update', async () => { + let hookState: any; + let aborted = false; + const asyncFn = ({ signal }: { signal: AbortSignal }) => + new Promise(() => { + signal.addEventListener('abort', () => { + aborted = true; + }); + // simulate a long running async process that never resolves + }); + const { rerender } = render( + { + hookState = state; + }} + deps={[1]} + /> + ); + // Ensure the initial async call is in-flight. + await waitFor(() => expect(hookState.loading).toBe(true)); + // Updating the dependency should trigger abort on the previous async call. + rerender( + { + hookState = state; + }} + deps={[2]} + /> + ); + await waitFor(() => expect(aborted).toBe(true)); + }); + + it('should not abort running promise when rerendered without dependency change', async () => { + let hookState: any; + let aborted = false; + const asyncFn = ({ signal }: { signal: AbortSignal }) => + new Promise(() => { + signal.addEventListener('abort', () => { + aborted = true; + }); + // simulate a long running async process that never resolves + }); + const { rerender } = render( + { + hookState = state; + }} + deps={[1]} + /> + ); + await waitFor(() => expect(hookState.loading).toBe(true)); + // Rerender with the same dependency. + rerender( + { + hookState = state; + }} + deps={[1]} // same dependency + /> + ); + // Wait briefly to see if abort gets called. + await new Promise((resolve) => setTimeout(resolve, 20)); + expect(aborted).toBe(false); + expect(hookState.loading).toBe(true); + }); +}); diff --git a/x-pack/solutions/observability/packages/utils-browser/hooks/use_abortable_async.ts b/src/platform/packages/shared/kbn-react-hooks/src/use_abortable_async/use_abortable_async.ts similarity index 89% rename from x-pack/solutions/observability/packages/utils-browser/hooks/use_abortable_async.ts rename to src/platform/packages/shared/kbn-react-hooks/src/use_abortable_async/use_abortable_async.ts index 17dfde0736477..8c6cc1eda227d 100644 --- a/x-pack/solutions/observability/packages/utils-browser/hooks/use_abortable_async.ts +++ b/src/platform/packages/shared/kbn-react-hooks/src/use_abortable_async/use_abortable_async.ts @@ -1,9 +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. + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". */ + import { isPromise } from '@kbn/std'; import { useEffect, useMemo, useRef, useState } from 'react'; diff --git a/src/platform/packages/shared/kbn-react-hooks/tsconfig.json b/src/platform/packages/shared/kbn-react-hooks/tsconfig.json index 4eca5cbff213f..0dde926d846d7 100644 --- a/src/platform/packages/shared/kbn-react-hooks/tsconfig.json +++ b/src/platform/packages/shared/kbn-react-hooks/tsconfig.json @@ -15,5 +15,7 @@ "exclude": [ "target/**/*" ], - "kbn_references": [] + "kbn_references": [ + "@kbn/std", + ] } diff --git a/x-pack/solutions/observability/packages/utils-browser/tsconfig.json b/x-pack/solutions/observability/packages/utils-browser/tsconfig.json index 9cfa030bd901d..39bf636f4368b 100644 --- a/x-pack/solutions/observability/packages/utils-browser/tsconfig.json +++ b/x-pack/solutions/observability/packages/utils-browser/tsconfig.json @@ -18,6 +18,5 @@ "kbn_references": [ "@kbn/data-plugin", "@kbn/core-ui-settings-browser", - "@kbn/std", ] } diff --git a/x-pack/solutions/observability/plugins/inventory/public/hooks/use_fetch_entity_definition.ts b/x-pack/solutions/observability/plugins/inventory/public/hooks/use_fetch_entity_definition.ts index 9f6a0232891b2..ac1b6fd67f82a 100644 --- a/x-pack/solutions/observability/plugins/inventory/public/hooks/use_fetch_entity_definition.ts +++ b/x-pack/solutions/observability/plugins/inventory/public/hooks/use_fetch_entity_definition.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { useAbortableAsync } from '@kbn/observability-utils-browser/hooks/use_abortable_async'; +import { useAbortableAsync } from '@kbn/react-hooks'; import { useKibana } from './use_kibana'; export const useFetchEntityDefinition = (id: string) => { diff --git a/x-pack/solutions/observability/plugins/inventory/public/hooks/use_inventory_abortable_async.ts b/x-pack/solutions/observability/plugins/inventory/public/hooks/use_inventory_abortable_async.ts index 75bd490188e13..d5c6b830dc465 100644 --- a/x-pack/solutions/observability/plugins/inventory/public/hooks/use_inventory_abortable_async.ts +++ b/x-pack/solutions/observability/plugins/inventory/public/hooks/use_inventory_abortable_async.ts @@ -4,9 +4,9 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { useAbortableAsync } from '@kbn/observability-utils-browser/hooks/use_abortable_async'; import { i18n } from '@kbn/i18n'; import type { IHttpFetchError, ResponseErrorBody } from '@kbn/core-http-browser'; +import { useAbortableAsync } from '@kbn/react-hooks'; import { useKibana } from './use_kibana'; const getDetailsFromErrorResponse = (error: IHttpFetchError) => diff --git a/x-pack/solutions/observability/plugins/inventory/tsconfig.json b/x-pack/solutions/observability/plugins/inventory/tsconfig.json index e04f6cbef7ab7..e7ca7a519fe0f 100644 --- a/x-pack/solutions/observability/plugins/inventory/tsconfig.json +++ b/x-pack/solutions/observability/plugins/inventory/tsconfig.json @@ -51,12 +51,10 @@ "@kbn/rule-data-utils", "@kbn/spaces-plugin", "@kbn/cloud-plugin", - "@kbn/observability-utils-browser", "@kbn/storybook", "@kbn/dashboard-plugin", "@kbn/deeplinks-analytics", "@kbn/react-hooks", - "@kbn/observability-utils-browser", "@kbn/kibana-utils-plugin", "@kbn/dataset-quality-plugin", "@kbn/observability-utils-common", diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/items/esql_item/register_esql_item.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/items/esql_item/register_esql_item.tsx index 46fe9ea2d9dd2..4259e550e6487 100644 --- a/x-pack/solutions/observability/plugins/investigate_app/public/items/esql_item/register_esql_item.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/items/esql_item/register_esql_item.tsx @@ -10,8 +10,8 @@ import type { ESQLSearchResponse } from '@kbn/es-types'; import { i18n } from '@kbn/i18n'; import { type GlobalWidgetParameters } from '@kbn/investigate-plugin/public'; import type { Suggestion } from '@kbn/lens-plugin/public'; -import { useAbortableAsync } from '@kbn/observability-utils-browser/hooks/use_abortable_async'; import React, { useMemo } from 'react'; +import { useAbortableAsync } from '@kbn/react-hooks'; import { ErrorMessage } from '../../components/error_message'; import { useKibana } from '../../hooks/use_kibana'; import { getDatatableFromEsqlResponse } from '../../utils/get_data_table_from_esql_response'; diff --git a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_investigation_item/esql_widget_preview.tsx b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_investigation_item/esql_widget_preview.tsx index 469baf6e07f5c..b126c9dd9a213 100644 --- a/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_investigation_item/esql_widget_preview.tsx +++ b/x-pack/solutions/observability/plugins/investigate_app/public/pages/details/components/add_investigation_item/esql_widget_preview.tsx @@ -11,8 +11,8 @@ import type { ESQLColumn, ESQLRow } from '@kbn/es-types'; import { GlobalWidgetParameters } from '@kbn/investigate-plugin/public'; import { Item } from '@kbn/investigation-shared'; import type { Suggestion } from '@kbn/lens-plugin/public'; -import { useAbortableAsync } from '@kbn/observability-utils-browser/hooks/use_abortable_async'; import React, { useEffect, useMemo, useState } from 'react'; +import { useAbortableAsync } from '@kbn/react-hooks'; import { ErrorMessage } from '../../../../components/error_message'; import { SuggestVisualizationList } from '../../../../components/suggest_visualization_list'; import { useKibana } from '../../../../hooks/use_kibana'; diff --git a/x-pack/solutions/observability/plugins/investigate_app/tsconfig.json b/x-pack/solutions/observability/plugins/investigate_app/tsconfig.json index e467bd40918fd..ade7de75d0b38 100644 --- a/x-pack/solutions/observability/plugins/investigate_app/tsconfig.json +++ b/x-pack/solutions/observability/plugins/investigate_app/tsconfig.json @@ -86,5 +86,6 @@ "@kbn/dev-cli-runner", "@kbn/datemath", "@kbn/sse-utils-client", + "@kbn/react-hooks", ], } diff --git a/x-pack/solutions/observability/plugins/streams/server/lib/streams/helpers/namespaced_ecs.ts b/x-pack/solutions/observability/plugins/streams/server/lib/streams/helpers/namespaced_ecs.ts new file mode 100644 index 0000000000000..1fec1c76430eb --- /dev/null +++ b/x-pack/solutions/observability/plugins/streams/server/lib/streams/helpers/namespaced_ecs.ts @@ -0,0 +1,6 @@ +/* + * 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. + */ diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/esql_chart/controlled_esql_chart.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/esql_chart/controlled_esql_chart.tsx index 9008f8ee47098..22de78d7681b2 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/esql_chart/controlled_esql_chart.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/esql_chart/controlled_esql_chart.tsx @@ -22,7 +22,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiIcon, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { getTimeZone } from '@kbn/observability-utils-browser/utils/ui_settings/get_timezone'; import { css } from '@emotion/css'; -import { AbortableAsyncState } from '@kbn/observability-utils-browser/hooks/use_abortable_async'; +import { AbortableAsyncState } from '@kbn/react-hooks'; import type { UnparsedEsqlResponse } from '@kbn/observability-utils-server/es/client/create_observability_es_client'; import { esqlResultToTimeseries } from '../../util/esql_result_to_timeseries'; import { useKibana } from '../../hooks/use_kibana'; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/schema_editor/hooks/use_schema_fields.ts b/x-pack/solutions/observability/plugins/streams_app/public/components/schema_editor/hooks/use_schema_fields.ts index 72e3c5e81793e..abf71608761cd 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/schema_editor/hooks/use_schema_fields.ts +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/schema_editor/hooks/use_schema_fields.ts @@ -6,7 +6,6 @@ */ import { i18n } from '@kbn/i18n'; -import { useAbortController } from '@kbn/observability-utils-browser/hooks/use_abort_controller'; import { NamedFieldDefinitionConfig, WiredStreamGetResponse, @@ -14,6 +13,7 @@ import { } from '@kbn/streams-schema'; import { isEqual, omit } from 'lodash'; import { useMemo, useCallback } from 'react'; +import { useAbortController } from '@kbn/react-hooks'; import { useStreamsAppFetch } from '../../../hooks/use_streams_app_fetch'; import { useKibana } from '../../../hooks/use_kibana'; import { SchemaField, isSchemaFieldTyped } from '../types'; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_delete_modal/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_delete_modal/index.tsx index 9e4e0f0dabf1f..d301b44a01c2d 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_delete_modal/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_delete_modal/index.tsx @@ -19,9 +19,9 @@ import { useGeneratedHtmlId, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { useAbortController } from '@kbn/observability-utils-browser/hooks/use_abort_controller'; import React from 'react'; import { isDescendantOf } from '@kbn/streams-schema'; +import { useAbortController } from '@kbn/react-hooks'; import { useKibana } from '../../hooks/use_kibana'; import { useStreamsAppRouter } from '../../hooks/use_streams_app_router'; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/hooks/use_definition.ts b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/hooks/use_definition.ts index 36588d556ad20..e92ac5c1a74c7 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/hooks/use_definition.ts +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_enrichment/hooks/use_definition.ts @@ -7,8 +7,7 @@ import { useState, useMemo, useEffect, useRef, useCallback } from 'react'; import { i18n } from '@kbn/i18n'; -import { useAbortController } from '@kbn/observability-utils-browser/hooks/use_abort_controller'; -import { useBoolean } from '@kbn/react-hooks'; +import { useAbortController, useBoolean } from '@kbn/react-hooks'; import { IngestStreamGetResponse, isWiredStreamGetResponse, diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/index.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/index.tsx index 0c13f7df110e1..372f130c24253 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/index.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_lifecycle/index.tsx @@ -21,8 +21,8 @@ import { IlmLocatorParams, PolicyFromES, } from '@kbn/index-lifecycle-management-common-shared'; -import { useAbortController } from '@kbn/observability-utils-browser/hooks/use_abort_controller'; import { i18n } from '@kbn/i18n'; +import { useAbortController } from '@kbn/react-hooks'; import { useKibana } from '../../hooks/use_kibana'; import { EditLifecycleModal, LifecycleEditAction } from './modal'; import { RetentionSummary } from './summary'; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_routing/control_bar.tsx b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_routing/control_bar.tsx index ac9a648921d44..d35bb292ff4bc 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_routing/control_bar.tsx +++ b/x-pack/solutions/observability/plugins/streams_app/public/components/stream_detail_routing/control_bar.tsx @@ -7,10 +7,10 @@ import { EuiFlexGroup, EuiButton, EuiFlexItem, EuiButtonEmpty } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { useAbortController } from '@kbn/observability-utils-browser/hooks/use_abort_controller'; import { toMountPoint } from '@kbn/react-kibana-mount'; import { WiredStreamGetResponse, IngestUpsertRequest } from '@kbn/streams-schema'; import React from 'react'; +import { useAbortController } from '@kbn/react-hooks'; import { useKibana } from '../../hooks/use_kibana'; import { useStreamsAppRouter } from '../../hooks/use_streams_app_router'; import { emptyEqualsToAlways } from '../../util/condition'; diff --git a/x-pack/solutions/observability/plugins/streams_app/public/hooks/use_dashboards_api.ts b/x-pack/solutions/observability/plugins/streams_app/public/hooks/use_dashboards_api.ts index 6c8458555811f..ba299b9a20c68 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/hooks/use_dashboards_api.ts +++ b/x-pack/solutions/observability/plugins/streams_app/public/hooks/use_dashboards_api.ts @@ -5,8 +5,8 @@ * 2.0. */ import { useCallback } from 'react'; -import { useAbortController } from '@kbn/observability-utils-browser/hooks/use_abort_controller'; import type { SanitizedDashboardAsset } from '@kbn/streams-plugin/server/routes/dashboards/route'; +import { useAbortController } from '@kbn/react-hooks'; import { useKibana } from './use_kibana'; export const useDashboardsApi = (name?: string) => { diff --git a/x-pack/solutions/observability/plugins/streams_app/public/hooks/use_streams_app_fetch.ts b/x-pack/solutions/observability/plugins/streams_app/public/hooks/use_streams_app_fetch.ts index 1338c51612aa2..01e2a55a2ee5a 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/hooks/use_streams_app_fetch.ts +++ b/x-pack/solutions/observability/plugins/streams_app/public/hooks/use_streams_app_fetch.ts @@ -6,12 +6,9 @@ */ import { i18n } from '@kbn/i18n'; -import { - UseAbortableAsync, - useAbortableAsync, -} from '@kbn/observability-utils-browser/hooks/use_abortable_async'; import { omit } from 'lodash'; import { isRequestAbortedError } from '@kbn/server-route-repository-client'; +import { UseAbortableAsync, useAbortableAsync } from '@kbn/react-hooks'; import { useKibana } from './use_kibana'; export const useStreamsAppFetch: UseAbortableAsync<{}, { disableToastOnError?: boolean }> = ( diff --git a/x-pack/solutions/observability/plugins/streams_app/public/util/esql_result_to_timeseries.ts b/x-pack/solutions/observability/plugins/streams_app/public/util/esql_result_to_timeseries.ts index c32bbf89135bd..c8c69192a681a 100644 --- a/x-pack/solutions/observability/plugins/streams_app/public/util/esql_result_to_timeseries.ts +++ b/x-pack/solutions/observability/plugins/streams_app/public/util/esql_result_to_timeseries.ts @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import type { AbortableAsyncState } from '@kbn/observability-utils-browser/hooks/use_abortable_async'; +import type { AbortableAsyncState } from '@kbn/react-hooks'; import type { UnparsedEsqlResponse } from '@kbn/observability-utils-server/es/client/create_observability_es_client'; import { orderBy } from 'lodash'; From 6789c946885fe0b6a2e57e056831f1ff25156f73 Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Tue, 18 Feb 2025 09:17:42 -0700 Subject: [PATCH 70/78] [visualize] fix unsaved state when adding by-value visualize embeddable to dashboard (#211264) Follow up to https://github.com/elastic/kibana/pull/210125 [8.16](https://github.com/elastic/kibana/pull/211057) and [8.17](https://github.com/elastic/kibana/pull/211054) backports for https://github.com/elastic/kibana/pull/210125 were failing functional test https://github.com/elastic/kibana/blob/8.17/test/functional/apps/dashboard/group1/dashboard_unsaved_listing.ts#L142. The functional test adds a by-value and by-reference legacy visualization to a new dashboard. Upon saving the dashboard, the dashboard still showed unsaved changes. The reason this test did not fail main and other branches is that https://github.com/elastic/kibana/pull/208116 removed the "by-value" part of the test (since its no longer possible to add a by-value legacy visualization from within a dashboard). It is still possible to recreate the issue in main with the following steps 1) Click "Visualize Library" in left nav 2) Click "Create visualization" button. 3) Click "Legacy" tab 4) Click "Aggregation based" 5) Click "Area" 6) Click web logs sample data view 7) Click "Save" 8) Set title 9) Under "Add to dashboard", click "New", click save 10) save dashboard. Notice how dashboard still has unsaved changes. 8.16 and 8.17 required a [new commit](https://github.com/elastic/kibana/pull/211054/commits/1fd631c5a30046b5ab2f63948174ec29bac6fd84) to resolve the issue by updating the `linkedToLibrary` to ignore undefined values. This PR fixes the issue for the other branches that have already been merged. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Elastic Machine --- .../public/embeddable/visualize_embeddable.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/platform/plugins/shared/visualizations/public/embeddable/visualize_embeddable.tsx b/src/platform/plugins/shared/visualizations/public/embeddable/visualize_embeddable.tsx index 57c95cfc60700..e3f055ccd597a 100644 --- a/src/platform/plugins/shared/visualizations/public/embeddable/visualize_embeddable.tsx +++ b/src/platform/plugins/shared/visualizations/public/embeddable/visualize_embeddable.tsx @@ -308,7 +308,13 @@ export const getVisualizeEmbeddableFactory: (deps: { }, ], savedObjectProperties: getUnchangingComparator(), - linkedToLibrary: [linkedToLibrary$, (value) => linkedToLibrary$.next(value)], + linkedToLibrary: [ + linkedToLibrary$, + (value) => linkedToLibrary$.next(value), + (a, b) => { + return a === undefined || b === undefined ? true : a === b; + }, + ], } ); From 9a6a349a466d4c21bd8d94b7be67996c102dbd5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20L=C3=BCder?= Date: Tue, 18 Feb 2025 10:37:57 -0600 Subject: [PATCH 71/78] fix: add REACT_18 env variable to kbn-plugin-helpers bazel config (#211121) ## Summary Adds `REACT_18` to `kbn-plugin-helpers` bazel config, this fixes an issue when trying to create plugins using the automatic plugin generator. For context see https://github.com/elastic/kibana/pull/210917#issuecomment-2657805726 Related user report: [Custom Plugin Error](https://discuss.elastic.co/t/custom-plugin-error/366589) Before fix: ![image](https://github.com/user-attachments/assets/e7e9e524-719e-4fdb-8598-050ec9f2f036) After fix: ![image](https://github.com/user-attachments/assets/63d69d1a-bfc8-4be6-83a0-1c567be4d101) ### Checklist Check the PR satisfies following conditions. Reviewers should verify this PR satisfies this list as well. - [ ] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [ ] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the [docker list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker) - [ ] This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The `release_note:breaking` label should be applied in these situations. - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [ ] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) Co-authored-by: Jon --- packages/kbn-plugin-helpers/src/tasks/bazel_packages.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/kbn-plugin-helpers/src/tasks/bazel_packages.ts b/packages/kbn-plugin-helpers/src/tasks/bazel_packages.ts index c7a6ad85bab1f..08f82e497f45a 100644 --- a/packages/kbn-plugin-helpers/src/tasks/bazel_packages.ts +++ b/packages/kbn-plugin-helpers/src/tasks/bazel_packages.ts @@ -13,6 +13,8 @@ import { TaskContext } from '../task_context'; export async function buildBazelPackages({ log, dist }: TaskContext) { log.info('run bazel and build required artifacts for the optimizer'); + const args = [`--define=REACT_18=${Boolean(process.env.REACT_18)}`]; + if (dist) args.push('--define=dist=true'); try { await runBazel( [ @@ -21,7 +23,7 @@ export async function buildBazelPackages({ log, dist }: TaskContext) { '//src/platform/packages/private/kbn-ui-shared-deps-src:shared_built_assets', '//src/platform/packages/shared/kbn-monaco:target_workers', '--show_result=1', - ].concat(dist ? [`--define=dist=true`] : []), + ].concat(args), { logPrefix: ' │ ', quiet: true, From b6f0cc7857c2109b8a927eea476f5f8b9a704fe8 Mon Sep 17 00:00:00 2001 From: Paul Tavares <56442535+paul-tavares@users.noreply.github.com> Date: Tue, 18 Feb 2025 11:46:44 -0500 Subject: [PATCH 72/78] [Security Solution][Endpoint] Add the space ID to endpoint artifacts when creating or updating them (#210698) ## Summary Changes in this PR are in associated with Endpoint Management support for spaces: - When creating an endpoint artifact (Trusted Apps, Event Filters, Blocklists, Host Isolation Exceptions, Endpoint Exceptions), the API will ensure a new `tag` is dded to each item created that identifies the space ID from where it was crated - This functionality is behind the following feature flag: `endpointManagementSpaceAwarenessEnabled` - The tag that will be automatically added has a format of: `ownerSpaceId:` - Likewise, when updating an artifact, the API will ensure that at least 1 owner space id tag is present on the item, and if not, it will add one to it. --- .../endpoint/service/artifacts/constants.ts | 3 + .../endpoint/service/artifacts/utils.test.ts | 47 +++++++++++ .../endpoint/service/artifacts/utils.ts | 60 ++++++++++++++ .../endpoint/endpoint_app_context_services.ts | 11 +++ .../server/endpoint/mocks/mocks.ts | 6 +- .../endpoint/validators/base_validator.ts | 22 +++++ .../validators/blocklist_validator.ts | 7 ++ .../endpoint_exceptions_validator.ts | 9 ++ .../validators/event_filter_validator.ts | 8 ++ .../host_isolation_exceptions_validator.ts | 7 ++ .../validators/trusted_app_validator.ts | 7 ++ .../security_solution/server/plugin.ts | 1 + .../space_awareness.ts | 82 +++++++++++++++++++ .../services/endpoint_artifacts.ts | 80 ++++++++++++------ 14 files changed, 322 insertions(+), 28 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/constants.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/constants.ts index 9917742d7b7cc..f657577d40ffe 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/constants.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/constants.ts @@ -15,6 +15,9 @@ export const GLOBAL_ARTIFACT_TAG = `${BY_POLICY_ARTIFACT_TAG_PREFIX}all`; export const FILTER_PROCESS_DESCENDANTS_TAG = 'filter_process_descendants'; +/** The tag prefix that tracks the space(s) that is considered the "owner" of the artifact. */ +export const OWNER_SPACE_ID_TAG_PREFIX = 'ownerSpaceId:'; + export const PROCESS_DESCENDANT_EVENT_FILTER_EXTRA_ENTRY: EntryMatch = Object.freeze({ field: 'event.category', operator: 'included', diff --git a/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/utils.test.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/utils.test.ts index dba34da5bf1e5..fa359d6f0a64f 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/utils.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/utils.test.ts @@ -13,15 +13,19 @@ import { GLOBAL_ARTIFACT_TAG, } from './constants'; import { + buildSpaceOwnerIdTag, createExceptionListItemForCreate, + getArtifactOwnerSpaceIds, getArtifactTagsByPolicySelection, getEffectedPolicySelectionByTags, getPolicyIdsFromArtifact, + hasArtifactOwnerSpaceId, isArtifactByPolicy, isArtifactGlobal, isFilterProcessDescendantsEnabled, isFilterProcessDescendantsTag, isPolicySelectionTag, + setArtifactOwnerSpaceId, } from './utils'; describe('Endpoint artifact utilities', () => { @@ -193,4 +197,47 @@ describe('Endpoint artifact utilities', () => { }); }); }); + + describe('when using `buildSpaceOwnerIdTag()`', () => { + it('should return an artifact tag', () => { + expect(buildSpaceOwnerIdTag('abc')).toEqual(`ownerSpaceId:abc`); + }); + }); + + describe('when using `getArtifactOwnerSpaceIds()`', () => { + it.each` + name | tags | expectedResult + ${'expected array of values'} | ${{ tags: [buildSpaceOwnerIdTag('abc'), buildSpaceOwnerIdTag('123')] }} | ${['abc', '123']} + ${'empty array if no tags'} | ${{}} | ${[]} + ${'empty array if no ownerSpaceId tags'} | ${{ tags: ['one', 'two'] }} | ${[]} + `('should return $name', ({ tags, expectedResult }) => { + expect(getArtifactOwnerSpaceIds(tags)).toEqual(expectedResult); + }); + }); + + describe('when using `hasArtifactOwnerSpaceId()`', () => { + it.each` + name | tags | expectedResult + ${'artifact has tag with space id'} | ${{ tags: [buildSpaceOwnerIdTag('abc')] }} | ${true} + ${'artifact does not have tag with space id'} | ${{ tags: ['123'] }} | ${false} + `('should return $expectedResult when $name', ({ tags, expectedResult }) => { + expect(hasArtifactOwnerSpaceId(tags)).toEqual(expectedResult); + }); + }); + + describe('when using `setArtifactOwnerSpaceId()`', () => { + it('should set owner space ID if item does not currently have one matching the space id', () => { + const item = { tags: [buildSpaceOwnerIdTag('foo')] }; + setArtifactOwnerSpaceId(item, 'abc'); + + expect(item).toEqual({ tags: [buildSpaceOwnerIdTag('foo'), buildSpaceOwnerIdTag('abc')] }); + }); + + it('should not add another owner space ID if item already has one that matches the space id', () => { + const item = { tags: [buildSpaceOwnerIdTag('abc')] }; + setArtifactOwnerSpaceId(item, 'abc'); + + expect(item).toEqual({ tags: [buildSpaceOwnerIdTag('abc')] }); + }); + }); }); diff --git a/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/utils.ts b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/utils.ts index 322cd87fd7bea..e9026f092c7eb 100644 --- a/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/utils.ts +++ b/x-pack/solutions/security/plugins/security_solution/common/endpoint/service/artifacts/utils.ts @@ -16,6 +16,7 @@ import { BY_POLICY_ARTIFACT_TAG_PREFIX, FILTER_PROCESS_DESCENDANTS_TAG, GLOBAL_ARTIFACT_TAG, + OWNER_SPACE_ID_TAG_PREFIX, } from './constants'; export type TagFilter = (tag: string) => boolean; @@ -118,3 +119,62 @@ export const createExceptionListItemForCreate = (listId: string): CreateExceptio os_types: ['windows'], }; }; + +/** + * Returns an array with all owner space IDs for the artifact + */ +export const getArtifactOwnerSpaceIds = ( + item: Partial> +): string[] => { + return (item.tags ?? []).reduce((acc, tag) => { + if (tag.startsWith(OWNER_SPACE_ID_TAG_PREFIX)) { + acc.push(tag.substring(OWNER_SPACE_ID_TAG_PREFIX.length)); + } + + return acc; + }, [] as string[]); +}; + +/** Returns an Artifact `tag` value for a given space id */ +export const buildSpaceOwnerIdTag = (spaceId: string): string => { + if (spaceId.trim() === '') { + throw new Error('spaceId must be a string with a length greater than zero.'); + } + + return `${OWNER_SPACE_ID_TAG_PREFIX}${spaceId}`; +}; + +/** + * Sets the owner space id on the given artifact, if not already present. + * + * NOTE: this utility will mutate the artifact exception list item provided on input. + * + * @param item + * @param spaceId + */ +export const setArtifactOwnerSpaceId = ( + item: Partial>, + spaceId: string +): void => { + if (spaceId.trim() === '') { + throw new Error('spaceId must be a string with a length greater than zero.'); + } + + if (!getArtifactOwnerSpaceIds(item).includes(spaceId)) { + if (!item.tags) { + item.tags = []; + } + + item.tags.push(buildSpaceOwnerIdTag(spaceId)); + } +}; + +/** + * Checks to see if the artifact item has at least 1 owner space id tag + * @param item + */ +export const hasArtifactOwnerSpaceId = ( + item: Partial> +): boolean => { + return (item.tags ?? []).some((tag) => tag.startsWith(OWNER_SPACE_ID_TAG_PREFIX)); +}; diff --git a/x-pack/solutions/security/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts index 92e3de8a10645..ddebefd0bddc0 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts @@ -25,7 +25,9 @@ import type { AlertingServerStart } from '@kbn/alerting-plugin/server'; import type { CloudSetup } from '@kbn/cloud-plugin/server'; import type { FleetActionsClientInterface } from '@kbn/fleet-plugin/server/services/actions/types'; import type { PluginStartContract as ActionsPluginStartContract } from '@kbn/actions-plugin/server'; +import type { Space } from '@kbn/spaces-plugin/common'; import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; +import type { SpacesServiceStart } from '@kbn/spaces-plugin/server'; import type { TelemetryConfigProvider } from '../../common/telemetry_config/telemetry_config_provider'; import { SavedObjectsClientFactory } from './services/saved_objects'; import type { ResponseActionsClient } from './services'; @@ -88,6 +90,7 @@ export interface EndpointAppContextServiceStartContract { savedObjectsServiceStart: SavedObjectsServiceStart; connectorActions: ActionsPluginStartContract; telemetryConfigProvider: TelemetryConfigProvider; + spacesService: SpacesServiceStart | undefined; } /** @@ -430,4 +433,12 @@ export class EndpointAppContextService { } return this.setupDependencies.telemetry; } + + public getActiveSpace(httpRequest: KibanaRequest): Promise { + if (!this.startDependencies?.spacesService) { + throw new EndpointAppContentServicesNotStartedError(); + } + + return this.startDependencies.spacesService.getActiveSpace(httpRequest); + } } diff --git a/x-pack/solutions/security/plugins/security_solution/server/endpoint/mocks/mocks.ts b/x-pack/solutions/security/plugins/security_solution/server/endpoint/mocks/mocks.ts index ea4be1a2870ff..f74c0509da2b1 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/endpoint/mocks/mocks.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/endpoint/mocks/mocks.ts @@ -50,6 +50,8 @@ import { unsecuredActionsClientMock } from '@kbn/actions-plugin/server/unsecured import type { PluginStartContract as ActionPluginStartContract } from '@kbn/actions-plugin/server'; import type { Mutable } from 'utility-types'; import type { DeeplyMockedKeys } from '@kbn/utility-types-jest'; +import { spacesMock } from '@kbn/spaces-plugin/server/mocks'; +import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; import { createTelemetryConfigProviderMock } from '../../../common/telemetry_config/mocks'; import { createSavedObjectsClientFactoryMock } from '../services/saved_objects/saved_objects_client_factory.mocks'; import { EndpointMetadataService } from '../services/metadata'; @@ -148,6 +150,7 @@ export const createMockEndpointAppContextService = ( savedObjects: createSavedObjectsClientFactoryMock({ savedObjectsServiceStart }).service, isServerless: jest.fn().mockReturnValue(false), getInternalEsClient: jest.fn().mockReturnValue(esClient), + getActiveSpace: jest.fn(async () => DEFAULT_SPACE_ID), } as unknown as jest.Mocked; }; @@ -175,7 +178,7 @@ type CreateMockEndpointAppContextServiceStartContractType = Omit< export const createMockEndpointAppContextServiceStartContract = (): CreateMockEndpointAppContextServiceStartContractType => { const config = createMockConfig(); - + const spacesService = spacesMock.createStart().spacesService; const logger = loggingSystemMock.create().get('mock_endpoint_app_context'); const security = securityServiceMock.createStart() as unknown as DeeplyMockedKeys; @@ -218,6 +221,7 @@ export const createMockEndpointAppContextServiceStartContract = getUnsecuredActionsClient: jest.fn().mockReturnValue(unsecuredActionsClientMock.create()), } as unknown as jest.Mocked, telemetryConfigProvider: createTelemetryConfigProviderMock(), + spacesService, }; return startContract; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/base_validator.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/base_validator.ts index 4ad1d3f699990..dfcb222a3a675 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/base_validator.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/base_validator.ts @@ -11,6 +11,7 @@ import { isEqual } from 'lodash/fp'; import type { ExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; import { OperatingSystem } from '@kbn/securitysolution-utils'; +import { setArtifactOwnerSpaceId } from '../../../../common/endpoint/service/artifacts/utils'; import type { FeatureKeys } from '../../../endpoint/services'; import type { EndpointAuthz } from '../../../../common/endpoint/types/authz'; import type { EndpointAppContextService } from '../../../endpoint/endpoint_app_context_services'; @@ -196,4 +197,25 @@ export class BaseValidator { return false; } + + /** + * Update the artifact item (if necessary) with a `ownerSpaceId` tag using the HTTP request's active space + * @param item + * @protected + */ + protected async setOwnerSpaceId( + item: Partial> + ): Promise { + if (this.endpointAppContext.experimentalFeatures.endpointManagementSpaceAwarenessEnabled) { + if (!this.request) { + throw new EndpointArtifactExceptionValidationError( + 'Unable to determine space id. Missing HTTP Request object', + 500 + ); + } + + const spaceId = (await this.endpointAppContext.getActiveSpace(this.request)).id; + setArtifactOwnerSpaceId(item, spaceId); + } + } } diff --git a/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/blocklist_validator.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/blocklist_validator.ts index d5c66dc2c8e6e..a7fda50a2b6cc 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/blocklist_validator.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/blocklist_validator.ts @@ -15,6 +15,7 @@ import type { UpdateExceptionListItemOptions, } from '@kbn/lists-plugin/server'; import { ENDPOINT_ARTIFACT_LISTS } from '@kbn/securitysolution-list-constants'; +import { hasArtifactOwnerSpaceId } from '../../../../common/endpoint/service/artifacts/utils'; import { BaseValidator } from './base_validator'; import type { ExceptionItemLikeOptions } from '../types'; import { isValidHash } from '../../../../common/endpoint/service/artifacts/validations'; @@ -243,6 +244,8 @@ export class BlocklistValidator extends BaseValidator { await this.validateCanCreateByPolicyArtifacts(item); await this.validateByPolicyItem(item); + await this.setOwnerSpaceId(item); + return item; } @@ -297,6 +300,10 @@ export class BlocklistValidator extends BaseValidator { await this.validateByPolicyItem(updatedItem); + if (!hasArtifactOwnerSpaceId(_updatedItem)) { + await this.setOwnerSpaceId(_updatedItem); + } + return _updatedItem; } diff --git a/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/endpoint_exceptions_validator.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/endpoint_exceptions_validator.ts index 23d1d28ba0a59..292389253417e 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/endpoint_exceptions_validator.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/endpoint_exceptions_validator.ts @@ -10,6 +10,7 @@ import type { UpdateExceptionListItemOptions, } from '@kbn/lists-plugin/server'; import { ENDPOINT_LIST_ID } from '@kbn/securitysolution-list-constants'; +import { hasArtifactOwnerSpaceId } from '../../../../common/endpoint/service/artifacts/utils'; import { BaseValidator } from './base_validator'; export class EndpointExceptionsValidator extends BaseValidator { @@ -27,11 +28,19 @@ export class EndpointExceptionsValidator extends BaseValidator { async validatePreCreateItem(item: CreateExceptionListItemOptions) { await this.validateHasWritePrivilege(); + + await this.setOwnerSpaceId(item); + return item; } async validatePreUpdateItem(item: UpdateExceptionListItemOptions) { await this.validateHasWritePrivilege(); + + if (!hasArtifactOwnerSpaceId(item)) { + await this.setOwnerSpaceId(item); + } + return item; } diff --git a/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts index 1e68355d20037..8b67ffef51e20 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/event_filter_validator.ts @@ -14,6 +14,7 @@ import type { UpdateExceptionListItemOptions, } from '@kbn/lists-plugin/server'; +import { hasArtifactOwnerSpaceId } from '../../../../common/endpoint/service/artifacts/utils'; import type { ExceptionItemLikeOptions } from '../types'; import { BaseValidator } from './base_validator'; @@ -59,6 +60,8 @@ export class EventFilterValidator extends BaseValidator { await this.validateByPolicyItem(item); } + await this.setOwnerSpaceId(item); + return item; } @@ -83,6 +86,11 @@ export class EventFilterValidator extends BaseValidator { } await this.validateByPolicyItem(updatedItem); + + if (!hasArtifactOwnerSpaceId(_updatedItem)) { + await this.setOwnerSpaceId(_updatedItem); + } + return _updatedItem; } diff --git a/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts index debd4b021ba09..7921da93dc20d 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/host_isolation_exceptions_validator.ts @@ -12,6 +12,7 @@ import type { CreateExceptionListItemOptions, UpdateExceptionListItemOptions, } from '@kbn/lists-plugin/server'; +import { hasArtifactOwnerSpaceId } from '../../../../common/endpoint/service/artifacts/utils'; import { BaseValidator, BasicEndpointExceptionDataSchema } from './base_validator'; import { EndpointArtifactExceptionValidationError } from './errors'; import type { ExceptionItemLikeOptions } from '../types'; @@ -79,6 +80,8 @@ export class HostIsolationExceptionsValidator extends BaseValidator { await this.validateHostIsolationData(item); await this.validateByPolicyItem(item); + await this.setOwnerSpaceId(item); + return item; } @@ -91,6 +94,10 @@ export class HostIsolationExceptionsValidator extends BaseValidator { await this.validateHostIsolationData(updatedItem); await this.validateByPolicyItem(updatedItem); + if (!hasArtifactOwnerSpaceId(_updatedItem)) { + await this.setOwnerSpaceId(_updatedItem); + } + return _updatedItem; } diff --git a/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/trusted_app_validator.ts b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/trusted_app_validator.ts index 3b8a77a964006..da0b405a9ccb3 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/trusted_app_validator.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lists_integration/endpoint/validators/trusted_app_validator.ts @@ -15,6 +15,7 @@ import type { CreateExceptionListItemOptions, UpdateExceptionListItemOptions, } from '@kbn/lists-plugin/server'; +import { hasArtifactOwnerSpaceId } from '../../../../common/endpoint/service/artifacts/utils'; import { BaseValidator } from './base_validator'; import type { ExceptionItemLikeOptions } from '../types'; import type { TrustedAppConditionEntry as ConditionEntry } from '../../../../common/endpoint/types'; @@ -207,6 +208,8 @@ export class TrustedAppValidator extends BaseValidator { await this.validateCanCreateByPolicyArtifacts(item); await this.validateByPolicyItem(item); + await this.setOwnerSpaceId(item); + return item; } @@ -256,6 +259,10 @@ export class TrustedAppValidator extends BaseValidator { await this.validateByPolicyItem(updatedItem); + if (!hasArtifactOwnerSpaceId(_updatedItem)) { + await this.setOwnerSpaceId(_updatedItem); + } + return _updatedItem; } diff --git a/x-pack/solutions/security/plugins/security_solution/server/plugin.ts b/x-pack/solutions/security/plugins/security_solution/server/plugin.ts index dea527b73fd76..93ee94f6b3944 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/plugin.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/plugin.ts @@ -639,6 +639,7 @@ export class Plugin implements ISecuritySolutionPlugin { productFeaturesService, savedObjectsServiceStart: core.savedObjects, connectorActions: plugins.actions, + spacesService: plugins.spaces?.spacesService, }); if (this.lists && plugins.taskManager && plugins.fleet) { diff --git a/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/spaces/trial_license_complete_tier/space_awareness.ts b/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/spaces/trial_license_complete_tier/space_awareness.ts index 9c83451111f95..e9f4a1289d6fe 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/spaces/trial_license_complete_tier/space_awareness.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/edr_workflows/spaces/trial_license_complete_tier/space_awareness.ts @@ -15,12 +15,21 @@ import { HOST_METADATA_GET_ROUTE, HOST_METADATA_LIST_ROUTE, } from '@kbn/security-solution-plugin/common/endpoint/constants'; +import { + ENDPOINT_ARTIFACT_LISTS, + EXCEPTION_LIST_ITEM_URL, +} from '@kbn/securitysolution-list-constants'; +import { buildSpaceOwnerIdTag } from '@kbn/security-solution-plugin/common/endpoint/service/artifacts/utils'; +import { exceptionItemToCreateExceptionItem } from '@kbn/security-solution-plugin/common/endpoint/data_generators/exceptions_list_item_generator'; +import type { ExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; +import { ArtifactTestData } from '../../../../../security_solution_endpoint/services/endpoint_artifacts'; import { createSupertestErrorLogger } from '../../utils'; import { FtrProviderContext } from '../../../../ftr_provider_context_edr_workflows'; export default function ({ getService }: FtrProviderContext) { const utils = getService('securitySolutionUtils'); const endpointTestresources = getService('endpointTestResources'); + const endpointArtifactTestResources = getService('endpointArtifactTestResources'); const kbnServer = getService('kibanaServer'); const log = getService('log'); @@ -186,5 +195,78 @@ export default function ({ getService }: FtrProviderContext) { expect(body.data[dataSpaceB.hosts[0].agent.id].found).to.eql(false); }); }); + + describe(`Artifact management (via Lists plugin)`, () => { + const artifactLists = Object.keys(ENDPOINT_ARTIFACT_LISTS); + + for (const artifactList of artifactLists) { + const listInfo = + ENDPOINT_ARTIFACT_LISTS[artifactList as keyof typeof ENDPOINT_ARTIFACT_LISTS]; + + describe(`for ${listInfo.name}`, () => { + let itemDataSpaceA: ArtifactTestData; + + beforeEach(async () => { + itemDataSpaceA = await endpointArtifactTestResources.createArtifact( + listInfo.id, + { tags: [] }, + { supertest: adminSupertest, spaceId: dataSpaceA.spaceId } + ); + }); + + afterEach(async () => { + if (itemDataSpaceA) { + await itemDataSpaceA.cleanup(); + // @ts-expect-error assigning `undefined` + itemDataSpaceA = undefined; + } + }); + + it('should add owner space id when item is created', async () => { + expect(itemDataSpaceA.artifact.tags).to.include.string( + buildSpaceOwnerIdTag(dataSpaceA.spaceId) + ); + }); + + it('should not add owner space id during artifact update if one is already present', async () => { + const { body } = await adminSupertest + .put(addSpaceIdToPath('/', dataSpaceA.spaceId, EXCEPTION_LIST_ITEM_URL)) + .set('elastic-api-version', '2023-10-31') + .set('x-elastic-internal-origin', 'kibana') + .set('kbn-xsrf', 'true') + .on('error', createSupertestErrorLogger(log)) + .send( + exceptionItemToCreateExceptionItem({ + ...itemDataSpaceA.artifact, + description: 'item was updated', + }) + ) + .expect(200); + + expect((body as ExceptionListItemSchema).tags).to.eql(itemDataSpaceA.artifact.tags); + }); + + it('should add owner space id when item is updated, if one is not present', async () => { + const { body } = await adminSupertest + .put(addSpaceIdToPath('/', dataSpaceA.spaceId, EXCEPTION_LIST_ITEM_URL)) + .set('elastic-api-version', '2023-10-31') + .set('x-elastic-internal-origin', 'kibana') + .set('kbn-xsrf', 'true') + .on('error', createSupertestErrorLogger(log)) + .send( + exceptionItemToCreateExceptionItem({ + ...itemDataSpaceA.artifact, + tags: [], + }) + ) + .expect(200); + + expect((body as ExceptionListItemSchema).tags).to.eql([ + buildSpaceOwnerIdTag(dataSpaceA.spaceId), + ]); + }); + }); + } + }); }); } diff --git a/x-pack/test/security_solution_endpoint/services/endpoint_artifacts.ts b/x-pack/test/security_solution_endpoint/services/endpoint_artifacts.ts index ce0d5ce6cda41..84197cff208a1 100644 --- a/x-pack/test/security_solution_endpoint/services/endpoint_artifacts.ts +++ b/x-pack/test/security_solution_endpoint/services/endpoint_artifacts.ts @@ -24,6 +24,8 @@ import { EVENT_FILTER_LIST_DEFINITION } from '@kbn/security-solution-plugin/publ import { HOST_ISOLATION_EXCEPTIONS_LIST_DEFINITION } from '@kbn/security-solution-plugin/public/management/pages/host_isolation_exceptions/constants'; import { BLOCKLISTS_LIST_DEFINITION } from '@kbn/security-solution-plugin/public/management/pages/blocklist/constants'; import { ManifestConstants } from '@kbn/security-solution-plugin/server/endpoint/lib/artifacts'; +import TestAgent from 'supertest/lib/agent'; +import { addSpaceIdToPath, DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; import { FtrService } from '../../functional/ftr_provider_context'; import { InternalUnifiedManifestSchemaResponseType } from '../apps/integrations/mocks'; @@ -32,6 +34,11 @@ export interface ArtifactTestData { cleanup: () => Promise; } +export interface ArtifactCreateOptions { + supertest?: TestAgent; + spaceId?: string; +} + export class EndpointArtifactsTestResources extends FtrService { private readonly exceptionsGenerator = new ExceptionsListItemGenerator(); private readonly supertest = this.ctx.getService('supertest'); @@ -50,20 +57,24 @@ export class EndpointArtifactsTestResources extends FtrService { }; } - private async ensureListExists(listDefinition: CreateExceptionListSchema): Promise { + private async ensureListExists( + listDefinition: CreateExceptionListSchema, + { supertest = this.supertest, spaceId = DEFAULT_SPACE_ID }: ArtifactCreateOptions = {} + ): Promise { // attempt to create it and ignore 409 (already exists) errors - await this.supertest - .post(EXCEPTION_LIST_URL) + await supertest + .post(addSpaceIdToPath('/', spaceId, EXCEPTION_LIST_URL)) .set('kbn-xsrf', 'true') .send(listDefinition) .then(this.getHttpResponseFailureHandler([409])); } private async createExceptionItem( - createPayload: CreateExceptionListItemSchema + createPayload: CreateExceptionListItemSchema, + { supertest = this.supertest, spaceId = DEFAULT_SPACE_ID }: ArtifactCreateOptions = {} ): Promise { - const artifact = await this.supertest - .post(EXCEPTION_LIST_ITEM_URL) + const artifact = await supertest + .post(addSpaceIdToPath('/', spaceId, EXCEPTION_LIST_ITEM_URL)) .set('kbn-xsrf', 'true') .send(createPayload) .then(this.getHttpResponseFailureHandler()) @@ -71,11 +82,19 @@ export class EndpointArtifactsTestResources extends FtrService { const { item_id: itemId, namespace_type: namespaceType, list_id: listId } = artifact; - this.log.info(`Created exception list item [${listId}]: ${itemId}`); + this.log.info( + `Created exception list item in space [${spaceId}], List ID [${listId}], Item ID ${itemId}` + ); const cleanup = async () => { - const deleteResponse = await this.supertest - .delete(`${EXCEPTION_LIST_ITEM_URL}?item_id=${itemId}&namespace_type=${namespaceType}`) + const deleteResponse = await supertest + .delete( + `${addSpaceIdToPath( + '/', + spaceId, + EXCEPTION_LIST_ITEM_URL + )}?item_id=${itemId}&namespace_type=${namespaceType}` + ) .set('kbn-xsrf', 'true') .send() .then(this.getHttpResponseFailureHandler([404])); @@ -92,58 +111,65 @@ export class EndpointArtifactsTestResources extends FtrService { } async createTrustedApp( - overrides: Partial = {} + overrides: Partial = {}, + options?: ArtifactCreateOptions ): Promise { - await this.ensureListExists(TRUSTED_APPS_EXCEPTION_LIST_DEFINITION); + await this.ensureListExists(TRUSTED_APPS_EXCEPTION_LIST_DEFINITION, options); const trustedApp = this.exceptionsGenerator.generateTrustedAppForCreate(overrides); - return this.createExceptionItem(trustedApp); + return this.createExceptionItem(trustedApp, options); } async createEventFilter( - overrides: Partial = {} + overrides: Partial = {}, + options?: ArtifactCreateOptions ): Promise { - await this.ensureListExists(EVENT_FILTER_LIST_DEFINITION); + await this.ensureListExists(EVENT_FILTER_LIST_DEFINITION, options); const eventFilter = this.exceptionsGenerator.generateEventFilterForCreate(overrides); - return this.createExceptionItem(eventFilter); + return this.createExceptionItem(eventFilter, options); } async createHostIsolationException( - overrides: Partial = {} + overrides: Partial = {}, + options?: ArtifactCreateOptions ): Promise { - await this.ensureListExists(HOST_ISOLATION_EXCEPTIONS_LIST_DEFINITION); + await this.ensureListExists(HOST_ISOLATION_EXCEPTIONS_LIST_DEFINITION, options); const artifact = this.exceptionsGenerator.generateHostIsolationExceptionForCreate(overrides); - return this.createExceptionItem(artifact); + return this.createExceptionItem(artifact, options); } async createBlocklist( - overrides: Partial = {} + overrides: Partial = {}, + options?: ArtifactCreateOptions ): Promise { - await this.ensureListExists(BLOCKLISTS_LIST_DEFINITION); + await this.ensureListExists(BLOCKLISTS_LIST_DEFINITION, options); const blocklist = this.exceptionsGenerator.generateBlocklistForCreate(overrides); - return this.createExceptionItem(blocklist); + return this.createExceptionItem(blocklist, options); } async createArtifact( listId: (typeof ENDPOINT_ARTIFACT_LIST_IDS)[number], - overrides: Partial = {} - ): Promise { + overrides: Partial = {}, + options?: ArtifactCreateOptions + ): Promise { switch (listId) { case ENDPOINT_ARTIFACT_LISTS.trustedApps.id: { - return this.createTrustedApp(overrides); + return this.createTrustedApp(overrides, options); } case ENDPOINT_ARTIFACT_LISTS.eventFilters.id: { - return this.createEventFilter(overrides); + return this.createEventFilter(overrides, options); } case ENDPOINT_ARTIFACT_LISTS.blocklists.id: { - return this.createBlocklist(overrides); + return this.createBlocklist(overrides, options); } case ENDPOINT_ARTIFACT_LISTS.hostIsolationExceptions.id: { - return this.createHostIsolationException(overrides); + return this.createHostIsolationException(overrides, options); } + default: + throw new Error(`Unexpected list id ${listId}`); } } From a67154c6a76ce14aafb13b3e76b8b2bb71ebc310 Mon Sep 17 00:00:00 2001 From: Nathan Reese Date: Tue, 18 Feb 2025 10:17:32 -0700 Subject: [PATCH 73/78] =?UTF-8?q?unskip=20Failing=20test:=20X-Pack=20API?= =?UTF-8?q?=20Integration=20Tests.x-pack/test/api=5Fintegration/apis/maps/?= =?UTF-8?q?search=C2=B7ts=20(#211304)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes https://github.com/elastic/kibana/issues/208138 ES|QL response updated with `is_partial` key. x-pack/test/api_integration/apis/maps/search.ts tests where skipped to unblock ES-snapshot promotion. This PR unskips the tests and updates the expects for the new response shape --------- Co-authored-by: Elastic Machine --- x-pack/test/api_integration/apis/maps/search.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/x-pack/test/api_integration/apis/maps/search.ts b/x-pack/test/api_integration/apis/maps/search.ts index 0984f961e2ca6..26e34c0a1ff5d 100644 --- a/x-pack/test/api_integration/apis/maps/search.ts +++ b/x-pack/test/api_integration/apis/maps/search.ts @@ -14,8 +14,7 @@ import type { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); - // Failing: See https://github.com/elastic/kibana/issues/208138 - describe.skip('search', () => { + describe('search', () => { describe('ES|QL', () => { it(`should return getColumns response in expected shape`, async () => { const resp = await supertest @@ -37,6 +36,7 @@ export default function ({ getService }: FtrProviderContext) { type: 'geo_point', }, ], + is_partial: false, values: [], }); }); @@ -77,6 +77,7 @@ export default function ({ getService }: FtrProviderContext) { type: 'date', }, ], + is_partial: false, values: [['POINT (-120.9871642 38.68407028)', '2015-09-20T00:00:00.000Z']], }); }); From ff0470fb4280a2891675c2242e172dce654b868a Mon Sep 17 00:00:00 2001 From: "Eyo O. Eyo" <7893459+eokoneyo@users.noreply.github.com> Date: Tue, 18 Feb 2025 19:27:36 +0100 Subject: [PATCH 74/78] Consolidate all language definitions used in monaco within the @kbn/monaco package (#208950) ## Summary This PR was created in response to https://github.com/elastic/kibana/pull/208858, it migrates all existing language definitions within the `@kbn/code-editor` package into the `@kbn/monaco` package to provide a separation of concern for logic that doesn't particularly relate to the configurations for the code editor UI. With this change, all supported languages are ingested from the `@kbn/monaco` package where they will be domiciled from henceforth, and in turn fix the issue that was discovered relating to the way the language definitions within `@kbn/code-editor` get registered as a side effect. With this change, to add support for a new language, said language should be defined within `@kbn/monaco`, and registered in `languages/index.ts`. --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../components/field_input/code_editor.tsx | 7 +- .../packages/shared/kbn-monaco/index.ts | 31 +------ .../packages/shared/kbn-monaco/package.json | 2 +- .../kbn-monaco/scripts/fix_generated_antlr.js | 2 +- .../kbn-monaco/src/code_editor/constants.ts | 4 +- .../shared/kbn-monaco/src/console/index.ts | 49 ----------- .../shared/kbn-monaco/src/console/language.ts | 30 ------- .../packages/shared/kbn-monaco/src/helpers.ts | 8 +- .../console/console_errors_provider.ts | 2 +- .../console_parsed_requests_provider.ts | 2 +- .../console/console_worker_proxy.ts | 2 +- .../src/{ => languages}/console/constants.ts | 6 +- .../folding_range_provider.ts | 2 +- .../folding_range_utils.test.ts | 0 .../folding_range_utils.ts | 2 +- .../console/folding_range_provider/index.ts | 0 .../kbn-monaco/src/languages/console/index.ts | 27 ++++++ .../src/languages/console/language.ts | 61 ++++++++++++++ .../console/lexer_rules/console_editor.ts | 2 +- .../console/lexer_rules/console_output.ts | 2 +- .../console/lexer_rules/index.ts | 0 .../console/lexer_rules/nested_esql.ts | 0 .../console/lexer_rules/nested_painless.ts | 0 .../console/lexer_rules/nested_sql.ts | 0 .../console/lexer_rules/shared.ts | 4 +- .../{ => languages}/console/output_parser.js | 0 .../console/output_parser.test.ts | 0 .../src/{ => languages}/console/parser.js | 0 .../{ => languages}/console/parser.test.ts | 0 .../src/{ => languages}/console/theme.ts | 4 +- .../src/{ => languages}/console/types.ts | 0 .../console/worker/console.worker.ts | 0 .../console/worker/console_worker.ts | 0 .../{ => languages}/console/worker/index.ts | 0 .../src/{yaml => languages/css}/constants.ts | 2 +- .../src}/languages/css/index.ts | 8 +- .../src}/languages/css/language.ts | 4 +- .../src/{ => languages}/esql/index.ts | 0 .../src/{ => languages}/esql/language.test.ts | 2 +- .../src/{ => languages}/esql/language.ts | 6 +- .../src/{ => languages}/esql/lib/constants.ts | 6 +- .../esql/lib/converters/actions.ts | 2 +- .../esql/lib/converters/positions.ts | 4 +- .../esql/lib/converters/suggestions.ts | 2 +- .../esql/lib/esql_ast_provider.ts | 2 +- .../esql/lib/esql_lexer_rules.ts | 2 +- .../esql/lib/esql_line_tokens.ts | 2 +- .../{ => languages}/esql/lib/esql_state.ts | 2 +- .../esql/lib/esql_theme.test.ts | 0 .../{ => languages}/esql/lib/esql_theme.ts | 4 +- .../{ => languages}/esql/lib/esql_token.ts | 2 +- .../esql/lib/esql_token_helpers.ts | 2 +- .../esql/lib/esql_tokens_provider.test.ts | 0 .../esql/lib/esql_tokens_provider.ts | 2 +- .../esql/lib/hover/hover.test.ts | 2 +- .../{ => languages}/esql/lib/hover/hover.ts | 2 +- .../src/{ => languages}/esql/lib/index.ts | 0 .../{ => languages}/esql/lib/shared/utils.ts | 2 +- .../esql/lib/signature/index.ts | 2 +- .../src/{ => languages}/esql/lib/types.ts | 2 +- .../esql/worker/esql.worker.ts | 2 +- .../esql/worker/esql_worker.ts | 4 +- .../src/{sql => languages/grok}/constants.ts | 2 +- .../src/languages/grok}/index.ts | 8 +- .../src}/languages/grok/language.test.ts | 5 +- .../src}/languages/grok/language.ts | 2 +- .../src/languages/handlebars/constants.ts | 10 +++ .../src}/languages/handlebars/index.ts | 8 +- .../src}/languages/handlebars/language.ts | 2 +- .../src/languages/hjson/constants.ts | 10 +++ .../src}/languages/hjson/index.ts | 8 +- .../src}/languages/hjson/language.ts | 2 +- .../shared/kbn-monaco/src/languages/index.ts | 83 +++++++++++++++++++ .../src/languages/markdown/constants.ts | 10 +++ .../src/languages/markdown}/index.ts | 7 +- .../src/languages/markdown/language.ts | 13 +++ .../src/{ => languages}/painless/README.md | 0 .../painless/antlr/painless_lexer.g4 | 0 .../painless/antlr/painless_lexer.interp | 0 .../painless/antlr/painless_lexer.tokens | 0 .../painless/antlr/painless_lexer.ts | 0 .../painless/antlr/painless_parser.g4 | 0 .../painless/antlr/painless_parser.interp | 0 .../painless/antlr/painless_parser.tokens | 0 .../painless/antlr/painless_parser.ts | 0 .../antlr/painless_parser_listener.ts | 0 .../boolean_script_field_script_field.json | 0 .../autocomplete_definitions/common.json | 0 .../date_script_field.json | 0 .../double_script_field_script_field.json | 0 .../autocomplete_definitions/filter.json | 0 .../autocomplete_definitions/index.ts | 0 .../ip_script_field_script_field.json | 0 .../long_script_field_script_field.json | 0 .../processor_conditional.json | 0 .../autocomplete_definitions/score.json | 0 .../string_script_field_script_field.json | 0 .../painless/completion_adapter.ts | 2 +- .../src/languages/painless/constants.ts | 10 +++ .../src/{ => languages}/painless/index.ts | 4 +- .../src/{ => languages}/painless/language.ts | 8 +- .../painless/lexer_rules/index.ts | 0 .../painless/lexer_rules/painless.ts | 2 +- .../painless/lib/editor_state.ts | 0 .../src/{ => languages}/painless/lib/index.ts | 0 .../src/{ => languages}/painless/types.ts | 0 .../{ => languages}/painless/worker/index.ts | 0 .../painless/worker/lib/autocomplete.test.ts | 0 .../painless/worker/lib/autocomplete.ts | 0 .../worker/lib/autocomplete_utils.test.ts | 0 .../painless/worker/lib/autocomplete_utils.ts | 0 .../painless/worker/lib/index.ts | 0 .../painless/worker/lib/lexer.ts | 0 .../painless/worker/lib/parser.ts | 4 +- .../painless/worker/painless.worker.ts | 2 +- .../painless/worker/painless_worker.ts | 4 +- .../src/{xjson => languages/sql}/constants.ts | 2 +- .../src/{ => languages}/sql/index.ts | 4 +- .../{ => languages}/sql/lexer_rules/index.ts | 0 .../{ => languages}/sql/lexer_rules/sql.ts | 2 +- .../src/{ => languages}/xjson/README.md | 0 .../src/languages/xjson/constants.ts | 10 +++ .../src/{ => languages}/xjson/grammar.test.ts | 0 .../src/{ => languages}/xjson/grammar.ts | 10 +-- .../src/{ => languages}/xjson/index.ts | 4 +- .../src/{ => languages}/xjson/language.ts | 20 +++-- .../xjson/lexer_rules/index.ts | 0 .../xjson/lexer_rules/xjson.ts | 4 +- .../src/{ => languages}/xjson/worker/index.ts | 0 .../xjson/worker/xjson.worker.ts | 0 .../xjson/worker/xjson_worker.ts | 2 +- .../{painless => languages/yaml}/constants.ts | 2 +- .../src/{ => languages}/yaml/index.ts | 7 +- .../kbn-monaco/src/languages/yaml/language.ts | 13 +++ .../yaml/worker/yaml.worker.ts | 0 .../src/register_globals.test.ts} | 17 ++-- .../shared/kbn-monaco/src/register_globals.ts | 48 +++++------ .../packages/shared/kbn-monaco/src/types.ts | 7 +- .../packages/shared/kbn-monaco/tsconfig.json | 26 +----- .../shared/kbn-monaco/webpack.config.js | 19 ++++- .../code_editor/impl/code_editor.tsx | 1 - .../shared-ux/code_editor/impl/index.tsx | 3 +- .../impl/languages/css/constants.ts | 10 --- .../impl/languages/grok/constants.ts | 10 --- .../impl/languages/handlebars/constants.ts | 10 --- .../impl/languages/hjson/constants.ts | 10 --- .../code_editor/impl/languages/index.ts | 17 ---- .../impl/languages/markdown/constants.ts | 10 --- .../impl/languages/markdown/language.ts | 12 --- .../impl/languages/yaml/constants.ts | 10 --- .../code_editor/impl/languages/yaml/index.ts | 14 ---- .../impl/languages/yaml/language.ts | 12 --- .../shared-ux/code_editor/impl/package.json | 5 +- .../impl/react_monaco_editor/editor.test.tsx | 60 ++++++++++++++ .../impl/react_monaco_editor/editor.tsx | 12 ++- .../languages/supported.ts | 23 +++++ .../code_editor/impl/register_languages.ts | 18 ---- .../public/components/vega_vis_editor.tsx | 6 +- .../editor/monaco_editor_output.tsx | 4 +- .../monaco_editor_output_actions_provider.ts | 2 +- .../history/history_viewer_monaco.tsx | 4 +- .../url_template_editor.tsx | 7 +- .../plugins/shared/kibana_react/tsconfig.json | 1 - .../application/components/markdown_editor.js | 4 +- .../components/panel_config/markdown.tsx | 4 +- test/functional/services/monaco_editor.ts | 11 ++- test/tsconfig.json | 1 - .../testing_embedded_lens/public/app.tsx | 4 +- .../components/pattern_input/pattern_input.js | 4 +- .../components/control_yaml_view/index.tsx | 4 +- 170 files changed, 569 insertions(+), 446 deletions(-) delete mode 100644 src/platform/packages/shared/kbn-monaco/src/console/index.ts delete mode 100644 src/platform/packages/shared/kbn-monaco/src/console/language.ts rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/console_errors_provider.ts (97%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/console_parsed_requests_provider.ts (96%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/console_worker_proxy.ts (97%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/constants.ts (73%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/folding_range_provider/folding_range_provider.ts (95%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/folding_range_provider/folding_range_utils.test.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/folding_range_provider/folding_range_utils.ts (97%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/folding_range_provider/index.ts (100%) create mode 100644 src/platform/packages/shared/kbn-monaco/src/languages/console/index.ts create mode 100644 src/platform/packages/shared/kbn-monaco/src/languages/console/language.ts rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/lexer_rules/console_editor.ts (98%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/lexer_rules/console_output.ts (97%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/lexer_rules/index.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/lexer_rules/nested_esql.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/lexer_rules/nested_painless.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/lexer_rules/nested_sql.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/lexer_rules/shared.ts (98%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/output_parser.js (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/output_parser.test.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/parser.js (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/parser.test.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/theme.ts (97%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/types.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/worker/console.worker.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/worker/console_worker.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/console/worker/index.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{yaml => languages/css}/constants.ts (93%) rename src/platform/packages/shared/{shared-ux/code_editor/impl => kbn-monaco/src}/languages/css/index.ts (71%) rename src/platform/packages/shared/{shared-ux/code_editor/impl => kbn-monaco/src}/languages/css/language.ts (89%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/index.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/language.test.ts (98%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/language.ts (97%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/constants.ts (75%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/converters/actions.ts (96%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/converters/positions.ts (95%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/converters/suggestions.ts (96%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/esql_ast_provider.ts (98%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/esql_lexer_rules.ts (98%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/esql_line_tokens.ts (94%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/esql_state.ts (94%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/esql_theme.test.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/esql_theme.ts (97%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/esql_token.ts (93%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/esql_token_helpers.ts (98%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/esql_tokens_provider.test.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/esql_tokens_provider.ts (98%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/hover/hover.test.ts (99%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/hover/hover.ts (99%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/index.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/shared/utils.ts (97%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/signature/index.ts (93%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/lib/types.ts (95%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/worker/esql.worker.ts (94%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/esql/worker/esql_worker.ts (93%) rename src/platform/packages/shared/kbn-monaco/src/{sql => languages/grok}/constants.ts (93%) rename src/platform/packages/shared/{shared-ux/code_editor/impl/languages/markdown => kbn-monaco/src/languages/grok}/index.ts (70%) rename src/platform/packages/shared/{shared-ux/code_editor/impl => kbn-monaco/src}/languages/grok/language.test.ts (96%) rename src/platform/packages/shared/{shared-ux/code_editor/impl => kbn-monaco/src}/languages/grok/language.ts (97%) create mode 100644 src/platform/packages/shared/kbn-monaco/src/languages/handlebars/constants.ts rename src/platform/packages/shared/{shared-ux/code_editor/impl => kbn-monaco/src}/languages/handlebars/index.ts (69%) rename src/platform/packages/shared/{shared-ux/code_editor/impl => kbn-monaco/src}/languages/handlebars/language.ts (98%) create mode 100644 src/platform/packages/shared/kbn-monaco/src/languages/hjson/constants.ts rename src/platform/packages/shared/{shared-ux/code_editor/impl => kbn-monaco/src}/languages/hjson/index.ts (70%) rename src/platform/packages/shared/{shared-ux/code_editor/impl => kbn-monaco/src}/languages/hjson/language.ts (98%) create mode 100644 src/platform/packages/shared/kbn-monaco/src/languages/index.ts create mode 100644 src/platform/packages/shared/kbn-monaco/src/languages/markdown/constants.ts rename src/platform/packages/shared/{shared-ux/code_editor/impl/languages/grok => kbn-monaco/src/languages/markdown}/index.ts (73%) create mode 100644 src/platform/packages/shared/kbn-monaco/src/languages/markdown/language.ts rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/README.md (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/antlr/painless_lexer.g4 (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/antlr/painless_lexer.interp (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/antlr/painless_lexer.tokens (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/antlr/painless_lexer.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/antlr/painless_parser.g4 (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/antlr/painless_parser.interp (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/antlr/painless_parser.tokens (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/antlr/painless_parser.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/antlr/painless_parser_listener.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/autocomplete_definitions/boolean_script_field_script_field.json (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/autocomplete_definitions/common.json (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/autocomplete_definitions/date_script_field.json (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/autocomplete_definitions/double_script_field_script_field.json (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/autocomplete_definitions/filter.json (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/autocomplete_definitions/index.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/autocomplete_definitions/ip_script_field_script_field.json (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/autocomplete_definitions/long_script_field_script_field.json (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/autocomplete_definitions/processor_conditional.json (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/autocomplete_definitions/score.json (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/autocomplete_definitions/string_script_field_script_field.json (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/completion_adapter.ts (98%) create mode 100644 src/platform/packages/shared/kbn-monaco/src/languages/painless/constants.ts rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/index.ts (88%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/language.ts (87%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/lexer_rules/index.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/lexer_rules/painless.ts (98%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/lib/editor_state.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/lib/index.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/types.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/worker/index.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/worker/lib/autocomplete.test.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/worker/lib/autocomplete.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/worker/lib/autocomplete_utils.test.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/worker/lib/autocomplete_utils.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/worker/lib/index.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/worker/lib/lexer.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/worker/lib/parser.ts (92%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/worker/painless.worker.ts (94%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/painless/worker/painless_worker.ts (93%) rename src/platform/packages/shared/kbn-monaco/src/{xjson => languages/sql}/constants.ts (93%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/sql/index.ts (85%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/sql/lexer_rules/index.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/sql/lexer_rules/sql.ts (98%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/xjson/README.md (100%) create mode 100644 src/platform/packages/shared/kbn-monaco/src/languages/xjson/constants.ts rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/xjson/grammar.test.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/xjson/grammar.ts (92%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/xjson/index.ts (87%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/xjson/language.ts (61%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/xjson/lexer_rules/index.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/xjson/lexer_rules/xjson.ts (97%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/xjson/worker/index.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/xjson/worker/xjson.worker.ts (100%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/xjson/worker/xjson_worker.ts (93%) rename src/platform/packages/shared/kbn-monaco/src/{painless => languages/yaml}/constants.ts (93%) rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/yaml/index.ts (77%) create mode 100644 src/platform/packages/shared/kbn-monaco/src/languages/yaml/language.ts rename src/platform/packages/shared/kbn-monaco/src/{ => languages}/yaml/worker/yaml.worker.ts (100%) rename src/platform/packages/shared/{shared-ux/code_editor/impl/languages/constants.ts => kbn-monaco/src/register_globals.test.ts} (55%) delete mode 100644 src/platform/packages/shared/shared-ux/code_editor/impl/languages/css/constants.ts delete mode 100644 src/platform/packages/shared/shared-ux/code_editor/impl/languages/grok/constants.ts delete mode 100644 src/platform/packages/shared/shared-ux/code_editor/impl/languages/handlebars/constants.ts delete mode 100644 src/platform/packages/shared/shared-ux/code_editor/impl/languages/hjson/constants.ts delete mode 100644 src/platform/packages/shared/shared-ux/code_editor/impl/languages/index.ts delete mode 100644 src/platform/packages/shared/shared-ux/code_editor/impl/languages/markdown/constants.ts delete mode 100644 src/platform/packages/shared/shared-ux/code_editor/impl/languages/markdown/language.ts delete mode 100644 src/platform/packages/shared/shared-ux/code_editor/impl/languages/yaml/constants.ts delete mode 100644 src/platform/packages/shared/shared-ux/code_editor/impl/languages/yaml/index.ts delete mode 100644 src/platform/packages/shared/shared-ux/code_editor/impl/languages/yaml/language.ts create mode 100644 src/platform/packages/shared/shared-ux/code_editor/impl/react_monaco_editor/editor.test.tsx create mode 100644 src/platform/packages/shared/shared-ux/code_editor/impl/react_monaco_editor/languages/supported.ts delete mode 100644 src/platform/packages/shared/shared-ux/code_editor/impl/register_languages.ts diff --git a/src/platform/packages/shared/kbn-management/settings/components/field_input/code_editor.tsx b/src/platform/packages/shared/kbn-management/settings/components/field_input/code_editor.tsx index 9ec9c68bc5557..31bd3a6bfaeb2 100644 --- a/src/platform/packages/shared/kbn-management/settings/components/field_input/code_editor.tsx +++ b/src/platform/packages/shared/kbn-management/settings/components/field_input/code_editor.tsx @@ -15,12 +15,13 @@ // import React, { useCallback } from 'react'; -import { monaco, XJsonLang } from '@kbn/monaco'; +import { monaco } from '@kbn/monaco'; import { CodeEditor as KibanaReactCodeEditor, type CodeEditorProps as KibanaReactCodeEditorProps, - MarkdownLang, + MARKDOWN_LANG_ID, + XJSON_LANG_ID, } from '@kbn/code-editor'; type Props = Pick; @@ -103,7 +104,7 @@ export const CodeEditor = ({ onChange, type, isReadOnly, name, ...props }: CodeE return ( ); diff --git a/src/platform/packages/shared/kbn-monaco/index.ts b/src/platform/packages/shared/kbn-monaco/index.ts index d68a3a996c8fb..f0ea89197a450 100644 --- a/src/platform/packages/shared/kbn-monaco/index.ts +++ b/src/platform/packages/shared/kbn-monaco/index.ts @@ -9,41 +9,18 @@ import './src/register_globals'; -export { - monaco, - cssConf, - cssLanguage, - markdownConf, - markdownLanguage, - yamlConf, - yamlLanguage, -} from './src/monaco_imports'; -export { XJsonLang } from './src/xjson'; -export { SQLLang } from './src/sql'; -export { ESQL_LANG_ID, ESQL_DARK_THEME_ID, ESQL_LIGHT_THEME_ID, ESQLLang } from './src/esql'; +export { monaco } from './src/monaco_imports'; + export type { ESQLCallbacks } from '@kbn/esql-validation-autocomplete'; -export * from './src/painless'; /* eslint-disable-next-line @kbn/eslint/module_migration */ import * as BarePluginApi from 'monaco-editor/esm/vs/editor/editor.api'; -export { YAML_LANG_ID, configureMonacoYamlSchema } from './src/yaml'; -import { registerLanguage } from './src/helpers'; +export * from './src/languages'; -export { BarePluginApi, registerLanguage }; +export { BarePluginApi }; export * from './src/types'; -export { - CONSOLE_LANG_ID, - CONSOLE_OUTPUT_LANG_ID, - CONSOLE_THEME_ID, - getParsedRequestsProvider, - ConsoleParsedRequestsProvider, - createOutputParser, -} from './src/console'; - -export type { ParsedRequest } from './src/console'; - export { defaultThemesResolvers, CODE_EDITOR_DEFAULT_THEME_ID, diff --git a/src/platform/packages/shared/kbn-monaco/package.json b/src/platform/packages/shared/kbn-monaco/package.json index f4b269a944dc6..84479b288e7fc 100644 --- a/src/platform/packages/shared/kbn-monaco/package.json +++ b/src/platform/packages/shared/kbn-monaco/package.json @@ -4,7 +4,7 @@ "private": true, "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0", "scripts": { - "build:antlr4:painless": "antlr -Dlanguage=TypeScript ./src/painless/antlr/painless_lexer.g4 ./src/painless/antlr/painless_parser.g4 && node ./scripts/fix_generated_antlr.js painless", + "build:antlr4:painless": "antlr -Dlanguage=TypeScript ./src/languages/painless/antlr/painless_lexer.g4 ./src/languages/painless/antlr/painless_parser.g4 && node ./scripts/fix_generated_antlr.js painless", "prebuild:antlr4": "brew bundle --file=./scripts/antlr4_tools/brewfile", "build:antlr4": "yarn run build:antlr4:painless && npm run build:antlr4:esql" } diff --git a/src/platform/packages/shared/kbn-monaco/scripts/fix_generated_antlr.js b/src/platform/packages/shared/kbn-monaco/scripts/fix_generated_antlr.js index e4641c9374f42..08894ab8f1baa 100644 --- a/src/platform/packages/shared/kbn-monaco/scripts/fix_generated_antlr.js +++ b/src/platform/packages/shared/kbn-monaco/scripts/fix_generated_antlr.js @@ -15,7 +15,7 @@ const log = ora('Updating generated antlr grammar').start(); const SUPPORTED_FOLDERS = ['painless', 'esql']; function execute(folder) { - const generatedAntlrFolder = join(__dirname, '..', 'src', folder, 'antlr'); + const generatedAntlrFolder = join(__dirname, '..', 'src', 'languages', folder, 'antlr'); const generatedAntlrFolderContents = readdirSync(generatedAntlrFolder); diff --git a/src/platform/packages/shared/kbn-monaco/src/code_editor/constants.ts b/src/platform/packages/shared/kbn-monaco/src/code_editor/constants.ts index e8c41cf296b2c..521d256383c5f 100644 --- a/src/platform/packages/shared/kbn-monaco/src/code_editor/constants.ts +++ b/src/platform/packages/shared/kbn-monaco/src/code_editor/constants.ts @@ -7,5 +7,5 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export const CODE_EDITOR_DEFAULT_THEME_ID = 'codeEditorDefaultTheme'; -export const CODE_EDITOR_TRANSPARENT_THEME_ID = 'codeEditorTransparentTheme'; +export const CODE_EDITOR_DEFAULT_THEME_ID = 'codeEditorDefaultTheme' as const; +export const CODE_EDITOR_TRANSPARENT_THEME_ID = 'codeEditorTransparentTheme' as const; diff --git a/src/platform/packages/shared/kbn-monaco/src/console/index.ts b/src/platform/packages/shared/kbn-monaco/src/console/index.ts deleted file mode 100644 index 4e04763317a51..0000000000000 --- a/src/platform/packages/shared/kbn-monaco/src/console/index.ts +++ /dev/null @@ -1,49 +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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -/** - * This import registers the Console monaco language contribution - */ -import './language'; - -import type { LangModuleType } from '../types'; -import { CONSOLE_LANG_ID, CONSOLE_OUTPUT_LANG_ID } from './constants'; -import { - lexerRules, - languageConfiguration, - consoleOutputLexerRules, - consoleOutputLanguageConfiguration, -} from './lexer_rules'; -import { foldingRangeProvider } from './folding_range_provider'; - -export { CONSOLE_LANG_ID, CONSOLE_OUTPUT_LANG_ID } from './constants'; -/** - * export the theme id for the console language - */ -export { CONSOLE_THEME_ID } from './language'; - -export const ConsoleLang: LangModuleType = { - ID: CONSOLE_LANG_ID, - lexerRules, - languageConfiguration, - foldingRangeProvider, -}; - -export const ConsoleOutputLang: LangModuleType = { - ID: CONSOLE_OUTPUT_LANG_ID, - lexerRules: consoleOutputLexerRules, - languageConfiguration: consoleOutputLanguageConfiguration, - foldingRangeProvider, -}; - -export type { ParsedRequest } from './types'; -export { getParsedRequestsProvider } from './language'; -export { ConsoleParsedRequestsProvider } from './console_parsed_requests_provider'; - -export { createOutputParser } from './output_parser'; diff --git a/src/platform/packages/shared/kbn-monaco/src/console/language.ts b/src/platform/packages/shared/kbn-monaco/src/console/language.ts deleted file mode 100644 index bf9d60b7bb5cf..0000000000000 --- a/src/platform/packages/shared/kbn-monaco/src/console/language.ts +++ /dev/null @@ -1,30 +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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { setupConsoleErrorsProvider } from './console_errors_provider'; -import { ConsoleWorkerProxyService } from './console_worker_proxy'; -import { monaco } from '../monaco_imports'; -import { CONSOLE_LANG_ID } from './constants'; -import { ConsoleParsedRequestsProvider } from './console_parsed_requests_provider'; -import { buildConsoleTheme } from './theme'; - -const workerProxyService = new ConsoleWorkerProxyService(); - -export const getParsedRequestsProvider = (model: monaco.editor.ITextModel | null) => { - return new ConsoleParsedRequestsProvider(workerProxyService, model); -}; - -// Theme id is the same as lang id, as we register only one theme resolver that's color mode aware -export const CONSOLE_THEME_ID = CONSOLE_LANG_ID; -monaco.editor.registerLanguageThemeResolver(CONSOLE_THEME_ID, buildConsoleTheme); - -monaco.languages.onLanguage(CONSOLE_LANG_ID, async () => { - workerProxyService.setup(); - setupConsoleErrorsProvider(workerProxyService); -}); diff --git a/src/platform/packages/shared/kbn-monaco/src/helpers.ts b/src/platform/packages/shared/kbn-monaco/src/helpers.ts index 20582c3cfe857..4e520fd3107ea 100644 --- a/src/platform/packages/shared/kbn-monaco/src/helpers.ts +++ b/src/platform/packages/shared/kbn-monaco/src/helpers.ts @@ -10,9 +10,13 @@ import { monaco } from './monaco_imports'; import type { LangModuleType, CustomLangModuleType } from './types'; -export function registerLanguage(language: LangModuleType | CustomLangModuleType) { +export function registerLanguage(language: LangModuleType | CustomLangModuleType, force = false) { const { ID, lexerRules, languageConfiguration, foldingRangeProvider } = language; + if (!force && monaco.languages.getLanguages().some((lang) => lang.id === ID)) { + return; + } + monaco.languages.register({ id: ID }); if ('languageThemeResolver' in language) { @@ -33,7 +37,7 @@ export function registerLanguage(language: LangModuleType | CustomLangModuleType } if ('onLanguage' in language) { - await language.onLanguage(); + await language.onLanguage?.(); } }); } diff --git a/src/platform/packages/shared/kbn-monaco/src/console/console_errors_provider.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/console_errors_provider.ts similarity index 97% rename from src/platform/packages/shared/kbn-monaco/src/console/console_errors_provider.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/console_errors_provider.ts index 95113a6c62a82..4575c8dcd2f6e 100644 --- a/src/platform/packages/shared/kbn-monaco/src/console/console_errors_provider.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/console/console_errors_provider.ts @@ -9,7 +9,7 @@ import { ConsoleWorkerProxyService } from './console_worker_proxy'; import { CONSOLE_LANG_ID } from './constants'; -import { monaco } from '../monaco_imports'; +import { monaco } from '../../monaco_imports'; /* * This setup function runs when the Console language is registered into the Monaco editor. diff --git a/src/platform/packages/shared/kbn-monaco/src/console/console_parsed_requests_provider.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/console_parsed_requests_provider.ts similarity index 96% rename from src/platform/packages/shared/kbn-monaco/src/console/console_parsed_requests_provider.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/console_parsed_requests_provider.ts index 78d64a0b83a13..a29c4330c9c22 100644 --- a/src/platform/packages/shared/kbn-monaco/src/console/console_parsed_requests_provider.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/console/console_parsed_requests_provider.ts @@ -9,7 +9,7 @@ import { ConsoleWorkerProxyService } from './console_worker_proxy'; import { ParsedRequest } from './types'; -import { monaco } from '../monaco_imports'; +import { monaco } from '../../monaco_imports'; /* * This class is a helper interface that is used in the Console plugin. diff --git a/src/platform/packages/shared/kbn-monaco/src/console/console_worker_proxy.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/console_worker_proxy.ts similarity index 97% rename from src/platform/packages/shared/kbn-monaco/src/console/console_worker_proxy.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/console_worker_proxy.ts index 5dc96dfa7bbf2..fa810c33cde49 100644 --- a/src/platform/packages/shared/kbn-monaco/src/console/console_worker_proxy.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/console/console_worker_proxy.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '../monaco_imports'; +import { monaco } from '../../monaco_imports'; import { CONSOLE_LANG_ID } from './constants'; import { ConsoleParserResult, ConsoleWorkerDefinition } from './types'; diff --git a/src/platform/packages/shared/kbn-monaco/src/console/constants.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/constants.ts similarity index 73% rename from src/platform/packages/shared/kbn-monaco/src/console/constants.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/constants.ts index 380ee782c8925..97f762c545dce 100644 --- a/src/platform/packages/shared/kbn-monaco/src/console/constants.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/console/constants.ts @@ -7,6 +7,6 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export const CONSOLE_LANG_ID = 'console'; -export const CONSOLE_OUTPUT_LANG_ID = 'consoleOutput'; -export const CONSOLE_POSTFIX = '.console'; +export const CONSOLE_LANG_ID = 'console' as const; +export const CONSOLE_OUTPUT_LANG_ID = 'consoleOutput' as const; +export const CONSOLE_POSTFIX = '.console' as const; diff --git a/src/platform/packages/shared/kbn-monaco/src/console/folding_range_provider/folding_range_provider.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/folding_range_provider/folding_range_provider.ts similarity index 95% rename from src/platform/packages/shared/kbn-monaco/src/console/folding_range_provider/folding_range_provider.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/folding_range_provider/folding_range_provider.ts index 166c3ff4659ee..0348893992bd9 100644 --- a/src/platform/packages/shared/kbn-monaco/src/console/folding_range_provider/folding_range_provider.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/console/folding_range_provider/folding_range_provider.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '../../..'; +import { monaco } from '../../../..'; import { getFoldingRanges } from './folding_range_utils'; export const foldingRangeProvider: monaco.languages.FoldingRangeProvider = { diff --git a/src/platform/packages/shared/kbn-monaco/src/console/folding_range_provider/folding_range_utils.test.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/folding_range_provider/folding_range_utils.test.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/console/folding_range_provider/folding_range_utils.test.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/folding_range_provider/folding_range_utils.test.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/console/folding_range_provider/folding_range_utils.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/folding_range_provider/folding_range_utils.ts similarity index 97% rename from src/platform/packages/shared/kbn-monaco/src/console/folding_range_provider/folding_range_utils.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/folding_range_provider/folding_range_utils.ts index 758c50c969336..73437436fc6e7 100644 --- a/src/platform/packages/shared/kbn-monaco/src/console/folding_range_provider/folding_range_utils.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/console/folding_range_provider/folding_range_utils.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '../../..'; +import { monaco } from '../../../..'; const getOpeningLineRegex = (openingMarker: string) => { // Opening parentheses can only be preceded by a colon or nothing diff --git a/src/platform/packages/shared/kbn-monaco/src/console/folding_range_provider/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/folding_range_provider/index.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/console/folding_range_provider/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/folding_range_provider/index.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/languages/console/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/index.ts new file mode 100644 index 0000000000000..93d3810bfe44b --- /dev/null +++ b/src/platform/packages/shared/kbn-monaco/src/languages/console/index.ts @@ -0,0 +1,27 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +/** + * This import registers the Console monaco language contribution + */ +import './language'; + +export { CONSOLE_LANG_ID, CONSOLE_OUTPUT_LANG_ID } from './constants'; + +export type { ParsedRequest } from './types'; +export { + getParsedRequestsProvider, + ConsoleLang, + ConsoleOutputLang, + CONSOLE_THEME_ID, + CONSOLE_OUTPUT_THEME_ID, +} from './language'; +export { ConsoleParsedRequestsProvider } from './console_parsed_requests_provider'; + +export { createOutputParser } from './output_parser'; diff --git a/src/platform/packages/shared/kbn-monaco/src/languages/console/language.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/language.ts new file mode 100644 index 0000000000000..def265fe7891c --- /dev/null +++ b/src/platform/packages/shared/kbn-monaco/src/languages/console/language.ts @@ -0,0 +1,61 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { setupConsoleErrorsProvider } from './console_errors_provider'; +import { ConsoleWorkerProxyService } from './console_worker_proxy'; +import { monaco } from '../../monaco_imports'; +import { CONSOLE_LANG_ID, CONSOLE_OUTPUT_LANG_ID } from './constants'; +import { ConsoleParsedRequestsProvider } from './console_parsed_requests_provider'; +import { buildConsoleTheme } from './theme'; +import type { LangModuleType } from '../../types'; + +const workerProxyService = new ConsoleWorkerProxyService(); + +import { + lexerRules, + languageConfiguration, + consoleOutputLexerRules, + consoleOutputLanguageConfiguration, +} from './lexer_rules'; +import { foldingRangeProvider } from './folding_range_provider'; + +/** + * @description This language definition is used for the console input panel + */ +export const ConsoleLang: LangModuleType = { + ID: CONSOLE_LANG_ID, + lexerRules, + languageConfiguration, + foldingRangeProvider, + onLanguage: () => { + workerProxyService.setup(); + setupConsoleErrorsProvider(workerProxyService); + }, + languageThemeResolver: buildConsoleTheme, +}; + +/** + * @description This language definition is used for the console output panel + */ +export const ConsoleOutputLang: LangModuleType = { + ID: CONSOLE_OUTPUT_LANG_ID, + lexerRules: consoleOutputLexerRules, + languageConfiguration: consoleOutputLanguageConfiguration, + foldingRangeProvider, +}; + +// Theme id is the same as lang id, as we register only one theme resolver that's color mode aware +export const CONSOLE_THEME_ID = CONSOLE_LANG_ID; + +// console output theme is the same as console theme +export const CONSOLE_OUTPUT_THEME_ID = CONSOLE_THEME_ID; + +export const getParsedRequestsProvider = (model: monaco.editor.ITextModel | null) => { + return new ConsoleParsedRequestsProvider(workerProxyService, model); +}; diff --git a/src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/console_editor.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/console_editor.ts similarity index 98% rename from src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/console_editor.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/console_editor.ts index ad92c7b98c512..d3f5d51457662 100644 --- a/src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/console_editor.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/console_editor.ts @@ -14,7 +14,7 @@ import { matchToken, matchTokens, } from './shared'; -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; export const languageConfiguration: monaco.languages.LanguageConfiguration = { ...consoleSharedLanguageConfiguration, diff --git a/src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/console_output.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/console_output.ts similarity index 97% rename from src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/console_output.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/console_output.ts index 30b846d529fe5..1e7b65eee0d8f 100644 --- a/src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/console_output.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/console_output.ts @@ -12,7 +12,7 @@ import { consoleSharedLexerRules, matchTokensWithEOL, } from './shared'; -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; export const consoleOutputLanguageConfiguration: monaco.languages.LanguageConfiguration = { ...consoleSharedLanguageConfiguration, diff --git a/src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/index.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/index.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/nested_esql.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/nested_esql.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/nested_esql.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/nested_esql.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/nested_painless.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/nested_painless.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/nested_painless.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/nested_painless.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/nested_sql.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/nested_sql.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/nested_sql.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/nested_sql.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/shared.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/shared.ts similarity index 98% rename from src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/shared.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/shared.ts index 94f3b1556fb96..8b1654a0b6f58 100644 --- a/src/platform/packages/shared/kbn-monaco/src/console/lexer_rules/shared.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/console/lexer_rules/shared.ts @@ -14,8 +14,8 @@ import { painlessLanguageAttributes, } from './nested_painless'; import { buildEsqlRules, buildEsqlStartRule, esqlLanguageAttributes } from './nested_esql'; -import { monaco } from '../../..'; -import { globals } from '../../common/lexer_rules'; +import { monaco } from '../../../..'; +import { globals } from '../../../common/lexer_rules'; import { buildXjsonRules } from '../../xjson/lexer_rules/xjson'; export const consoleSharedLanguageConfiguration: monaco.languages.LanguageConfiguration = { diff --git a/src/platform/packages/shared/kbn-monaco/src/console/output_parser.js b/src/platform/packages/shared/kbn-monaco/src/languages/console/output_parser.js similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/console/output_parser.js rename to src/platform/packages/shared/kbn-monaco/src/languages/console/output_parser.js diff --git a/src/platform/packages/shared/kbn-monaco/src/console/output_parser.test.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/output_parser.test.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/console/output_parser.test.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/output_parser.test.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/console/parser.js b/src/platform/packages/shared/kbn-monaco/src/languages/console/parser.js similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/console/parser.js rename to src/platform/packages/shared/kbn-monaco/src/languages/console/parser.js diff --git a/src/platform/packages/shared/kbn-monaco/src/console/parser.test.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/parser.test.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/console/parser.test.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/parser.test.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/console/theme.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/theme.ts similarity index 97% rename from src/platform/packages/shared/kbn-monaco/src/console/theme.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/theme.ts index 1e6ee7a5115f8..82a7395dd44a3 100644 --- a/src/platform/packages/shared/kbn-monaco/src/console/theme.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/console/theme.ts @@ -8,8 +8,8 @@ */ import { makeHighContrastColor, type UseEuiTheme } from '@elastic/eui'; -import { defaultThemesResolvers, CODE_EDITOR_DEFAULT_THEME_ID } from '../code_editor'; -import { themeRuleGroupBuilderFactory } from '../common/theme'; +import { defaultThemesResolvers, CODE_EDITOR_DEFAULT_THEME_ID } from '../../code_editor'; +import { themeRuleGroupBuilderFactory } from '../../common/theme'; const buildRuleGroup = themeRuleGroupBuilderFactory(); diff --git a/src/platform/packages/shared/kbn-monaco/src/console/types.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/types.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/console/types.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/types.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/console/worker/console.worker.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/worker/console.worker.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/console/worker/console.worker.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/worker/console.worker.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/console/worker/console_worker.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/worker/console_worker.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/console/worker/console_worker.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/worker/console_worker.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/console/worker/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/console/worker/index.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/console/worker/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/console/worker/index.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/yaml/constants.ts b/src/platform/packages/shared/kbn-monaco/src/languages/css/constants.ts similarity index 93% rename from src/platform/packages/shared/kbn-monaco/src/yaml/constants.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/css/constants.ts index 978132b74eed2..ba56dd6f7393d 100644 --- a/src/platform/packages/shared/kbn-monaco/src/yaml/constants.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/css/constants.ts @@ -7,4 +7,4 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export const ID = 'yaml'; +export const ID = 'css' as const; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/css/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/css/index.ts similarity index 71% rename from src/platform/packages/shared/shared-ux/code_editor/impl/languages/css/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/css/index.ts index 9f81c2c0588a8..488e1ff1b2230 100644 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/css/index.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/css/index.ts @@ -7,8 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { LangModuleType } from '@kbn/monaco'; +import type { LangModuleType } from '../../types'; import { lexerRules, languageConfiguration } from './language'; -import { LANG } from './constants'; +import { ID } from './constants'; -export const Lang: LangModuleType = { ID: LANG, lexerRules, languageConfiguration }; +export { ID as CSS_LANG_ID } from './constants'; + +export const CssLang: LangModuleType = { ID, lexerRules, languageConfiguration }; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/css/language.ts b/src/platform/packages/shared/kbn-monaco/src/languages/css/language.ts similarity index 89% rename from src/platform/packages/shared/shared-ux/code_editor/impl/languages/css/language.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/css/language.ts index 347fbf848dd3c..14160fc0089d5 100644 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/css/language.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/css/language.ts @@ -7,6 +7,4 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { cssConf, cssLanguage } from '@kbn/monaco'; - -export { cssConf as languageConfiguration, cssLanguage as lexerRules }; +export { cssConf as languageConfiguration, cssLanguage as lexerRules } from '../../monaco_imports'; diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/index.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/esql/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/index.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/language.test.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/language.test.ts similarity index 98% rename from src/platform/packages/shared/kbn-monaco/src/esql/language.test.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/language.test.ts index d368ec66fcea1..58913eb263946 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/language.test.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/language.test.ts @@ -8,7 +8,7 @@ */ import { PartialFieldsMetadataClient } from '@kbn/esql-validation-autocomplete/src/shared/types'; -import { monaco } from '../monaco_imports'; +import { monaco } from '../../monaco_imports'; import { ESQLLang } from './language'; describe('ESQLLang', () => { diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/language.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/language.ts similarity index 97% rename from src/platform/packages/shared/kbn-monaco/src/esql/language.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/language.ts index 0d15d8a605d70..231ca135a4deb 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/language.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/language.ts @@ -8,14 +8,14 @@ */ import type { ESQLCallbacks } from '@kbn/esql-validation-autocomplete'; -import { monaco } from '../monaco_imports'; +import { monaco } from '../../monaco_imports'; import { ESQL_LANG_ID } from './lib/constants'; -import type { CustomLangModuleType } from '../types'; +import type { CustomLangModuleType } from '../../types'; import type { ESQLWorker } from './worker/esql_worker'; -import { WorkerProxyService } from '../common/worker_proxy'; +import { WorkerProxyService } from '../../common/worker_proxy'; import { buildESQLTheme } from './lib/esql_theme'; import { ESQLAstAdapter } from './lib/esql_ast_provider'; import { wrapAsMonacoSuggestions } from './lib/converters/suggestions'; diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/constants.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/constants.ts similarity index 75% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/constants.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/constants.ts index 56f2f85ab074e..c3248c8441305 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/constants.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/constants.ts @@ -7,8 +7,8 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export const ESQL_LANG_ID = 'esql'; -export const ESQL_LIGHT_THEME_ID = 'esqlThemeLight'; -export const ESQL_DARK_THEME_ID = 'esqlThemeDark'; +export const ESQL_LANG_ID = 'esql' as const; +export const ESQL_LIGHT_THEME_ID = 'esqlThemeLight' as const; +export const ESQL_DARK_THEME_ID = 'esqlThemeDark' as const; export const ESQL_TOKEN_POSTFIX = '.esql'; diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/converters/actions.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/converters/actions.ts similarity index 96% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/converters/actions.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/converters/actions.ts index 7f16cf395efe8..a302b2576d279 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/converters/actions.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/converters/actions.ts @@ -8,7 +8,7 @@ */ import type { CodeAction } from '@kbn/esql-validation-autocomplete'; -import { monaco } from '../../../monaco_imports'; +import { monaco } from '../../../../monaco_imports'; import { MonacoCodeAction } from '../types'; import { wrapAsMonacoMessages } from './positions'; diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/converters/positions.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/converters/positions.ts similarity index 95% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/converters/positions.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/converters/positions.ts index c8db9d35fca24..2a3675cec2bf9 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/converters/positions.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/converters/positions.ts @@ -8,8 +8,8 @@ */ import type { EditorError, ESQLMessage } from '@kbn/esql-ast'; -import type { MonacoEditorError } from '../../../types'; -import { monaco } from '../../../monaco_imports'; +import type { MonacoEditorError } from '../../../../types'; +import { monaco } from '../../../../monaco_imports'; // from linear offset to Monaco position export function offsetToRowColumn(expression: string, offset: number): monaco.Position { diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/converters/suggestions.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/converters/suggestions.ts similarity index 96% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/converters/suggestions.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/converters/suggestions.ts index 4335a71f127c4..8377b5dc3305d 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/converters/suggestions.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/converters/suggestions.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '../../../monaco_imports'; +import { monaco } from '../../../../monaco_imports'; import { MonacoAutocompleteCommandDefinition, SuggestionRawDefinitionWithMonacoRange, diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_ast_provider.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_ast_provider.ts similarity index 98% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_ast_provider.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_ast_provider.ts index 70b5aeb992b45..f702f8070822c 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_ast_provider.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_ast_provider.ts @@ -14,7 +14,7 @@ import { suggest, validateQuery, } from '@kbn/esql-validation-autocomplete'; -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; import type { ESQLWorker } from '../worker/esql_worker'; import { wrapAsMonacoMessages } from './converters/positions'; import { getHoverItem } from './hover/hover'; diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_lexer_rules.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_lexer_rules.ts similarity index 98% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_lexer_rules.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_lexer_rules.ts index fef989df7ddfe..acfb3341d0bf2 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_lexer_rules.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_lexer_rules.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; const brackets = [ { open: '[', close: ']', token: 'delimiter.square' }, diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_line_tokens.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_line_tokens.ts similarity index 94% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_line_tokens.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_line_tokens.ts index bce52ad8e310c..eb283755b7595 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_line_tokens.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_line_tokens.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; import { ESQLState } from './esql_state'; /** @internal **/ diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_state.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_state.ts similarity index 94% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_state.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_state.ts index 0d83da8e74946..278ebc3d4b5be 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_state.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_state.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; /** @internal **/ export class ESQLState implements monaco.languages.IState { diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_theme.test.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_theme.test.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_theme.test.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_theme.test.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_theme.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_theme.ts similarity index 97% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_theme.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_theme.ts index e128018a4524f..dee61fec7030c 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_theme.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_theme.ts @@ -8,9 +8,9 @@ */ import type { UseEuiTheme } from '@elastic/eui'; -import { themeRuleGroupBuilderFactory } from '../../common/theme'; +import { themeRuleGroupBuilderFactory } from '../../../common/theme'; import { ESQL_TOKEN_POSTFIX } from './constants'; -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; const buildRuleGroup = themeRuleGroupBuilderFactory(ESQL_TOKEN_POSTFIX); diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_token.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_token.ts similarity index 93% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_token.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_token.ts index 990fff3146daf..b17f4e1666b99 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_token.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_token.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; import { ESQL_TOKEN_POSTFIX } from './constants'; /** @internal **/ diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_token_helpers.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_token_helpers.ts similarity index 98% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_token_helpers.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_token_helpers.ts index 9c7b391d9666c..2c352bd02f4f6 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_token_helpers.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_token_helpers.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; import { ESQL_TOKEN_POSTFIX } from './constants'; import { ESQLToken } from './esql_token'; diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_tokens_provider.test.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_tokens_provider.test.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_tokens_provider.test.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_tokens_provider.test.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_tokens_provider.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_tokens_provider.ts similarity index 98% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_tokens_provider.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_tokens_provider.ts index 666a3bb5fc6fa..c8addea7700aa 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/esql_tokens_provider.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/esql_tokens_provider.ts @@ -9,7 +9,7 @@ import { CharStreams, type Token } from 'antlr4'; import { getLexer, ESQLErrorListener } from '@kbn/esql-ast'; -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; import { ESQLToken } from './esql_token'; import { ESQLLineTokens } from './esql_line_tokens'; diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/hover/hover.test.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/hover/hover.test.ts similarity index 99% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/hover/hover.test.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/hover/hover.test.ts index 35a62303339d0..a83ba466c8855 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/hover/hover.test.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/hover/hover.test.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '../../../monaco_imports'; +import { monaco } from '../../../../monaco_imports'; import { getHoverItem } from './hover'; import { getAstAndSyntaxErrors } from '@kbn/esql-ast'; import { diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/hover/hover.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/hover/hover.ts similarity index 99% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/hover/hover.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/hover/hover.ts index a8854481aba1d..006156f172f2d 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/hover/hover.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/hover/hover.ts @@ -35,7 +35,7 @@ import { } from '@kbn/esql-validation-autocomplete/src/autocomplete/factories'; import { isESQLFunction, isESQLNamedParamLiteral } from '@kbn/esql-ast/src/types'; import { monacoPositionToOffset } from '../shared/utils'; -import { monaco } from '../../../monaco_imports'; +import { monaco } from '../../../../monaco_imports'; const ACCEPTABLE_TYPES_HOVER = i18n.translate('monaco.esql.hover.acceptableTypes', { defaultMessage: 'Acceptable types', diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/index.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/index.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/shared/utils.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/shared/utils.ts similarity index 97% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/shared/utils.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/shared/utils.ts index 17f9dce029d25..be51b00bcde81 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/shared/utils.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/shared/utils.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import type { monaco } from '../../../monaco_imports'; +import type { monaco } from '../../../../monaco_imports'; // From Monaco position to linear offset export function monacoPositionToOffset(expression: string, position: monaco.Position): number { diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/signature/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/signature/index.ts similarity index 93% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/signature/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/signature/index.ts index e5fb85e8c6cd8..2b031a18079ce 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/signature/index.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/signature/index.ts @@ -8,7 +8,7 @@ */ import type { AstProviderFn } from '@kbn/esql-ast'; -import type { monaco } from '../../../monaco_imports'; +import type { monaco } from '../../../../monaco_imports'; export function getSignatureHelp( model: monaco.editor.ITextModel, diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/lib/types.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/types.ts similarity index 95% rename from src/platform/packages/shared/kbn-monaco/src/esql/lib/types.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/types.ts index 18555491ace89..b1346f2906b9f 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/lib/types.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/lib/types.ts @@ -8,7 +8,7 @@ */ import { SuggestionRawDefinition } from '@kbn/esql-validation-autocomplete'; -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; export type MonacoAutocompleteCommandDefinition = Pick< monaco.languages.CompletionItem, diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/worker/esql.worker.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/worker/esql.worker.ts similarity index 94% rename from src/platform/packages/shared/kbn-monaco/src/esql/worker/esql.worker.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/worker/esql.worker.ts index a343e0ca57661..c0bb4a6037cd6 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/worker/esql.worker.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/worker/esql.worker.ts @@ -15,7 +15,7 @@ import '@babel/runtime/regenerator'; // @ts-ignore import * as worker from 'monaco-editor/esm/vs/editor/editor.worker'; -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; import { ESQLWorker } from './esql_worker'; self.onmessage = () => { diff --git a/src/platform/packages/shared/kbn-monaco/src/esql/worker/esql_worker.ts b/src/platform/packages/shared/kbn-monaco/src/languages/esql/worker/esql_worker.ts similarity index 93% rename from src/platform/packages/shared/kbn-monaco/src/esql/worker/esql_worker.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/esql/worker/esql_worker.ts index 18ce300acfc2f..3d2187182d362 100644 --- a/src/platform/packages/shared/kbn-monaco/src/esql/worker/esql_worker.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/esql/worker/esql_worker.ts @@ -8,8 +8,8 @@ */ import { parse, parseErrors, type EditorError } from '@kbn/esql-ast'; -import type { monaco } from '../../monaco_imports'; -import type { BaseWorkerDefinition } from '../../types'; +import type { monaco } from '../../../monaco_imports'; +import type { BaseWorkerDefinition } from '../../../types'; /** * While this function looks similar to the wrapAsMonacoMessages one, it prevents from diff --git a/src/platform/packages/shared/kbn-monaco/src/sql/constants.ts b/src/platform/packages/shared/kbn-monaco/src/languages/grok/constants.ts similarity index 93% rename from src/platform/packages/shared/kbn-monaco/src/sql/constants.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/grok/constants.ts index c97a20bd65f98..3ce7b8edbbcc4 100644 --- a/src/platform/packages/shared/kbn-monaco/src/sql/constants.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/grok/constants.ts @@ -7,4 +7,4 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export const ID = 'sql'; +export const ID = 'grok' as const; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/markdown/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/grok/index.ts similarity index 70% rename from src/platform/packages/shared/shared-ux/code_editor/impl/languages/markdown/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/grok/index.ts index 69b193b3d23e3..55607d4c78547 100644 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/markdown/index.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/grok/index.ts @@ -7,8 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { LangModuleType } from '@kbn/monaco'; +import type { LangModuleType } from '../../types'; import { languageConfiguration, lexerRules } from './language'; -import { LANG } from './constants'; +import { ID } from './constants'; -export const Lang: LangModuleType = { ID: LANG, languageConfiguration, lexerRules }; +export { ID as GROK_LANG_ID } from './constants'; + +export const GrokLang: LangModuleType = { ID, languageConfiguration, lexerRules }; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/grok/language.test.ts b/src/platform/packages/shared/kbn-monaco/src/languages/grok/language.test.ts similarity index 96% rename from src/platform/packages/shared/shared-ux/code_editor/impl/languages/grok/language.test.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/grok/language.test.ts index 420c61dd424ac..1af6a47f0e123 100644 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/grok/language.test.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/grok/language.test.ts @@ -7,8 +7,9 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco, registerLanguage } from '@kbn/monaco'; -import { Lang } from '.'; +import { monaco } from '../../monaco_imports'; +import { registerLanguage } from '../../helpers'; +import { GrokLang as Lang } from '.'; beforeAll(() => { Object.defineProperty(window, 'matchMedia', { diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/grok/language.ts b/src/platform/packages/shared/kbn-monaco/src/languages/grok/language.ts similarity index 97% rename from src/platform/packages/shared/shared-ux/code_editor/impl/languages/grok/language.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/grok/language.ts index 865e5eab07aa3..47039e433f707 100644 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/grok/language.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/grok/language.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '@kbn/monaco'; +import { monaco } from '../../monaco_imports'; export const languageConfiguration: monaco.languages.LanguageConfiguration = { brackets: [ diff --git a/src/platform/packages/shared/kbn-monaco/src/languages/handlebars/constants.ts b/src/platform/packages/shared/kbn-monaco/src/languages/handlebars/constants.ts new file mode 100644 index 0000000000000..05a8d429be238 --- /dev/null +++ b/src/platform/packages/shared/kbn-monaco/src/languages/handlebars/constants.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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export const ID = 'handlebars' as const; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/handlebars/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/handlebars/index.ts similarity index 69% rename from src/platform/packages/shared/shared-ux/code_editor/impl/languages/handlebars/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/handlebars/index.ts index 69b193b3d23e3..bd6cff2c5f920 100644 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/handlebars/index.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/handlebars/index.ts @@ -7,8 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { LangModuleType } from '@kbn/monaco'; +import type { LangModuleType } from '../../types'; import { languageConfiguration, lexerRules } from './language'; -import { LANG } from './constants'; +import { ID } from './constants'; -export const Lang: LangModuleType = { ID: LANG, languageConfiguration, lexerRules }; +export { ID as HANDLEBARS_LANG_ID } from './constants'; + +export const HandlebarsLang: LangModuleType = { ID, languageConfiguration, lexerRules }; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/handlebars/language.ts b/src/platform/packages/shared/kbn-monaco/src/languages/handlebars/language.ts similarity index 98% rename from src/platform/packages/shared/shared-ux/code_editor/impl/languages/handlebars/language.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/handlebars/language.ts index 69f8f97507f59..e55511c5da291 100644 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/handlebars/language.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/handlebars/language.ts @@ -12,7 +12,7 @@ * License: https://github.com/microsoft/monaco-languages/blob/master/LICENSE.md */ -import { monaco } from '@kbn/monaco'; +import { monaco } from '../../monaco_imports'; export const languageConfiguration: monaco.languages.LanguageConfiguration = { wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g, diff --git a/src/platform/packages/shared/kbn-monaco/src/languages/hjson/constants.ts b/src/platform/packages/shared/kbn-monaco/src/languages/hjson/constants.ts new file mode 100644 index 0000000000000..cad75870dc16b --- /dev/null +++ b/src/platform/packages/shared/kbn-monaco/src/languages/hjson/constants.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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export const ID = 'hjson' as const; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/hjson/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/hjson/index.ts similarity index 70% rename from src/platform/packages/shared/shared-ux/code_editor/impl/languages/hjson/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/hjson/index.ts index 69b193b3d23e3..0df85a977de99 100644 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/hjson/index.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/hjson/index.ts @@ -7,8 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { LangModuleType } from '@kbn/monaco'; +import type { LangModuleType } from '../../types'; import { languageConfiguration, lexerRules } from './language'; -import { LANG } from './constants'; +import { ID } from './constants'; -export const Lang: LangModuleType = { ID: LANG, languageConfiguration, lexerRules }; +export { ID as HJSON_LANG_ID } from './constants'; + +export const HJsonLang: LangModuleType = { ID, languageConfiguration, lexerRules }; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/hjson/language.ts b/src/platform/packages/shared/kbn-monaco/src/languages/hjson/language.ts similarity index 98% rename from src/platform/packages/shared/shared-ux/code_editor/impl/languages/hjson/language.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/hjson/language.ts index b3ae05d6e006e..dc7b2cf0e43b0 100644 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/hjson/language.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/hjson/language.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '@kbn/monaco'; +import { monaco } from '../../monaco_imports'; export const languageConfiguration: monaco.languages.LanguageConfiguration = { brackets: [ diff --git a/src/platform/packages/shared/kbn-monaco/src/languages/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/index.ts new file mode 100644 index 0000000000000..db8ad28c7d5c2 --- /dev/null +++ b/src/platform/packages/shared/kbn-monaco/src/languages/index.ts @@ -0,0 +1,83 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import { registerLanguage } from '../helpers'; + +import { XJsonLang, XJSON_LANG_ID } from './xjson'; +import { PainlessLang, PAINLESS_LANG_ID } from './painless'; +import { SQLLang, SQL_LANG_ID } from './sql'; +import { ESQLLang, ESQL_LANG_ID } from './esql'; +import { YamlLang, YAML_LANG_ID } from './yaml'; +import { ConsoleLang, ConsoleOutputLang, CONSOLE_LANG_ID, CONSOLE_OUTPUT_LANG_ID } from './console'; +import { MarkdownLang, MARKDOWN_LANG_ID } from './markdown'; +import { GrokLang, GROK_LANG_ID } from './grok'; +import { HandlebarsLang, HANDLEBARS_LANG_ID } from './handlebars'; +import { CssLang, CSS_LANG_ID } from './css'; +import { HJsonLang, HJSON_LANG_ID } from './hjson'; + +// export all language ids +export { + XJSON_LANG_ID, + SQL_LANG_ID, + ESQL_LANG_ID, + YAML_LANG_ID, + CONSOLE_LANG_ID, + CONSOLE_OUTPUT_LANG_ID, + MARKDOWN_LANG_ID, + GROK_LANG_ID, + HANDLEBARS_LANG_ID, + CSS_LANG_ID, + HJSON_LANG_ID, + PAINLESS_LANG_ID, +}; + +// export all language definitions +export { + XJsonLang, + PainlessLang, + SQLLang, + ESQLLang, + YamlLang, + ConsoleLang, + ConsoleOutputLang, + MarkdownLang, + GrokLang, + HandlebarsLang, + CssLang, + HJsonLang, +}; + +export { ESQL_DARK_THEME_ID, ESQL_LIGHT_THEME_ID } from './esql'; +export { + CONSOLE_THEME_ID, + CONSOLE_OUTPUT_THEME_ID, + getParsedRequestsProvider, + ConsoleParsedRequestsProvider, + createOutputParser, +} from './console'; +export type { ParsedRequest } from './console'; +export * from './painless'; +export { configureMonacoYamlSchema } from './yaml'; + +export const initializeSupportedLanguages = () => { + [ + XJsonLang, + PainlessLang, + SQLLang, + ESQLLang, + YamlLang, + ConsoleLang, + ConsoleOutputLang, + MarkdownLang, + GrokLang, + HandlebarsLang, + CssLang, + HJsonLang, + ].forEach((lang) => registerLanguage(lang)); +}; diff --git a/src/platform/packages/shared/kbn-monaco/src/languages/markdown/constants.ts b/src/platform/packages/shared/kbn-monaco/src/languages/markdown/constants.ts new file mode 100644 index 0000000000000..731ff491f0c53 --- /dev/null +++ b/src/platform/packages/shared/kbn-monaco/src/languages/markdown/constants.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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export const ID = 'markdown' as const; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/grok/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/markdown/index.ts similarity index 73% rename from src/platform/packages/shared/shared-ux/code_editor/impl/languages/grok/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/markdown/index.ts index 60a2aa84a4580..29ba28a93bdd5 100644 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/grok/index.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/markdown/index.ts @@ -7,7 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { LangModuleType } from '@kbn/monaco'; +import type { LangModuleType } from '../../types'; import { languageConfiguration, lexerRules } from './language'; +import { ID } from './constants'; -export const Lang: LangModuleType = { ID: 'grok', languageConfiguration, lexerRules }; +export { ID as MARKDOWN_LANG_ID } from './constants'; + +export const MarkdownLang: LangModuleType = { ID, languageConfiguration, lexerRules }; diff --git a/src/platform/packages/shared/kbn-monaco/src/languages/markdown/language.ts b/src/platform/packages/shared/kbn-monaco/src/languages/markdown/language.ts new file mode 100644 index 0000000000000..fc5e3615ebf49 --- /dev/null +++ b/src/platform/packages/shared/kbn-monaco/src/languages/markdown/language.ts @@ -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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export { + markdownConf as languageConfiguration, + markdownLanguage as lexerRules, +} from '../../monaco_imports'; diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/README.md b/src/platform/packages/shared/kbn-monaco/src/languages/painless/README.md similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/README.md rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/README.md diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_lexer.g4 b/src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_lexer.g4 similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_lexer.g4 rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_lexer.g4 diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_lexer.interp b/src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_lexer.interp similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_lexer.interp rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_lexer.interp diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_lexer.tokens b/src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_lexer.tokens similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_lexer.tokens rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_lexer.tokens diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_lexer.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_lexer.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_lexer.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_lexer.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_parser.g4 b/src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_parser.g4 similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_parser.g4 rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_parser.g4 diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_parser.interp b/src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_parser.interp similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_parser.interp rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_parser.interp diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_parser.tokens b/src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_parser.tokens similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_parser.tokens rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_parser.tokens diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_parser.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_parser.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_parser.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_parser.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_parser_listener.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_parser_listener.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/antlr/painless_parser_listener.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/antlr/painless_parser_listener.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/boolean_script_field_script_field.json b/src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/boolean_script_field_script_field.json similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/boolean_script_field_script_field.json rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/boolean_script_field_script_field.json diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/common.json b/src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/common.json similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/common.json rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/common.json diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/date_script_field.json b/src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/date_script_field.json similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/date_script_field.json rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/date_script_field.json diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/double_script_field_script_field.json b/src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/double_script_field_script_field.json similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/double_script_field_script_field.json rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/double_script_field_script_field.json diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/filter.json b/src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/filter.json similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/filter.json rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/filter.json diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/index.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/index.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/ip_script_field_script_field.json b/src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/ip_script_field_script_field.json similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/ip_script_field_script_field.json rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/ip_script_field_script_field.json diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/long_script_field_script_field.json b/src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/long_script_field_script_field.json similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/long_script_field_script_field.json rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/long_script_field_script_field.json diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/processor_conditional.json b/src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/processor_conditional.json similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/processor_conditional.json rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/processor_conditional.json diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/score.json b/src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/score.json similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/score.json rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/score.json diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/string_script_field_script_field.json b/src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/string_script_field_script_field.json similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/autocomplete_definitions/string_script_field_script_field.json rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/autocomplete_definitions/string_script_field_script_field.json diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/completion_adapter.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/completion_adapter.ts similarity index 98% rename from src/platform/packages/shared/kbn-monaco/src/painless/completion_adapter.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/completion_adapter.ts index d738170d944db..ba2e6e6b1655c 100644 --- a/src/platform/packages/shared/kbn-monaco/src/painless/completion_adapter.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/painless/completion_adapter.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '../monaco_imports'; +import { monaco } from '../../monaco_imports'; import { EditorStateService } from './lib'; import type { PainlessCompletionResult, PainlessCompletionKind } from './types'; import type { PainlessWorker } from './worker'; diff --git a/src/platform/packages/shared/kbn-monaco/src/languages/painless/constants.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/constants.ts new file mode 100644 index 0000000000000..250f360f76951 --- /dev/null +++ b/src/platform/packages/shared/kbn-monaco/src/languages/painless/constants.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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export const ID = 'painless' as const; diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/index.ts similarity index 88% rename from src/platform/packages/shared/kbn-monaco/src/painless/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/index.ts index b1a7e0a4c4fd1..1f57066286218 100644 --- a/src/platform/packages/shared/kbn-monaco/src/painless/index.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/painless/index.ts @@ -10,7 +10,9 @@ import { ID } from './constants'; import { lexerRules, languageConfiguration } from './lexer_rules'; import { getSuggestionProvider, getSyntaxErrors, validation$ } from './language'; -import type { CompleteLangModuleType } from '../types'; +import type { CompleteLangModuleType } from '../../types'; + +export { ID as PAINLESS_LANG_ID } from './constants'; export const PainlessLang: CompleteLangModuleType = { ID, diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/language.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/language.ts similarity index 87% rename from src/platform/packages/shared/kbn-monaco/src/painless/language.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/language.ts index e67f811708e17..a7ca6d9b57717 100644 --- a/src/platform/packages/shared/kbn-monaco/src/painless/language.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/painless/language.ts @@ -8,16 +8,16 @@ */ import { Observable, of } from 'rxjs'; -import { monaco } from '../monaco_imports'; +import { monaco } from '../../monaco_imports'; import { ID } from './constants'; -import type { LangValidation, SyntaxErrors } from '../types'; +import type { LangValidation, SyntaxErrors } from '../../types'; import type { PainlessContext, PainlessAutocompleteField } from './types'; import type { PainlessWorker } from './worker'; import { EditorStateService } from './lib'; import { PainlessCompletionAdapter } from './completion_adapter'; -import { DiagnosticsAdapter } from '../common/diagnostics_adapter'; -import { WorkerProxyService } from '../common/worker_proxy'; +import { DiagnosticsAdapter } from '../../common/diagnostics_adapter'; +import { WorkerProxyService } from '../../common/worker_proxy'; const workerProxyService = new WorkerProxyService(); const editorStateService = new EditorStateService(); diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/lexer_rules/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/lexer_rules/index.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/lexer_rules/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/lexer_rules/index.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/lexer_rules/painless.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/lexer_rules/painless.ts similarity index 98% rename from src/platform/packages/shared/kbn-monaco/src/painless/lexer_rules/painless.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/lexer_rules/painless.ts index e1d8b1ac8f4d1..f773e9f68c244 100644 --- a/src/platform/packages/shared/kbn-monaco/src/painless/lexer_rules/painless.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/painless/lexer_rules/painless.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; export interface Language extends monaco.languages.IMonarchLanguage { default: string; diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/lib/editor_state.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/lib/editor_state.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/lib/editor_state.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/lib/editor_state.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/lib/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/lib/index.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/lib/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/lib/index.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/types.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/types.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/types.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/types.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/worker/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/index.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/worker/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/index.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/worker/lib/autocomplete.test.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/lib/autocomplete.test.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/worker/lib/autocomplete.test.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/lib/autocomplete.test.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/worker/lib/autocomplete.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/lib/autocomplete.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/worker/lib/autocomplete.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/lib/autocomplete.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/worker/lib/autocomplete_utils.test.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/lib/autocomplete_utils.test.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/worker/lib/autocomplete_utils.test.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/lib/autocomplete_utils.test.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/worker/lib/autocomplete_utils.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/lib/autocomplete_utils.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/worker/lib/autocomplete_utils.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/lib/autocomplete_utils.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/worker/lib/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/lib/index.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/worker/lib/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/lib/index.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/worker/lib/lexer.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/lib/lexer.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/painless/worker/lib/lexer.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/lib/lexer.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/worker/lib/parser.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/lib/parser.ts similarity index 92% rename from src/platform/packages/shared/kbn-monaco/src/painless/worker/lib/parser.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/lib/parser.ts index 5a69a3bff8636..dba425c4c9e2c 100644 --- a/src/platform/packages/shared/kbn-monaco/src/painless/worker/lib/parser.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/lib/parser.ts @@ -10,8 +10,8 @@ import { CommonTokenStream, CharStreams } from 'antlr4'; import { default as PainlessParser, SourceContext } from '../../antlr/painless_parser'; import { PainlessLexerEnhanced } from './lexer'; -import { MonacoEditorError } from '../../../types'; -import { ANTLRErrorListener } from '../../../common/error_listener'; +import { MonacoEditorError } from '../../../../types'; +import { ANTLRErrorListener } from '../../../../common/error_listener'; const parse = ( code: string diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/worker/painless.worker.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/painless.worker.ts similarity index 94% rename from src/platform/packages/shared/kbn-monaco/src/painless/worker/painless.worker.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/painless.worker.ts index cb5637a95f411..c65fbac7c959b 100644 --- a/src/platform/packages/shared/kbn-monaco/src/painless/worker/painless.worker.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/painless.worker.ts @@ -13,7 +13,7 @@ import '@babel/runtime/regenerator'; // @ts-ignore import * as worker from 'monaco-editor/esm/vs/editor/editor.worker'; -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; import { PainlessWorker } from './painless_worker'; self.onmessage = () => { diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/worker/painless_worker.ts b/src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/painless_worker.ts similarity index 93% rename from src/platform/packages/shared/kbn-monaco/src/painless/worker/painless_worker.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/painless_worker.ts index 80489ccdbc589..df41e72fe2719 100644 --- a/src/platform/packages/shared/kbn-monaco/src/painless/worker/painless_worker.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/painless/worker/painless_worker.ts @@ -7,13 +7,13 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; import type { PainlessCompletionResult, PainlessContext, PainlessAutocompleteField, } from '../types'; -import type { BaseWorkerDefinition } from '../../types'; +import type { BaseWorkerDefinition } from '../../../types'; import { getAutocompleteSuggestions, parseAndGetSyntaxErrors } from './lib'; diff --git a/src/platform/packages/shared/kbn-monaco/src/xjson/constants.ts b/src/platform/packages/shared/kbn-monaco/src/languages/sql/constants.ts similarity index 93% rename from src/platform/packages/shared/kbn-monaco/src/xjson/constants.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/sql/constants.ts index fa7aa853e7967..d8714af0debaf 100644 --- a/src/platform/packages/shared/kbn-monaco/src/xjson/constants.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/sql/constants.ts @@ -7,4 +7,4 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export const ID = 'xjson'; +export const ID = 'sql' as const; diff --git a/src/platform/packages/shared/kbn-monaco/src/sql/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/sql/index.ts similarity index 85% rename from src/platform/packages/shared/kbn-monaco/src/sql/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/sql/index.ts index a06cb1fed3bdf..c3e4b6cffb01f 100644 --- a/src/platform/packages/shared/kbn-monaco/src/sql/index.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/sql/index.ts @@ -7,8 +7,10 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { LangModuleType } from '../types'; +import type { LangModuleType } from '../../types'; import { ID } from './constants'; import { lexerRules } from './lexer_rules'; +export { ID as SQL_LANG_ID } from './constants'; + export const SQLLang: LangModuleType = { ID, lexerRules }; diff --git a/src/platform/packages/shared/kbn-monaco/src/sql/lexer_rules/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/sql/lexer_rules/index.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/sql/lexer_rules/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/sql/lexer_rules/index.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/sql/lexer_rules/sql.ts b/src/platform/packages/shared/kbn-monaco/src/languages/sql/lexer_rules/sql.ts similarity index 98% rename from src/platform/packages/shared/kbn-monaco/src/sql/lexer_rules/sql.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/sql/lexer_rules/sql.ts index 2ef58bcca158b..2716915b2dceb 100644 --- a/src/platform/packages/shared/kbn-monaco/src/sql/lexer_rules/sql.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/sql/lexer_rules/sql.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; const brackets = [ { open: '[', close: ']', token: 'delimiter.square' }, diff --git a/src/platform/packages/shared/kbn-monaco/src/xjson/README.md b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/README.md similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/xjson/README.md rename to src/platform/packages/shared/kbn-monaco/src/languages/xjson/README.md diff --git a/src/platform/packages/shared/kbn-monaco/src/languages/xjson/constants.ts b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/constants.ts new file mode 100644 index 0000000000000..3ce8d521fb4aa --- /dev/null +++ b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/constants.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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export const ID = 'xjson' as const; diff --git a/src/platform/packages/shared/kbn-monaco/src/xjson/grammar.test.ts b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/grammar.test.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/xjson/grammar.test.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/xjson/grammar.test.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/xjson/grammar.ts b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/grammar.ts similarity index 92% rename from src/platform/packages/shared/kbn-monaco/src/xjson/grammar.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/xjson/grammar.ts index a5a0227ae917f..e3d9fa6b3395d 100644 --- a/src/platform/packages/shared/kbn-monaco/src/xjson/grammar.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/grammar.ts @@ -7,9 +7,9 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { AnnoTypes } from '../ace_migration/types'; +import { AnnoTypes } from '../../ace_migration/types'; -/* eslint-disable prettier/prettier,no-var,prefer-const,no-throw-literal,@typescript-eslint/no-shadow,one-var,@typescript-eslint/no-unused-expressions,object-shorthand,eqeqeq */ +/* eslint-disable no-var,prefer-const,no-throw-literal,@typescript-eslint/no-shadow,one-var,@typescript-eslint/no-unused-expressions,object-shorthand,eqeqeq */ export const createParser = () => { 'use strict'; @@ -97,11 +97,7 @@ export const createParser = () => { if ('"' === ch) return next(), string; if ('\\' === ch) if ((next(), 'u' === ch)) { - for ( - uffff = 0, i = 0; - 4 > i && ((hex = parseInt(next(), 16)), isFinite(hex)); - i += 1 - ) + for (uffff = 0, i = 0; 4 > i && ((hex = parseInt(next(), 16)), isFinite(hex)); i += 1) uffff = 16 * uffff + hex; string += String.fromCharCode(uffff); } else { diff --git a/src/platform/packages/shared/kbn-monaco/src/xjson/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/index.ts similarity index 87% rename from src/platform/packages/shared/kbn-monaco/src/xjson/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/xjson/index.ts index afa6284eee428..8539c75b94478 100644 --- a/src/platform/packages/shared/kbn-monaco/src/xjson/index.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/index.ts @@ -13,6 +13,8 @@ import './language'; import { ID } from './constants'; import { lexerRules, languageConfiguration } from './lexer_rules'; -import { LangModuleType } from '../types'; +import type { LangModuleType } from '../../types'; + +export { ID as XJSON_LANG_ID } from './constants'; export const XJsonLang: LangModuleType = { ID, lexerRules, languageConfiguration }; diff --git a/src/platform/packages/shared/kbn-monaco/src/xjson/language.ts b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/language.ts similarity index 61% rename from src/platform/packages/shared/kbn-monaco/src/xjson/language.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/xjson/language.ts index 58ff95c5595c8..1b9a81037a90b 100644 --- a/src/platform/packages/shared/kbn-monaco/src/xjson/language.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/language.ts @@ -9,14 +9,18 @@ // This file contains a lot of single setup logic for registering a language globally -import { monaco } from '../monaco_imports'; -import { WorkerProxyService } from '../ace_migration/worker_proxy'; -import { setupWorker } from '../ace_migration/setup_worker'; +import { WorkerProxyService } from '../../ace_migration/worker_proxy'; +import { setupWorker } from '../../ace_migration/setup_worker'; import { XJsonWorker } from './worker'; import { ID } from './constants'; +import type { LangModuleType } from '../../types'; -const OWNER = 'XJSON_GRAMMAR_CHECKER'; -const wps = new WorkerProxyService(); -monaco.languages.onLanguage(ID, async () => { - setupWorker(ID, OWNER, wps); -}); +export const XJsonLang: LangModuleType = { + ID, + onLanguage() { + const OWNER = 'XJSON_GRAMMAR_CHECKER'; + const wps = new WorkerProxyService(); + + setupWorker(ID, OWNER, wps); + }, +}; diff --git a/src/platform/packages/shared/kbn-monaco/src/xjson/lexer_rules/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/lexer_rules/index.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/xjson/lexer_rules/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/xjson/lexer_rules/index.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/xjson/lexer_rules/xjson.ts b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/lexer_rules/xjson.ts similarity index 97% rename from src/platform/packages/shared/kbn-monaco/src/xjson/lexer_rules/xjson.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/xjson/lexer_rules/xjson.ts index d7fb91b8296df..ca131dc64695f 100644 --- a/src/platform/packages/shared/kbn-monaco/src/xjson/lexer_rules/xjson.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/lexer_rules/xjson.ts @@ -7,9 +7,9 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { monaco } from '../../monaco_imports'; +import { monaco } from '../../../monaco_imports'; -import { globals } from '../../common/lexer_rules'; +import { globals } from '../../../common/lexer_rules'; export const buildXjsonRules = (root: string = 'root') => { return { diff --git a/src/platform/packages/shared/kbn-monaco/src/xjson/worker/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/worker/index.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/xjson/worker/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/xjson/worker/index.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/xjson/worker/xjson.worker.ts b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/worker/xjson.worker.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/xjson/worker/xjson.worker.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/xjson/worker/xjson.worker.ts diff --git a/src/platform/packages/shared/kbn-monaco/src/xjson/worker/xjson_worker.ts b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/worker/xjson_worker.ts similarity index 93% rename from src/platform/packages/shared/kbn-monaco/src/xjson/worker/xjson_worker.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/xjson/worker/xjson_worker.ts index 1c7d78b8d9ac3..69890d2c827a5 100644 --- a/src/platform/packages/shared/kbn-monaco/src/xjson/worker/xjson_worker.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/xjson/worker/xjson_worker.ts @@ -10,7 +10,7 @@ /* eslint-disable-next-line @kbn/eslint/module_migration */ import * as monaco from 'monaco-editor/esm/vs/editor/editor.api'; import { createParser } from '../grammar'; -import { Parser, ParseResult } from '../../ace_migration/types'; +import { Parser, ParseResult } from '../../../ace_migration/types'; export class XJsonWorker { constructor(private ctx: monaco.worker.IWorkerContext) {} diff --git a/src/platform/packages/shared/kbn-monaco/src/painless/constants.ts b/src/platform/packages/shared/kbn-monaco/src/languages/yaml/constants.ts similarity index 93% rename from src/platform/packages/shared/kbn-monaco/src/painless/constants.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/yaml/constants.ts index 9a1f82bf339c1..3ae18d04c2443 100644 --- a/src/platform/packages/shared/kbn-monaco/src/painless/constants.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/yaml/constants.ts @@ -7,4 +7,4 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export const ID = 'painless'; +export const ID = 'yaml' as const; diff --git a/src/platform/packages/shared/kbn-monaco/src/yaml/index.ts b/src/platform/packages/shared/kbn-monaco/src/languages/yaml/index.ts similarity index 77% rename from src/platform/packages/shared/kbn-monaco/src/yaml/index.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/yaml/index.ts index 5e3c41afd2ca4..d7ba79ef6a273 100644 --- a/src/platform/packages/shared/kbn-monaco/src/yaml/index.ts +++ b/src/platform/packages/shared/kbn-monaco/src/languages/yaml/index.ts @@ -8,10 +8,15 @@ */ import { type MonacoYamlOptions } from 'monaco-yaml'; -import { monaco } from '../monaco_imports'; +import { monaco } from '../../monaco_imports'; +import type { LangModuleType } from '../../types'; +import { languageConfiguration, lexerRules } from './language'; +import { ID } from './constants'; export { ID as YAML_LANG_ID } from './constants'; +export const YamlLang: LangModuleType = { ID, languageConfiguration, lexerRules }; + const monacoYamlDefaultOptions: MonacoYamlOptions = { completion: true, hover: true, diff --git a/src/platform/packages/shared/kbn-monaco/src/languages/yaml/language.ts b/src/platform/packages/shared/kbn-monaco/src/languages/yaml/language.ts new file mode 100644 index 0000000000000..842c2e1d9eab3 --- /dev/null +++ b/src/platform/packages/shared/kbn-monaco/src/languages/yaml/language.ts @@ -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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export { + yamlConf as languageConfiguration, + yamlLanguage as lexerRules, +} from '../../monaco_imports'; diff --git a/src/platform/packages/shared/kbn-monaco/src/yaml/worker/yaml.worker.ts b/src/platform/packages/shared/kbn-monaco/src/languages/yaml/worker/yaml.worker.ts similarity index 100% rename from src/platform/packages/shared/kbn-monaco/src/yaml/worker/yaml.worker.ts rename to src/platform/packages/shared/kbn-monaco/src/languages/yaml/worker/yaml.worker.ts diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/constants.ts b/src/platform/packages/shared/kbn-monaco/src/register_globals.test.ts similarity index 55% rename from src/platform/packages/shared/shared-ux/code_editor/impl/languages/constants.ts rename to src/platform/packages/shared/kbn-monaco/src/register_globals.test.ts index 64adc71b8bbc4..c6101d7032225 100644 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/constants.ts +++ b/src/platform/packages/shared/kbn-monaco/src/register_globals.test.ts @@ -7,9 +7,14 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export { LANG as CssLang } from './css/constants'; -export { LANG as MarkdownLang } from './markdown/constants'; -export { LANG as YamlLang } from './yaml/constants'; -export { LANG as HandlebarsLang } from './handlebars/constants'; -export { LANG as HJsonLang } from './hjson/constants'; -export { LANG as GrokLang } from './grok/constants'; +import './register_globals'; + +describe('registers accompanying objects on window.MonacoEnvironment for kibana', () => { + it('defines the monaco object', () => { + expect(window.MonacoEnvironment).toHaveProperty('monaco'); + }); + + it('defines the languages object', () => { + expect(window.MonacoEnvironment).toHaveProperty('getWorkerUrl', expect.any(Function)); + }); +}); diff --git a/src/platform/packages/shared/kbn-monaco/src/register_globals.ts b/src/platform/packages/shared/kbn-monaco/src/register_globals.ts index 7f5addca2f2d9..e7e5595297930 100644 --- a/src/platform/packages/shared/kbn-monaco/src/register_globals.ts +++ b/src/platform/packages/shared/kbn-monaco/src/register_globals.ts @@ -7,40 +7,40 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { XJsonLang } from './xjson'; -import { PainlessLang } from './painless'; -import { SQLLang } from './sql'; +import { + XJSON_LANG_ID, + PAINLESS_LANG_ID, + ESQL_LANG_ID, + CONSOLE_LANG_ID, + YAML_LANG_ID, +} from './languages'; import { monaco } from './monaco_imports'; -import { ESQLLang } from './esql'; -import { YAML_LANG_ID } from './yaml'; -import { registerLanguage } from './helpers'; -import { ConsoleLang, ConsoleOutputLang } from './console'; -export const DEFAULT_WORKER_ID = 'default'; +export const DEFAULT_WORKER_ID = 'default' as const; + const langSpecificWorkerIds = [ - XJsonLang.ID, - PainlessLang.ID, - ESQLLang.ID, monaco.languages.json.jsonDefaults.languageId, + XJSON_LANG_ID, + PAINLESS_LANG_ID, + ESQL_LANG_ID, YAML_LANG_ID, - ConsoleLang.ID, - ConsoleOutputLang.ID, -]; + CONSOLE_LANG_ID, +] as const; -/** - * Register languages and lexer rules - */ -registerLanguage(XJsonLang); -registerLanguage(PainlessLang); -registerLanguage(SQLLang); -registerLanguage(ESQLLang); -registerLanguage(ConsoleLang); -registerLanguage(ConsoleOutputLang); +// exported for use in webpack config to build workers +export type LangSpecificWorkerIds = [typeof DEFAULT_WORKER_ID, ...typeof langSpecificWorkerIds]; + +declare module 'monaco-editor/esm/vs/editor/editor.api' { + export interface Environment { + // add typing for exposing monaco on the MonacoEnvironment property + monaco: typeof monaco; + } +} const monacoBundleDir = (window as any).__kbnPublicPath__?.['kbn-monaco']; window.MonacoEnvironment = { - // @ts-expect-error needed for functional tests so that we can get value from 'editor' + // passed for use in functional and unit tests so that we can verify values from 'editor' monaco, getWorkerUrl: monacoBundleDir ? (_: string, languageId: string) => { diff --git a/src/platform/packages/shared/kbn-monaco/src/types.ts b/src/platform/packages/shared/kbn-monaco/src/types.ts index cda64f0d118db..3d7b6bc8ec37e 100644 --- a/src/platform/packages/shared/kbn-monaco/src/types.ts +++ b/src/platform/packages/shared/kbn-monaco/src/types.ts @@ -17,6 +17,8 @@ export interface LangModuleType { languageConfiguration?: monaco.languages.LanguageConfiguration; foldingRangeProvider?: monaco.languages.FoldingRangeProvider; getSuggestionProvider?: Function; + onLanguage?: () => void; + languageThemeResolver?: (args: UseEuiTheme) => monaco.editor.IStandaloneThemeData; } export interface CompleteLangModuleType extends LangModuleType { @@ -39,10 +41,9 @@ export interface LanguageProvidersModule { } export interface CustomLangModuleType - extends Omit, + extends Omit, LanguageProvidersModule { - onLanguage: () => void; - languageThemeResolver: (args: UseEuiTheme) => monaco.editor.IStandaloneThemeData; + onLanguage: NonNullable; } export interface MonacoEditorError { diff --git a/src/platform/packages/shared/kbn-monaco/tsconfig.json b/src/platform/packages/shared/kbn-monaco/tsconfig.json index d94e0ce93fdd9..36eb2fcb56915 100644 --- a/src/platform/packages/shared/kbn-monaco/tsconfig.json +++ b/src/platform/packages/shared/kbn-monaco/tsconfig.json @@ -2,32 +2,14 @@ "extends": "../../../../../tsconfig.base.json", "compilerOptions": { "outDir": "target/types", - "types": [ - "jest", - "node" - ] + "types": ["jest", "node"] }, - "include": [ - "src/**/*", - "**/*.ts", - "src/painless/autocomplete_definitions/boolean_script_field_script_field.json", - "src/painless/autocomplete_definitions/common.json", - "src/painless/autocomplete_definitions/date_script_field.json", - "src/painless/autocomplete_definitions/double_script_field_script_field.json", - "src/painless/autocomplete_definitions/filter.json", - "src/painless/autocomplete_definitions/ip_script_field_script_field.json", - "src/painless/autocomplete_definitions/long_script_field_script_field.json", - "src/painless/autocomplete_definitions/processor_conditional.json", - "src/painless/autocomplete_definitions/score.json", - "src/painless/autocomplete_definitions/string_script_field_script_field.json", - ], + "include": ["src/**/*", "**/*.ts", "src/languages/painless/autocomplete_definitions/*.json"], "kbn_references": [ "@kbn/i18n", "@kbn/repo-info", "@kbn/esql-ast", - "@kbn/esql-validation-autocomplete", + "@kbn/esql-validation-autocomplete" ], - "exclude": [ - "target/**/*", - ] + "exclude": ["target/**/*"] } diff --git a/src/platform/packages/shared/kbn-monaco/webpack.config.js b/src/platform/packages/shared/kbn-monaco/webpack.config.js index ddd21c9c7e029..ee137244bb1df 100644 --- a/src/platform/packages/shared/kbn-monaco/webpack.config.js +++ b/src/platform/packages/shared/kbn-monaco/webpack.config.js @@ -7,9 +7,14 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +// @ts-check const path = require('path'); const { NodeLibsBrowserPlugin } = require('@kbn/node-libs-browser-webpack-plugin'); +/** + * @typedef {(import('./src/register_globals').LangSpecificWorkerIds)} WorkerType - list of supported languages to build workers for + */ + const getWorkerEntry = (language) => { switch (language) { case 'default': @@ -17,15 +22,23 @@ const getWorkerEntry = (language) => { case 'json': return 'monaco-editor/esm/vs/language/json/json.worker.js'; default: - return path.resolve(__dirname, 'src', language, 'worker', `${language}.worker.ts`); + return path.resolve( + __dirname, + 'src', + 'languages', + language, + 'worker', + `${language}.worker.ts` + ); } }; /** - * @param {string[]} languages - list of supported languages to build workers for + * @param {WorkerType} languages * @returns {import('webpack').Configuration} */ const workerConfig = (languages) => ({ + // @ts-expect-error we are unable to type NODE_ENV mode: process.env.NODE_ENV || 'development', entry: languages.reduce((entries, language) => { entries[language] = getWorkerEntry(language); @@ -91,4 +104,4 @@ const workerConfig = (languages) => ({ }, }); -module.exports = workerConfig(['default', 'json', 'painless', 'xjson', 'esql', 'yaml', 'console']); +module.exports = workerConfig(['default', 'json', 'xjson', 'painless', 'esql', 'yaml', 'console']); diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/code_editor.tsx b/src/platform/packages/shared/shared-ux/code_editor/impl/code_editor.tsx index fb4e891261426..3c455b4f29afb 100644 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/code_editor.tsx +++ b/src/platform/packages/shared/shared-ux/code_editor/impl/code_editor.tsx @@ -33,7 +33,6 @@ import { MonacoEditor as ReactMonacoEditor, type MonacoEditorProps as ReactMonacoEditorProps, } from './react_monaco_editor'; -import './register_languages'; import { remeasureFonts } from './remeasure_fonts'; import { PlaceholderWidget } from './placeholder_widget'; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/index.tsx b/src/platform/packages/shared/shared-ux/code_editor/impl/index.tsx index ce0403be77337..c36608b9e877a 100644 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/index.tsx +++ b/src/platform/packages/shared/shared-ux/code_editor/impl/index.tsx @@ -17,7 +17,8 @@ import { } from '@elastic/eui'; import type { CodeEditorProps } from './code_editor'; export type { CodeEditorProps } from './code_editor'; -export * from './languages/constants'; +export { monaco } from '@kbn/monaco'; +export * from './react_monaco_editor/languages/supported'; const LazyCodeEditorBase = React.lazy(() => import(/* webpackChunkName: "code-editor-entry" */ './code_editor').then((m) => ({ diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/css/constants.ts b/src/platform/packages/shared/shared-ux/code_editor/impl/languages/css/constants.ts deleted file mode 100644 index 8144ae8d121d0..0000000000000 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/css/constants.ts +++ /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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export const LANG = 'css'; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/grok/constants.ts b/src/platform/packages/shared/shared-ux/code_editor/impl/languages/grok/constants.ts deleted file mode 100644 index 3ff8978987256..0000000000000 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/grok/constants.ts +++ /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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export const LANG = 'grok'; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/handlebars/constants.ts b/src/platform/packages/shared/shared-ux/code_editor/impl/languages/handlebars/constants.ts deleted file mode 100644 index 2aca5a7a6f612..0000000000000 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/handlebars/constants.ts +++ /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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export const LANG = 'handlebars'; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/hjson/constants.ts b/src/platform/packages/shared/shared-ux/code_editor/impl/languages/hjson/constants.ts deleted file mode 100644 index 75e86bbc812e3..0000000000000 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/hjson/constants.ts +++ /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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export const LANG = 'hjson'; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/index.ts b/src/platform/packages/shared/shared-ux/code_editor/impl/languages/index.ts deleted file mode 100644 index 8b471189af5fa..0000000000000 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/index.ts +++ /dev/null @@ -1,17 +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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { Lang as CssLang } from './css'; -import { Lang as HandlebarsLang } from './handlebars'; -import { Lang as MarkdownLang } from './markdown'; -import { Lang as YamlLang } from './yaml'; -import { Lang as HJson } from './hjson'; -import { Lang as GrokLang } from './grok'; - -export { CssLang, HandlebarsLang, MarkdownLang, YamlLang, HJson, GrokLang }; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/markdown/constants.ts b/src/platform/packages/shared/shared-ux/code_editor/impl/languages/markdown/constants.ts deleted file mode 100644 index 42caef4580e13..0000000000000 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/markdown/constants.ts +++ /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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export const LANG = 'markdown'; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/markdown/language.ts b/src/platform/packages/shared/shared-ux/code_editor/impl/languages/markdown/language.ts deleted file mode 100644 index 19064437f9738..0000000000000 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/markdown/language.ts +++ /dev/null @@ -1,12 +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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { markdownConf, markdownLanguage } from '@kbn/monaco'; - -export { markdownConf as languageConfiguration, markdownLanguage as lexerRules }; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/yaml/constants.ts b/src/platform/packages/shared/shared-ux/code_editor/impl/languages/yaml/constants.ts deleted file mode 100644 index 7e48444799222..0000000000000 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/yaml/constants.ts +++ /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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -export const LANG = 'yaml'; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/yaml/index.ts b/src/platform/packages/shared/shared-ux/code_editor/impl/languages/yaml/index.ts deleted file mode 100644 index 69b193b3d23e3..0000000000000 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/yaml/index.ts +++ /dev/null @@ -1,14 +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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { LangModuleType } from '@kbn/monaco'; -import { languageConfiguration, lexerRules } from './language'; -import { LANG } from './constants'; - -export const Lang: LangModuleType = { ID: LANG, languageConfiguration, lexerRules }; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/yaml/language.ts b/src/platform/packages/shared/shared-ux/code_editor/impl/languages/yaml/language.ts deleted file mode 100644 index dd9a9ef6cd9d5..0000000000000 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/languages/yaml/language.ts +++ /dev/null @@ -1,12 +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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { yamlConf, yamlLanguage } from '@kbn/monaco'; - -export { yamlConf as languageConfiguration, yamlLanguage as lexerRules }; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/package.json b/src/platform/packages/shared/shared-ux/code_editor/impl/package.json index e2def46267623..017a22161b855 100644 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/package.json +++ b/src/platform/packages/shared/shared-ux/code_editor/impl/package.json @@ -2,8 +2,5 @@ "name": "@kbn/code-editor", "private": true, "version": "1.0.0", - "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0", - "sideEffects": [ - "./register_languages.ts" - ] + "license": "Elastic License 2.0 OR AGPL-3.0-only OR SSPL-1.0" } \ No newline at end of file diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/react_monaco_editor/editor.test.tsx b/src/platform/packages/shared/shared-ux/code_editor/impl/react_monaco_editor/editor.test.tsx new file mode 100644 index 0000000000000..dc285ded4e1be --- /dev/null +++ b/src/platform/packages/shared/shared-ux/code_editor/impl/react_monaco_editor/editor.test.tsx @@ -0,0 +1,60 @@ +/* + * 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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +import React from 'react'; +import type { ComponentProps } from 'react'; +import { CODE_EDITOR_DEFAULT_THEME_ID, CODE_EDITOR_TRANSPARENT_THEME_ID } from '@kbn/monaco'; +import { render } from '@testing-library/react'; +import { MonacoEditor } from './editor'; +import * as supportedLanguages from './languages/supported'; + +const defaultProps: Partial> = { + options: {}, + editorDidMount: jest.fn(), + editorWillMount: jest.fn(), + editorWillUnmount: jest.fn(), +}; + +describe('react monaco editor', () => { + beforeAll(() => { + jest.spyOn(HTMLCanvasElement.prototype, 'getContext').mockImplementation( + (contextId, options) => + ({ + webkitBackingStorePixelRatio: 1, + } as unknown as RenderingContext) + ); + }); + + afterAll(() => { + jest.resetAllMocks(); + }); + + it('registers all supported languages', () => { + render(); + + const configuredLanguages = window.MonacoEnvironment?.monaco.languages.getLanguages(); + + Object.values(supportedLanguages).forEach((v) => { + expect(configuredLanguages?.some((l) => l?.id === v)).toBe(true); + }); + }); + + it('registers the default theme', () => { + const defineThemeSpy = jest.spyOn(window.MonacoEnvironment?.monaco.editor!, 'defineTheme'); + + render(); + + expect(defineThemeSpy).toHaveBeenCalled(); + expect(defineThemeSpy).toHaveBeenCalledWith(CODE_EDITOR_DEFAULT_THEME_ID, expect.any(Object)); + expect(defineThemeSpy).toHaveBeenCalledWith( + CODE_EDITOR_TRANSPARENT_THEME_ID, + expect.any(Object) + ); + }); +}); diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/react_monaco_editor/editor.tsx b/src/platform/packages/shared/shared-ux/code_editor/impl/react_monaco_editor/editor.tsx index 098941b0fb2ad..d19faf38ddc00 100644 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/react_monaco_editor/editor.tsx +++ b/src/platform/packages/shared/shared-ux/code_editor/impl/react_monaco_editor/editor.tsx @@ -27,7 +27,12 @@ * THE SOFTWARE. */ -import { monaco as monacoEditor, monaco, defaultThemesResolvers } from '@kbn/monaco'; +import { + monaco as monacoEditor, + monaco, + defaultThemesResolvers, + initializeSupportedLanguages, +} from '@kbn/monaco'; import { useEuiTheme } from '@elastic/eui'; import * as React from 'react'; import { useEffect, useLayoutEffect, useMemo, useRef } from 'react'; @@ -117,6 +122,9 @@ export interface MonacoEditorProps { onChange?: ChangeHandler; } +// initialize supported languages +initializeSupportedLanguages(); + export function MonacoEditor({ width = '100%', height = '100%', @@ -184,7 +192,7 @@ export function MonacoEditor({ monaco.languages.getLanguages().forEach(({ id: languageId }) => { let languageThemeResolver; if (Boolean((languageThemeResolver = monaco.editor.getLanguageThemeResolver(languageId)))) { - monaco.editor.defineTheme(languageId, languageThemeResolver(euiTheme)); + monaco.editor.defineTheme(languageId, languageThemeResolver!(euiTheme)); } }); }, [euiTheme]); diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/react_monaco_editor/languages/supported.ts b/src/platform/packages/shared/shared-ux/code_editor/impl/react_monaco_editor/languages/supported.ts new file mode 100644 index 0000000000000..0e2090accd3c0 --- /dev/null +++ b/src/platform/packages/shared/shared-ux/code_editor/impl/react_monaco_editor/languages/supported.ts @@ -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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export { + CSS_LANG_ID, + HANDLEBARS_LANG_ID, + MARKDOWN_LANG_ID, + YAML_LANG_ID, + HJSON_LANG_ID, + GROK_LANG_ID, + XJSON_LANG_ID, + PAINLESS_LANG_ID, + SQL_LANG_ID, + ESQL_LANG_ID, + CONSOLE_LANG_ID, + CONSOLE_OUTPUT_LANG_ID, +} from '@kbn/monaco/src/languages'; diff --git a/src/platform/packages/shared/shared-ux/code_editor/impl/register_languages.ts b/src/platform/packages/shared/shared-ux/code_editor/impl/register_languages.ts deleted file mode 100644 index 4d01bbba3176b..0000000000000 --- a/src/platform/packages/shared/shared-ux/code_editor/impl/register_languages.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", the "GNU Affero General Public License v3.0 only", 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", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -import { registerLanguage } from '@kbn/monaco'; -import { CssLang, HandlebarsLang, MarkdownLang, YamlLang, HJson, GrokLang } from './languages'; - -registerLanguage(CssLang); -registerLanguage(HandlebarsLang); -registerLanguage(MarkdownLang); -registerLanguage(YamlLang); -registerLanguage(HJson); -registerLanguage(GrokLang); diff --git a/src/platform/plugins/private/vis_types/vega/public/components/vega_vis_editor.tsx b/src/platform/plugins/private/vis_types/vega/public/components/vega_vis_editor.tsx index aada283678241..43c246052a0b6 100644 --- a/src/platform/plugins/private/vis_types/vega/public/components/vega_vis_editor.tsx +++ b/src/platform/plugins/private/vis_types/vega/public/components/vega_vis_editor.tsx @@ -16,7 +16,7 @@ import compactStringify from 'json-stringify-pretty-compact'; import { i18n } from '@kbn/i18n'; import { VisEditorOptionsProps } from '@kbn/visualizations-plugin/public'; -import { CodeEditor, HJsonLang } from '@kbn/code-editor'; +import { CodeEditor, HJSON_LANG_ID } from '@kbn/code-editor'; import { getNotifications } from '../services'; import { VisParams } from '../vega_fn'; import { VegaHelpMenu } from './vega_help_menu'; @@ -56,7 +56,7 @@ function VegaVisEditor({ stateParams, setValue }: VisEditorOptionsProps { readOnly: true, fontSize: readOnlySettings.fontSize, wordWrap: readOnlySettings.wrapMode === true ? 'on' : 'off', - theme: CONSOLE_THEME_ID, + theme: CONSOLE_OUTPUT_THEME_ID, automaticLayout: true, }} /> diff --git a/src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_output_actions_provider.ts b/src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_output_actions_provider.ts index bd9d0c9e73490..9f37038a45d55 100644 --- a/src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_output_actions_provider.ts +++ b/src/platform/plugins/shared/console/public/application/containers/editor/monaco_editor_output_actions_provider.ts @@ -10,7 +10,7 @@ import { CSSProperties } from 'react'; import { debounce } from 'lodash'; import { monaco } from '@kbn/monaco'; -import { createOutputParser } from '@kbn/monaco/src/console/output_parser'; +import { createOutputParser } from '@kbn/monaco/src/languages/console/output_parser'; import { getRequestEndLineNumber, diff --git a/src/platform/plugins/shared/console/public/application/containers/history/history_viewer_monaco.tsx b/src/platform/plugins/shared/console/public/application/containers/history/history_viewer_monaco.tsx index 9bc7114cf017d..f6d805bd716ac 100644 --- a/src/platform/plugins/shared/console/public/application/containers/history/history_viewer_monaco.tsx +++ b/src/platform/plugins/shared/console/public/application/containers/history/history_viewer_monaco.tsx @@ -9,8 +9,8 @@ import React, { useCallback, useRef } from 'react'; import { css } from '@emotion/react'; -import { CONSOLE_LANG_ID, CONSOLE_THEME_ID, monaco } from '@kbn/monaco'; -import { CodeEditor } from '@kbn/code-editor'; +import { CONSOLE_THEME_ID } from '@kbn/monaco'; +import { monaco, CodeEditor, CONSOLE_LANG_ID } from '@kbn/code-editor'; import { i18n } from '@kbn/i18n'; import { formatRequestBodyDoc } from '../../../lib/utils'; import { DevToolsSettings } from '../../../services'; diff --git a/src/platform/plugins/shared/kibana_react/public/url_template_editor/url_template_editor.tsx b/src/platform/plugins/shared/kibana_react/public/url_template_editor/url_template_editor.tsx index 0f3f97c3ee776..9151e25bb56bd 100644 --- a/src/platform/plugins/shared/kibana_react/public/url_template_editor/url_template_editor.tsx +++ b/src/platform/plugins/shared/kibana_react/public/url_template_editor/url_template_editor.tsx @@ -10,8 +10,7 @@ import { css } from '@emotion/react'; import * as React from 'react'; import { useEuiTheme } from '@elastic/eui'; -import { monaco } from '@kbn/monaco'; -import { CodeEditor, HandlebarsLang, type CodeEditorProps } from '@kbn/code-editor'; +import { monaco, CodeEditor, HANDLEBARS_LANG_ID, type CodeEditorProps } from '@kbn/code-editor'; export interface UrlTemplateEditorVariable { label: string; @@ -70,7 +69,7 @@ export const UrlTemplateEditor: React.FC = ({ return; } - const { dispose } = monaco.languages.registerCompletionItemProvider(HandlebarsLang, { + const { dispose } = monaco.languages.registerCompletionItemProvider(HANDLEBARS_LANG_ID, { triggerCharacters: ['{', '/', '?', '&', '='], provideCompletionItems(model, position, context, token) { const { lineNumber } = position; @@ -135,7 +134,7 @@ export const UrlTemplateEditor: React.FC = ({ return (
{ values = await this.browser.execute( () => - // @ts-expect-error this value is provided in @kbn/monaco for this specific purpose, see {@link src/platform/packages/shared/kbn-monaco/src/register_globals.ts} - (window.MonacoEnvironment?.monaco.editor as typeof monaco.editor) - .getModels() + // The monaco property is guaranteed to exist as it's value is provided in @kbn/monaco for this specific purpose, see {@link src/platform/packages/shared/kbn-monaco/src/register_globals.ts} + window + .MonacoEnvironment!.monaco!.editor.getModels() .map((model: any) => model.getValue()) as string[] ); }); @@ -48,8 +47,8 @@ export class MonacoEditorService extends FtrService { await this.retry.try(async () => { await this.browser.execute( (editorIndex, codeEditorValue) => { - // @ts-expect-error this value is provided in @kbn/monaco for this specific purpose, see {@link src/platform/packages/shared/kbn-monaco/src/register_globals.ts} - const editor = window.MonacoEnvironment?.monaco.editor as typeof monaco.editor; + // The monaco property is guaranteed to exist as it's value is provided in @kbn/monaco for this specific purpose, see {@link src/platform/packages/shared/kbn-monaco/src/register_globals.ts} + const editor = window.MonacoEnvironment!.monaco!.editor; const textModels = editor.getModels(); if (editorIndex) { diff --git a/test/tsconfig.json b/test/tsconfig.json index dab169ffd7ef0..bf9ad66b0ecab 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -67,7 +67,6 @@ "@kbn/event-annotation-common", "@kbn/links-plugin", "@kbn/ftr-common-functional-ui-services", - "@kbn/monaco", "@kbn/console-plugin", "@kbn/core-chrome-browser", "@kbn/default-nav-ml", diff --git a/x-pack/examples/testing_embedded_lens/public/app.tsx b/x-pack/examples/testing_embedded_lens/public/app.tsx index 699db0d0dc644..04557285b2241 100644 --- a/x-pack/examples/testing_embedded_lens/public/app.tsx +++ b/x-pack/examples/testing_embedded_lens/public/app.tsx @@ -41,7 +41,7 @@ import type { MetricVisualizationState, } from '@kbn/lens-plugin/public'; import type { ActionExecutionContext } from '@kbn/ui-actions-plugin/public'; -import { CodeEditor, HJsonLang } from '@kbn/code-editor'; +import { CodeEditor, HJSON_LANG_ID } from '@kbn/code-editor'; import type { StartDependencies } from './plugin'; import { AllOverrides, @@ -718,7 +718,7 @@ export const App = (props: { {
Date: Tue, 18 Feb 2025 12:48:19 -0600 Subject: [PATCH 75/78] Update ftr (main) (#208934) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | Pending | |---|---|---|---|---| | [chromedriver](https://redirect.github.com/giggio/node-chromedriver) | devDependencies | major | [`^132.0.0` -> `^133.0.0`](https://renovatebot.com/diffs/npm/chromedriver/132.0.1/133.0.0) | `133.0.1` | | [selenium-webdriver](https://redirect.github.com/SeleniumHQ/selenium/tree/trunk/javascript/node/selenium-webdriver#readme) ([source](https://redirect.github.com/SeleniumHQ/selenium)) | devDependencies | patch | [`^4.28.0` -> `^4.28.1`](https://renovatebot.com/diffs/npm/selenium-webdriver/4.28.1/4.28.1) | | --- ### Release Notes
giggio/node-chromedriver (chromedriver) ### [`v133.0.0`](https://redirect.github.com/giggio/node-chromedriver/compare/132.0.2...133.0.0) [Compare Source](https://redirect.github.com/giggio/node-chromedriver/compare/132.0.2...133.0.0) ### [`v132.0.2`](https://redirect.github.com/giggio/node-chromedriver/compare/132.0.1...132.0.2) [Compare Source](https://redirect.github.com/giggio/node-chromedriver/compare/132.0.1...132.0.2)
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://redirect.github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). Co-authored-by: elastic-renovate-prod[bot] <174716857+elastic-renovate-prod[bot]@users.noreply.github.com> Co-authored-by: Jon --- package.json | 4 ++-- yarn.lock | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index f49a796762aa6..c8ce865286d50 100644 --- a/package.json +++ b/package.json @@ -1713,7 +1713,7 @@ "buildkite-test-collector": "^1.7.0", "callsites": "^3.1.0", "chance": "1.0.18", - "chromedriver": "^132.0.0", + "chromedriver": "^133.0.0", "clarify": "^2.2.0", "clean-webpack-plugin": "^4.0.0", "cli-progress": "^3.12.0", @@ -1836,7 +1836,7 @@ "rxjs-marbles": "^7.0.1", "sass-embedded": "^1.78.0", "sass-loader": "^10.5.2", - "selenium-webdriver": "^4.28.0", + "selenium-webdriver": "^4.28.1", "sharp": "0.32.6", "simple-git": "^3.16.0", "sinon": "^7.4.2", diff --git a/yarn.lock b/yarn.lock index 484ca11b10265..d1c8bcddf024a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15455,10 +15455,10 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" -chromedriver@^132.0.0: - version "132.0.1" - resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-132.0.1.tgz#55f288943ac68ad262b3267e7696538d4bda918a" - integrity sha512-M3XyeyOdYfEiw3plMeEvF/iMwluOH9+8K5mJwFmxllFBPfHvDGX1Oeys3GNzMyhqQ1lJbRX7B6bp+323LLd5lg== +chromedriver@^133.0.0: + version "133.0.0" + resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-133.0.0.tgz#56dedd23974f986ef5fb1ec3402d2d5b845e35dc" + integrity sha512-7arRrtD9WGSlemMLE4IOoD42OSKKyOtQP/Z0x/WB5jYSaCzcI95j67EK0wQ2w1y5IjSJnYvnmXOJM6Nla4OG2w== dependencies: "@testim/chrome-version" "^1.1.4" axios "^1.7.4" @@ -29710,7 +29710,7 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selenium-webdriver@^4.28.0: +selenium-webdriver@^4.28.1: version "4.28.1" resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.28.1.tgz#0f6cc4fbc83cee3fdf8b116257656892957b72da" integrity sha512-TwbTpu/NUQkorBODGAkGowJ8sar63bvqi66/tjqhS05rBl34HkVp8DoRg1cOv2iSnNonVSbkxazS3wjbc+NRtg== From 05ae2b1cf8179f454463bfbc97466f2020131058 Mon Sep 17 00:00:00 2001 From: Andrew Macri Date: Tue, 18 Feb 2025 15:21:59 -0500 Subject: [PATCH 76/78] [Security Solution] [Attack discovery] Fixes alerts filtering issues (#211371) ### [Security Solution] [Attack discovery] Fixes alerts filtering issues This PR resolves the following Attack discovery alerts filtering issues: - [[Security Solution] [Bug] A few filters show error 'Unexpected error from Elasticsearch' for the alerts flyout #208481](https://github.com/elastic/kibana/issues/208481) - [[Security Solution] [Bug] Lucene not updated as the space holder when we apply Lucene as the filtering language #208170](https://github.com/elastic/kibana/issues/208170) - Connector selection resets in non-default spaces - Saving a filter edited via `Edit Query DSL` with an unknown `user.name` value results in a `filter value is invalid or incomplete` filter - Local field Reset clears the preview dropdowns when they are in an error state - Updates the formatting of `Up to _n_ alerts` for Borealis #### Feature flag required for testing The following feature flag is required to test this PR: ```yaml xpack.securitySolution.enableExperimental: - 'attackDiscoveryAlertFiltering' ``` The following sections provide details and desk testing steps for the alerts filtering issues fixed by this PR. ### [Security Solution] [Bug] A few filters show error 'Unexpected error from Elasticsearch' for the alerts flyout #208481 To resolve [[Security Solution] [Bug] A few filters show error 'Unexpected error from Elasticsearch' for the alerts flyout #208481](https://github.com/elastic/kibana/issues/208481): - The `_ignored` metadata field was added to the [METADATA](https://www.elastic.co/guide/en/elasticsearch/reference/current/esql-metadata-fields.html) keyword in the `ES|QL` queries that power the `Alert summary` and `Alerts preview` tabs - The `Alert summary` and `Alerts preview` tabs dropdowns are now filtered to only display fields in the alerts index - Example: Previously, if the `dll.Ext.load_index` field was in a `logs-*` index, but not the alerts index, it would still appear in the `Alerts summary` dropdown, and result in an error if selected. After the fix in this PR, this (example) field would not appear in the dropdown. #### Desk testing To desk test this fix: - See issue - In addition to the steps in [issue #208481](https://github.com/elastic/kibana/issues/208481), verify the `Alert summary` and `Alerts preview` dropdowns - Do NOT display an error when the `_ignored` field is selected - Identify a field that is present in a `logs-*` index, but not the alerts index, for example `dll.Ext.load_index`. Verify this field is NOT displayed in the dropdown ### [Security Solution] [Bug] Lucene not updated as the space holder when we apply Lucene as the filtering language #208170 To resolve [[Security Solution] [Bug] Lucene not updated as the space holder when we apply Lucene as the filtering language #208170](https://github.com/elastic/kibana/issues/208170), the custom placeholder was removed, as illustrated by the _before_ and _after_ screenshots below: **Before** ![settings before](https://github.com/user-attachments/assets/4bab48bd-e0b5-42eb-93fe-3faefdfc58bf) **After** ![settings after](https://github.com/user-attachments/assets/b499dab0-0ee1-464a-8bda-cdbf5236b0d3) #### Desk testing To desk test this fix, see ### Connector selection resets in non-default spaces This PR fixes an issue where the last selected connector would reset in non-default spaces when all of the following were true: - The user is in a non-default space - Two or more generative AI connectors are configured This issue occurred in non-default spaces because: - `spaceId` loads asynchronously - Kibana's `package.json` references an older version of `react-use`, with a known bug in the `useLocalStorage` hook, which is fixed by - I verified (locally) the fix from would work if Kibana's version of `react-use` was updated in `package.json`, however that effort appears to be on hold: . For now (to minimize changes), `spaceId` has been removed from all Attack discovery local storage keys. #### Desk testing 1. Create a new space (if you only have the default space) 2. Configure two or more Gen AI connectors 3. Select the newly created space 4. Navigate to Security > Attack discovery 5. Select a connector, for example `Claude 3.5 Sonnet` 6. Now select a _different_ connector, for example `Gemini 1.5 Pro 002` 7. Navigate to a different page in the Security solution, for example Security > Alerts 9. Once again, navigate to Security > Attack discovery **Expected result** - The previously selected connector, e.g. `Gemini 1.5 Pro 002` is still selected ### Saving a filter edited via `Edit Query DSL` with an unknown `user.name` value results in a `filter value is invalid or incomplete` filter This PR fixes an issue where editing a previously created non-Query DSL filter via `Edit Query DSL`, and then entering an unknown `user.name`, resulted in a filter with text that reads: `filter value is invalid or incomplete`, as illustrated by the screenshot below: ![filter value is invalid](https://github.com/user-attachments/assets/39493dba-bf1d-4ce7-8480-15ee2ed599ea) Generating attack discoveries with a filter like the one shown in the screenshot above would also result in errors. This issue was resolved by adding a `FilterManager` to manage the local state of the filters in the settings panel. #### Desk testing 1. Navigate to Security > Attack discovery 2. Click the settings gear 3. Click the `+` button to open the `Add filter` popover 4. In the popover, configure a `user.name` `is` `Administrator` filter Note: replace `Administrator` with a real `user.name` value if your alerts index doesn't have the value ``Administrator`` 5. Click `Add filter` to close the popover **Expected result** - The `user.name: Administrator` filter appears below the query bar 6. Click the `user.name: Administrator` filter, and choose `Edit filter` from the popover 7. Click the `Edit as Query DSL` button (in the upper right hand corner) 8. In the `Edit filter` Elasticsearch Query DSL editor, edit the Query DSL such that it has a value that does NOT exist in the index, like the following example: ```json { "match_phrase": { "user.name": "Admasdfinistrator" } } ``` 9. Click `Update filter` **Expected results** - The `user.name: Admasdfinistrator` filter, which references a value that does not exist in the alerts index, appears below the query bar - The updated filter does NOT have the text `filter value is invalid or incomplete`, as illustrated by the the screenshot in the description of this issue above. ### Local field Reset clears the preview dropdowns when they are in an error state This PR fixes an issue where the local (to the preview tab) reset button did not clear the preview dropdowns if they were in an error state. The issue is fixed by calling `clearSearchValue()` to reset the stack by field when it's in an error state (i.e. because an invalid field was entered) Note: The "local" (to the tab) `Reset` button shown in the screenshot below is fixed by this PR: ![local_reset](https://github.com/user-attachments/assets/0a2d040f-c31a-40b0-8c16-04b7d333f73e) , however the `Reset` button at the bottom of the flyout will NOT clear the dropdown if it's in an error state. (For now, this is the expected behavior.) The workaround is to manually select a valid value in the dropdown, or click `Save` or `Cancel`. (The preview dropdown does not effect the Attack discovery query, is not saved, and automatically resets to the default every time the flyout is opened.) #### Desk testing 1. Navigate to Security > Attack discovery 2. Click the settings gear 3. In the `Alert summary` tab, focus the dropdown and delete the text until it reads: ``` kibana.alert.rule.na ``` 4. Blur the dropdown by clicking outside it **Expected results** - The dropdown is highlighted red - The `Reset` button appears below the text `Select a field` 5. Click the `Reset` button below the text `Select a field` **Expected results** - The dropdown is NOT highlighted red (the error state is cleared) - The dropdown text is reset to the (valid) default value: `kibana.alert.rule.name` ### Updates the formatting of `Up to _n_ alerts` for Borealis This PR updates the formatting of the `Up to n alerts` text in Borealis, as illustrated by the before and after screenshots below: **Before** ![01-up_to_100_alerts_before](https://github.com/user-attachments/assets/4143e847-5220-463b-8fb0-da5215d16b24) **After** ![02-up_to_100_alerts_after](https://github.com/user-attachments/assets/835bd3fb-1e63-4192-b694-4595e8fa9309) #### Desk testing To desk test this fix: 1. Configure Kibana to use the `dark` theme 2. Navigate to Security > Attack discovery 3. In the connector selector, choose `+ Add new Connector...` 4. Click in the `Select a connector` dialog, click `OpenAI` 4. Enter a throwaway configuration for the connector (note: you won't actually use it), and click `Save` **Expected results** - The animated `Up to 100 alerts will be analyzed` message will appear - The color of the animated numeric text, e.g. `100` matches the color of the `Up to` text that precedes it - The extra whitespace trailing the `100`, shown in the _Before_ image (above) does NOT appear. The trailing whitespace after the `100` looks like the _After_ image (also above). --- .../pages/header/settings_modal/index.tsx | 4 +-- .../public/attack_discovery/pages/index.tsx | 15 ++++---- .../empty_prompt/animated_counter/index.tsx | 9 +++-- .../alert_selection_query/index.test.tsx | 4 ++- .../alert_selection_query/index.tsx | 11 +++--- .../index.test.ts | 4 +-- .../get_alert_summary_esql_query/index.ts | 2 +- .../index.test.ts | 10 +++--- .../get_alerts_preview_esql_query/index.ts | 2 +- .../alert_selection/index.test.tsx | 5 +-- .../settings_flyout/alert_selection/index.tsx | 7 ++-- .../preview_tab/index.test.tsx | 24 +++++++++++++ .../alert_selection/preview_tab/index.tsx | 30 ++++++++++++++-- .../alert_selection/translations.ts | 7 ---- .../pages/settings_flyout/index.test.tsx | 3 ++ .../pages/settings_flyout/index.tsx | 36 ++++++++++++++++--- .../sourcerer/containers/sourcerer_paths.ts | 8 ++++- 17 files changed, 129 insertions(+), 52 deletions(-) diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/index.tsx index 45055ae995ea6..dfe119e056a6b 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/header/settings_modal/index.tsx @@ -27,7 +27,6 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react'; import useLocalStorage from 'react-use/lib/useLocalStorage'; import { AlertsSettings } from './alerts_settings'; -import { useSpaceId } from '../../../../common/hooks/use_space_id'; import { Footer } from '../../settings_flyout/footer'; import { getIsTourEnabled } from './is_tour_enabled'; import * as i18n from './translations'; @@ -45,7 +44,6 @@ const SettingsModalComponent: React.FC = ({ localStorageAttackDiscoveryMaxAlerts, setLocalStorageAttackDiscoveryMaxAlerts, }) => { - const spaceId = useSpaceId() ?? 'default'; const modalTitleId = useGeneratedHtmlId(); const [maxAlerts, setMaxAlerts] = useState( @@ -68,7 +66,7 @@ const SettingsModalComponent: React.FC = ({ }, [closeModal, maxAlerts, setLocalStorageAttackDiscoveryMaxAlerts]); const [showSettingsTour, setShowSettingsTour] = useLocalStorage( - `${DEFAULT_ASSISTANT_NAMESPACE}.${ATTACK_DISCOVERY_STORAGE_KEY}.${spaceId}.${SHOW_SETTINGS_TOUR_LOCAL_STORAGE_KEY}.v8.16`, + `${DEFAULT_ASSISTANT_NAMESPACE}.${ATTACK_DISCOVERY_STORAGE_KEY}.${SHOW_SETTINGS_TOUR_LOCAL_STORAGE_KEY}.v8.16`, true ); const onTourFinished = useCallback(() => setShowSettingsTour(() => false), [setShowSettingsTour]); diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/index.tsx index affb0d4588301..4c7bea69950b2 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/index.tsx @@ -30,7 +30,6 @@ import useLocalStorage from 'react-use/lib/useLocalStorage'; import { SecurityPageName } from '../../../common/constants'; import { HeaderPage } from '../../common/components/header_page'; import { useInvalidFilterQuery } from '../../common/hooks/use_invalid_filter_query'; -import { useSpaceId } from '../../common/hooks/use_space_id'; import { useKibana } from '../../common/lib/kibana'; import { convertToBuildEsQuery } from '../../common/lib/kuery'; import { SpyRoute } from '../../common/utils/route/spy_routes'; @@ -53,8 +52,6 @@ const AttackDiscoveryPageComponent: React.FC = () => { services: { uiSettings }, } = useKibana(); - const spaceId = useSpaceId() ?? 'default'; - const { assistantFeatures: { attackDiscoveryAlertFiltering }, http, @@ -72,17 +69,17 @@ const AttackDiscoveryPageComponent: React.FC = () => { // time selection: const [start, setStart] = useLocalStorage( - `${DEFAULT_ASSISTANT_NAMESPACE}.${ATTACK_DISCOVERY_STORAGE_KEY}.${spaceId}.${START_LOCAL_STORAGE_KEY}`, + `${DEFAULT_ASSISTANT_NAMESPACE}.${ATTACK_DISCOVERY_STORAGE_KEY}.${START_LOCAL_STORAGE_KEY}`, DEFAULT_START ); const [end, setEnd] = useLocalStorage( - `${DEFAULT_ASSISTANT_NAMESPACE}.${ATTACK_DISCOVERY_STORAGE_KEY}.${spaceId}.${END_LOCAL_STORAGE_KEY}`, + `${DEFAULT_ASSISTANT_NAMESPACE}.${ATTACK_DISCOVERY_STORAGE_KEY}.${END_LOCAL_STORAGE_KEY}`, DEFAULT_END ); // search bar query: const [query, setQuery] = useLocalStorage( - `${DEFAULT_ASSISTANT_NAMESPACE}.${ATTACK_DISCOVERY_STORAGE_KEY}.${spaceId}.${QUERY_LOCAL_STORAGE_KEY}`, + `${DEFAULT_ASSISTANT_NAMESPACE}.${ATTACK_DISCOVERY_STORAGE_KEY}.${QUERY_LOCAL_STORAGE_KEY}`, getDefaultQuery(), { raw: false, @@ -93,7 +90,7 @@ const AttackDiscoveryPageComponent: React.FC = () => { // search bar filters: const [filters, setFilters] = useLocalStorage( - `${DEFAULT_ASSISTANT_NAMESPACE}.${ATTACK_DISCOVERY_STORAGE_KEY}.${spaceId}.${FILTERS_LOCAL_STORAGE_KEY}`, + `${DEFAULT_ASSISTANT_NAMESPACE}.${ATTACK_DISCOVERY_STORAGE_KEY}.${FILTERS_LOCAL_STORAGE_KEY}`, [], { raw: false, @@ -107,12 +104,12 @@ const AttackDiscoveryPageComponent: React.FC = () => { // get the last selected connector ID from local storage: const [localStorageAttackDiscoveryConnectorId, setLocalStorageAttackDiscoveryConnectorId] = useLocalStorage( - `${DEFAULT_ASSISTANT_NAMESPACE}.${ATTACK_DISCOVERY_STORAGE_KEY}.${spaceId}.${CONNECTOR_ID_LOCAL_STORAGE_KEY}` + `${DEFAULT_ASSISTANT_NAMESPACE}.${ATTACK_DISCOVERY_STORAGE_KEY}.${CONNECTOR_ID_LOCAL_STORAGE_KEY}` ); const [localStorageAttackDiscoveryMaxAlerts, setLocalStorageAttackDiscoveryMaxAlerts] = useLocalStorage( - `${DEFAULT_ASSISTANT_NAMESPACE}.${ATTACK_DISCOVERY_STORAGE_KEY}.${spaceId}.${MAX_ALERTS_LOCAL_STORAGE_KEY}`, + `${DEFAULT_ASSISTANT_NAMESPACE}.${ATTACK_DISCOVERY_STORAGE_KEY}.${MAX_ALERTS_LOCAL_STORAGE_KEY}`, `${DEFAULT_ATTACK_DISCOVERY_MAX_ALERTS}` ); diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/animated_counter/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/animated_counter/index.tsx index 533b95bf7087f..f0aa02fed9cc2 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/animated_counter/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/results/empty_states/empty_prompt/animated_counter/index.tsx @@ -27,9 +27,8 @@ const AnimatedCounterComponent: React.FC = ({ animationDurationMs = 1000 const text = svg .append('text') - .attr('x', 3) - .attr('y', 26) - .attr('fill', euiTheme.colors.text) + .attr('y', 24) + .attr('fill', euiTheme.colors.textHeading) .text(zero); text @@ -45,14 +44,14 @@ const AnimatedCounterComponent: React.FC = ({ animationDurationMs = 1000 }) .duration(animationDurationMs); } - }, [animationDurationMs, count, euiTheme.colors.text]); + }, [animationDurationMs, count, euiTheme.colors.textHeading]); return ( { const defaultProps = { end: 'now', + filterManager: jest.fn() as unknown as FilterManager, filters: [], query: { query: '', language: 'kuery' }, setEnd: jest.fn(), diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alert_selection_query/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alert_selection_query/index.tsx index bd5669fd0d9d1..dfd2f108d9473 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alert_selection_query/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alert_selection_query/index.tsx @@ -8,6 +8,7 @@ import type { OnTimeChangeProps } from '@elastic/eui'; import { EuiSuperDatePicker, EuiSpacer } from '@elastic/eui'; import { css } from '@emotion/react'; +import type { FilterManager } from '@kbn/data-plugin/public'; import type { DataView } from '@kbn/data-views-plugin/common'; import type { Filter, Query } from '@kbn/es-query'; import { debounce } from 'lodash/fp'; @@ -17,7 +18,6 @@ import { useKibana } from '../../../../../common/lib/kibana'; import { getCommonTimeRanges } from '../helpers/get_common_time_ranges'; import { useSourcererDataView } from '../../../../../sourcerer/containers'; import { SourcererScopeName } from '../../../../../sourcerer/store/model'; -import * as i18n from '../translations'; import { useDataView } from '../use_data_view'; export const MAX_ALERTS = 500; @@ -27,10 +27,10 @@ export const NO_INDEX_PATTERNS: DataView[] = []; interface Props { end: string; + filterManager: FilterManager; filters: Filter[]; query: Query; setEnd: React.Dispatch>; - setFilters: React.Dispatch>; setQuery: React.Dispatch>; setStart: React.Dispatch>; start: string; @@ -38,10 +38,10 @@ interface Props { const AlertSelectionQueryComponent: React.FC = ({ end, + filterManager, filters, query, setEnd, - setFilters, setQuery, setStart, start, @@ -129,9 +129,9 @@ const AlertSelectionQueryComponent: React.FC = ({ */ const onFiltersUpdated = useCallback( (newFilters: Filter[]) => { - setFilters(newFilters); + filterManager.setFilters(newFilters); }, - [setFilters] + [filterManager] ); /** @@ -171,7 +171,6 @@ const AlertSelectionQueryComponent: React.FC = ({ debouncedOnQueryChange(debouncedQuery?.query); }} onQuerySubmit={onQuerySubmit} - placeholder={i18n.FILTER_YOUR_DATA} query={query} />
diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alert_summary_tab/get_alert_summary_esql_query/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alert_summary_tab/get_alert_summary_esql_query/index.test.ts index c4a55a9eb6f91..98a50426d51a4 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alert_summary_tab/get_alert_summary_esql_query/index.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alert_summary_tab/get_alert_summary_esql_query/index.test.ts @@ -16,7 +16,7 @@ describe('getAlertSummaryEsqlQuery', () => { }); expect(query).toBe( - `FROM alerts-* METADATA _id, _index, _version + `FROM alerts-* METADATA _id, _index, _version, _ignored | WHERE kibana.alert.workflow_status IN ("open", "acknowledged") AND kibana.alert.rule.building_block_type IS NULL | SORT kibana.alert.risk_score DESC, @timestamp DESC | LIMIT 100 @@ -35,7 +35,7 @@ describe('getAlertSummaryEsqlQuery', () => { }); expect(query).toBe( - `FROM alerts-* METADATA _id, _index, _version + `FROM alerts-* METADATA _id, _index, _version, _ignored | WHERE kibana.alert.workflow_status IN ("open", "acknowledged") AND kibana.alert.rule.building_block_type IS NULL | SORT kibana.alert.risk_score DESC, @timestamp DESC | LIMIT 100 diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alert_summary_tab/get_alert_summary_esql_query/index.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alert_summary_tab/get_alert_summary_esql_query/index.ts index b22f0f64db3c6..ff368aa4cac34 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alert_summary_tab/get_alert_summary_esql_query/index.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alert_summary_tab/get_alert_summary_esql_query/index.ts @@ -15,7 +15,7 @@ export const getAlertSummaryEsqlQuery = ({ alertsIndexPattern: string; maxAlerts: number; tableStackBy0: string; -}): string => `FROM ${alertsIndexPattern} METADATA _id, _index, _version +}): string => `FROM ${alertsIndexPattern} METADATA _id, _index, _version, _ignored | WHERE kibana.alert.workflow_status IN ("open", "acknowledged") AND kibana.alert.rule.building_block_type IS NULL | SORT kibana.alert.risk_score DESC, @timestamp DESC | LIMIT ${maxAlerts} diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alerts_preview_tab/get_alerts_preview_esql_query/index.test.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alerts_preview_tab/get_alerts_preview_esql_query/index.test.ts index 14d48bda84f36..f541515604cc1 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alerts_preview_tab/get_alerts_preview_esql_query/index.test.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alerts_preview_tab/get_alerts_preview_esql_query/index.test.ts @@ -16,7 +16,7 @@ describe('getAlertsPreviewEsqlQuery', () => { }); expect(result).toBe( - `FROM alerts-* METADATA _id, _index, _version + `FROM alerts-* METADATA _id, _index, _version, _ignored | WHERE kibana.alert.workflow_status IN ("open", "acknowledged") AND kibana.alert.rule.building_block_type IS NULL | SORT kibana.alert.risk_score DESC, @timestamp DESC | LIMIT 10 @@ -33,7 +33,7 @@ describe('getAlertsPreviewEsqlQuery', () => { }); expect(result).toBe( - `FROM alerts-* METADATA _id, _index, _version + `FROM alerts-* METADATA _id, _index, _version, _ignored | WHERE kibana.alert.workflow_status IN ("open", "acknowledged") AND kibana.alert.rule.building_block_type IS NULL | SORT kibana.alert.risk_score DESC, @timestamp DESC | LIMIT 10 @@ -50,7 +50,7 @@ describe('getAlertsPreviewEsqlQuery', () => { }); expect(result).toBe( - `FROM alerts-* METADATA _id, _index, _version + `FROM alerts-* METADATA _id, _index, _version, _ignored | WHERE kibana.alert.workflow_status IN ("open", "acknowledged") AND kibana.alert.rule.building_block_type IS NULL | SORT kibana.alert.risk_score DESC, @timestamp DESC | LIMIT 10 @@ -67,7 +67,7 @@ describe('getAlertsPreviewEsqlQuery', () => { }); expect(result).toBe( - `FROM alerts-* METADATA _id, _index, _version + `FROM alerts-* METADATA _id, _index, _version, _ignored | WHERE kibana.alert.workflow_status IN ("open", "acknowledged") AND kibana.alert.rule.building_block_type IS NULL | SORT kibana.alert.risk_score DESC, @timestamp DESC | LIMIT 5 @@ -84,7 +84,7 @@ describe('getAlertsPreviewEsqlQuery', () => { }); expect(result).toBe( - `FROM custom-alerts-* METADATA _id, _index, _version + `FROM custom-alerts-* METADATA _id, _index, _version, _ignored | WHERE kibana.alert.workflow_status IN ("open", "acknowledged") AND kibana.alert.rule.building_block_type IS NULL | SORT kibana.alert.risk_score DESC, @timestamp DESC | LIMIT 10 diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alerts_preview_tab/get_alerts_preview_esql_query/index.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alerts_preview_tab/get_alerts_preview_esql_query/index.ts index 207399e70fb7a..07125b9d1167d 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alerts_preview_tab/get_alerts_preview_esql_query/index.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/alerts_preview_tab/get_alerts_preview_esql_query/index.ts @@ -15,7 +15,7 @@ export const getAlertsPreviewEsqlQuery = ({ alertsIndexPattern: string; maxAlerts: number; tableStackBy0: string; -}): string => `FROM ${alertsIndexPattern} METADATA _id, _index, _version +}): string => `FROM ${alertsIndexPattern} METADATA _id, _index, _version, _ignored | WHERE kibana.alert.workflow_status IN ("open", "acknowledged") AND kibana.alert.rule.building_block_type IS NULL | SORT kibana.alert.risk_score DESC, @timestamp DESC | LIMIT ${maxAlerts} diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/index.test.tsx index 766bdd8421df3..97f156cfc535f 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/index.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/index.test.tsx @@ -5,8 +5,9 @@ * 2.0. */ -import React from 'react'; +import type { FilterManager } from '@kbn/data-plugin/public'; import { render, screen, fireEvent } from '@testing-library/react'; +import React from 'react'; import { AlertSelection } from '.'; import { useKibana } from '../../../../common/lib/kibana'; @@ -28,13 +29,13 @@ const defaultProps = { alertsPreviewStackBy0: 'defaultAlertPreview', alertSummaryStackBy0: 'defaultAlertSummary', end: '2024-10-01T00:00:00.000Z', + filterManager: jest.fn() as unknown as FilterManager, filters: [], maxAlerts: 100, query: { query: '', language: 'kuery' }, setAlertsPreviewStackBy0: jest.fn(), setAlertSummaryStackBy0: jest.fn(), setEnd: jest.fn(), - setFilters: jest.fn(), setMaxAlerts: jest.fn(), setQuery: jest.fn(), setStart: jest.fn(), diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/index.tsx index 61c9521e5668d..a750593fe9552 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/index.tsx @@ -6,6 +6,7 @@ */ import { EuiFlexGroup, EuiFlexItem, EuiTab, EuiTabs, EuiText, EuiSpacer } from '@elastic/eui'; +import type { FilterManager } from '@kbn/data-plugin/public'; import type { Filter, Query } from '@kbn/es-query'; import React, { useMemo, useState } from 'react'; @@ -18,13 +19,13 @@ interface Props { alertsPreviewStackBy0: string; alertSummaryStackBy0: string; end: string; + filterManager: FilterManager; filters: Filter[]; maxAlerts: number; query: Query; setAlertsPreviewStackBy0: React.Dispatch>; setAlertSummaryStackBy0: React.Dispatch>; setEnd: React.Dispatch>; - setFilters: React.Dispatch>; setMaxAlerts: React.Dispatch>; setQuery: React.Dispatch>; setStart: React.Dispatch>; @@ -35,13 +36,13 @@ const AlertSelectionComponent: React.FC = ({ alertsPreviewStackBy0, alertSummaryStackBy0, end, + filterManager, filters, maxAlerts, query, setAlertsPreviewStackBy0, setAlertSummaryStackBy0, setEnd, - setFilters, setMaxAlerts, setQuery, setStart, @@ -95,10 +96,10 @@ const AlertSelectionComponent: React.FC = ({ ({ }), withRouter: jest.fn(), })); +jest.mock('react-redux', () => ({ + ...jest.requireActual('react-redux'), + useDispatch: () => mockDispatch, +})); const mockUseKibana = useKibana as jest.MockedFunction; const mockUseSourcererDataView = useSourcererDataView as jest.MockedFunction< @@ -154,4 +160,22 @@ describe('PreviewTab', () => { expect(container.firstChild).toBeNull(); }); + + it('limits the fields in the StackByComboBox to the fields in the signal index', () => { + render( + + + + ); + + expect(mockDispatch).toHaveBeenCalledWith({ + payload: { + id: 'detections', + selectedDataViewId: 'mock-signal-index', + selectedPatterns: ['mock-signal-index'], + shouldValidateSelectedPatterns: false, + }, + type: 'x-pack/security_solution/local/sourcerer/SET_SELECTED_DATA_VIEW', + }); + }); }); diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/preview_tab/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/preview_tab/index.tsx index 9e792fb6fedda..07acf10e6b029 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/preview_tab/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/preview_tab/index.tsx @@ -17,13 +17,16 @@ import { } from '@elastic/eui'; import { css } from '@emotion/react'; import { isEmpty } from 'lodash/fp'; -import React, { useCallback, useMemo } from 'react'; +import React, { useCallback, useEffect, useMemo } from 'react'; +import { useDispatch } from 'react-redux'; import { useEuiComboBoxReset } from '../../../../../common/components/use_combo_box_reset'; import { StackByComboBox } from '../../../../../detections/components/alerts_kpis/common/components'; import { useSignalIndex } from '../../../../../detections/containers/detection_engine/alerts/use_signal_index'; import type { LensAttributes } from '../../../../../common/components/visualization_actions/types'; import { useKibana } from '../../../../../common/lib/kibana'; +import { sourcererActions } from '../../../../../sourcerer/store'; +import { SourcererScopeName } from '../../../../../sourcerer/store/model'; import * as i18n from '../translations'; import type { Sorting } from '../types'; @@ -84,6 +87,7 @@ const PreviewTabComponent = ({ const { euiTheme: { font }, } = useEuiTheme(); + const dispatch = useDispatch(); const { signalIndexName } = useSignalIndex(); @@ -116,7 +120,12 @@ const PreviewTabComponent = ({ [esqlQuery, getLensAttributes, sorting, tableStackBy0] ); - const onReset = useCallback(() => setTableStackBy0(RESET_FIELD), [setTableStackBy0]); + const onReset = useCallback(() => { + // clear the input when it's in an error state, i.e. because the user entered an invalid field: + stackByField0ComboboxRef.current?.clearSearchValue(); + + setTableStackBy0(RESET_FIELD); + }, [setTableStackBy0, stackByField0ComboboxRef]); const actions = useMemo( () => [ @@ -144,6 +153,23 @@ const PreviewTabComponent = ({ [actions, body, tableStackBy0] ); + useEffect(() => { + if (signalIndexName != null) { + // Limit the fields in the StackByComboBox to the fields in the signal index. + // NOTE: The page containing this component must also be a member of + // `detectionsPaths` in `sourcerer/containers/sourcerer_paths.ts` for this + // action to have any effect. + dispatch( + sourcererActions.setSelectedDataView({ + id: SourcererScopeName.detections, + selectedDataViewId: signalIndexName, + selectedPatterns: [signalIndexName], + shouldValidateSelectedPatterns: false, + }) + ); + } + }, [dispatch, signalIndexName]); + if (signalIndexName == null) { return null; } diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/translations.ts b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/translations.ts index e34c332d27dfb..3b3b6733eb6b7 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/translations.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/alert_selection/translations.ts @@ -36,13 +36,6 @@ export const ALERT_SUMMARY = i18n.translate( } ); -export const FILTER_YOUR_DATA = i18n.translate( - 'xpack.securitySolution.attackDiscovery.settingsFlyout.alertSelection.filterYourDataPlaceholder', - { - defaultMessage: 'Filter your data using KQL syntax', - } -); - export const SELECT_FIELD = i18n.translate( 'xpack.securitySolution.attackDiscovery.settingsFlyout.alertSelection.alertsTable.selectFieldLabel', { diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/index.test.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/index.test.tsx index 5fd0bd7853d6b..f870890b5d2e2 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/index.test.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/index.test.tsx @@ -52,6 +52,9 @@ describe('SettingsFlyout', () => { lens: { EmbeddableComponent: () =>
, }, + uiSettings: { + get: jest.fn(), + }, unifiedSearch: { ui: { SearchBar: () =>
, diff --git a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/index.tsx index 9e4096fe86023..85c2149e0317c 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/attack_discovery/pages/settings_flyout/index.tsx @@ -14,16 +14,18 @@ import { EuiTitle, useGeneratedHtmlId, } from '@elastic/eui'; +import { FilterManager } from '@kbn/data-plugin/public'; import { DEFAULT_ATTACK_DISCOVERY_MAX_ALERTS } from '@kbn/elastic-assistant'; import { DEFAULT_END, DEFAULT_START } from '@kbn/elastic-assistant-common'; import type { Filter, Query } from '@kbn/es-query'; -import React, { useCallback, useMemo, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { AlertSelection } from './alert_selection'; +import { getMaxAlerts } from './alert_selection/helpers/get_max_alerts'; +import { useKibana } from '../../../common/lib/kibana'; import { Footer } from './footer'; -import * as i18n from './translations'; import { getDefaultQuery } from '../helpers'; -import { getMaxAlerts } from './alert_selection/helpers/get_max_alerts'; +import * as i18n from './translations'; export const DEFAULT_STACK_BY_FIELD = 'kibana.alert.rule.name'; @@ -60,6 +62,9 @@ const SettingsFlyoutComponent: React.FC = ({ prefix: 'attackDiscoverySettingsFlyoutTitle', }); + const { uiSettings } = useKibana().services; + const filterManager = useRef(new FilterManager(uiSettings)); + const [alertSummaryStackBy0, setAlertSummaryStackBy0] = useState(DEFAULT_STACK_BY_FIELD); const [alertsPreviewStackBy0, setAlertsPreviewStackBy0] = useState(DEFAULT_STACK_BY_FIELD); @@ -110,6 +115,29 @@ const SettingsFlyoutComponent: React.FC = ({ const numericMaxAlerts = useMemo(() => getMaxAlerts(localMaxAlerts), [localMaxAlerts]); + useEffect(() => { + let isSubscribed = true; + + // init the Filter manager with the local filters: + filterManager.current.setFilters(localFilters); + + // subscribe to filter updates: + const subscription = filterManager.current.getUpdates$().subscribe({ + next: () => { + if (isSubscribed) { + const newFilters = filterManager.current.getFilters(); + + setLocalFilters(newFilters); + } + }, + }); + + return () => { + isSubscribed = false; + subscription.unsubscribe(); + }; + }, [localFilters]); + return ( = ({ alertsPreviewStackBy0={alertsPreviewStackBy0} alertSummaryStackBy0={alertSummaryStackBy0} end={localEnd} + filterManager={filterManager.current} filters={localFilters} maxAlerts={numericMaxAlerts} query={localQuery} setAlertsPreviewStackBy0={setAlertsPreviewStackBy0} setAlertSummaryStackBy0={setAlertSummaryStackBy0} setEnd={setLocalEnd} - setFilters={setLocalFilters} setMaxAlerts={setLocalMaxAlerts} setQuery={setLocalQuery} setStart={setLocalStart} diff --git a/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/sourcerer_paths.ts b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/sourcerer_paths.ts index 93b763d7b42c0..388eae965f7c8 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/sourcerer_paths.ts +++ b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/sourcerer_paths.ts @@ -10,6 +10,7 @@ import { matchPath } from 'react-router-dom'; import { CASES_PATH, ALERTS_PATH, + ATTACK_DISCOVERY_PATH, HOSTS_PATH, USERS_PATH, NETWORK_PATH, @@ -29,7 +30,12 @@ export const sourcererPaths = [ OVERVIEW_PATH, ]; -const detectionsPaths = [ALERTS_PATH, `${RULES_PATH}/id/:id`, `${CASES_PATH}/:detailName`]; +const detectionsPaths = [ + ALERTS_PATH, + `${RULES_PATH}/id/:id`, + `${CASES_PATH}/:detailName`, + ATTACK_DISCOVERY_PATH, +]; export const getScopeFromPath = ( pathname: string From 8a55fdfe93ec00d85faf2d0f214b608fd41091c1 Mon Sep 17 00:00:00 2001 From: Jon Date: Tue, 18 Feb 2025 14:33:27 -0600 Subject: [PATCH 77/78] Fix octokit types (#211643) Related to https://github.com/elastic/kibana/pull/211450 --- .../shared/download_telemetry_template.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/x-pack/solutions/observability/plugins/apm/scripts/shared/download_telemetry_template.ts b/x-pack/solutions/observability/plugins/apm/scripts/shared/download_telemetry_template.ts index 263e228084ebf..35f7128a69397 100644 --- a/x-pack/solutions/observability/plugins/apm/scripts/shared/download_telemetry_template.ts +++ b/x-pack/solutions/observability/plugins/apm/scripts/shared/download_telemetry_template.ts @@ -20,15 +20,15 @@ export async function downloadTelemetryTemplate({ githubToken }: { githubToken: }, }); - if (Array.isArray(file.data)) { + if (!Array.isArray(file.data) && file.data.type === 'file') { + return JSON.parse(Buffer.from(file.data.content!, 'base64').toString()) as { + index_patterns: string[]; + mappings: { + properties: Record; + }; + settings: Record; + }; + } else { throw new Error('Expected single response, got array'); } - - return JSON.parse(Buffer.from(file.data.content!, 'base64').toString()) as { - index_patterns: string[]; - mappings: { - properties: Record; - }; - settings: Record; - }; } From 786df79f37642b8ddf214e086a3375204ec63a3b Mon Sep 17 00:00:00 2001 From: Georgii Gorbachev Date: Tue, 18 Feb 2025 21:34:15 +0100 Subject: [PATCH 78/78] [Security Solution] Refactor prebuilt rule customization test plans, part 2 (#211472) **Epic:** https://github.com/elastic/kibana/issues/174168 **Partially addresses:** https://github.com/elastic/kibana/issues/202068, https://github.com/elastic/kibana/issues/202078, https://github.com/elastic/kibana/issues/202079 **Follow-up to:** https://github.com/elastic/kibana/pull/211300 ## Summary We're cleaning up and refactoring our existing test plans for prebuilt rule customization, upgrade, and export/import workflows. Specifically, this PR: - Creates an "entrypoint" file that should help navigate all the test plans for prebuilt rules. - Creates a file for keeping common information about prebuilt rules that can be shared between the test plans. - Extracts duplicated terminology to the file with common information. - Extracts duplicated assumptions to the file with common information. - Extracts duplicated non-functional requirements to the file with common information. - Adds user stories to each test plan. - Updates links to tickets in every test plan. No "functional" changes have been made to any test plans, such as adding, removing, or updating any scenarios. This refactoring prepares the test plans for being "functionally" changed and improved in follow-up PRs. For example, we're going to cover the logic described in https://github.com/elastic/kibana/issues/210358 and address any other gaps in coverage. ## Review tip It might be easier to review this PR commit-by-commit as each of them contains logically cohesive changes. --- .../prebuilt_rule_customization.md | 45 +++--- .../prebuilt_rules/prebuilt_rule_export.md | 35 ++++- .../prebuilt_rules/prebuilt_rule_import.md | 33 ++++- .../prebuilt_rule_installation.md | 47 +++---- .../prebuilt_rule_upgrade_diff_algorithms.md | 27 ++-- .../prebuilt_rule_upgrade_with_preview.md | 30 ++-- .../prebuilt_rule_upgrade_without_preview.md | 47 ++----- .../prebuilt_rules/prebuilt_rules.md | 35 +++++ .../prebuilt_rules_common_info.md | 133 ++++++++++++++++++ .../prebuilt_rules/prebuilt_rules_package.md | 44 ++---- 10 files changed, 331 insertions(+), 145 deletions(-) create mode 100644 x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rules.md create mode 100644 x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rules_common_info.md diff --git a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_customization.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_customization.md index e98a45d00c32d..bbd7e9de91075 100644 --- a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_customization.md +++ b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_customization.md @@ -24,8 +24,10 @@ https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one - [Useful information](#useful-information) - [Tickets](#tickets) + - [User stories](#user-stories) - [Terminology](#terminology) - [Assumptions](#assumptions) + - [Non-functional requirements](#non-functional-requirements) - [Scenarios](#scenarios) - [Editing prebuilt rules](#editing-prebuilt-rules) - [**Scenario: User can edit a non-customized prebuilt rule from the rule edit page**](#scenario-user-can-edit-a-non-customized-prebuilt-rule-from-the-rule-edit-page) @@ -54,33 +56,42 @@ https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one ### Tickets -- [Test plan issue](https://github.com/elastic/kibana/issues/202068) -- [Prebuilt rule customization](https://github.com/elastic/kibana/issues/174168) epic +- [Users can Customize Prebuilt Detection Rules](https://github.com/elastic/security-team/issues/1974) (internal) +- [Users can Customize Prebuilt Detection Rules: Milestone 3](https://github.com/elastic/kibana/issues/174168) +- [Tests for prebuilt rule customization workflow](https://github.com/elastic/kibana/issues/202068) -### Terminology - -- **Base version**: Prebuilt rule asset we ship in the rule package corresponding to the currently installed prebuilt rules. It represents "original" version of the rule. During prebuilt rules installation prebuilt rule assets data is copied over and becomes an installed prebuilt rule. - -- **Customized prebuilt rule**: An installed prebuilt rule that has been changed by the user in the way rule fields semantically differ from the base version. Also referred to as "Modified" in the UI. - -- **Non-customized prebuilt rule**: An installed prebuilt rule that has rule fields values matching the base version. - -- **Custom rule**: A rule created by the user themselves +### User stories -- **rule source, or ruleSource**: A field on the rule that defines the rule's categorization. Can be `internal` or `external`. +**Prebuilt rule customization workflow:** -- **`is_customized`**: A field within `ruleSource` that exists when rule source is set to `external`. It is a boolean value based on if the rule has been changed from its base version +- User can edit a single prebuilt rule from the Rule Details page. +- User can edit single prebuilt rules one-by-one from the Rule Management page. +- User can edit multiple prebuilt rules in bulk via bulk actions on the Rule Management page. For example: + - User can bulk add index patterns to prebuilt rules. + - User can bulk update rule schedule in prebuilt rules. +- User can customize most of the fields of prebuilt rules: + - User can edit and customize almost any field of a prebuilt rule, just like it's possible to do with custom rules, via editing it directly or via bulk editing via bulk actions. + - User can't edit the Author and License fields. +- User can see if the rule is customized on the Rule Details page. +- User can see which rules are customized on the Rule Management page in the Upgrade table. +- User can un-customize a prebuilt rule by editing it and reverting its parameters back to their original values. -- **customizable rule field**: A rule field that is able to be customized on a prebuilt rule. A comprehenseive list can be found in `./shared_assets/customizable_rule_fields.md`. - -- **non-customizable rule field**: A rule field that is unable to be customized on a prebuilt rule. A comprehenseive list can be found in `./shared_assets/non_customizable_rule_fields.md`. +### Terminology -- **non-semantic change**: A change to a rule field that is functionally different. We normalize certain fields so for a time-related field such as `from`, `1m` vs `60s` are treated as the same value. We also trim leading and trailing whitespace for query fields. +- [Common terminology](./prebuilt_rules_common_info.md#common-terminology). +- **Rule source**, or **`ruleSource`**: a rule field that defines the rule's origin. Can be `internal` or `external`. Currently, custom rules have `internal` rule source and prebuilt rules have `external` rule source. +- **`is_customized`**: a field within `ruleSource` that exists when rule source is set to `external`. It is a boolean value based on if the rule has been changed from its base version. +- **non-semantic change**: a change to a rule field that is functionally different. We normalize certain fields so for a time-related field such as `from`, `1m` vs `60s` are treated as the same value. We also trim leading and trailing whitespace for query fields. ### Assumptions +- [Common assumptions](./prebuilt_rules_common_info.md#common-assumptions). - Rule package used will have all previous rule versions present (no missing base versions) +### Non-functional requirements + +- [Common non-functional requirements](./prebuilt_rules_common_info.md#common-non-functional-requirements). + ## Scenarios ### Editing prebuilt rules diff --git a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_export.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_export.md index c42e649cddc07..8819a7db15466 100644 --- a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_export.md +++ b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_export.md @@ -25,7 +25,10 @@ https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one - [Useful information](#useful-information) - [Tickets](#tickets) + - [User stories](#user-stories) - [Terminology](#terminology) + - [Assumptions](#assumptions) + - [Non-functional requirements](#non-functional-requirements) - [Scenarios](#scenarios) - [Core Functionality](#core-functionality) - [Scenario: Exporting prebuilt rule individually from rule details page](#scenario-exporting-prebuilt-rule-individually-from-rule-details-page) @@ -42,15 +45,35 @@ https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one ### Tickets -- [Rule Immutability/Customization](https://github.com/elastic/security-team/issues/1974) -- [Rule Exporting Feature](https://github.com/elastic/kibana/issues/180167#issue-2227974379) -- [Rule Export API PR](https://github.com/elastic/kibana/pull/194498) +- [Users can Customize Prebuilt Detection Rules](https://github.com/elastic/security-team/issues/1974) (internal) +- [Users can Customize Prebuilt Detection Rules: Milestone 3](https://github.com/elastic/kibana/issues/174168) +- [Allow exporting prebuilt rules at the API level](https://github.com/elastic/kibana/issues/180167) +- [Support exporting prebuilt rules from the Rule Management page](https://github.com/elastic/kibana/issues/180173) +- [Support exporting prebuilt rules from the Rule Details page](https://github.com/elastic/kibana/issues/180176) +- [Tests for prebuilt rule import/export workflow](https://github.com/elastic/kibana/issues/202079) + +### User stories + +**Prebuilt rule export workflow:** + +- User can export a single prebuilt rule from the Rule Details page. +- User can export multiple prebuilt rules one-by-one from the Rule Management page. +- User can export multiple prebuilt rules in bulk from the Rule Management page via bulk actions. +- User can export prebuilt non-customized rules. +- User can export prebuilt customized rules. +- User can export any combination of prebuilt non-customized, prebuilt customized, and custom rules. ### Terminology -- **prebuilt rule**: A rule contained in our `Prebuilt Security Detection Rules` integration in Fleet. -- **custom rule**: A rule defined by the user, which has no relation to the prebuilt rules -- **rule source, or ruleSource**: A field on the rule that defines the rule's categorization +- [Common terminology](./prebuilt_rules_common_info.md#common-terminology). + +### Assumptions + +- [Common assumptions](./prebuilt_rules_common_info.md#common-assumptions). + +### Non-functional requirements + +- [Common non-functional requirements](./prebuilt_rules_common_info.md#common-non-functional-requirements). ## Scenarios diff --git a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_import.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_import.md index 2e61b731efbf0..68063421ce992 100644 --- a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_import.md +++ b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_import.md @@ -21,7 +21,10 @@ https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one - [Useful information](#useful-information) - [Tickets](#tickets) + - [User stories](#user-stories) - [Terminology](#terminology) + - [Assumptions](#assumptions) + - [Non-functional requirements](#non-functional-requirements) - [Scenarios](#scenarios) - [Core Functionality](#core-functionality) - [Scenario: Importing an unmodified prebuilt rule with a matching rule\_id and version](#scenario-importing-an-unmodified-prebuilt-rule-with-a-matching-rule_id-and-version) @@ -43,15 +46,33 @@ https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one ### Tickets -- [Rule Immutability/Customization](https://github.com/elastic/security-team/issues/1974) -- [Rule Importing Feature](https://github.com/elastic/kibana/issues/180168) -- [Rule Import API PR](https://github.com/elastic/kibana/pull/190198) +- [Users can Customize Prebuilt Detection Rules](https://github.com/elastic/security-team/issues/1974) (internal) +- [Users can Customize Prebuilt Detection Rules: Milestone 3](https://github.com/elastic/kibana/issues/174168) +- [Allow importing prebuilt rules at the API level](https://github.com/elastic/kibana/issues/180168) +- [Benchmark performance of importing a large number of prebuilt rules](https://github.com/elastic/kibana/issues/195632) +- [Tests for prebuilt rule import/export workflow](https://github.com/elastic/kibana/issues/202079) + +### User stories + +**Prebuilt rule import workflow:** + +- User can import a single prebuilt rule on the Rule Management page. +- User can import multiple prebuilt rules on the Rule Management page. +- User can import prebuilt non-customized rules. +- User can import prebuilt customized rules. +- User can import any combination of prebuilt non-customized, prebuilt customized, and custom rules. ### Terminology -- **prebuilt rule**: A rule contained in our `Prebuilt Security Detection Rules` integration in Fleet. -- **custom rule**: A rule defined by the user, which has no relation to the prebuilt rules -- **rule source, or ruleSource**: A field on the rule that defines the rule's categorization +- [Common terminology](./prebuilt_rules_common_info.md#common-terminology). + +### Assumptions + +- [Common assumptions](./prebuilt_rules_common_info.md#common-assumptions). + +### Non-functional requirements + +- [Common non-functional requirements](./prebuilt_rules_common_info.md#common-non-functional-requirements). ## Scenarios diff --git a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_installation.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_installation.md index 128e90042f395..56de7b5d64d7c 100644 --- a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_installation.md +++ b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_installation.md @@ -20,6 +20,7 @@ https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one - [Useful information](#useful-information) - [Tickets](#tickets) + - [User stories](#user-stories) - [Terminology](#terminology) - [Assumptions](#assumptions) - [Non-functional requirements](#non-functional-requirements) @@ -58,50 +59,36 @@ https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one ### Tickets -- [Rule Immutability/Customization epic](https://github.com/elastic/security-team/issues/1974)(internal) +- [Users can Customize Prebuilt Detection Rules](https://github.com/elastic/security-team/issues/1974) (internal) +- [Users can Customize Prebuilt Detection Rules: Milestone 2](https://github.com/elastic/kibana/issues/174167) +- [Users can Customize Prebuilt Detection Rules: Milestone 3](https://github.com/elastic/kibana/issues/174168) -**Milestone 3 - Prebuilt Rules Customization:** -- [Milestone 3 epic ticket](https://github.com/elastic/kibana/issues/174168) -- [Tests for prebuilt rule upgrade workflow #202078](https://github.com/elastic/kibana/issues/202078) +### User stories -**Milestone 2:** -- [Ensure full test coverage for existing workflows of installing and upgrading prebuilt rules](https://github.com/elastic/kibana/issues/148176) -- [Write test plan and add test coverage for the new workflows of installing and upgrading prebuilt rules](https://github.com/elastic/kibana/issues/148192) +**Prebuilt rule installation workflow:** -### Terminology - -- **EPR**: [Elastic Package Registry](https://github.com/elastic/package-registry), service that hosts our **Package**. - -- **Package**: `security_detection_engine` Fleet package that we use to distribute prebuilt detection rules in the form of `security-rule` assets (saved objects). - -- **Real package**: actual latest stable package distributed and pulled from EPR via Fleet. +- User can install single prebuilt rules one-by-one from the Rule Installation page. +- User can install multiple prebuilt rules in bulk from the Rule Installation page. +- User can install all available prebuilt rules in bulk from the Rule Installation page. +- User can preview properties of a prebuilt rule before installing it. -- **Mock rules**: `security-rule` assets that are indexed into the `.kibana_security_solution` index directly in the test setup, either by using the ES client _in integration tests_ or by an API request _in Cypress tests_. - -- **Air-gapped environment**: an environment where Kibana doesn't have access to the internet. In general, EPR is not available in such environments, except the cases when the user runs a custom EPR inside the environment. +### Terminology -- **CTA**: "call to action", usually a button, a link, or a callout message with a button, etc, that invites the user to do some action. - - CTA to install prebuilt rules - at this moment, it's a link button with a counter (implemented) and a callout with a link button (not yet implemented) on the Rule Management page. - - CTA to upgrade prebuilt rules - at this moment, it's a tab with a counter (implemented) and a callout with a link button (not yet implemented) on the Rule Management page. +- [Common terminology](./prebuilt_rules_common_info.md#common-terminology). +- **CTA to install prebuilt rules**: a link button with a counter on the Rule Management page. +- **CTA to upgrade prebuilt rules**: a tab with a counter on the Rule Management page. ### Assumptions -- Below scenarios only apply to prebuilt detection rules. -- Users should be able to install prebuilt rules on the `Basic` license and higher. -- EPR is available for fetching the package unless explicitly indicated otherwise. -- Only the latest **stable** package is checked for installation/upgrade and pre-release packages are ignored. +- [Common assumptions](./prebuilt_rules_common_info.md#common-assumptions). ### Non-functional requirements -- Notifications, rule installation workflows should work: - - regardless of the package type: with historical rule versions or without; - - regardless of the package registry availability: i.e., they should also work in air-gapped environments. -- Rule installation and upgrade workflows should work with packages containing up to 15000 historical rule versions. This is the max number of versions of all rules in the package. This limit is enforced by Fleet. -- Kibana should not crash with Out Of Memory exception during package installation. -- For test purposes, it should be possible to use detection rules package versions lower than the latest. +- [Common non-functional requirements](./prebuilt_rules_common_info.md#common-non-functional-requirements). ### Functional requirements +- Users should be able to install prebuilt rules on the `Basic` license and higher. - User should be able to install prebuilt rules with and without previewing what exactly they would install (rule properties). - If user chooses to preview a prebuilt rule to be installed/upgraded, we currently show this preview in a flyout. - In the prebuilt rule preview a tab that doesn't have any sections should not be displayed and a section that doesn't have any properties also should not be displayed. diff --git a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_upgrade_diff_algorithms.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_upgrade_diff_algorithms.md index 0db233c3fb357..381e207c3c47a 100644 --- a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_upgrade_diff_algorithms.md +++ b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_upgrade_diff_algorithms.md @@ -19,6 +19,7 @@ https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one - [Tickets](#tickets) - [Terminology](#terminology) - [Assumptions](#assumptions) + - [Non-functional requirements](#non-functional-requirements) - [Scenarios](#scenarios) - [Rule field doesn't have an update and has no custom value - `AAA`](#rule-field-doesnt-have-an-update-and-has-no-custom-value---aaa) - [**Scenario: `AAA` - Rule field is any type**](#scenario-aaa---rule-field-is-any-type) @@ -53,21 +54,22 @@ https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one ### Tickets -- [Users can customize prebuilt detection rules](https://github.com/elastic/kibana/issues/174168) epic -- [Implement single-line string diff algorithm](https://github.com/elastic/kibana/issues/180158) +- [Users can Customize Prebuilt Detection Rules](https://github.com/elastic/security-team/issues/1974) (internal) +- [Users can Customize Prebuilt Detection Rules: Milestone 3](https://github.com/elastic/kibana/issues/174168) - [Implement number diff algorithm](https://github.com/elastic/kibana/issues/180160) +- [Implement single-line string diff algorithm](https://github.com/elastic/kibana/issues/180158) +- [Implement multi-line string diff algorithm](https://github.com/elastic/kibana/issues/180159) - [Implement array of scalar values diff algorithm](https://github.com/elastic/kibana/issues/180162) +- [Implement data source fields diff algorithm](https://github.com/elastic/kibana/issues/187659) +- [Implement query fields diff algorithms](https://github.com/elastic/kibana/issues/187658) +- [Implement `concurrent_searches` and `items_per_search` fields diff algorithms](https://github.com/elastic/kibana/issues/188061) +- [Implement rule type diff algorithm](https://github.com/elastic/kibana/issues/190482) +- [Tests for prebuilt rule customization workflow](https://github.com/elastic/kibana/issues/202068) +- [Tests for prebuilt rule upgrade workflow](https://github.com/elastic/kibana/issues/202078) ### Terminology -- **Base version**: Also labeled as `base_version`. This is the version of a rule authored by Elastic as it is installed from the `security_detection_engine` package, with no customizations to any fields by the user. - -- **Current version**: Also labeled as `current_version`. This is the version of the rule that the user currently has installed. Consists of the `base_version` of the rules plus all customization applies to its fields by the user. - -- **Target version**: Also labeled as `target_version`. This is the version of the rule that contains the update from Elastic. - -- **Merged version**: Also labeled as `merged_version`. This is the version of the rule that we determine via the various algorithms. It could contain a mix of all the rule versions on a per-field basis to create a singluar version of the rule containing all relevant updates and user changes to display to the user. - +- [Common terminology](./prebuilt_rules_common_info.md#common-terminology). - **Grouped fields** - `data_source`: an object that contains a `type` field with a value of `data_view_id` or `index_patterns` and another field that's either `data_view_id` of type string OR `index_patterns` of type string array - `kql_query`: an object that contains a `type` field with a value of `inline_query` or `saved_query` and other fields based on whichever type is defined. If it's `inline_query`, the object contains a `query` string field, a `language` field that's either `kuery` or `lucene`, and a `filters` field which is an array of kibana filters. If the type field is `saved_query`, the object only contains a `saved_query_id` string field. @@ -76,9 +78,14 @@ https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one ### Assumptions +- [Common assumptions](./prebuilt_rules_common_info.md#common-assumptions). - All scenarios will contain at least 1 prebuilt rule installed in Kibana. - A new version will be available for rule(s). +### Non-functional requirements + +- [Common non-functional requirements](./prebuilt_rules_common_info.md#common-non-functional-requirements). + ## Scenarios ### Rule field doesn't have an update and has no custom value - `AAA` diff --git a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_upgrade_with_preview.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_upgrade_with_preview.md index 31f36d86ed773..759bd352b17da 100644 --- a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_upgrade_with_preview.md +++ b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_upgrade_with_preview.md @@ -19,8 +19,10 @@ https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one - [Useful information](#useful-information) - [Tickets](#tickets) + - [User stories](#user-stories) - [Terminology](#terminology) - [Assumptions](#assumptions) + - [Non-functional requirements](#non-functional-requirements) - [Functional requirements](#functional-requirements) - [Scenarios](#scenarios) - [Rule upgrade field preview](#rule-upgrade-field-preview) @@ -66,25 +68,33 @@ https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one - [Users can Customize Prebuilt Detection Rules: Milestone 3](https://github.com/elastic/kibana/issues/174168) - [Tests for prebuilt rule upgrade workflow](https://github.com/elastic/kibana/issues/202078) -### Terminology - -- **CTA**: "call to action", usually a button, a link, or a callout message with a button, etc, that invites the user to do some action. - - - **CTA to upgrade the prebuilt rule**: the button to upgrade the prebuilt rule currently shown in the Rule Upgrade flyout. +### User stories -- **Non-customized field**: a prebuilt rule's field that has the original value from the originally installed prebuilt rule. +**Prebuilt rule upgrade workflow:** -- **Customized field**: a prebuilt rule's field that has a value that differs from the original field value of the originally installed prebuilt rule. +- User can upgrade a single prebuilt rule to its latest version from the Rule Upgrade table with previewing incoming updates from Elastic and user customizations in the Rule Upgrade flyout. +- Specifically, when upgrading a rule, in the Rule Upgrade flyout: + - User can preview updates from Elastic, for each rule field that has an update from Elastic. + - User can preview their customizations, for each rule field that was customized. + - User can compare their customizations with updates from Elastic and see if there are any conflicts between them, per each rule field. + - User can manually resolve conflicts between their customizations and updates from Elastic, per each rule field. + - User can edit the final field values before submitting the update. +- User can upgrade a rule if its type has been changed by Elastic in the latest version, but can only accept the incoming changes; any user customizations will be lost. -- **Non-customized rule**: a prebuilt rule that doesn't have any customized fields. +### Terminology -- **Customized rule**: a prebuilt rule that has one or more customized fields. +- [Common terminology](./prebuilt_rules_common_info.md#common-terminology). +- **CTA to upgrade the prebuilt rule**: the button to upgrade the prebuilt rule currently shown in the Rule Upgrade flyout. ### Assumptions -- Below scenarios only apply to prebuilt detection rules. +- [Common assumptions](./prebuilt_rules_common_info.md#common-assumptions). - A prebuilt rule is shown in the Rule Upgrade table when there's a newer version of this rule in the currently installed package with prebuilt rules. +### Non-functional requirements + +- [Common non-functional requirements](./prebuilt_rules_common_info.md#common-non-functional-requirements). + ### Functional requirements - User should be able to upgrade prebuilt rules one-by-one with the ability to preview: diff --git a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_upgrade_without_preview.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_upgrade_without_preview.md index 6cf8ba78270df..db1e1f2b8b66f 100644 --- a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_upgrade_without_preview.md +++ b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rule_upgrade_without_preview.md @@ -20,6 +20,7 @@ https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one - [Useful information](#useful-information) - [Tickets](#tickets) + - [User stories](#user-stories) - [Terminology](#terminology) - [Assumptions](#assumptions) - [Non-functional requirements](#non-functional-requirements) @@ -81,52 +82,30 @@ https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one ### Tickets -- [Users can Customize Prebuilt Detection Rules](https://github.com/elastic/security-team/issues/1974) epic +- [Users can Customize Prebuilt Detection Rules](https://github.com/elastic/security-team/issues/1974) (internal) +- [Users can Customize Prebuilt Detection Rules: Milestone 3](https://github.com/elastic/kibana/issues/174168) +- [Tests for prebuilt rule upgrade workflow](https://github.com/elastic/kibana/issues/202078) -**Milestone 3 - Prebuilt Rules Customization:** +### User stories -- [Milestone 3 epic ticket](https://github.com/elastic/kibana/issues/174168) -- [Tests for prebuilt rule upgrade workflow #202078](https://github.com/elastic/kibana/issues/202078) +**Prebuilt rule upgrade workflow:** -**Milestone 2:** - -- [Ensure full test coverage for existing workflows of installing and upgrading prebuilt rules](https://github.com/elastic/kibana/issues/148176) -- [Write test plan and add test coverage for the new workflows of installing and upgrading prebuilt rules](https://github.com/elastic/kibana/issues/148192) +- User can upgrade a single prebuilt rule to its latest version without previewing the incoming updates. +- User can bulk upgrade multiple prebuilt rules to their latest versions without previewing the incoming updates. ### Terminology -- **EPR**: [Elastic Package Registry](https://github.com/elastic/package-registry), service that hosts our **Package**. - -- **Package**: `security_detection_engine` Fleet package that we use to distribute prebuilt detection rules in the form of `security-rule` assets (saved objects). - -- **Real package**: actual latest stable package distributed and pulled from EPR via Fleet. - -- **Mock rules**: `security-rule` assets that are indexed into the `.kibana_security_solution` index directly in the test setup, either by using the ES client _in integration tests_ or by an API request _in Cypress tests_. - -- **Air-gapped environment**: an environment where Kibana doesn't have access to the internet. In general, EPR is not available in such environments, except the cases when the user runs a custom EPR inside the environment. - -- **CTA**: "call to action", usually a button, a link, or a callout message with a button, etc, that invites the user to do some action. - - CTA to install prebuilt rules - at this moment, it's a link button with a counter (implemented) and a callout with a link button (not yet implemented) on the Rule Management page. - - CTA to upgrade prebuilt rules - at this moment, it's a tab with a counter (implemented) and a callout with a link button (not yet implemented) on the Rule Management page. +- [Common terminology](./prebuilt_rules_common_info.md#common-terminology). +- **CTA to install prebuilt rules**: a link button with a counter on the Rule Management page. +- **CTA to upgrade prebuilt rules**: a tab with a counter on the Rule Management page. ### Assumptions -- Below scenarios only apply to prebuilt detection rules. -- EPR is available for fetching the package with prebuilt rules unless explicitly indicated otherwise. -- Only the latest **stable** package is checked for installation/upgrade and pre-release packages are ignored. -- Users have the required [privileges for managing detection rules](https://www.elastic.co/guide/en/security/current/detections-permissions-section.html). -- Users are: - - on the `Basic` license and higher in self-hosted and ECH environments; - - on the `Essentials` tier and higher in Serverless environments. +- [Common assumptions](./prebuilt_rules_common_info.md#common-assumptions). ### Non-functional requirements -- Notifications, rule installation and rule upgrade workflows should work: - - regardless of the package type: with historical rule versions or without; - - regardless of the package registry availability: i.e., they should also work in air-gapped environments. -- Rule installation and upgrade workflows should work with packages containing up to 15000 historical rule versions. This is the max number of versions of all rules in the package. This limit is enforced by Fleet. -- Kibana should not crash with Out Of Memory exception during package installation. -- For test purposes, it should be possible to use detection rules package versions lower than the latest. +- [Common non-functional requirements](./prebuilt_rules_common_info.md#common-non-functional-requirements). ### Functional requirements diff --git a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rules.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rules.md new file mode 100644 index 0000000000000..b66e991dd5ef5 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rules.md @@ -0,0 +1,35 @@ +# Test plans for workflows related to prebuilt rules + +## Common information + +See [common information](./prebuilt_rules_common_info.md) about prebuilt rules, which includes: + +- Overview of our features built around prebuilt rules. +- Common terminology used in the test plans below. +- Common assumptions about testing scenarios. +- And other useful information. + +## Test plans + +Understand how we distribute prebuilt rules via a Fleet package and how prebuilt rules become available for installation and upgrade in the system. + +- [Test plan: prebuilt rules package](./prebuilt_rules_package.md) + +Learn how users can install prebuilt rules: + +- [Test plan: installing prebuilt rules](./prebuilt_rule_installation.md) + +Learn how users can edit and customize prebuilt rules: + +- [Test plan: customizing prebuilt rules](./prebuilt_rule_customization.md) + +Learn how users can upgrade prebuilt rules: + +- [Test plan: upgrading prebuilt rules one-by-one or in bulk without preview](./prebuilt_rule_upgrade_without_preview.md) +- [Test plan: upgrading prebuilt rules one-by-one with preview](./prebuilt_rule_upgrade_with_preview.md) +- [Test plan: diff algorithms for upgrading prebuilt rules](./prebuilt_rule_upgrade_diff_algorithms.md) + +Learn how users can export and import prebuilt rules: + +- [Test plan: exporting prebuilt rules](./prebuilt_rule_export.md) +- [Test plan: importing prebuilt rules](./prebuilt_rule_import.md) diff --git a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rules_common_info.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rules_common_info.md new file mode 100644 index 0000000000000..cca246064fc47 --- /dev/null +++ b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rules_common_info.md @@ -0,0 +1,133 @@ +# Common information about prebuilt rules + +## Table of contents + + + +- [Tickets](#tickets) +- [Features](#features) +- [Common terminology](#common-terminology) +- [Common assumptions](#common-assumptions) +- [Common non-functional requirements](#common-non-functional-requirements) +- [Common functional requirements](#common-functional-requirements) + +## Tickets + +Epics: + +- [Users can Customize Prebuilt Detection Rules](https://github.com/elastic/security-team/issues/1974) (internal) +- [Users can Customize Prebuilt Detection Rules: Milestone 2](https://github.com/elastic/kibana/issues/174167) +- [Users can Customize Prebuilt Detection Rules: Milestone 3](https://github.com/elastic/kibana/issues/174168) + +Milestone 3: + +- Automated testing: + - [Tests for prebuilt rule customization workflow](https://github.com/elastic/kibana/issues/202068) + - [Tests for prebuilt rule upgrade workflow](https://github.com/elastic/kibana/issues/202078) + - [Tests for prebuilt rule import/export workflow](https://github.com/elastic/kibana/issues/202079) +- Manual testing: + - [Exploratory testing](https://github.com/elastic/kibana/issues/180398) + - [Acceptance testing](https://github.com/elastic/security-team/issues/11572) (internal) +- Documentation: + - [Main ticket](https://github.com/elastic/security-docs/issues/5061) + - [Copy review ticket](https://github.com/elastic/security-docs/issues/6238) + +## Features + +Historically, users were only able to install all the available prebuilt rules at once, and later upgrade them all at once to their latest versions from Elastic. Also, users were only able to add or edit notification actions for prebuilt rules, but it was impossible to edit and customize any other rule parameters. + +With [Milestone 2](https://github.com/elastic/kibana/issues/174167), we introduced the ability to: + +- Install prebuilt rules selectively one-by-one or in bulk. +- Before installing a single rule: + - Preview its properties. +- Upgrade prebuilt rules selectively one-by-one or in bulk to their latest versions from Elastic. +- Before upgrading a single rule: + - Preview properties of its latest version. + - Preview a diff between the currently installed version of the rule and its latest version. + +With [Milestone 3](https://github.com/elastic/kibana/issues/174168), we're introducing the ability to: + +- Edit and customize prebuilt rules (modify almost all rule parameters, besides rule notification actions). +- Export and import prebuilt rules, including customized ones. +- Upgrade prebuilt rules while keeping the user customizations whenever possible. + +Please find more information about Milestone 3 features and user stories in the corresponding test plans. + +## Common terminology + +Terminology related to the package with prebuilt rules: + +- **EPR**: [Elastic Package Registry](https://github.com/elastic/package-registry), service that hosts our **Package**. +- **Air-gapped environment**: an environment where Kibana doesn't have access to the internet. In general, EPR is not available in such environments, except the cases when the user runs a custom EPR inside the environment. +- **Package**: the `security_detection_engine` Fleet package that we use for distributing prebuilt detection rules in the form of `security-rule` assets (saved objects). +- **Real package**: the actual latest stable package distributed and pulled from EPR via Fleet. +- **Rule asset**: `security-rule` asset saved objects distributed via the package. There can be one or many assets per each prebuilt rule in the package. Each asset can represent either the latest version of a prebuilt rule, or one of its prior historical versions. +- **Mock rules**: `security-rule` assets that are indexed into the `.kibana_security_solution` index directly from a test during the test setup phase. This allows us to avoid installing the real package in many tests, because this is a heavy, slow and unreliable operation. + +Terminology related to the rule's origin: + +- **Custom rule**: a rule created by the user themselves. +- **Prebuilt rule**: a rule created by Elastic and shipped via the package. + +Terminology related to the various rule versions that can exist in the system: + +- **Base version**, also labeled as `base_version`: the "original" version of a prebuilt rule. This is the version of a rule authored by Elastic as it is installed from the package, without customizations to any fields by the user. It is equal to the prebuilt rule asset from the package that corresponds to the `current_version` of this rule. During the installation of a prebuilt rule its asset data is copied over and becomes an installed prebuilt rule. +- **Current version**, also labeled as `current_version`. This is the version of a rule that the user currently has installed. Can be non-customized (in which case it's equal to the `base_version`) or customized by the user (in which case it's different from the `base_version`). You can think of it as a combination of the `base_version` plus all the user customizations applied to its fields on top of that. +- **Target version**, also labeled as `target_version`. This is a newer version of a rule that contains updates from Elastic and that the user is upgrading the rule to. Currently, we allow users to upgrade prebuilt rules only to their lates versions. +- **Merged version**, also labeled as `merged_version`. This is the version of a prebuilt rule that the rule upgrade workflow proposes to the user by default on upgrade. Can incorporate both user customizations and updates from Elastic, where conflicts between them have been auto-resolved by diff algorithms on a per-field basis. +- We can apply the notion of "versions" to rules as a whole or to each rule field separately. +- Base version's `rule.version` always == current version's `rule.version`. +- Current version's `rule.version` always < target version's `rule.version`. + +Terminology related to prebuilt rule customization: + +- **Customized prebuilt rule**: an installed prebuilt rule that has been changed by the user in the way rule fields semantically differ from the base version. Also referred to as "Modified" in the UI. + - A customized prebuilt rule has one or more customized fields. + - For a customized prebuilt rule, `current_version` != `base_version`. +- **Non-customized prebuilt rule**: an installed prebuilt rule that has rule fields values matching the base version. + - A non-customized prebuilt rule doesn't have any customized fields. + - For a non-customized prebuilt rule, `current_version` == `base_version`. +- **Customized field**: a prebuilt rule's field which value differs from the value from the originally installed prebuilt rule. + - For a customized field, `current_version.field` != `base_version.field`. +- **Non-customized field**: a prebuilt rule's field that has the original value from the originally installed prebuilt rule. + - For a non-customized field, `current_version.field` == `base_version.field`. +- **Customizable rule field**: a rule field that is able to be customized on a prebuilt rule. A comprehenseive list can be found in `./shared_assets/customizable_rule_fields.md`. +- **Non-customizable rule field**: a rule field that is unable to be customized on a prebuilt rule. A comprehenseive list can be found in `./shared_assets/non_customizable_rule_fields.md`. + +Terminology related to the "rule source" object: + +- **Rule source**, also known as `ruleSource` and `rule_source`: a rule field that defines the rule's origin. Can be `internal` or `external`. Currently, custom rules have `internal` rule source and prebuilt rules have `external` rule source. +- **`is_customized`**: a field within `ruleSource` that exists when rule source is set to `external`. It is a boolean value based on if the rule has been changed from its base version. + +Terminology related to UI and UX: + +- **CTA**: "call to action", usually a button, a link, or a callout message with a button, etc, that invites the user to do some action. + +## Common assumptions + +Unless explicitly indicated otherwise: + +- Scenarios in the test plans only apply to prebuilt detection rules. Some scenarios may apply to both prebuilt and custom detection rules, in which case it should be clearly stated. +- EPR is available for fetching the package with prebuilt rules. +- Only the latest **stable** package with prebuilt rules is checked for installation/upgrade. Pre-release packages are ignored. +- User is on the following licenses/tiers: + - on the `Basic` license in a self-hosted or ECH environment; + - on the `Essentials` tier in a Serverless Security environment. +- User has the required [privileges for managing detection rules](https://www.elastic.co/guide/en/security/current/detections-permissions-section.html). + +## Common non-functional requirements + +- Package installation, rule installation and rule upgrade workflows should work: + - regardless of the package type: with historical rule versions or without; + - regardless of the package registry availability: i.e., they should also work in air-gapped environments. +- Rule installation and upgrade workflows should work with packages containing up to 15000 historical rule versions. This is the max number of versions of all rules in the package. This limit is enforced by Fleet. +- Kibana should not crash with Out Of Memory exception during package installation. +- For test purposes, it should be possible to use detection rules package versions lower than the latest. + +## Common functional requirements + +TBD diff --git a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rules_package.md b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rules_package.md index 5d0bfee30d8b0..739d15b164db3 100644 --- a/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rules_package.md +++ b/x-pack/solutions/security/plugins/security_solution/docs/testing/test_plans/detection_response/prebuilt_rules/prebuilt_rules_package.md @@ -35,50 +35,30 @@ https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one ### Tickets -- [Rule Immutability/Customization epic](https://github.com/elastic/security-team/issues/1974)(internal) - -**Milestone 3 - Prebuilt Rules Customization:** -- [Milestone 3 epic ticket](https://github.com/elastic/kibana/issues/174168) -- [Tests for prebuilt rule upgrade workflow #202078](https://github.com/elastic/kibana/issues/202078) - -**Milestone 2:** -- [Ensure full test coverage for existing workflows of installing and upgrading prebuilt rules](https://github.com/elastic/kibana/issues/148176) -- [Write test plan and add test coverage for the new workflows of installing and upgrading prebuilt rules](https://github.com/elastic/kibana/issues/148192) +- [Users can Customize Prebuilt Detection Rules](https://github.com/elastic/security-team/issues/1974) (internal) +- [Users can Customize Prebuilt Detection Rules: Milestone 2](https://github.com/elastic/kibana/issues/174167) + - [Ensure full test coverage for existing workflows of installing and upgrading prebuilt rules](https://github.com/elastic/kibana/issues/148176) + - [Write test plan and add test coverage for the new workflows of installing and upgrading prebuilt rules](https://github.com/elastic/kibana/issues/148192) +- [Users can Customize Prebuilt Detection Rules: Milestone 3](https://github.com/elastic/kibana/issues/174168) ### Terminology -- **EPR**: [Elastic Package Registry](https://github.com/elastic/package-registry), service that hosts our **Package**. - -- **Package**: `security_detection_engine` Fleet package that we use to distribute prebuilt detection rules in the form of `security-rule` assets (saved objects). - -- **Real package**: actual latest stable package distributed and pulled from EPR via Fleet. - -- **Mock rules**: `security-rule` assets that are indexed into the `.kibana_security_solution` index directly in the test setup, either by using the ES client _in integration tests_ or by an API request _in Cypress tests_. - -- **Air-gapped environment**: an environment where Kibana doesn't have access to the internet. In general, EPR is not available in such environments, except the cases when the user runs a custom EPR inside the environment. - -- **CTA**: "call to action", usually a button, a link, or a callout message with a button, etc, that invites the user to do some action. - - CTA to install prebuilt rules - at this moment, it's a link button with a counter (implemented) and a callout with a link button (not yet implemented) on the Rule Management page. - - CTA to upgrade prebuilt rules - at this moment, it's a tab with a counter (implemented) and a callout with a link button (not yet implemented) on the Rule Management page. +- [Common terminology](./prebuilt_rules_common_info.md#common-terminology), see the terminology related to the package with prebuilt rules. ### Assumptions -- Below scenarios only apply to prebuilt detection rules. -- Users should be able to install and upgrade prebuilt rules on the `Basic` license and higher. -- EPR is available for fetching the package unless explicitly indicated otherwise. -- Only the latest **stable** package is checked for installation/upgrade and pre-release packages are ignored. +- [Common assumptions](./prebuilt_rules_common_info.md#common-assumptions). ### Non-functional requirements -- Package installation, rule installation and rule upgrade workflows should work: - - regardless of the package type: with historical rule versions or without; - - regardless of the package registry availability: i.e., they should also work in air-gapped environments. -- Rule installation and upgrade workflows should work with packages containing up to 15000 historical rule versions. This is the max number of versions of all rules in the package. This limit is enforced by Fleet. -- Kibana should not crash with Out Of Memory exception during package installation. -- For test purposes, it should be possible to use detection rules package versions lower than the latest. +- [Common non-functional requirements](./prebuilt_rules_common_info.md#common-non-functional-requirements). ### Functional requirements +- Package should be installable and updatable: + - on any license in self-hosted and ECH environments; + - on any tier in Serverless Security environments; + - regardless of user privileges, as long as the user has access to Security Solution. - User should be able to install prebuilt rules with and without previewing what exactly they would install (rule properties). - User should be able to upgrade prebuilt rules with and without previewing what updates they would apply (rule properties of target rule versions).

R*t*}k)qRui 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 z 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