diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index c30906c56c2ac..8e7ff70bdfeee 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -533,6 +533,7 @@ packages/kbn-securitysolution-autocomplete @elastic/security-solution-platform packages/kbn-securitysolution-ecs @elastic/security-threat-hunting-explore packages/kbn-securitysolution-es-utils @elastic/security-solution-platform packages/kbn-securitysolution-exception-list-components @elastic/security-solution-platform +packages/kbn-securitysolution-grouping @elastic/security-threat-hunting-explore packages/kbn-securitysolution-hook-utils @elastic/security-solution-platform packages/kbn-securitysolution-io-ts-alerting-types @elastic/security-solution-platform packages/kbn-securitysolution-io-ts-list-types @elastic/security-solution-platform @@ -803,7 +804,7 @@ packages/kbn-yarn-lock-validator @elastic/kibana-operations /x-pack/test/functional/services/uptime @elastic/uptime /x-pack/test/api_integration/apis/uptime @elastic/uptime /x-pack/plugins/observability/public/components/shared/exploratory_view @elastic/uptime - +/x-pack/plugins/observability/public/utils/observability_data_views @elastic/uptime # Client Side Monitoring / Uptime (lives in APM directories but owned by Uptime) /x-pack/plugins/apm/public/application/uxApp.tsx @elastic/uptime @@ -875,14 +876,15 @@ packages/kbn-yarn-lock-validator @elastic/kibana-operations /.buildkite/ @elastic/kibana-operations /kbn_pm/ @elastic/kibana-operations -# Quality Assurance +# Appex QA /src/dev/code_coverage @elastic/appex-qa -/vars/*Coverage.groovy @elastic/appex-qa /test/functional/services/common @elastic/appex-qa /test/functional/services/lib @elastic/appex-qa /test/functional/services/remote @elastic/appex-qa /test/visual_regression @elastic/appex-qa /x-pack/test/visual_regression @elastic/appex-qa +/x-pack/performance @elastic/appex-qa +/packages/kbn-test/src/functional_test_runner @elastic/appex-qa # Core /config/kibana.yml @elastic/kibana-core @@ -1007,7 +1009,6 @@ packages/kbn-yarn-lock-validator @elastic/kibana-operations /x-pack/plugins/security_solution/public/common/components/guided_onboarding_tour @elastic/security-threat-hunting-explore /x-pack/plugins/security_solution/public/common/components/charts @elastic/security-threat-hunting-explore -/x-pack/plugins/security_solution/public/common/components/grouping @elastic/security-threat-hunting-explore /x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings @elastic/security-threat-hunting-explore /x-pack/plugins/security_solution/public/common/components/header_page @elastic/security-threat-hunting-explore /x-pack/plugins/security_solution/public/common/components/header_section @elastic/security-threat-hunting-explore @@ -1200,8 +1201,6 @@ x-pack/test/threat_intelligence_cypress @elastic/protections-experience # Changes to translation files should not ping code reviewers x-pack/plugins/translations/translations -x-pack/performance @elastic/appex-qa - #### ## These rules are always last so they take ultimate priority over everything else #### diff --git a/.i18nrc.json b/.i18nrc.json index b7d7432551faa..b17c42b9a64ab 100644 --- a/.i18nrc.json +++ b/.i18nrc.json @@ -45,6 +45,7 @@ "files": "src/plugins/files", "filesManagement": "src/plugins/files_management", "flot": "packages/kbn-flot-charts/lib", + "grouping": "packages/kbn-securitysolution-grouping/src", "guidedOnboarding": "src/plugins/guided_onboarding", "guidedOnboardingPackage": "packages/kbn-guided-onboarding", "home": "src/plugins/home", diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index d7024294a9f2e..d078e0ada29b1 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: 2023-03-02 +date: 2023-03-06 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 9cd1578b94fd8..8eef0ea02d8d2 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 90e10a1574cbb..a008f12920d5d 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: 2023-03-02 +date: 2023-03-06 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 105f01841d43c..02812b7ec0cb8 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: 2023-03-02 +date: 2023-03-06 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 176505db76893..c2ee16a6018d0 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 4ae0e43fab501..facbdf4d471f8 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index 349c11aa7f818..e2aa581d21808 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 14f5425378cb5..08c47490cf2c1 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.devdocs.json b/api_docs/cases.devdocs.json index 22ad30c92f35e..4072d9d282f59 100644 --- a/api_docs/cases.devdocs.json +++ b/api_docs/cases.devdocs.json @@ -1321,6 +1321,39 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "cases", + "id": "def-common.getApiTags", + "type": "Function", + "tags": [], + "label": "getApiTags", + "description": [], + "signature": [ + "(owner: \"cases\" | \"observability\" | \"securitySolution\") => { all: readonly [\"casesSuggestUserProfiles\", \"bulkGetUserProfiles\", string, string]; read: readonly [\"casesSuggestUserProfiles\", \"bulkGetUserProfiles\", string]; delete: readonly [string]; }" + ], + "path": "x-pack/plugins/cases/common/utils/api_tags.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "cases", + "id": "def-common.getApiTags.$1", + "type": "CompoundType", + "tags": [], + "label": "owner", + "description": [], + "signature": [ + "\"cases\" | \"observability\" | \"securitySolution\"" + ], + "path": "x-pack/plugins/cases/common/utils/api_tags.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "cases", "id": "def-common.getCasesFromAlertsUrl", @@ -1614,7 +1647,7 @@ "signature": [ "\"cases\"" ], - "path": "x-pack/plugins/cases/common/constants.ts", + "path": "x-pack/plugins/cases/common/constants/application.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -1863,7 +1896,7 @@ "signature": [ "\"/api/cases\"" ], - "path": "x-pack/plugins/cases/common/constants.ts", + "path": "x-pack/plugins/cases/common/constants/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2168,7 +2201,7 @@ "signature": [ "\"create_cases\"" ], - "path": "x-pack/plugins/cases/common/constants.ts", + "path": "x-pack/plugins/cases/common/constants/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2183,7 +2216,7 @@ "signature": [ "\"delete_cases\"" ], - "path": "x-pack/plugins/cases/common/constants.ts", + "path": "x-pack/plugins/cases/common/constants/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2198,7 +2231,7 @@ "signature": [ "\"cases\"" ], - "path": "x-pack/plugins/cases/common/constants.ts", + "path": "x-pack/plugins/cases/common/constants/owners.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2213,7 +2246,7 @@ "signature": [ "\"/internal/cases/_bulk_get\"" ], - "path": "x-pack/plugins/cases/common/constants.ts", + "path": "x-pack/plugins/cases/common/constants/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2228,7 +2261,7 @@ "signature": [ "\"observability\"" ], - "path": "x-pack/plugins/cases/common/constants.ts", + "path": "x-pack/plugins/cases/common/constants/owners.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2243,7 +2276,7 @@ "signature": [ "\"push_cases\"" ], - "path": "x-pack/plugins/cases/common/constants.ts", + "path": "x-pack/plugins/cases/common/constants/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2258,7 +2291,7 @@ "signature": [ "\"read_cases\"" ], - "path": "x-pack/plugins/cases/common/constants.ts", + "path": "x-pack/plugins/cases/common/constants/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2275,7 +2308,7 @@ "signature": [ "\"securitySolution\"" ], - "path": "x-pack/plugins/cases/common/constants.ts", + "path": "x-pack/plugins/cases/common/constants/owners.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -2305,7 +2338,7 @@ "signature": [ "\"update_cases\"" ], - "path": "x-pack/plugins/cases/common/constants.ts", + "path": "x-pack/plugins/cases/common/constants/index.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 589bde7d8583c..6f2e2ae031ba1 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 92 | 0 | 75 | 28 | +| 94 | 0 | 77 | 28 | ## Client diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 6f96f0c9560c1..7dc97d1b16161 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: 2023-03-02 +date: 2023-03-06 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 d8983278042a2..d5c07ef8e047c 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_chat.mdx b/api_docs/cloud_chat.mdx index a4343827f5b7e..9d2655555c7fd 100644 --- a/api_docs/cloud_chat.mdx +++ b/api_docs/cloud_chat.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChat title: "cloudChat" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChat plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChat'] --- import cloudChatObj from './cloud_chat.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index cb9fb0099f829..511acdb35de73 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: 2023-03-02 +date: 2023-03-06 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 a1d62d83decbc..2951195e7b749 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx index f2d8d364706e8..cc5e173d42619 100644 --- a/api_docs/cloud_experiments.mdx +++ b/api_docs/cloud_experiments.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments title: "cloudExperiments" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudExperiments plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments'] --- import cloudExperimentsObj from './cloud_experiments.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 1c9cfd48c4b54..0ca5a20160fb1 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: 2023-03-02 +date: 2023-03-06 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 077424419ae67..873971f7b64bc 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: 2023-03-02 +date: 2023-03-06 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 a1249c4b5ba37..0648318bbcd1e 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: 2023-03-02 +date: 2023-03-06 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 ae450f37bed7c..36fc563282523 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: 2023-03-02 +date: 2023-03-06 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 cc8dd895b8951..e43699f8f9566 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: 2023-03-02 +date: 2023-03-06 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 78208b4775831..412d135ac2c2e 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: 2023-03-02 +date: 2023-03-06 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 dee012217c67b..91602ca64a070 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.devdocs.json b/api_docs/data.devdocs.json index ea8e61e7d1903..b52ecd105d63b 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -13547,7 +13547,7 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/grouped_alerts.tsx" + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx" }, { "plugin": "securitySolution", @@ -21170,7 +21170,7 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/grouped_alerts.tsx" + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx" }, { "plugin": "securitySolution", diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 6545ee735da87..98bbfb15d49b5 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 641d4d68f2dac..bd1acee82bb06 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: 2023-03-02 +date: 2023-03-06 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 f53eff91b211e..49f7cf2f57480 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index afb18de3eb68c..eb599911e5658 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: 2023-03-02 +date: 2023-03-06 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 895ca68247a5b..203632e46813d 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: 2023-03-02 +date: 2023-03-06 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 521c678ffc05d..e3bc106e7209c 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.devdocs.json b/api_docs/data_views.devdocs.json index 45193f697c63e..01cf2f074585a 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -85,7 +85,7 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/grouped_alerts.tsx" + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx" }, { "plugin": "securitySolution", @@ -8293,7 +8293,7 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/grouped_alerts.tsx" + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx" }, { "plugin": "securitySolution", @@ -15596,7 +15596,7 @@ }, { "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/grouped_alerts.tsx" + "path": "x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx" }, { "plugin": "securitySolution", @@ -18907,6 +18907,71 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "dataViews", + "id": "def-common.DataViewMissingIndices", + "type": "Class", + "tags": [], + "label": "DataViewMissingIndices", + "description": [ + "\nTried to call a method that relies on SearchSource having an indexPattern assigned" + ], + "signature": [ + { + "pluginId": "dataViews", + "scope": "common", + "docId": "kibDataViewsPluginApi", + "section": "def-common.DataViewMissingIndices", + "text": "DataViewMissingIndices" + }, + " extends ", + { + "pluginId": "kibanaUtils", + "scope": "common", + "docId": "kibKibanaUtilsPluginApi", + "section": "def-common.KbnError", + "text": "KbnError" + } + ], + "path": "src/plugins/data_views/common/lib/errors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "dataViews", + "id": "def-common.DataViewMissingIndices.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [], + "signature": [ + "any" + ], + "path": "src/plugins/data_views/common/lib/errors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "dataViews", + "id": "def-common.DataViewMissingIndices.Unnamed.$1", + "type": "string", + "tags": [], + "label": "message", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/data_views/common/lib/errors.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "dataViews", "id": "def-common.DataViewSavedObjectConflictError", diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 53cee388cd196..3a4a63cada7f3 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.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 | |-------------------|-----------|------------------------|-----------------| -| 1028 | 0 | 243 | 2 | +| 1031 | 0 | 245 | 2 | ## Client diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index e4fa7ec8e0cbb..99b1c38a585d8 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 9639366079728..ad9088adc2206 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 883246adfda69..e6ccda3184032 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -1099,12 +1099,12 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/dashboards/utils.ts#:~:text=SavedObject), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/dashboards/utils.ts#:~:text=SavedObject), [use_security_dashboards_table.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/dashboards/use_security_dashboards_table.tsx#:~:text=SavedObject), [use_security_dashboards_table.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/dashboards/use_security_dashboards_table.tsx#:~:text=SavedObject), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=SavedObject), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=SavedObject), [user_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts#:~:text=SavedObject), [user_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts#:~:text=SavedObject) | - | | | [dependencies_start_mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/mock/endpoint/dependencies_start_mock.ts#:~:text=indexPatterns) | - | | | [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/dashboards/utils.ts#:~:text=SavedObject), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/dashboards/utils.ts#:~:text=SavedObject), [use_security_dashboards_table.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/dashboards/use_security_dashboards_table.tsx#:~:text=SavedObject), [use_security_dashboards_table.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/dashboards/use_security_dashboards_table.tsx#:~:text=SavedObject), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=SavedObject), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=SavedObject), [user_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts#:~:text=SavedObject), [user_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts#:~:text=SavedObject), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/dashboards/utils.ts#:~:text=SavedObject), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/dashboards/utils.ts#:~:text=SavedObject)+ 14 more | - | -| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=title), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=title), [use_rule_from_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_from_timeline.tsx#:~:text=title), [get_es_query_filter.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/containers/detection_engine/exceptions/get_es_query_filter.ts#:~:text=title), [grouped_alerts.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouped_alerts.tsx#:~:text=title), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/utils.ts#:~:text=title), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=title), [get_query_filter.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.ts#:~:text=title), [index_pattern.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/mock/index_pattern.ts#:~:text=title), [utils.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/utils.test.ts#:~:text=title)+ 20 more | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=title), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=title), [use_rule_from_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_from_timeline.tsx#:~:text=title), [get_es_query_filter.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/containers/detection_engine/exceptions/get_es_query_filter.ts#:~:text=title), [alerts_grouping.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx#:~:text=title), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/utils.ts#:~:text=title), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=title), [get_query_filter.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.ts#:~:text=title), [index_pattern.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/mock/index_pattern.ts#:~:text=title), [utils.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/utils.test.ts#:~:text=title)+ 20 more | - | | | [wrap_search_source_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.ts#:~:text=create) | - | | | [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/wrap_search_source_client.test.ts#:~:text=fetch) | - | | | [api.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/hooks/eql/api.ts#:~:text=options) | - | -| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=title), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=title), [use_rule_from_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_from_timeline.tsx#:~:text=title), [get_es_query_filter.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/containers/detection_engine/exceptions/get_es_query_filter.ts#:~:text=title), [grouped_alerts.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouped_alerts.tsx#:~:text=title), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/utils.ts#:~:text=title), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=title), [get_query_filter.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.ts#:~:text=title), [index_pattern.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/mock/index_pattern.ts#:~:text=title), [utils.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/utils.test.ts#:~:text=title)+ 20 more | - | -| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=title), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=title), [use_rule_from_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_from_timeline.tsx#:~:text=title), [get_es_query_filter.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/containers/detection_engine/exceptions/get_es_query_filter.ts#:~:text=title), [grouped_alerts.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouped_alerts.tsx#:~:text=title), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/utils.ts#:~:text=title), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=title), [get_query_filter.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.ts#:~:text=title), [index_pattern.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/mock/index_pattern.ts#:~:text=title), [utils.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/utils.test.ts#:~:text=title)+ 5 more | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=title), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=title), [use_rule_from_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_from_timeline.tsx#:~:text=title), [get_es_query_filter.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/containers/detection_engine/exceptions/get_es_query_filter.ts#:~:text=title), [alerts_grouping.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx#:~:text=title), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/utils.ts#:~:text=title), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=title), [get_query_filter.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.ts#:~:text=title), [index_pattern.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/mock/index_pattern.ts#:~:text=title), [utils.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/utils.test.ts#:~:text=title)+ 20 more | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=title), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#:~:text=title), [use_rule_from_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/containers/detection_engine/rules/use_rule_from_timeline.tsx#:~:text=title), [get_es_query_filter.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/containers/detection_engine/exceptions/get_es_query_filter.ts#:~:text=title), [alerts_grouping.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx#:~:text=title), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/pages/detection_engine/rules/utils.ts#:~:text=title), [middleware.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#:~:text=title), [get_query_filter.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.ts#:~:text=title), [index_pattern.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/mock/index_pattern.ts#:~:text=title), [utils.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/alerts_actions/utils.test.ts#:~:text=title)+ 5 more | - | | | [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode)+ 7 more | 8.8.0 | | | [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/common/license/policy_config.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [fleet_integration.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [create_default_policy.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/fleet_integration/handlers/create_default_policy.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode), [license_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts#:~:text=mode)+ 7 more | 8.8.0 | | | [query.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/query/query.ts#:~:text=license%24) | 8.8.0 | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 738aca7a7e31b..8a3f8b9c5250b 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 304ae62c0106f..51a0b0e7b2681 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: 2023-03-02 +date: 2023-03-06 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 17563076bad59..69b3848cd551c 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: 2023-03-02 +date: 2023-03-06 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 52ccdeefff620..3ef5e22e8d1cf 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index f65e8737f6bbb..03c76d36654d8 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index c80efe99fc85f..6b89ee681ee75 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: 2023-03-02 +date: 2023-03-06 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 6117c6df39dad..3f8f3dd13fff9 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: 2023-03-02 +date: 2023-03-06 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 dc277f689ef82..3cf6d15fc2968 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: 2023-03-02 +date: 2023-03-06 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 3e1821034dbd5..f48a6359eae1c 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index 9d5c5c84ea989..1475dd81c37ed 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index c2f5cac318ca3..3fef843b908ab 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index e7718f18bc7f0..7127b9a84fcde 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index b630e478cc044..1216865d66f73 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: 2023-03-02 +date: 2023-03-06 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 b4db7b0f3b828..6647a2c2798ae 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: 2023-03-02 +date: 2023-03-06 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 3dbc815880c4a..7f44bdc39770d 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: 2023-03-02 +date: 2023-03-06 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 4c3a8b11829b2..cc74f47f31384 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: 2023-03-02 +date: 2023-03-06 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 a1a701f6ab08d..ab40a9a9f15e9 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: 2023-03-02 +date: 2023-03-06 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 01b55fbf63707..0aed778e6d534 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: 2023-03-02 +date: 2023-03-06 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 22ec9b39787cc..bc1b1e470e7ba 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: 2023-03-02 +date: 2023-03-06 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 d74ba9f0b1ee1..042f8572b4f00 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: 2023-03-02 +date: 2023-03-06 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 35e21e3a17c3f..f13afe97063c3 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: 2023-03-02 +date: 2023-03-06 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 fe87192fe6aaa..7194896ca3124 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: 2023-03-02 +date: 2023-03-06 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 994784ddab036..c25a9e75c63d4 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: 2023-03-02 +date: 2023-03-06 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 1eb3789a95d8a..b8e6aa731d285 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: 2023-03-02 +date: 2023-03-06 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 3618e9de943fa..059265b23f6a9 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: 2023-03-02 +date: 2023-03-06 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 67b1f2939627f..6d845b0a47135 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: 2023-03-02 +date: 2023-03-06 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 9d22d7403800b..31010b2e2b361 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: 2023-03-02 +date: 2023-03-06 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 aefcd3d2b0047..e4b3d263b0f57 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 3e398317686ca..b79f463fc733e 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.devdocs.json b/api_docs/files.devdocs.json index 3c2201044be35..3823480b372f4 100644 --- a/api_docs/files.devdocs.json +++ b/api_docs/files.devdocs.json @@ -4573,7 +4573,12 @@ "path": "src/plugins/files/server/types.ts", "deprecated": false, "trackAdoption": true, - "references": [], + "references": [ + { + "plugin": "cases", + "path": "x-pack/plugins/cases/server/files/index.ts" + } + ], "children": [ { "parentPluginId": "files", diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 9cf192f9c4f3e..2690af2475690 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: 2023-03-02 +date: 2023-03-06 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 b1896f8199ca0..c96bea73195eb 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: 2023-03-02 +date: 2023-03-06 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 f72c1c07dae47..d22e28e12edb8 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: 2023-03-02 +date: 2023-03-06 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 1361b0c3bbb54..459e26866908a 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: 2023-03-02 +date: 2023-03-06 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 831408669b1c3..b9c32d72f263f 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: 2023-03-02 +date: 2023-03-06 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 a2001e302b069..9319bf5a3672c 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: 2023-03-02 +date: 2023-03-06 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 a1c917a1d7197..66ec11f72781d 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index c56a887ea0c31..9864afe23f432 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 1a2441d2f57f3..0237161dca786 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 224351c42f871..89d1add71d67a 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 9aecbf08da449..71eda0a212f5e 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: 2023-03-02 +date: 2023-03-06 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 e3d72fbaa1968..d0c0ce62ade97 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index d23833d267aac..aa1ac5e63493a 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ace plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index c2ecac6ab7a68..22efd8c4f5c8e 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index bacae41837451..995dac14a07f3 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-utils plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts.mdx b/api_docs/kbn_alerts.mdx index 263bad7a01dc3..b3b0ad5237fb0 100644 --- a/api_docs/kbn_alerts.mdx +++ b/api_docs/kbn_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts title: "@kbn/alerts" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts'] --- import kbnAlertsObj from './kbn_alerts.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 9c9ffcd49f74a..0972007fbda5a 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: 2023-03-02 +date: 2023-03-06 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_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index be08717fd1fbc..bd2ddf7e67a28 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: 2023-03-02 +date: 2023-03-06 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 3efbb27ae6b4c..d46e240b638e4 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 0f590ec71b575..cece875d46921 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index 7fa02c977ef0f..c0483c109949b 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index 5d1ce84c337fc..a38732f2d5503 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index b5352daa851ae..f7939b3ad96b2 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index 7f059748811ad..7bb19ca82257a 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx index 643778c571a3f..ea24a6c7f85dc 100644 --- a/api_docs/kbn_analytics_shippers_gainsight.mdx +++ b/api_docs/kbn_analytics_shippers_gainsight.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-gainsight title: "@kbn/analytics-shippers-gainsight" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-gainsight plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight'] --- import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index c273ed05035f1..1941d1d5e65ee 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: 2023-03-02 +date: 2023-03-06 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_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index f48057fdc63e4..2bdeb5a48904e 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: 2023-03-02 +date: 2023-03-06 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.devdocs.json b/api_docs/kbn_apm_synthtrace_client.devdocs.json index ff0b1e2cf64e5..5d07732e93a5a 100644 --- a/api_docs/kbn_apm_synthtrace_client.devdocs.json +++ b/api_docs/kbn_apm_synthtrace_client.devdocs.json @@ -1884,6 +1884,43 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.serviceMap", + "type": "Function", + "tags": [], + "label": "serviceMap", + "description": [], + "signature": [ + "(options: ", + "ServiceMapOpts", + ") => (timestamp: number) => ", + "Transaction", + "[]" + ], + "path": "packages/kbn-apm-synthtrace-client/src/lib/dsl/service_map.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/apm-synthtrace-client", + "id": "def-common.serviceMap.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "ServiceMapOpts" + ], + "path": "packages/kbn-apm-synthtrace-client/src/lib/dsl/service_map.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/apm-synthtrace-client", "id": "def-common.timerange", diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 998222ae3142e..95e3de9e98abf 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) for ques | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 152 | 0 | 152 | 16 | +| 154 | 0 | 154 | 17 | ## Common diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index df98534f70e2c..26dbfded32879 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index 8e21de87a558e..5baa5aae15e6c 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 642195695ef32..3aced28a3de67 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index cae863b3ad48f..1687897279426 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: 2023-03-02 +date: 2023-03-06 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 047e2235c2d02..98d67d040292f 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: 2023-03-02 +date: 2023-03-06 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 04d450ae11d4e..5ae1128d45747 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 551f02d9542cc..16b2f6cd9b702 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: 2023-03-02 +date: 2023-03-06 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 681ff13ffec2e..ab868751b4a1d 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: 2023-03-02 +date: 2023-03-06 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 5ba8714268011..21d8034a05a91 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: 2023-03-02 +date: 2023-03-06 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 a501527e84f43..aa71819d12133 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index 306bf1bf3cc04..077590dc442fe 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mocks.mdx b/api_docs/kbn_code_editor_mocks.mdx index 3eb75ac47f2de..05ae8ea81ddb9 100644 --- a/api_docs/kbn_code_editor_mocks.mdx +++ b/api_docs/kbn_code_editor_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mocks title: "@kbn/code-editor-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mocks plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mocks'] --- import kbnCodeEditorMocksObj from './kbn_code_editor_mocks.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 1a7154a89ba74..1726f6ac5cdcc 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: 2023-03-02 +date: 2023-03-06 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 548b1c790d867..919d984101038 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: 2023-03-02 +date: 2023-03-06 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 3cd190aefa52b..beb374656c632 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: 2023-03-02 +date: 2023-03-06 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 cf2176a083699..ae82daf236ac0 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: 2023-03-02 +date: 2023-03-06 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 ae248ef63ef85..3b84091e0f61c 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: 2023-03-02 +date: 2023-03-06 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_table_list.mdx b/api_docs/kbn_content_management_table_list.mdx index 53aab7b923e5b..f153e0aec791b 100644 --- a/api_docs/kbn_content_management_table_list.mdx +++ b/api_docs/kbn_content_management_table_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list title: "@kbn/content-management-table-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list'] --- import kbnContentManagementTableListObj from './kbn_content_management_table_list.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 959fa6d5e4fcb..33a5b397cc591 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: 2023-03-02 +date: 2023-03-06 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 39cc8d5e65dd7..f1bcfdb80668a 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: 2023-03-02 +date: 2023-03-06 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 693479a213c6b..556026280358a 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: 2023-03-02 +date: 2023-03-06 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 ba1667310138f..0a2a502e2e4cc 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: 2023-03-02 +date: 2023-03-06 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 ea4a5288ef4d7..42a385a8d40ff 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: 2023-03-02 +date: 2023-03-06 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 62494fbd712d9..46b0ab6305011 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: 2023-03-02 +date: 2023-03-06 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 ed5a63bd6b481..598e088bc649c 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: 2023-03-02 +date: 2023-03-06 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 0ae948a0f1967..cee5c03a76226 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: 2023-03-02 +date: 2023-03-06 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 f388bdba22b0d..99baee68bc8b2 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: 2023-03-02 +date: 2023-03-06 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 27b3210a296b2..12e14df40c9d8 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: 2023-03-02 +date: 2023-03-06 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 00d7805a17f85..797e31cf3fd88 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: 2023-03-02 +date: 2023-03-06 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 c60a9cea687b8..e4ad698a48297 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: 2023-03-02 +date: 2023-03-06 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 a8b27d9611a63..262891b3b7fa1 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: 2023-03-02 +date: 2023-03-06 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 4fc1e24faf504..010246c8cf3c4 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: 2023-03-02 +date: 2023-03-06 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 7fa62be774cc5..7a87ed0b8425f 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: 2023-03-02 +date: 2023-03-06 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 daec7cc05a345..f0005e3511c57 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: 2023-03-02 +date: 2023-03-06 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 8c8951b3d7c37..55fe0f74c3a91 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: 2023-03-02 +date: 2023-03-06 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 62ad4d1aa9dc3..4ff6ed9a5beca 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: 2023-03-02 +date: 2023-03-06 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 638f292fdb98c..f200b380ec4f2 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: 2023-03-02 +date: 2023-03-06 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 38b47cd1d1fae..b613a39093a43 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: 2023-03-02 +date: 2023-03-06 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 eadd485abc837..497e7a91f40d8 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: 2023-03-02 +date: 2023-03-06 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 f0a27f2cfa02e..d108b9e3e53b2 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: 2023-03-02 +date: 2023-03-06 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 6a3fc90b2c703..4469a752922b2 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: 2023-03-02 +date: 2023-03-06 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 11d112819ab49..a4f69b3f2009b 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: 2023-03-02 +date: 2023-03-06 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 aa063965b3ee7..0711c40369865 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: 2023-03-02 +date: 2023-03-06 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 86828fa0fdd9f..6b094acec8485 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: 2023-03-02 +date: 2023-03-06 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 04eb2582e72a4..0999842368433 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: 2023-03-02 +date: 2023-03-06 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 353bff8c49d62..b9c95c6d93309 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: 2023-03-02 +date: 2023-03-06 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 6aa7969a43b51..7671ec0b2f91b 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: 2023-03-02 +date: 2023-03-06 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 7bd406d920bc6..58c5527bc226e 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: 2023-03-02 +date: 2023-03-06 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 722fa3fa285d8..b248992190c56 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: 2023-03-02 +date: 2023-03-06 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 665a262270ea7..782986bda82dc 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: 2023-03-02 +date: 2023-03-06 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 d9f84f98feb3d..e566546a00d07 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: 2023-03-02 +date: 2023-03-06 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 65a8d9b69582b..9176fa8c4963e 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: 2023-03-02 +date: 2023-03-06 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 462a0bf5285f3..34e57ab839fa0 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: 2023-03-02 +date: 2023-03-06 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 5db940d54a40d..f5ae0158b8ebd 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: 2023-03-02 +date: 2023-03-06 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 7e9c1a6c6ae2e..1dd883d925a8a 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: 2023-03-02 +date: 2023-03-06 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 261fdab10d421..66507284f2eb1 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: 2023-03-02 +date: 2023-03-06 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 d6a569a5f4c4b..2d42d19c3274b 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: 2023-03-02 +date: 2023-03-06 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 4142f67ae6fd8..0b576e3cd3dc3 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: 2023-03-02 +date: 2023-03-06 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 3f5406f8fc672..bf58ebc476bc3 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: 2023-03-02 +date: 2023-03-06 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 649286af18285..7c8d3c03741e3 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: 2023-03-02 +date: 2023-03-06 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 9266b9941613a..b7ccd23c1cd94 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: 2023-03-02 +date: 2023-03-06 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 2bc3ed1923ee2..b09ea514c2c58 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: 2023-03-02 +date: 2023-03-06 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 a12129bf7ab2f..3e5519d9c2a1b 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: 2023-03-02 +date: 2023-03-06 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 cb44e1f6f2a5f..ebb2fc040e312 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: 2023-03-02 +date: 2023-03-06 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 3b12b50d38668..625f28c770ad7 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: 2023-03-02 +date: 2023-03-06 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 c5f3a640b13dc..e23343e98911f 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: 2023-03-02 +date: 2023-03-06 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 4fa17b4ed208e..b4327f8ed1728 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: 2023-03-02 +date: 2023-03-06 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 2f4f45857690a..11e0d9e26398e 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: 2023-03-02 +date: 2023-03-06 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 80dc6b3f42667..1a3a7017db225 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: 2023-03-02 +date: 2023-03-06 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 1ecefa27b6cd3..52b99f5216813 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: 2023-03-02 +date: 2023-03-06 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 202214f6b557d..ebcca811a5c63 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: 2023-03-02 +date: 2023-03-06 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 4afc04a60783b..833e401875948 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: 2023-03-02 +date: 2023-03-06 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 b2ddbf0a9010f..9e5bae11eae0d 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: 2023-03-02 +date: 2023-03-06 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 474ea66f88224..9e4b547f19bf7 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: 2023-03-02 +date: 2023-03-06 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 9b5f7fc44fde5..aa87ff61c99c1 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: 2023-03-02 +date: 2023-03-06 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 442597a23b31c..2d5a5e1d37a45 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: 2023-03-02 +date: 2023-03-06 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_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index e3e51a50d3922..9c07847165f7f 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: 2023-03-02 +date: 2023-03-06 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 f94d4846c71f8..d89328288ea32 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: 2023-03-02 +date: 2023-03-06 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 ae3c02e387d5d..e3b5dadb5673c 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: 2023-03-02 +date: 2023-03-06 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 fdbcf724f249f..891e945990acc 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: 2023-03-02 +date: 2023-03-06 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 099083e2d0951..95e054443e7d6 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: 2023-03-02 +date: 2023-03-06 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 5f3f3669b8801..8cfc6d3fe04df 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: 2023-03-02 +date: 2023-03-06 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 f279de0f63180..25cb89b99f8be 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: 2023-03-02 +date: 2023-03-06 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 d3afd758189df..68cf6871c1e00 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: 2023-03-02 +date: 2023-03-06 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 2e64643ebfbbe..f4010eff7a3fa 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: 2023-03-02 +date: 2023-03-06 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 e7a36fd46d9b7..90ff2aa0f9a3b 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: 2023-03-02 +date: 2023-03-06 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 f638b954afa2c..c543a8e684193 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: 2023-03-02 +date: 2023-03-06 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.devdocs.json b/api_docs/kbn_core_http_server.devdocs.json index 24328cd2e9a6b..93fafbae8bd76 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -5006,6 +5006,20 @@ "path": "packages/core/http/core-http-server/src/router/request.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/core-http-server", + "id": "def-common.KibanaRouteOptions.access", + "type": "CompoundType", + "tags": [], + "label": "access", + "description": [], + "signature": [ + "\"internal\" | \"public\"" + ], + "path": "packages/core/http/core-http-server/src/router/request.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -6075,6 +6089,22 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "@kbn/core-http-server", + "id": "def-common.RouteConfigOptions.access", + "type": "CompoundType", + "tags": [], + "label": "access", + "description": [ + "\nDefines intended request origin of the route:\n- public. The route is public, declared stable and intended for external access.\n In the future, may require an incomming request to contain a specified header.\n- internal. The route is internal and intended for internal access only.\n\nIf not declared, infers access from route path:\n- access =`internal` for '/internal' route path prefix\n- access = `public` for everything else" + ], + "signature": [ + "\"internal\" | \"public\" | undefined" + ], + "path": "packages/core/http/core-http-server/src/router/route.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "@kbn/core-http-server", "id": "def-common.RouteConfigOptions.tags", diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 4978c2bcf1edc..17d30277b9318 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 411 | 1 | 160 | 0 | +| 413 | 1 | 161 | 0 | ## Common diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index af4705eebf0af..899dea4e6b82e 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: 2023-03-02 +date: 2023-03-06 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 b586c524253a4..48ae8b2d28b78 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: 2023-03-02 +date: 2023-03-06 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_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index eeb40f40210db..8033745762fee 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: 2023-03-02 +date: 2023-03-06 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 6fb7956371da3..dcc2e2a036074 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: 2023-03-02 +date: 2023-03-06 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 f68a4931bbade..72a43c8231e40 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: 2023-03-02 +date: 2023-03-06 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 0e32141f1eada..1f2438f638db8 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: 2023-03-02 +date: 2023-03-06 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 165f46f6141ee..f483b12944680 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: 2023-03-02 +date: 2023-03-06 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 ca24813984b7b..cf8e609c7ce76 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: 2023-03-02 +date: 2023-03-06 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 9df4ebd75e861..b341ddff154ce 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: 2023-03-02 +date: 2023-03-06 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 828d24502d372..dfce976e47870 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: 2023-03-02 +date: 2023-03-06 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 e68f69e5b2541..9220ee41ae983 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: 2023-03-02 +date: 2023-03-06 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 47d4140fa4fa3..0e5b49fd726f2 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: 2023-03-02 +date: 2023-03-06 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 eb11dad2ad958..c1493d4e0c325 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: 2023-03-02 +date: 2023-03-06 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 b84dcef82884e..27d75a2ab2ef0 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: 2023-03-02 +date: 2023-03-06 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 39c7734369d0a..0c775c0c9651c 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: 2023-03-02 +date: 2023-03-06 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 e1c35d2d1849f..d328633ecba6c 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: 2023-03-02 +date: 2023-03-06 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 854f2e1c444f1..a438d09f6746a 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: 2023-03-02 +date: 2023-03-06 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 be6cd0ddc3609..af1f19777cd62 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: 2023-03-02 +date: 2023-03-06 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 1371904a744ae..257fde0d8a385 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: 2023-03-02 +date: 2023-03-06 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 44835e9fa7d13..ed5387f954ea9 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: 2023-03-02 +date: 2023-03-06 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 3d18047440579..f4eeb913a51b6 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: 2023-03-02 +date: 2023-03-06 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 0366bf0bddf29..fba97ed8a5c08 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: 2023-03-02 +date: 2023-03-06 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 5653d21b167ea..c56346028ea92 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: 2023-03-02 +date: 2023-03-06 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 8641f8766334b..a12d76258a746 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: 2023-03-02 +date: 2023-03-06 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 0bf561242359e..0e9eb40997e07 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: 2023-03-02 +date: 2023-03-06 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 93c4da6e7f8fb..bebcb81b47508 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: 2023-03-02 +date: 2023-03-06 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 6e09f365f5ecf..8b7a03fd9aea9 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: 2023-03-02 +date: 2023-03-06 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 a40eb40c54868..b877808b83451 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: 2023-03-02 +date: 2023-03-06 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 d113868c4b205..7492646d6340a 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: 2023-03-02 +date: 2023-03-06 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 701025f3a867f..63581dad4bdfa 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: 2023-03-02 +date: 2023-03-06 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 46fb2d4432b9f..7dff7c85cc7fb 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: 2023-03-02 +date: 2023-03-06 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 ade4741ff96e4..7a8fceabacea3 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: 2023-03-02 +date: 2023-03-06 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 531d085b34330..651c08511a346 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: 2023-03-02 +date: 2023-03-06 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 a6fefddb61000..0e8d106b63026 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: 2023-03-02 +date: 2023-03-06 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 1b1a4764cfca8..5d0cc0343d046 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: 2023-03-02 +date: 2023-03-06 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 d21b513671928..b8fb539c2af0d 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: 2023-03-02 +date: 2023-03-06 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_server.mdx b/api_docs/kbn_core_plugins_server.mdx index bbe16935a49c7..533e1c57a485e 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: 2023-03-02 +date: 2023-03-06 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 13974d291b540..f7a53e384f8bb 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: 2023-03-02 +date: 2023-03-06 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 6e1190eaa10d1..93b3576d51e74 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: 2023-03-02 +date: 2023-03-06 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 c993507dfdb73..db6d5ca0a6157 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: 2023-03-02 +date: 2023-03-06 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_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 8b8f56bc6d341..0f8ee4b5ff22d 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: 2023-03-02 +date: 2023-03-06 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 92892c2f4d607..edf82baefb01d 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: 2023-03-02 +date: 2023-03-06 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 b4d2dacecaf42..5aaf30fec42e8 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: 2023-03-02 +date: 2023-03-06 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 11d778cf27954..7cd113e16d438 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: 2023-03-02 +date: 2023-03-06 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 9ab3d991bda82..86918610ecb1d 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: 2023-03-02 +date: 2023-03-06 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 42c6a15446502..bd3bac995c958 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: 2023-03-02 +date: 2023-03-06 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_internal.mdx b/api_docs/kbn_core_saved_objects_api_server_internal.mdx index 2aeeb00ad057c..f2add4aa1b41b 100644 --- a/api_docs/kbn_core_saved_objects_api_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-internal title: "@kbn/core-saved-objects-api-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-internal plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-internal'] --- import kbnCoreSavedObjectsApiServerInternalObj from './kbn_core_saved_objects_api_server_internal.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 8adfa0bfd41b4..e2178f986cf11 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: 2023-03-02 +date: 2023-03-06 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 750f6db42d9fc..9560336be428e 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: 2023-03-02 +date: 2023-03-06 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 0e82b824c6b63..e8d938fcdf926 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: 2023-03-02 +date: 2023-03-06 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 ec4157e9a46e1..a8ba8a2b4c588 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: 2023-03-02 +date: 2023-03-06 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 f57b3dae843dd..9d5905f0b037d 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: 2023-03-02 +date: 2023-03-06 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 0b4311260a777..b4cdf4284433d 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: 2023-03-02 +date: 2023-03-06 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 a7da75722e944..60d82b60201db 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: 2023-03-02 +date: 2023-03-06 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 7b218a2ad32f0..14c46866c41fa 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: 2023-03-02 +date: 2023-03-06 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 6c75150030f56..555256b537429 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: 2023-03-02 +date: 2023-03-06 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 898a1e2d4ea8b..3602f2b60e054 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: 2023-03-02 +date: 2023-03-06 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 b9ef91939e896..f40ba3187e9d4 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: 2023-03-02 +date: 2023-03-06 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 d203957246f69..1ac28a274b704 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: 2023-03-02 +date: 2023-03-06 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 4ab8eecaa1622..3f77bccfa3063 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: 2023-03-02 +date: 2023-03-06 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 31fb2ac1d9941..dfc971cf5823a 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: 2023-03-02 +date: 2023-03-06 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 c1c957a5344ba..2e564b22778d1 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: 2023-03-02 +date: 2023-03-06 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_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 7653cf7c2050a..50d6615f60b93 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: 2023-03-02 +date: 2023-03-06 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_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index 17c1f3117f330..74b2987c82c76 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index bd694773a5f16..9ac2c45f88404 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: 2023-03-02 +date: 2023-03-06 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 d5f3d4039a718..37baef2241373 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: 2023-03-02 +date: 2023-03-06 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 504c5c613feae..ca35c9bf21250 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: 2023-03-02 +date: 2023-03-06 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 33443ded64359..e17e4551f1548 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: 2023-03-02 +date: 2023-03-06 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 4f31e6de42168..a7ed79faf22b7 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: 2023-03-02 +date: 2023-03-06 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 65d472a647d69..db4caa5d0387d 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: 2023-03-02 +date: 2023-03-06 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_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index fc0e425c6fd46..f147e2451fad0 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: 2023-03-02 +date: 2023-03-06 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 0d5e270a9df43..ab770cdccd31c 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: 2023-03-02 +date: 2023-03-06 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 7353d7a47d85e..0ec1e2b51a268 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: 2023-03-02 +date: 2023-03-06 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 f4df154e80c44..c38100781b4fe 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: 2023-03-02 +date: 2023-03-06 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 5edaedd815f0e..32785a4616e61 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: 2023-03-02 +date: 2023-03-06 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 65093899ea9b9..99217d5fe15eb 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: 2023-03-02 +date: 2023-03-06 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 4a1f5feb62f3f..805a62a464ee3 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: 2023-03-02 +date: 2023-03-06 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 135b54ce7e869..56b45eb7daa54 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: 2023-03-02 +date: 2023-03-06 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 213dbf4d62c16..cf254112e56c0 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: 2023-03-02 +date: 2023-03-06 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 0d5ad1eed566d..9d832a41c244f 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: 2023-03-02 +date: 2023-03-06 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 2e81fbb70e4ae..a6e20840c6073 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: 2023-03-02 +date: 2023-03-06 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 b188b63b47ec9..1330dc3e02137 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: 2023-03-02 +date: 2023-03-06 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 ed6e1939b36f7..8dc4b80826870 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: 2023-03-02 +date: 2023-03-06 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 da52ba5ced2bd..6b59888fe811a 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: 2023-03-02 +date: 2023-03-06 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 878698459b87b..585389e439927 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: 2023-03-02 +date: 2023-03-06 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_crypto.mdx b/api_docs/kbn_crypto.mdx index fa020d9f7e28a..1edd3ca0b1a1a 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: 2023-03-02 +date: 2023-03-06 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 9d7d13934ab24..3b9482ad81832 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 1f710dbf67056..d6d991138bab6 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 75eabd2444aaf..afe662a3a1549 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index cc58fa1feb24c..cb9488430d958 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: 2023-03-02 +date: 2023-03-06 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 a64f39e0387e7..5e7bf384d2418 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: 2023-03-02 +date: 2023-03-06 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 3247d3e925491..732c1df04f168 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: 2023-03-02 +date: 2023-03-06 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 a470e64f11a32..a72dfdc79bf5b 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 0a96000e4bb7d..64a4cdd62da99 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: 2023-03-02 +date: 2023-03-06 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 9983ad5184956..5f2a542588593 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index 3086015b75ea1..fd6eb8fa30e8d 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx index e682604f096df..0981db15c283b 100644 --- a/api_docs/kbn_ecs.mdx +++ b/api_docs/kbn_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs title: "@kbn/ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs'] --- import kbnEcsObj from './kbn_ecs.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index 4182480b6429b..6f2dde46f12f8 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: 2023-03-02 +date: 2023-03-06 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_es.mdx b/api_docs/kbn_es.mdx index 130281480b778..b792720b934e1 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: 2023-03-02 +date: 2023-03-06 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 6432d72fe9933..5e3f5ea1ebbf6 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: 2023-03-02 +date: 2023-03-06 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 da4b187dd9845..9f3395e6b6125 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: 2023-03-02 +date: 2023-03-06 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 2c7721a298282..d71777b660a23 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: 2023-03-02 +date: 2023-03-06 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 5a68fd11c6e47..19591ca8013ce 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: 2023-03-02 +date: 2023-03-06 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 e08fd251f331f..eae070a89754a 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index ab9a929a7a38f..0491e5f5cf18d 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: 2023-03-02 +date: 2023-03-06 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 ef0856fc946b1..d3f5b0ce21f8d 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 449cae1f26ea8..2d5b0f7d39e03 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: 2023-03-02 +date: 2023-03-06 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 91d09b17dd4ec..adbf2a7af0429 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: 2023-03-02 +date: 2023-03-06 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_generate.mdx b/api_docs/kbn_generate.mdx index 65adba923f05f..6592a5a667c13 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index 880e6de629200..e1d0692ef6270 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: 2023-03-02 +date: 2023-03-06 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 5878786295778..29c6bb93fe202 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: 2023-03-02 +date: 2023-03-06 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 9425661e63606..de3573c4c2330 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: 2023-03-02 +date: 2023-03-06 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 888f6ded8526c..80a1334fb086f 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: 2023-03-02 +date: 2023-03-06 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 c22f3d87fbbed..f4bb7c2258c70 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: 2023-03-02 +date: 2023-03-06 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 a7c40f3fe82b6..b46c9aa07026b 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: 2023-03-02 +date: 2023-03-06 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 86ea86435e56b..8ef0fbe48fcf2 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: 2023-03-02 +date: 2023-03-06 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 117c6131cde4a..2db7914d855d9 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: 2023-03-02 +date: 2023-03-06 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 1319962df3f2b..43e666be6fc11 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index 23a48bca32834..82a38bceb46e1 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 413243d232272..84401dd00eb33 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 55386dee3d910..047599dafbb79 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: 2023-03-02 +date: 2023-03-06 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 ca19c050cf54f..9325f6d350bab 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: 2023-03-02 +date: 2023-03-06 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 9172eb25ebd57..fbfd3d6c3568a 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 31cf48b2c964a..a8120973cd5f6 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: 2023-03-02 +date: 2023-03-06 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_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx index f0205840574a5..bacb31e635cfd 100644 --- a/api_docs/kbn_language_documentation_popover.mdx +++ b/api_docs/kbn_language_documentation_popover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover title: "@kbn/language-documentation-popover" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation-popover plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index d019150acefd2..89bada4458380 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: 2023-03-02 +date: 2023-03-06 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 a4e1e123ef2a3..25caf788fb1c0 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index cf68bcaa4b420..2c13494930a2b 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 50d3deb0458c8..72605d7e93e37 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index 3127057ccd8c4..4ee51bce1de26 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: 2023-03-02 +date: 2023-03-06 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_date_picker.devdocs.json b/api_docs/kbn_ml_date_picker.devdocs.json index 881361d0e70db..164c1d688fba4 100644 --- a/api_docs/kbn_ml_date_picker.devdocs.json +++ b/api_docs/kbn_ml_date_picker.devdocs.json @@ -1025,6 +1025,29 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "@kbn/ml-date-picker", + "id": "def-common.FullTimeRangeSelectorProps.apiPath", + "type": "CompoundType", + "tags": [], + "label": "apiPath", + "description": [ + "\nOptional API path." + ], + "signature": [ + { + "pluginId": "@kbn/ml-date-picker", + "scope": "common", + "docId": "kibKbnMlDatePickerPluginApi", + "section": "def-common.SetFullTimeRangeApiPath", + "text": "SetFullTimeRangeApiPath" + }, + " | undefined" + ], + "path": "x-pack/packages/ml/date_picker/src/components/full_time_range_selector.tsx", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -1196,6 +1219,23 @@ "deprecated": false, "trackAdoption": false, "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ml-date-picker", + "id": "def-common.SetFullTimeRangeApiPath", + "type": "Type", + "tags": [], + "label": "SetFullTimeRangeApiPath", + "description": [ + "\nAllowed API paths to be passed to `setFullTimeRange`." + ], + "signature": [ + "\"/internal/file_upload/time_field_range\" | \"/api/ml/fields_service/time_field_range\"" + ], + "path": "x-pack/packages/ml/date_picker/src/services/full_time_range_selector_service.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false } ], "objects": [ diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index 70aa629bdf80b..0887f2520231b 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) for questi | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 50 | 0 | 4 | 0 | +| 52 | 0 | 4 | 0 | ## Common diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index 9ef0f2503787d..d34393f3b933b 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: 2023-03-02 +date: 2023-03-06 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 36b9c12cf8d9d..8880ada0ea734 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: 2023-03-02 +date: 2023-03-06 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 8fa8dfb1d8949..d646f7255ffab 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: 2023-03-02 +date: 2023-03-06 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 408295f5ee767..369d2436b8bc6 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: 2023-03-02 +date: 2023-03-06 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_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index 81bd4a60e0987..5199bf99beb9a 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: 2023-03-02 +date: 2023-03-06 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_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index 9507eea80b252..6a756ccda7764 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: 2023-03-02 +date: 2023-03-06 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_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 7f2f96360ee86..6e03aecad1fdd 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 438c5d5888eb9..645a7afa94e0c 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 317ff8207a0c7..8e87c34fcd17b 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: 2023-03-02 +date: 2023-03-06 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 421a949c6eae8..7fdb8ff118423 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: 2023-03-02 +date: 2023-03-06 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 7f3b1642e85d7..6182dae7babb3 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: 2023-03-02 +date: 2023-03-06 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_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index bf6e073992a21..b1e94b730266c 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: 2023-03-02 +date: 2023-03-06 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_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 0778f126ccf81..5c56c5257f4ed 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: 2023-03-02 +date: 2023-03-06 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 4cab2f5a9cf67..c646baef008b9 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 4f57a93db4a55..821949aec651a 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index 8ffc7c7df9420..30dfe830d79cb 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: 2023-03-02 +date: 2023-03-06 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 91d1a67494952..d930490c65b87 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: 2023-03-02 +date: 2023-03-06 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 c28da4d0951a8..30eaec2fec5ae 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: 2023-03-02 +date: 2023-03-06 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 72a1e859e649e..234d0612eeb21 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 31f656256f6e1..6474139f1e2c8 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index a7d43f07fa3d2..f205491dd4b51 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 9b4a4d1967d67..1c7832cb30807 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 4265f52b32192..6c224f1566189 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: 2023-03-02 +date: 2023-03-06 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 bdbe6ca5f7874..282e158840e9e 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: 2023-03-02 +date: 2023-03-06 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 d1aba2986d80b..2fe9361305cc2 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: 2023-03-02 +date: 2023-03-06 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_grouping.devdocs.json b/api_docs/kbn_securitysolution_grouping.devdocs.json new file mode 100644 index 0000000000000..0eb4ab29c8175 --- /dev/null +++ b/api_docs/kbn_securitysolution_grouping.devdocs.json @@ -0,0 +1,279 @@ +{ + "id": "@kbn/securitysolution-grouping", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/securitysolution-grouping", + "id": "def-common.getGrouping", + "type": "Function", + "tags": [], + "label": "getGrouping", + "description": [], + "signature": [ + "(props: ", + "GroupingProps", + ") => React.ReactElement<", + "GroupingProps", + ", string | React.JSXElementConstructor>" + ], + "path": "packages/kbn-securitysolution-grouping/index.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/securitysolution-grouping", + "id": "def-common.getGrouping.$1", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "GroupingProps" + ], + "path": "packages/kbn-securitysolution-grouping/index.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/securitysolution-grouping", + "id": "def-common.getGroupingQuery", + "type": "Function", + "tags": [], + "label": "getGroupingQuery", + "description": [], + "signature": [ + "({ additionalFilters, additionalAggregationsRoot, additionalStatsAggregationsFields0, additionalStatsAggregationsFields1, from, runtimeMappings, stackByMultipleFields0, stackByMultipleFields0Size, stackByMultipleFields0From, stackByMultipleFields0Sort, stackByMultipleFields1, stackByMultipleFields1Size, stackByMultipleFields1From, stackByMultipleFields1Sort, to, }: ", + "GroupingQueryArgs", + ") => ", + "GroupingQuery" + ], + "path": "packages/kbn-securitysolution-grouping/src/containers/query/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/securitysolution-grouping", + "id": "def-common.getGroupingQuery.$1", + "type": "Object", + "tags": [], + "label": "{\n additionalFilters = [],\n additionalAggregationsRoot,\n additionalStatsAggregationsFields0,\n additionalStatsAggregationsFields1,\n from,\n runtimeMappings,\n stackByMultipleFields0,\n stackByMultipleFields0Size = DEFAULT_STACK_BY_FIELD0_SIZE,\n stackByMultipleFields0From,\n stackByMultipleFields0Sort,\n stackByMultipleFields1,\n stackByMultipleFields1Size = DEFAULT_STACK_BY_FIELD1_SIZE,\n stackByMultipleFields1From,\n stackByMultipleFields1Sort,\n to,\n}", + "description": [], + "signature": [ + "GroupingQueryArgs" + ], + "path": "packages/kbn-securitysolution-grouping/src/containers/query/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/securitysolution-grouping", + "id": "def-common.getGroupSelector", + "type": "Function", + "tags": [], + "label": "getGroupSelector", + "description": [], + "signature": [ + "(props: ", + "GroupSelectorProps", + ") => React.ReactElement<", + "GroupSelectorProps", + ", string | React.JSXElementConstructor>" + ], + "path": "packages/kbn-securitysolution-grouping/index.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/securitysolution-grouping", + "id": "def-common.getGroupSelector.$1", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "GroupSelectorProps" + ], + "path": "packages/kbn-securitysolution-grouping/index.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/securitysolution-grouping", + "id": "def-common.isNoneGroup", + "type": "Function", + "tags": [], + "label": "isNoneGroup", + "description": [], + "signature": [ + "(groupKey: string) => boolean" + ], + "path": "packages/kbn-securitysolution-grouping/src/components/index.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/securitysolution-grouping", + "id": "def-common.isNoneGroup.$1", + "type": "string", + "tags": [], + "label": "groupKey", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-securitysolution-grouping/src/components/index.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/securitysolution-grouping", + "id": "def-common.GroupingAggregation", + "type": "Interface", + "tags": [], + "label": "GroupingAggregation", + "description": [ + "Defines the shape of the aggregation returned by Elasticsearch" + ], + "path": "packages/kbn-securitysolution-grouping/src/components/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/securitysolution-grouping", + "id": "def-common.GroupingAggregation.stackByMultipleFields0", + "type": "Object", + "tags": [], + "label": "stackByMultipleFields0", + "description": [], + "signature": [ + "{ buckets?: ", + { + "pluginId": "@kbn/securitysolution-grouping", + "scope": "common", + "docId": "kibKbnSecuritysolutionGroupingPluginApi", + "section": "def-common.RawBucket", + "text": "RawBucket" + }, + "[] | undefined; } | undefined" + ], + "path": "packages/kbn-securitysolution-grouping/src/components/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/securitysolution-grouping", + "id": "def-common.GroupingAggregation.groupsCount0", + "type": "Object", + "tags": [], + "label": "groupsCount0", + "description": [], + "signature": [ + "{ value?: number | null | undefined; } | undefined" + ], + "path": "packages/kbn-securitysolution-grouping/src/components/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/securitysolution-grouping", + "id": "def-common.GroupingFieldTotalAggregation", + "type": "Type", + "tags": [], + "label": "GroupingFieldTotalAggregation", + "description": [], + "signature": [ + "{ [x: string]: { value?: number | null | undefined; buckets?: { doc_count?: number | null | undefined; }[] | undefined; }; }" + ], + "path": "packages/kbn-securitysolution-grouping/src/components/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/securitysolution-grouping", + "id": "def-common.NamedAggregation", + "type": "Type", + "tags": [], + "label": "NamedAggregation", + "description": [], + "signature": [ + "{ [x: string]: ", + "AggregationsAggregationContainer", + "; }" + ], + "path": "packages/kbn-securitysolution-grouping/src/containers/query/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/securitysolution-grouping", + "id": "def-common.RawBucket", + "type": "Type", + "tags": [], + "label": "RawBucket", + "description": [], + "signature": [ + "GenericBuckets", + " & { alertsCount?: { value?: number | null | undefined; } | undefined; severitiesSubAggregation?: { buckets?: ", + "GenericBuckets", + "[] | undefined; } | undefined; countSeveritySubAggregation?: { value?: number | null | undefined; } | undefined; usersCountAggregation?: { value?: number | null | undefined; } | undefined; hostsCountAggregation?: { value?: number | null | undefined; } | undefined; rulesCountAggregation?: { value?: number | null | undefined; } | undefined; ruleTags?: { doc_count_error_upper_bound?: number | undefined; sum_other_doc_count?: number | undefined; buckets?: ", + "GenericBuckets", + "[] | undefined; } | undefined; stackByMultipleFields1?: { buckets?: ", + "GenericBuckets", + "[] | undefined; doc_count_error_upper_bound?: number | undefined; sum_other_doc_count?: number | undefined; } | undefined; }" + ], + "path": "packages/kbn-securitysolution-grouping/src/components/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx new file mode 100644 index 0000000000000..5b71f6be2364d --- /dev/null +++ b/api_docs/kbn_securitysolution_grouping.mdx @@ -0,0 +1,36 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnSecuritysolutionGroupingPluginApi +slug: /kibana-dev-docs/api/kbn-securitysolution-grouping +title: "@kbn/securitysolution-grouping" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/securitysolution-grouping plugin +date: 2023-03-06 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping'] +--- +import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json'; + + + +Contact [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 14 | 0 | 13 | 5 | + +## Common + +### Functions + + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index cf9e283e2ce9d..e18e8e9384dc3 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: 2023-03-02 +date: 2023-03-06 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 3cea3ef0fe53b..127267136294e 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: 2023-03-02 +date: 2023-03-06 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 858be46e1f188..cbd27335f2f35 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.devdocs.json +++ b/api_docs/kbn_securitysolution_io_ts_list_types.devdocs.json @@ -2624,7 +2624,7 @@ "label": "CreateEndpointListItemSchema", "description": [], "signature": [ - "{ description: string; entries: ({ field: string; operator: \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; expire_time?: string | undefined; }" + "{ description: string; entries: ({ field: string; operator: \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; } & { comments?: { comment: string; }[] | undefined; item_id?: string | undefined; meta?: object | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/create_endpoint_list_item_schema/index.ts", "deprecated": false, @@ -2639,7 +2639,7 @@ "label": "CreateEndpointListItemSchemaDecoded", "description": [], "signature": [ - "Omit<{ description: string; entries: ({ field: string; operator: \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; comments: { comment: string; }[] | undefined; item_id: string | undefined; meta: object | undefined; os_types: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags: string[] | undefined; expire_time: string | undefined; }, \"entries\" | \"tags\" | \"comments\" | \"expire_time\" | \"item_id\" | \"os_types\"> & { comments: { comment: string; }[]; tags: string[]; item_id: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"geo_point\" | \"geo_shape\" | \"ip\" | \"binary\" | \"keyword\" | \"text\" | \"date\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; os_types: (\"windows\" | \"linux\" | \"macos\")[]; expire_time: string | undefined; }" + "Omit<{ description: string; entries: ({ field: string; operator: \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"included\"; type: \"wildcard\"; value: string; } | { entries: ({ field: string; operator: \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"included\"; type: \"match_any\"; value: string[]; })[]; field: string; type: \"nested\"; })[]; name: string; type: \"simple\"; comments: { comment: string; }[] | undefined; item_id: string | undefined; meta: object | undefined; os_types: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags: string[] | undefined; }, \"entries\" | \"tags\" | \"comments\" | \"item_id\" | \"os_types\"> & { comments: { comment: string; }[]; tags: string[]; item_id: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"geo_point\" | \"geo_shape\" | \"ip\" | \"binary\" | \"keyword\" | \"text\" | \"date\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; os_types: (\"windows\" | \"linux\" | \"macos\")[]; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/create_endpoint_list_item_schema/index.ts", "deprecated": false, @@ -5114,7 +5114,7 @@ "label": "UpdateEndpointListItemSchema", "description": [], "signature": [ - "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"geo_point\" | \"geo_shape\" | \"ip\" | \"binary\" | \"keyword\" | \"text\" | \"date\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; expire_time?: string | undefined; }" + "{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"geo_point\" | \"geo_shape\" | \"ip\" | \"binary\" | \"keyword\" | \"text\" | \"date\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; name: string; type: \"simple\"; } & { _version?: string | undefined; comments?: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id?: string | undefined; item_id?: string | undefined; meta?: object | undefined; os_types?: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags?: string[] | undefined; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/update_endpoint_list_item_schema/index.ts", "deprecated": false, @@ -5129,7 +5129,7 @@ "label": "UpdateEndpointListItemSchemaDecoded", "description": [], "signature": [ - "Omit<{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"geo_point\" | \"geo_shape\" | \"ip\" | \"binary\" | \"keyword\" | \"text\" | \"date\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; name: string; type: \"simple\"; _version: string | undefined; comments: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id: string | undefined; item_id: string | undefined; meta: object | undefined; os_types: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags: string[] | undefined; expire_time: string | undefined; }, \"entries\" | \"tags\" | \"comments\" | \"expire_time\"> & { comments: ({ comment: string; } & { id?: string | undefined; })[]; tags: string[]; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"geo_point\" | \"geo_shape\" | \"ip\" | \"binary\" | \"keyword\" | \"text\" | \"date\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; os_types: (\"windows\" | \"linux\" | \"macos\")[]; expire_time: string | undefined; }" + "Omit<{ description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"geo_point\" | \"geo_shape\" | \"ip\" | \"binary\" | \"keyword\" | \"text\" | \"date\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; name: string; type: \"simple\"; _version: string | undefined; comments: ({ comment: string; } & { id?: string | undefined; })[] | undefined; id: string | undefined; item_id: string | undefined; meta: object | undefined; os_types: (\"windows\" | \"linux\" | \"macos\")[] | undefined; tags: string[] | undefined; }, \"entries\" | \"tags\" | \"comments\"> & { comments: ({ comment: string; } & { id?: string | undefined; })[]; tags: string[]; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"geo_point\" | \"geo_shape\" | \"ip\" | \"binary\" | \"keyword\" | \"text\" | \"date\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; os_types: (\"windows\" | \"linux\" | \"macos\")[]; }" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/update_endpoint_list_item_schema/index.ts", "deprecated": false, @@ -5624,13 +5624,7 @@ "UndefinedC", "]>; tags: ", "Type", - "; expire_time: ", - "UnionC", - "<[", - "Type", - ", ", - "UndefinedC", - "]>; }>>]>" + "; }>>]>" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/create_endpoint_list_item_schema/index.ts", "deprecated": false, @@ -11027,13 +11021,7 @@ "UndefinedC", "]>; tags: ", "Type", - "; expire_time: ", - "UnionC", - "<[", - "Type", - ", ", - "UndefinedC", - "]>; }>>]>" + "; }>>]>" ], "path": "packages/kbn-securitysolution-io-ts-list-types/src/request/update_endpoint_list_item_schema/index.ts", "deprecated": false, diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index ae89b69f48690..f635c7ba6c21b 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: 2023-03-02 +date: 2023-03-06 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 d1526b7f60044..60deb92356cb0 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: 2023-03-02 +date: 2023-03-06 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 c2ecb1dbe34d5..548efb03d2058 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: 2023-03-02 +date: 2023-03-06 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 6788608bcb84e..bcbdab8cab012 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: 2023-03-02 +date: 2023-03-06 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 2ec3f8381831f..78445e2b49f41 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: 2023-03-02 +date: 2023-03-06 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 0ca59b9fe847c..9193f23315a77 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: 2023-03-02 +date: 2023-03-06 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 3beb7403b600b..c88fee744295d 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: 2023-03-02 +date: 2023-03-06 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 0ee158f6baaf6..72e39ff5afae3 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: 2023-03-02 +date: 2023-03-06 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 a2d1484550fc9..e85ce98a2a803 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: 2023-03-02 +date: 2023-03-06 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 a8005a4385573..0f8ba0e6a041d 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: 2023-03-02 +date: 2023-03-06 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 063dd41fd98ff..d27e52d43774f 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: 2023-03-02 +date: 2023-03-06 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 737057e8c0e05..efb02f34519d1 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index b29158d647065..86aa56a3dbe05 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: 2023-03-02 +date: 2023-03-06 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 a3a55240b0af9..49a307abf7b04 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: 2023-03-02 +date: 2023-03-06 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_avatar_user_profile_components.mdx b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx index a56cf6c0bfbc3..a58272efa2d1d 100644 --- a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx +++ b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-user-profile-components title: "@kbn/shared-ux-avatar-user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-user-profile-components plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-user-profile-components'] --- import kbnSharedUxAvatarUserProfileComponentsObj from './kbn_shared_ux_avatar_user_profile_components.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 6819d2c072e27..f8a48097cfee2 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: 2023-03-02 +date: 2023-03-06 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_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index 8ab84fc256c3c..faa396a32ef15 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen-mocks title: "@kbn/shared-ux-button-exit-full-screen-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen-mocks plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen-mocks'] --- import kbnSharedUxButtonExitFullScreenMocksObj from './kbn_shared_ux_button_exit_full_screen_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 95898936e597e..776ee833c0f91 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: 2023-03-02 +date: 2023-03-06 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 7c89c2313936f..a99550f334e9d 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: 2023-03-02 +date: 2023-03-06 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 409920c862e2f..d01917282f0bb 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: 2023-03-02 +date: 2023-03-06 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_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index c2e953437d99f..296253d39ca26 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: 2023-03-02 +date: 2023-03-06 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 5d7124ba4df40..1c0c148a1886a 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: 2023-03-02 +date: 2023-03-06 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 349b4336f58e2..77395553fe48c 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: 2023-03-02 +date: 2023-03-06 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 e0989c1f51cec..eaf6ea6651f52 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: 2023-03-02 +date: 2023-03-06 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 8d407169060fc..bdcb3b3d31688 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: 2023-03-02 +date: 2023-03-06 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 09dd4674a2d1f..8c72b124aea00 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: 2023-03-02 +date: 2023-03-06 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 4ea964c495788..db965074e0a21 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: 2023-03-02 +date: 2023-03-06 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 f5103df1642ea..126a90b0138c0 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: 2023-03-02 +date: 2023-03-06 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 97f45e6f83b2c..dfb7420456562 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: 2023-03-02 +date: 2023-03-06 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 f67da8f76056e..18aafaef26d63 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: 2023-03-02 +date: 2023-03-06 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 5de34430503ce..5317c3ea7ea6e 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: 2023-03-02 +date: 2023-03-06 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 b9c09753d8c3c..5fc4f57d29394 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: 2023-03-02 +date: 2023-03-06 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 925939b7b3b14..d5552f3871a81 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: 2023-03-02 +date: 2023-03-06 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 aead1c8075be1..6a817184730f6 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: 2023-03-02 +date: 2023-03-06 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 467752087fbd1..2feb61cd40bb2 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: 2023-03-02 +date: 2023-03-06 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 b8e9b22f1f1e7..b5db61e3c7a53 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: 2023-03-02 +date: 2023-03-06 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 18e62b3d81c71..8b3c9392153f6 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: 2023-03-02 +date: 2023-03-06 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 129bdc8d51894..7826a6f575257 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: 2023-03-02 +date: 2023-03-06 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 09ae4255ca89b..460131cdca455 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: 2023-03-02 +date: 2023-03-06 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 1fbeb1e9d68db..9089e2600e2e6 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: 2023-03-02 +date: 2023-03-06 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 8caedf2cd62ba..cd47867e60301 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: 2023-03-02 +date: 2023-03-06 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 c7bb81745e1b9..7d6057cf4b145 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: 2023-03-02 +date: 2023-03-06 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 5db172a4f79f4..f8b79231463d2 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: 2023-03-02 +date: 2023-03-06 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 a26fb1bdd2f0f..214f317c962cd 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: 2023-03-02 +date: 2023-03-06 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 db19f5d6acdfe..2b371835720a8 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: 2023-03-02 +date: 2023-03-06 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 f9d52f03f61e1..9dd45a3056268 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: 2023-03-02 +date: 2023-03-06 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 3235db692a3da..855354f61aec4 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: 2023-03-02 +date: 2023-03-06 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 85372208f09f1..f90c5682e758e 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: 2023-03-02 +date: 2023-03-06 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 93ac6e208bfb2..e984dc4c62b31 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: 2023-03-02 +date: 2023-03-06 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 de7c54411e4da..84ff87797af7c 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: 2023-03-02 +date: 2023-03-06 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_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 167415f51c2a2..e218614ec5d0d 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: 2023-03-02 +date: 2023-03-06 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 c52546abcb1dd..044bfb7cf3396 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: 2023-03-02 +date: 2023-03-06 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 10c6b0eaa4a86..32081d60b7ab6 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index cfa11b343e00c..69ccf7d0f1c6b 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: 2023-03-02 +date: 2023-03-06 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 81664623edf20..4fbe4cca94e2d 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: 2023-03-02 +date: 2023-03-06 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 dba39c49e42a7..02c80c4474171 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 151f72a73b89f..8099f409043ec 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: 2023-03-02 +date: 2023-03-06 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 3751fd6bbc8e7..fbdd83ade4809 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index a3f6b269e3d08..f8482148a71de 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: 2023-03-02 +date: 2023-03-06 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 76fa71100242c..40824b28e0ae6 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 9a28336a7b258..33c0c1138d1e6 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 5868864ad22d9..bef686985702a 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: 2023-03-02 +date: 2023-03-06 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 2cceab118c4e8..c91ee2bd7dbe5 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: 2023-03-02 +date: 2023-03-06 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 1119cd67540c1..16c5bd0d294ad 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: 2023-03-02 +date: 2023-03-06 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 0f7c8eaa8b238..aa18030812380 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: 2023-03-02 +date: 2023-03-06 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 68900129865df..ffcb4a5f9bf86 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 768b70d4e2d81..dd016f5f64a64 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: 2023-03-02 +date: 2023-03-06 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 902a7bf6ef8f8..6cc5100729aeb 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: 2023-03-02 +date: 2023-03-06 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 001f3e5200b3d..c1b87ee584570 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: 2023-03-02 +date: 2023-03-06 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 fcfbba697a2d6..75c9121310fb8 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index f4a57359de52a..516de9bad2f70 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index b9ad74d6e1aa8..5707659a03c2b 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: 2023-03-02 +date: 2023-03-06 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 5a3615f9f57d7..8adc67c9a31e6 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: 2023-03-02 +date: 2023-03-06 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 81c6306fdfb45..479215657cada 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index c3bd6e26c3d3e..4997ef5ea433c 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 5ed7138b508e1..3f276970b799f 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: 2023-03-02 +date: 2023-03-06 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 4e5cb6c23130f..919c0ac83f1e4 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: 2023-03-02 +date: 2023-03-06 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 5048d4ae336be..d37ef16a7e9a3 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: 2023-03-02 +date: 2023-03-06 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 e0af238c7a65f..4744ba9290ca5 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/lists.devdocs.json b/api_docs/lists.devdocs.json index fe0cdc54cd46b..60eab49b1edaa 100644 --- a/api_docs/lists.devdocs.json +++ b/api_docs/lists.devdocs.json @@ -698,7 +698,7 @@ "\nThis is the same as \"createListItem\" except it applies specifically to the agnostic endpoint list and will\nauto-call the \"createEndpointList\" for you so that you have the best chance of the agnostic endpoint\nbeing there and existing before the item is inserted into the agnostic endpoint list." ], "signature": [ - "({ comments, description, entries, expireTime, itemId, meta, name, osTypes, tags, type, }: ", + "({ comments, description, entries, itemId, meta, name, osTypes, tags, type, }: ", "CreateEndpointListItemOptions", ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"geo_point\" | \"geo_shape\" | \"ip\" | \"binary\" | \"keyword\" | \"text\" | \"date\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; expire_time: string | undefined; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; }>" ], @@ -711,7 +711,7 @@ "id": "def-server.ExceptionListClient.createEndpointListItem.$1", "type": "Object", "tags": [], - "label": "{\n comments,\n description,\n entries,\n expireTime,\n itemId,\n meta,\n name,\n osTypes,\n tags,\n type,\n }", + "label": "{\n comments,\n description,\n entries,\n itemId,\n meta,\n name,\n osTypes,\n tags,\n type,\n }", "description": [], "signature": [ "CreateEndpointListItemOptions" @@ -774,7 +774,7 @@ "\nThis is the same as \"updateExceptionListItem\" except it applies specifically to the endpoint list and will\nauto-call the \"createEndpointList\" for you so that you have the best chance of the endpoint\nbeing there if it did not exist before. If the list did not exist before, then creating it here will still cause a\nreturn of null but at least the list exists again." ], "signature": [ - "({ _version, comments, description, entries, expireTime, id, itemId, meta, name, osTypes, tags, type, }: ", + "({ _version, comments, description, entries, id, itemId, meta, name, osTypes, tags, type, }: ", "UpdateEndpointListItemOptions", ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"geo_point\" | \"geo_shape\" | \"ip\" | \"binary\" | \"keyword\" | \"text\" | \"date\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; expire_time: string | undefined; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" ], @@ -787,7 +787,7 @@ "id": "def-server.ExceptionListClient.updateEndpointListItem.$1", "type": "Object", "tags": [], - "label": "{\n _version,\n comments,\n description,\n entries,\n expireTime,\n id,\n itemId,\n meta,\n name,\n osTypes,\n tags,\n type,\n }", + "label": "{\n _version,\n comments,\n description,\n entries,\n id,\n itemId,\n meta,\n name,\n osTypes,\n tags,\n type,\n }", "description": [], "signature": [ "UpdateEndpointListItemOptions" @@ -1011,7 +1011,7 @@ "tags": [], "label": "updateExceptionListItem", "description": [ - "\nUpdate an existing exception list item" + "\nUpdate an existing exception list item\n\nNOTE: This method will PATCH the targeted exception list item, not fully overwrite it.\nAny undefined fields passed in will not be changed in the existing record. To unset any\nfields use the `updateOverwriteExceptionListItem` method\n" ], "signature": [ "({ _version, comments, description, entries, expireTime, id, itemId, meta, name, namespaceType, osTypes, tags, type, }: ", @@ -1054,6 +1054,56 @@ "the updated exception list item or null if none exists" ] }, + { + "parentPluginId": "lists", + "id": "def-server.ExceptionListClient.updateOverwriteExceptionListItem", + "type": "Function", + "tags": [], + "label": "updateOverwriteExceptionListItem", + "description": [ + "\nUpdate an existing exception list item using the overwrite method in order to behave\nmore like a PUT request rather than a PATCH request.\n\nThis was done in order to correctly unset types via update which cannot be accomplished\nusing the regular `updateExceptionItem` method. All other results of the methods are identical\n" + ], + "signature": [ + "({ _version, comments, description, entries, expireTime, id, itemId, meta, name, namespaceType, osTypes, tags, type, }: ", + { + "pluginId": "lists", + "scope": "server", + "docId": "kibListsPluginApi", + "section": "def-server.UpdateExceptionListItemOptions", + "text": "UpdateExceptionListItemOptions" + }, + ") => Promise<{ _version: string | undefined; comments: ({ comment: string; created_at: string; created_by: string; id: string; } & { updated_at?: string | undefined; updated_by?: string | undefined; })[]; created_at: string; created_by: string; description: string; entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; list: { id: string; type: \"boolean\" | \"geo_point\" | \"geo_shape\" | \"ip\" | \"binary\" | \"keyword\" | \"text\" | \"date\" | \"date_nanos\" | \"integer\" | \"long\" | \"short\" | \"byte\" | \"float\" | \"half_float\" | \"double\" | \"integer_range\" | \"float_range\" | \"long_range\" | \"double_range\" | \"date_range\" | \"ip_range\" | \"shape\"; }; operator: \"excluded\" | \"included\"; type: \"list\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; } | { entries: ({ field: string; operator: \"excluded\" | \"included\"; type: \"match\"; value: string; } | { field: string; operator: \"excluded\" | \"included\"; type: \"match_any\"; value: string[]; } | { field: string; operator: \"excluded\" | \"included\"; type: \"exists\"; })[]; field: string; type: \"nested\"; } | { field: string; operator: \"excluded\" | \"included\"; type: \"wildcard\"; value: string; })[]; expire_time: string | undefined; id: string; item_id: string; list_id: string; meta: object | undefined; name: string; namespace_type: \"single\" | \"agnostic\"; os_types: (\"windows\" | \"linux\" | \"macos\")[]; tags: string[]; tie_breaker_id: string; type: \"simple\"; updated_at: string; updated_by: string; } | null>" + ], + "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "lists", + "id": "def-server.ExceptionListClient.updateOverwriteExceptionListItem.$1", + "type": "Object", + "tags": [], + "label": "{\n _version,\n comments,\n description,\n entries,\n expireTime,\n id,\n itemId,\n meta,\n name,\n namespaceType,\n osTypes,\n tags,\n type,\n }", + "description": [], + "signature": [ + { + "pluginId": "lists", + "scope": "server", + "docId": "kibListsPluginApi", + "section": "def-server.UpdateExceptionListItemOptions", + "text": "UpdateExceptionListItemOptions" + } + ], + "path": "x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [ + "the updated exception list item or null if none exists" + ] + }, { "parentPluginId": "lists", "id": "def-server.ExceptionListClient.deleteExceptionListItem", diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index b680dd963f29d..67ba5541755ee 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-solution-platform](https://github.com/orgs/elastic/te | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 208 | 0 | 93 | 51 | +| 210 | 0 | 94 | 51 | ## Client diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 4221afac3fc65..cd8e01d9c84ab 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: 2023-03-02 +date: 2023-03-06 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 0135d2c83b89c..ea2d35817d07f 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: 2023-03-02 +date: 2023-03-06 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 2ddeb72c315bd..3fd5097befc64 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index e49b1eb30ea03..f4575ed364ef7 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 3873c26812adc..52f3a8bcc3e58 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: 2023-03-02 +date: 2023-03-06 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 d40a6cb637bff..3ea14465f3b8b 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: 2023-03-02 +date: 2023-03-06 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 53d6138aedc32..a07221cc776e2 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: 2023-03-02 +date: 2023-03-06 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 dc6e65ab31771..f559c31f6cde2 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index f91125db2e4b1..fa71093027187 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: 2023-03-02 +date: 2023-03-06 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 0bc9d3113ffee..300eaaab7770e 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -2275,6 +2275,45 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "observability", + "id": "def-public.ChartData", + "type": "Interface", + "tags": [], + "label": "ChartData", + "description": [], + "path": "x-pack/plugins/observability/public/typings/slo/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-public.ChartData.key", + "type": "number", + "tags": [], + "label": "key", + "description": [], + "path": "x-pack/plugins/observability/public/typings/slo/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-public.ChartData.value", + "type": "number", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "x-pack/plugins/observability/public/typings/slo/index.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "observability", "id": "def-public.ConfigProps", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index e8133c325a091..618d97790f52c 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/actionable-observability](https://github.com/orgs/elastic/team | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 625 | 43 | 619 | 34 | +| 628 | 43 | 622 | 34 | ## Client diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 4fb5bf0000472..af127f06dd2c0 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 329f8fa2a3f3e..22a1c83117223 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -15,13 +15,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 576 | 472 | 38 | +| 577 | 473 | 38 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 67884 | 515 | 58602 | 1234 | +| 67915 | 515 | 58627 | 1240 | ## Plugin Directory @@ -35,7 +35,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 9 | 0 | 9 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Considering using bfetch capabilities when fetching large amounts of data. This services supports batching HTTP requests and streaming responses back. | 89 | 1 | 74 | 2 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds Canvas application to Kibana | 9 | 0 | 8 | 3 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | The Case management system in Kibana | 92 | 0 | 75 | 28 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | The Case management system in Kibana | 94 | 0 | 77 | 28 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 270 | 16 | 255 | 9 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 41 | 0 | 11 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | Chat available on Elastic Cloud deployments for quicker assistance. | 1 | 0 | 0 | 0 | @@ -58,7 +58,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin provides the ability to create data views via a modal flyout inside Kibana apps | 16 | 0 | 7 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Reusable data view field editor across Kibana | 72 | 0 | 33 | 0 | | | [@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. | 1028 | 0 | 243 | 2 | +| | [@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. | 1031 | 0 | 245 | 2 | | | [@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. | 28 | 3 | 24 | 0 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 10 | 0 | 8 | 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. | 97 | 0 | 78 | 7 | @@ -116,7 +116,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 8 | 0 | 8 | 0 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 3 | 0 | 3 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 117 | 0 | 42 | 10 | -| | [@elastic/security-solution-platform](https://github.com/orgs/elastic/teams/security-solution-platform) | - | 208 | 0 | 93 | 51 | +| | [@elastic/security-solution-platform](https://github.com/orgs/elastic/teams/security-solution-platform) | - | 210 | 0 | 94 | 51 | | logstash | [@elastic/logstash](https://github.com/orgs/elastic/teams/logstash) | - | 0 | 0 | 0 | 0 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 41 | 0 | 41 | 6 | | | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 267 | 0 | 266 | 27 | @@ -127,7 +127,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 34 | 0 | 34 | 2 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 17 | 0 | 17 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 1 | -| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 625 | 43 | 619 | 34 | +| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 628 | 43 | 622 | 34 | | | [@elastic/security-defend-workflows](https://github.com/orgs/elastic/teams/security-defend-workflows) | - | 24 | 0 | 24 | 7 | | painlessLab | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 0 | 0 | 0 | 0 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | The Presentation Utility Plugin is a set of common, shared components and toolkits for solutions within the Presentation space, (e.g. Dashboards, Canvas). | 202 | 7 | 146 | 12 | @@ -169,7 +169,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Extends UI Actions plugin with more functionality | 206 | 0 | 140 | 9 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Contains functionality for the field list which can be integrated into apps | 267 | 0 | 242 | 7 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | The `unifiedHistogram` plugin provides UI components to create a layout including a resizable histogram and a main display. | 61 | 0 | 23 | 1 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. | 134 | 2 | 99 | 20 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. | 135 | 2 | 100 | 20 | | upgradeAssistant | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 0 | 0 | 0 | 0 | | urlDrilldown | [@elastic/kibana-app-services](https://github.com/orgs/elastic/teams/kibana-app-services) | Adds drilldown implementations to Kibana | 0 | 0 | 0 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 12 | 0 | 12 | 0 | @@ -210,7 +210,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 18 | 0 | 2 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 17 | 0 | 17 | 0 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 27 | 0 | 27 | 3 | -| | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 152 | 0 | 152 | 16 | +| | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 154 | 0 | 154 | 17 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 11 | 0 | 11 | 0 | | | [@elastic/kibana-qa](https://github.com/orgs/elastic/teams/kibana-qa) | - | 10 | 0 | 10 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 19 | 0 | 17 | 0 | @@ -298,7 +298,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 7 | 0 | 7 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 26 | 6 | 26 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 7 | 0 | 7 | 1 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 411 | 1 | 160 | 0 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 413 | 1 | 161 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 55 | 0 | 49 | 6 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 41 | 0 | 40 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 4 | 0 | 2 | 0 | @@ -429,7 +429,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 6 | 0 | 1 | 1 | | | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 534 | 1 | 1 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 83 | 2 | 59 | 0 | -| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 50 | 0 | 4 | 0 | +| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 52 | 0 | 4 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 2 | 0 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 3 | 0 | 2 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 5 | 0 | 3 | 0 | @@ -455,6 +455,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 341 | 1 | 337 | 32 | | | [@elastic/security-solution-platform](https://github.com/orgs/elastic/teams/security-solution-platform) | - | 67 | 0 | 61 | 1 | | | [@elastic/security-solution-platform](https://github.com/orgs/elastic/teams/security-solution-platform) | - | 104 | 0 | 93 | 1 | +| | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 14 | 0 | 13 | 5 | | | [@elastic/security-solution-platform](https://github.com/orgs/elastic/teams/security-solution-platform) | - | 15 | 0 | 7 | 0 | | | [@elastic/security-solution-platform](https://github.com/orgs/elastic/teams/security-solution-platform) | - | 140 | 0 | 121 | 0 | | | [@elastic/security-solution-platform](https://github.com/orgs/elastic/teams/security-solution-platform) | - | 516 | 1 | 503 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index bd3fea040e1e2..906a26347cc0c 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index 55a72a326e1a1..b4da74f97f3f9 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 27991d6f57a32..a0816e2b57797 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: 2023-03-02 +date: 2023-03-06 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 85cd473879d34..68b53cb7cc2e0 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: 2023-03-02 +date: 2023-03-06 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 8acc1623aadc8..b6cbdb841f18a 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: 2023-03-02 +date: 2023-03-06 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 f1367bb632c47..9f147212a1e5e 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: 2023-03-02 +date: 2023-03-06 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 40cbcf1dc389a..dd37ca1773244 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: 2023-03-02 +date: 2023-03-06 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 0d20d5d2b96d1..0c839180055cf 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: 2023-03-02 +date: 2023-03-06 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 a925f9e7e8d1a..01ac5241b7496 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: 2023-03-02 +date: 2023-03-06 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 93eec3c8e2134..2dba3826fc2de 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: 2023-03-02 +date: 2023-03-06 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 92bed3afdacfe..5a478a5d72d05 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: 2023-03-02 +date: 2023-03-06 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 5275c2ba2daf3..3b7fbf4c34c30 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: 2023-03-02 +date: 2023-03-06 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 c31edc8a13b0e..0d73b05144331 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: 2023-03-02 +date: 2023-03-06 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 3010e7478cb21..6e95730e6ddb6 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: 2023-03-02 +date: 2023-03-06 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 3a4777e421cca..a9eefc59769f8 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 2b741f7ba9044..c8960791d4c27 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: 2023-03-02 +date: 2023-03-06 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 d51910f728a32..c84504aa211ee 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 0636e41382b77..aa708b39f85ae 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: 2023-03-02 +date: 2023-03-06 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 c3d6c6539e557..aae4d8df611ca 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 7f6a877f69e9c..bca4705c39339 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: 2023-03-02 +date: 2023-03-06 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 beb404bc7432d..28c13cf146473 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: 2023-03-02 +date: 2023-03-06 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 55a98d19c1ede..0020dd50e5400 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: 2023-03-02 +date: 2023-03-06 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 f779c26c75c72..c0b544d6196a0 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index c22042c62aa79..dbc2a0c30c002 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: 2023-03-02 +date: 2023-03-06 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 970b83513b7af..96c649851eaab 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: 2023-03-02 +date: 2023-03-06 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 35caf129235d2..bcbd4fbac39a2 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index 801e3c0b78b96..51080e003eaf0 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index 29a9a59dbc554..8b91983a210c3 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: 2023-03-02 +date: 2023-03-06 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 a8f10c08b35ac..b07b22045478d 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: 2023-03-02 +date: 2023-03-06 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 4d78358b839ff..622fcd5977d56 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: 2023-03-02 +date: 2023-03-06 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 e5cc4d27c7c71..a12892036cbf4 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: 2023-03-02 +date: 2023-03-06 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 dd5bbd23bd1c1..630e7e1e54c35 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: 2023-03-02 +date: 2023-03-06 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 cb576491e68f8..4fa0c00b40575 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: 2023-03-02 +date: 2023-03-06 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 a0acb8cefb267..ec8ee2c5788ab 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_field_list.mdx b/api_docs/unified_field_list.mdx index e80bd4f23b3f1..cd419843b33df 100644 --- a/api_docs/unified_field_list.mdx +++ b/api_docs/unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedFieldList title: "unifiedFieldList" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedFieldList plugin -date: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedFieldList'] --- import unifiedFieldListObj from './unified_field_list.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 2d968671567c2..9acc91d6f0b5c 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.devdocs.json b/api_docs/unified_search.devdocs.json index d0f779daec6fb..5ae3455e2cbad 100644 --- a/api_docs/unified_search.devdocs.json +++ b/api_docs/unified_search.devdocs.json @@ -1396,6 +1396,26 @@ "path": "src/plugins/unified_search/public/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "unifiedSearch", + "id": "def-public.IUnifiedSearchPluginServices.savedObjectsManagement", + "type": "Object", + "tags": [], + "label": "savedObjectsManagement", + "description": [], + "signature": [ + { + "pluginId": "savedObjectsManagement", + "scope": "public", + "docId": "kibSavedObjectsManagementPluginApi", + "section": "def-public.SavedObjectsManagementPluginStart", + "text": "SavedObjectsManagementPluginStart" + } + ], + "path": "src/plugins/unified_search/public/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 7ce7f9776a0df..78e4d72b93292 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 134 | 2 | 99 | 20 | +| 135 | 2 | 100 | 20 | ## Client diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index 11bf3eca20206..1c796f2d0c5da 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 134 | 2 | 99 | 20 | +| 135 | 2 | 100 | 20 | ## Client diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 00a2a9c375867..251c3976efaa3 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: 2023-03-02 +date: 2023-03-06 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 6ecd92065cad1..187056013faad 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: 2023-03-02 +date: 2023-03-06 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 a384f9f7367b6..4a50715f06f72 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: 2023-03-02 +date: 2023-03-06 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 edd9382b98348..9e20415e34457 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: 2023-03-02 +date: 2023-03-06 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 659f1fde7adde..b36acb49774ff 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: 2023-03-02 +date: 2023-03-06 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 205dc8e481f17..419596ef273d8 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: 2023-03-02 +date: 2023-03-06 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 6764e12e55a9b..085a92a1c350e 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: 2023-03-02 +date: 2023-03-06 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 cb488e139d52e..f0086b7a27760 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: 2023-03-02 +date: 2023-03-06 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 d962ffe6dec17..cdb467ab5639a 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: 2023-03-02 +date: 2023-03-06 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 09b5222b7d782..7dab9f090a3f4 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: 2023-03-02 +date: 2023-03-06 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 e2376c3a4225d..4ac80c6282e5c 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: 2023-03-02 +date: 2023-03-06 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 a503f4fa09f78..0839b6994e220 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: 2023-03-02 +date: 2023-03-06 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 a95ce8496e401..f4b497e28b586 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: 2023-03-02 +date: 2023-03-06 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 22c23857d5ec5..20ff6c3168e02 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: 2023-03-02 +date: 2023-03-06 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; diff --git a/docs/user/alerting/images/rule-types-index-threshold-conditions.png b/docs/user/alerting/images/rule-types-index-threshold-conditions.png index 062b0a426b5d8..9aac7bd26c3c0 100644 Binary files a/docs/user/alerting/images/rule-types-index-threshold-conditions.png and b/docs/user/alerting/images/rule-types-index-threshold-conditions.png differ diff --git a/docs/user/alerting/images/rule-types-index-threshold-example-action.png b/docs/user/alerting/images/rule-types-index-threshold-example-action.png new file mode 100644 index 0000000000000..3544514574891 Binary files /dev/null and b/docs/user/alerting/images/rule-types-index-threshold-example-action.png differ diff --git a/docs/user/alerting/images/rule-types-index-threshold-example-aggregation.png b/docs/user/alerting/images/rule-types-index-threshold-example-aggregation.png index a43c4bf1f0d37..68b21a62d8a9b 100644 Binary files a/docs/user/alerting/images/rule-types-index-threshold-example-aggregation.png and b/docs/user/alerting/images/rule-types-index-threshold-example-aggregation.png differ diff --git a/docs/user/alerting/images/rule-types-index-threshold-example-alerts.png b/docs/user/alerting/images/rule-types-index-threshold-example-alerts.png new file mode 100644 index 0000000000000..f183a3744db92 Binary files /dev/null and b/docs/user/alerting/images/rule-types-index-threshold-example-alerts.png differ diff --git a/docs/user/alerting/images/rule-types-index-threshold-example-comparison.png b/docs/user/alerting/images/rule-types-index-threshold-example-comparison.png deleted file mode 100644 index 5e7c65e1247d8..0000000000000 Binary files a/docs/user/alerting/images/rule-types-index-threshold-example-comparison.png and /dev/null differ diff --git a/docs/user/alerting/images/rule-types-index-threshold-example-grouping.png b/docs/user/alerting/images/rule-types-index-threshold-example-grouping.png index 9f4c2ccbec3c0..aaed0acfbf863 100644 Binary files a/docs/user/alerting/images/rule-types-index-threshold-example-grouping.png and b/docs/user/alerting/images/rule-types-index-threshold-example-grouping.png differ diff --git a/docs/user/alerting/images/rule-types-index-threshold-example-index.png b/docs/user/alerting/images/rule-types-index-threshold-example-index.png index b2f1c78f7add8..29a9c9520d69e 100644 Binary files a/docs/user/alerting/images/rule-types-index-threshold-example-index.png and b/docs/user/alerting/images/rule-types-index-threshold-example-index.png differ diff --git a/docs/user/alerting/images/rule-types-index-threshold-example-preview.png b/docs/user/alerting/images/rule-types-index-threshold-example-preview.png index 19ad52c45da1c..a7e656297a3f0 100644 Binary files a/docs/user/alerting/images/rule-types-index-threshold-example-preview.png and b/docs/user/alerting/images/rule-types-index-threshold-example-preview.png differ diff --git a/docs/user/alerting/images/rule-types-index-threshold-example-threshold.png b/docs/user/alerting/images/rule-types-index-threshold-example-threshold.png index 9d9262dd96a1e..5a1bc35bd22c9 100644 Binary files a/docs/user/alerting/images/rule-types-index-threshold-example-threshold.png and b/docs/user/alerting/images/rule-types-index-threshold-example-threshold.png differ diff --git a/docs/user/alerting/images/rule-types-index-threshold-example-timefield.png b/docs/user/alerting/images/rule-types-index-threshold-example-timefield.png deleted file mode 100644 index e7b13ed6e2cc0..0000000000000 Binary files a/docs/user/alerting/images/rule-types-index-threshold-example-timefield.png and /dev/null differ diff --git a/docs/user/alerting/images/rule-types-index-threshold-example-window.png b/docs/user/alerting/images/rule-types-index-threshold-example-window.png deleted file mode 100644 index 9b8e9a47ae91e..0000000000000 Binary files a/docs/user/alerting/images/rule-types-index-threshold-example-window.png and /dev/null differ diff --git a/docs/user/alerting/images/rule-types-index-threshold-preview.png b/docs/user/alerting/images/rule-types-index-threshold-preview.png deleted file mode 100644 index 2065cbd117b75..0000000000000 Binary files a/docs/user/alerting/images/rule-types-index-threshold-preview.png and /dev/null differ diff --git a/docs/user/alerting/images/rule-types-index-threshold-select.png b/docs/user/alerting/images/rule-types-index-threshold-select.png index aeb9de279b3a1..3a00f5da6aa1a 100644 Binary files a/docs/user/alerting/images/rule-types-index-threshold-select.png and b/docs/user/alerting/images/rule-types-index-threshold-select.png differ diff --git a/docs/user/alerting/rule-types.asciidoc b/docs/user/alerting/rule-types.asciidoc index 7aab91b27e030..e33dc4214dd8c 100644 --- a/docs/user/alerting/rule-types.asciidoc +++ b/docs/user/alerting/rule-types.asciidoc @@ -86,6 +86,6 @@ Alerts associated with security rules are visible only in the {security-app}; they are not visible in *{stack-manage-app} > {rules-ui}*. ============================================== -include::rule-types/index-threshold.asciidoc[] +include::rule-types/index-threshold.asciidoc[leveloffset=+1] include::rule-types/es-query.asciidoc[leveloffset=+1] include::rule-types/geo-rule-types.asciidoc[] diff --git a/docs/user/alerting/rule-types/index-threshold.asciidoc b/docs/user/alerting/rule-types/index-threshold.asciidoc index 870c53f69b9a1..531d56ef7e697 100644 --- a/docs/user/alerting/rule-types/index-threshold.asciidoc +++ b/docs/user/alerting/rule-types/index-threshold.asciidoc @@ -1,21 +1,16 @@ -[role="xpack"] [[rule-type-index-threshold]] -=== Index threshold +== Index threshold The index threshold rule type runs an {es} query. It aggregates field values from documents, compares them to threshold values, and schedules actions to run when the thresholds are met. [float] -==== Create the rule - -Fill in the name and optional tags, then select *Index Threshold*. - -[float] -==== Define the conditions - -Define properties to detect the condition. +=== Rule conditions [role="screenshot"] -image::user/alerting/images/rule-types-index-threshold-conditions.png[Five clauses define the condition to detect] +image::user/alerting/images/rule-types-index-threshold-conditions.png[Defining index threshold rule conditions in {kib}] +// NOTE: This is an autogenerated screenshot. Do not edit it directly. + +When you create an index threshold rule, you must define the conditions for the rule to detect. For example: Index:: This clause requires an *index or data view* and a *time field* that will be used for the *time window*. When:: This clause specifies how the value to be compared to the threshold is calculated. The value is calculated by aggregating a numeric field a the *time window*. The aggregation options are: `count`, `average`, `sum`, `min`, and `max`. When using `count` the document count is used, and an aggregation field is not necessary. @@ -23,78 +18,97 @@ Over/Grouped Over:: This clause lets you configure whether the aggregation is ap Threshold:: This clause defines a threshold value and a comparison operator (one of `is above`, `is above or equals`, `is below`, `is below or equals`, or `is between`). The result of the aggregation is compared to this threshold. Time window:: This clause determines how far back to search for documents, using the *time field* set in the *index* clause. Generally this value should be to a value higher than the *check every* value, to avoid gaps in detection. -If data is available and all clauses have been defined, a preview chart will render the threshold value and display a line chart showing the value for the last 30 intervals. This can provide an indication of recent values and their proximity to the threshold, and help you tune the clauses. - -[role="screenshot"] -image::user/alerting/images/rule-types-index-threshold-preview.png[Five clauses define the condition to detect] +If data is available and all clauses have been defined, a preview chart will render the threshold value and display a line chart showing the value for the last 30 intervals. This can provide an indication of recent values and their proximity to the threshold, and help you tune the clauses. [float] -==== Add action variables +[[action-variables-index-threshold]] +=== Action variables -<> to run when the rule condition is met. The following variables are specific to the index threshold rule. You can also specify <>. +The following action variables are specific to the index threshold rule. You can also specify <>. -`context.title`:: A preconstructed title for the rule. Example: `rule kibana sites - high egress met threshold`. +`context.conditions`:: A description of the threshold condition. Example: `count greater than 4` +`context.date`:: The date, in ISO format, that the rule met the threshold condition. Example: `2020-01-01T00:00:00.000Z`. +`context.group`:: The name of the action group associated with the threshold condition. Example: `threshold met`. `context.message`:: A preconstructed message for the rule. Example: + `rule 'kibana sites - high egress' is active for group 'threshold met':` + `- Value: 42` + `- Conditions Met: count greater than 4 over 5m` + `- Timestamp: 2020-01-01T00:00:00.000Z` - -`context.group`:: The name of the action group associated with the threshold condition. Example: `threshold met`. -`context.date`:: The date, in ISO format, that the rule met the threshold condition. Example: `2020-01-01T00:00:00.000Z`. +`context.title`:: A preconstructed title for the rule. Example: `rule kibana sites - high egress met threshold`. `context.value`:: The value for the rule that met the threshold condition. -`context.conditions`:: A description of the threshold condition. Example: `count greater than 4` [float] -==== Example +=== Example -In this example, you will use the {kib} <> to set up and tune the conditions on an index threshold rule. For this example, you want to detect when any of the top four sites serve more than 420,000 bytes over a 24 hour period. +In this example, you will use the {kib} <> to set up and tune the conditions on an index threshold rule. For this example, you want to detect when any of the top four sites serve more than 420,000 bytes over a 24 hour period. . Open the main menu, then click *{stack-manage-app} > {rules-ui}*. -. Create a new rule that is checked every four hours and triggers actions when the rule status changes. +. Create a new rule. + +.. Provide a rule name and select the **Index threshold** rule type. + [role="screenshot"] image::user/alerting/images/rule-types-index-threshold-select.png[Choosing an index threshold rule type] +// NOTE: This is an autogenerated screenshot. Do not edit it directly. -. Select the **Index threshold** rule type. - -. Click *Index*, and set *Indices to query* to *kibana_sample_data_logs*. +.. Select an index. Click *Index*, and set *Indices to query* to `kibana_sample_data_logs`. Set the *Time field* to `@timestamp`. + [role="screenshot"] image::user/alerting/images/rule-types-index-threshold-example-index.png[Choosing an index] +// NOTE: This is an autogenerated screenshot. Do not edit it directly. -. Set the *Time field* to *@timestamp*. -+ -[role="screenshot"] -image::user/alerting/images/rule-types-index-threshold-example-timefield.png[Choosing a time field] - -. To detect the number of bytes served during the time window, click *When* and select `sum` as the aggregation, and bytes as the field to aggregate. +.. To detect the number of bytes served during the time window, click *When* and select `sum` as the aggregation, and `bytes` as the field to aggregate. + [role="screenshot"] image::user/alerting/images/rule-types-index-threshold-example-aggregation.png[Choosing the aggregation] +// NOTE: This is an autogenerated screenshot. Do not edit it directly. -. To detect the four sites that have the most traffic, click *Over* and select `top`, enter `4`, and select `host.keyword` as the field. +.. To detect the four sites that have the most traffic, click *Over* and select `top`, enter `4`, and select `host.keyword` as the field. + [role="screenshot"] image::user/alerting/images/rule-types-index-threshold-example-grouping.png[Choosing the groups] +// NOTE: This is an autogenerated screenshot. Do not edit it directly. -. To trigger the rule when any of the top four sites exceeds 420,000 bytes over a 24 hour period, select `is above` and enter `420000`. +.. Define the condition. To trigger the rule when any of the top four sites exceeds 420,000 bytes over a 24 hour period, select `is above` and enter `420000`. Then click *For the last*, enter `24`, and select `hours`. + [role="screenshot"] image::user/alerting/images/rule-types-index-threshold-example-threshold.png[Setting the threshold] +// NOTE: This is an autogenerated screenshot. Do not edit it directly. -. Finally, click *For the last*, enter `24` and select `hours` to complete the rule configuration. +.. Schedule the rule to check every four hours. + +-- [role="screenshot"] -image::user/alerting/images/rule-types-index-threshold-example-window.png[Setting the time window] +image::user/alerting/images/rule-types-index-threshold-example-preview.png[Setting the check interval] +// NOTE: This is an autogenerated screenshot. Do not edit it directly. + +The preview chart will render showing the 24 hour sum of bytes at 4 hours intervals (the _check interval_) for the past 120 hours (the last 30 intervals). +-- -. The preview chart will render showing the 24 hour sum of bytes at 4 hours intervals (the *check every* interval) for the past 120 hours (the last 30 intervals). +.. Change the time window and observe the effect it has on the chart. Compare a 24 window to a 12 hour window. Notice the variability in the sum of bytes, due to different traffic levels during the day compared to at night. This variability would result in noisy rules, so the 24 hour window is better. The preview chart can help you find the right values for your rule. + +.. Define the actions for your rule. + +-- +You can add one or more actions to your rule to generate notifications when its conditions are met and when they are no longer met. For each action, you must select a connector, set the action frequency, and compose the notification details. +For example, add an action that uses a server log connector to write an entry to the Kibana server log: + [role="screenshot"] -image::user/alerting/images/rule-types-index-threshold-example-preview.png[Setting the time window] +image::user/alerting/images/rule-types-index-threshold-example-action.png[Add an action to the rule] +// NOTE: This is an autogenerated screenshot. Do not edit it directly. + +NOTE: The index threshold rule does not support alert summaries; therefore they do not appear in the action frequency options. + +The unique action variables that you can use in the notification are listed in <>. For more information, refer to <> and <>. +-- -. Change the time window and observe the effect it has on the chart. Compare a 24 window to a 12 hour window. Notice the variability in the sum of bytes, due to different traffic levels during the day compared to at night. This variability would result in noisy rules, so the 24 hour window is better. The preview chart can help you find the right values for your rule. +.. Save the rule. + +. Find the rule and view its details in *{stack-manage-app} > {rules-ui}*. For example, you can see the status of the rule and its alerts: + [role="screenshot"] -image::user/alerting/images/rule-types-index-threshold-example-comparison.png[Comparing two time windows] \ No newline at end of file +image::user/alerting/images/rule-types-index-threshold-example-alerts.png[View the list of alerts for the rule] + +. Delete or disable this example rule when it's no longer useful. In the detailed rule view, select *Delete rule* from the actions menu. + diff --git a/package.json b/package.json index a363b2c162e56..508a6d1e2a1af 100644 --- a/package.json +++ b/package.json @@ -535,6 +535,7 @@ "@kbn/securitysolution-ecs": "link:packages/kbn-securitysolution-ecs", "@kbn/securitysolution-es-utils": "link:packages/kbn-securitysolution-es-utils", "@kbn/securitysolution-exception-list-components": "link:packages/kbn-securitysolution-exception-list-components", + "@kbn/securitysolution-grouping": "link:packages/kbn-securitysolution-grouping", "@kbn/securitysolution-hook-utils": "link:packages/kbn-securitysolution-hook-utils", "@kbn/securitysolution-io-ts-alerting-types": "link:packages/kbn-securitysolution-io-ts-alerting-types", "@kbn/securitysolution-io-ts-list-types": "link:packages/kbn-securitysolution-io-ts-list-types", @@ -856,7 +857,7 @@ "react-fast-compare": "^2.0.4", "react-focus-on": "^3.7.0", "react-grid-layout": "^1.3.4", - "react-hook-form": "^7.43.1", + "react-hook-form": "^7.43.2", "react-intl": "^2.8.0", "react-is": "^17.0.2", "react-markdown": "^6.0.3", @@ -942,7 +943,7 @@ "@babel/eslint-plugin": "^7.19.1", "@babel/generator": "^7.21.1", "@babel/helper-plugin-utils": "^7.20.2", - "@babel/parser": "^7.21.1", + "@babel/parser": "^7.21.2", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-export-namespace-from": "^7.18.9", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", @@ -954,8 +955,8 @@ "@babel/preset-react": "^7.18.6", "@babel/preset-typescript": "^7.21.0", "@babel/register": "^7.21.0", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2", "@bazel/ibazel": "^0.16.2", "@bazel/typescript": "4.6.2", "@cypress/code-coverage": "^3.10.0", @@ -1448,7 +1449,7 @@ "svgo": "^2.8.0", "tape": "^5.0.1", "tempy": "^0.3.0", - "terser": "^5.16.4", + "terser": "^5.16.5", "terser-webpack-plugin": "^4.2.3", "tough-cookie": "^4.1.2", "tree-kill": "^1.2.2", diff --git a/packages/core/http/core-http-router-server-internal/src/request.ts b/packages/core/http/core-http-router-server-internal/src/request.ts index 7e8e927bd4671..26ac377c00bf3 100644 --- a/packages/core/http/core-http-router-server-internal/src/request.ts +++ b/packages/core/http/core-http-router-server-internal/src/request.ts @@ -201,6 +201,7 @@ export class CoreKibanaRequest< xsrfRequired: ((request.route?.settings as RouteOptions)?.app as KibanaRouteOptions)?.xsrfRequired ?? true, // some places in LP call KibanaRequest.from(request) manually. remove fallback to true before v8 + access: this.getAccess(request), tags: request.route?.settings?.tags || [], timeout: { payload: payloadTimeout, @@ -222,6 +223,13 @@ export class CoreKibanaRequest< options, }; } + /** infer route access from path if not declared */ + private getAccess(request: RawRequest): 'internal' | 'public' { + return ( + ((request.route?.settings as RouteOptions)?.app as KibanaRouteOptions)?.access ?? + (request.path.startsWith('/internal') ? 'internal' : 'public') + ); + } private getAuthRequired(request: RawRequest): boolean | 'optional' { if (isFakeRawRequest(request)) { diff --git a/packages/core/http/core-http-router-server-mocks/src/router.mock.ts b/packages/core/http/core-http-router-server-mocks/src/router.mock.ts index 1a3262fdf1f80..9b2d90e18640b 100644 --- a/packages/core/http/core-http-router-server-mocks/src/router.mock.ts +++ b/packages/core/http/core-http-router-server-mocks/src/router.mock.ts @@ -71,7 +71,7 @@ function createKibanaRequestMock

({ routeTags, routeAuthRequired, validation = {}, - kibanaRouteOptions = { xsrfRequired: true }, + kibanaRouteOptions = { xsrfRequired: true, access: 'public' }, kibanaRequestState = { requestId: '123', requestUuid: '123e4567-e89b-12d3-a456-426614174000', diff --git a/packages/core/http/core-http-server-internal/src/http_server.test.ts b/packages/core/http/core-http-server-internal/src/http_server.test.ts index 92fa63c502558..b6a120e06ab8d 100644 --- a/packages/core/http/core-http-server-internal/src/http_server.test.ts +++ b/packages/core/http/core-http-server-internal/src/http_server.test.ts @@ -817,6 +817,56 @@ test('allows attaching metadata to attach meta-data tag strings to a route', asy await supertest(innerServer.listener).get('/without-tags').expect(200, { tags: [] }); }); +test('allows declaring route access to flag a route as public or internal', async () => { + const access = 'internal'; + const { registerRouter, server: innerServer } = await server.setup(config); + + const router = new Router('', logger, enhanceWithContext); + router.get({ path: '/with-access', validate: false, options: { access } }, (context, req, res) => + res.ok({ body: { access: req.route.options.access } }) + ); + router.get({ path: '/without-access', validate: false }, (context, req, res) => + res.ok({ body: { access: req.route.options.access } }) + ); + registerRouter(router); + + await server.start(); + await supertest(innerServer.listener).get('/with-access').expect(200, { access }); + + await supertest(innerServer.listener).get('/without-access').expect(200, { access: 'public' }); +}); + +test('infers access flag from path if not defined', async () => { + const { registerRouter, server: innerServer } = await server.setup(config); + + const router = new Router('', logger, enhanceWithContext); + router.get({ path: '/internal/foo', validate: false }, (context, req, res) => + res.ok({ body: { access: req.route.options.access } }) + ); + router.get({ path: '/random/foo', validate: false }, (context, req, res) => + res.ok({ body: { access: req.route.options.access } }) + ); + router.get({ path: '/random/internal/foo', validate: false }, (context, req, res) => + res.ok({ body: { access: req.route.options.access } }) + ); + + router.get({ path: '/api/foo/internal/my-foo', validate: false }, (context, req, res) => + res.ok({ body: { access: req.route.options.access } }) + ); + registerRouter(router); + + await server.start(); + await supertest(innerServer.listener).get('/internal/foo').expect(200, { access: 'internal' }); + + await supertest(innerServer.listener).get('/random/foo').expect(200, { access: 'public' }); + await supertest(innerServer.listener) + .get('/random/internal/foo') + .expect(200, { access: 'public' }); + await supertest(innerServer.listener) + .get('/api/foo/internal/my-foo') + .expect(200, { access: 'public' }); +}); + test('exposes route details of incoming request to a route handler', async () => { const { registerRouter, server: innerServer } = await server.setup(config); @@ -833,6 +883,7 @@ test('exposes route details of incoming request to a route handler', async () => options: { authRequired: true, xsrfRequired: false, + access: 'public', tags: [], timeout: {}, }, @@ -1010,6 +1061,7 @@ test('exposes route details of incoming request to a route handler (POST + paylo options: { authRequired: true, xsrfRequired: true, + access: 'public', tags: [], timeout: { payload: 10000, diff --git a/packages/core/http/core-http-server-internal/src/http_server.ts b/packages/core/http/core-http-server-internal/src/http_server.ts index fb19795d77dce..1ef5be6c67a54 100644 --- a/packages/core/http/core-http-server-internal/src/http_server.ts +++ b/packages/core/http/core-http-server-internal/src/http_server.ts @@ -524,6 +524,7 @@ export class HttpServer { const kibanaRouteOptions: KibanaRouteOptions = { xsrfRequired: route.options.xsrfRequired ?? !isSafeMethod(route.method), + access: route.options.access ?? (route.path.startsWith('/internal') ? 'internal' : 'public'), }; this.server!.route({ diff --git a/packages/core/http/core-http-server-internal/src/lifecycle_handlers.test.ts b/packages/core/http/core-http-server-internal/src/lifecycle_handlers.test.ts index 5e182005fd40c..d13bd001bbbb9 100644 --- a/packages/core/http/core-http-server-internal/src/lifecycle_handlers.test.ts +++ b/packages/core/http/core-http-server-internal/src/lifecycle_handlers.test.ts @@ -167,6 +167,7 @@ describe('xsrf post-auth handler', () => { path: '/some-path', kibanaRouteOptions: { xsrfRequired: false, + access: 'public', }, }); diff --git a/packages/core/http/core-http-server-internal/src/lifecycle_handlers.ts b/packages/core/http/core-http-server-internal/src/lifecycle_handlers.ts index 3fe9c8ac727ff..af148413265e8 100644 --- a/packages/core/http/core-http-server-internal/src/lifecycle_handlers.ts +++ b/packages/core/http/core-http-server-internal/src/lifecycle_handlers.ts @@ -60,6 +60,7 @@ export const createVersionCheckPostAuthHandler = (kibanaVersion: string): OnPost }; }; +// TODO: implement header required for accessing internal routes. See https://github.com/elastic/kibana/issues/151940 export const createCustomHeadersPreResponseHandler = (config: HttpConfig): OnPreResponseHandler => { const { name: serverName, diff --git a/packages/core/http/core-http-server/src/router/request.ts b/packages/core/http/core-http-server/src/router/request.ts index ef33bec14f841..e0664cb1ea29a 100644 --- a/packages/core/http/core-http-server/src/router/request.ts +++ b/packages/core/http/core-http-server/src/router/request.ts @@ -19,6 +19,7 @@ import type { Headers } from './headers'; */ export interface KibanaRouteOptions extends RouteOptionsApp { xsrfRequired: boolean; + access: 'internal' | 'public'; } /** diff --git a/packages/core/http/core-http-server/src/router/route.ts b/packages/core/http/core-http-server/src/router/route.ts index 78d76bb4ba7b8..e2b11aec08e1a 100644 --- a/packages/core/http/core-http-server/src/router/route.ts +++ b/packages/core/http/core-http-server/src/router/route.ts @@ -120,6 +120,18 @@ export interface RouteConfigOptions { */ xsrfRequired?: Method extends 'get' ? never : boolean; + /** + * Defines intended request origin of the route: + * - public. The route is public, declared stable and intended for external access. + * In the future, may require an incomming request to contain a specified header. + * - internal. The route is internal and intended for internal access only. + * + * If not declared, infers access from route path: + * - access =`internal` for '/internal' route path prefix + * - access = `public` for everything else + */ + access?: 'public' | 'internal'; + /** * Additional metadata tag strings to attach to the route. */ diff --git a/packages/core/versioning/core-version-http-server/src/example.ts b/packages/core/versioning/core-version-http-server/src/example.ts index de529ccb07d9d..b63c75e86a562 100644 --- a/packages/core/versioning/core-version-http-server/src/example.ts +++ b/packages/core/versioning/core-version-http-server/src/example.ts @@ -22,7 +22,7 @@ const versionedRouter = vtk.createVersionedRouter({ router }); const versionedRoute = versionedRouter .post({ path: '/api/my-app/foo/{id?}', - options: { timeout: { payload: 60000 } }, + options: { timeout: { payload: 60000 }, access: 'public' }, }) .addVersion( { diff --git a/packages/core/versioning/core-version-http-server/src/version_http_toolkit.ts b/packages/core/versioning/core-version-http-server/src/version_http_toolkit.ts index 719e0075c0070..7d8dd7765e476 100644 --- a/packages/core/versioning/core-version-http-server/src/version_http_toolkit.ts +++ b/packages/core/versioning/core-version-http-server/src/version_http_toolkit.ts @@ -13,6 +13,7 @@ import type { RequestHandler, RouteValidatorFullConfig, RequestHandlerContextBase, + RouteConfigOptions, } from '@kbn/core-http-server'; type RqCtx = RequestHandlerContextBase; @@ -45,7 +46,7 @@ export interface CreateVersionedRouterArgs { * const versionedRoute = versionedRouter * .post({ * path: '/api/my-app/foo/{id?}', - * options: { timeout: { payload: 60000 } }, + * options: { timeout: { payload: 60000 }, access: 'public' }, * }) * .addVersion( * { @@ -99,14 +100,28 @@ export interface VersionHTTPToolkit { ): VersionedRouter; } +/** + * Converts an input property from optional to required. Needed for making RouteConfigOptions['access'] required. + */ +type WithRequiredProperty = Type & { + [Property in Key]-?: Type[Property]; +}; + +/** + * Versioned route access flag, required + * - '/api/foo' is 'public' + * - '/internal/my-foo' is 'internal' + * Required + */ +type VersionedRouteConfigOptions = WithRequiredProperty, 'access'>; /** * Configuration for a versioned route * @experimental */ export type VersionedRouteConfig = Omit< RouteConfig, - 'validate' ->; + 'validate' | 'options' +> & { options: VersionedRouteConfigOptions }; /** * Create an {@link VersionedRoute | versioned route}. diff --git a/packages/kbn-apm-synthtrace-client/index.ts b/packages/kbn-apm-synthtrace-client/index.ts index 82f8efe28b40a..1868cb188582e 100644 --- a/packages/kbn-apm-synthtrace-client/index.ts +++ b/packages/kbn-apm-synthtrace-client/index.ts @@ -20,6 +20,7 @@ export type { } from './src/lib/apm/mobile_device'; export { httpExitSpan } from './src/lib/apm/span'; export { DistributedTrace } from './src/lib/dsl/distributed_trace_client'; +export { serviceMap } from './src/lib/dsl/service_map'; export type { Fields } from './src/lib/entity'; export type { Serializable } from './src/lib/serializable'; export { timerange } from './src/lib/timerange'; diff --git a/packages/kbn-apm-synthtrace-client/src/lib/dsl/service_map.test.ts b/packages/kbn-apm-synthtrace-client/src/lib/dsl/service_map.test.ts new file mode 100644 index 0000000000000..90078f584c172 --- /dev/null +++ b/packages/kbn-apm-synthtrace-client/src/lib/dsl/service_map.test.ts @@ -0,0 +1,278 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { pick } from 'lodash'; +import { ApmFields } from '../apm/apm_fields'; +import { BaseSpan } from '../apm/base_span'; +import { serviceMap, ServiceMapOpts } from './service_map'; + +describe('serviceMap', () => { + const TIMESTAMP = 1677693600000; + + describe('Basic definition', () => { + const BASIC_SERVICE_MAP_OPTS: ServiceMapOpts = { + services: [ + 'frontend-rum', + 'frontend-node', + 'advertService', + 'checkoutService', + 'cartService', + 'paymentService', + 'productCatalogService', + ], + definePaths([rum, node, adv, chk, cart, pay, prod]) { + return [ + [rum, node, adv, 'elasticsearch'], + [rum, node, cart, 'redis'], + [rum, node, chk, pay], + [chk, cart, 'redis'], + [rum, node, prod, 'elasticsearch'], + [chk, prod], + ]; + }, + }; + + it('should create an accurate set of trace paths', () => { + const serviceMapGenerator = serviceMap(BASIC_SERVICE_MAP_OPTS); + const transactions = serviceMapGenerator(TIMESTAMP); + expect(transactions.map(getTracePathLabel)).toMatchInlineSnapshot(` + Array [ + "frontend-rum → frontend-node → advertService → elasticsearch", + "frontend-rum → frontend-node → cartService → redis", + "frontend-rum → frontend-node → checkoutService → paymentService", + "checkoutService → cartService → redis", + "frontend-rum → frontend-node → productCatalogService → elasticsearch", + "checkoutService → productCatalogService", + ] + `); + }); + + it('should use a default agent name if not defined', () => { + const serviceMapGenerator = serviceMap(BASIC_SERVICE_MAP_OPTS); + const transactions = serviceMapGenerator(TIMESTAMP); + const traceDocs = transactions.flatMap(getTraceDocsSubset); + for (const doc of traceDocs) { + expect(doc).toHaveProperty(['agent.name'], 'nodejs'); + } + }); + + it('should use a default transaction/span names if not defined', () => { + const serviceMapGenerator = serviceMap(BASIC_SERVICE_MAP_OPTS); + const transactions = serviceMapGenerator(TIMESTAMP); + const traceDocs = transactions.map(getTraceDocsSubset); + for (let i = 0; i < traceDocs.length; i++) { + for (const doc of traceDocs[i]) { + const serviceName = doc['service.name']; + if (doc['processor.event'] === 'transaction') { + expect(doc).toHaveProperty(['transaction.name'], `GET /api/${serviceName}/${i}`); + } + if (doc['processor.event'] === 'span') { + if (doc['span.type'] === 'db') { + switch (doc['span.subtype']) { + case 'elasticsearch': + expect(doc).toHaveProperty(['span.name'], `GET ad-*/_search`); + break; + case 'redis': + expect(doc).toHaveProperty(['span.name'], `INCR item:i012345:count`); + break; + case 'sqlite': + expect(doc).toHaveProperty(['span.name'], `SELECT * FROM items`); + break; + } + } else { + expect(doc).toHaveProperty(['span.name'], `GET /api/${serviceName}/${i}`); + } + } + } + } + }); + + it('should create one parent transaction per trace', () => { + const serviceMapGenerator = serviceMap(BASIC_SERVICE_MAP_OPTS); + const transactions = serviceMapGenerator(TIMESTAMP); + const traces = transactions.map(getTraceDocsSubset); + for (const traceDocs of traces) { + const [transaction, ...spans] = traceDocs; + expect(transaction).toHaveProperty(['processor.event'], 'transaction'); + expect( + spans.every(({ 'processor.event': processorEvent }) => processorEvent === 'span') + ).toBe(true); + } + }); + }); + describe('Detailed definition', () => { + const DETAILED_SERVICE_MAP_OPTS: ServiceMapOpts = { + services: [ + { 'frontend-rum': 'rum-js' }, + { 'frontend-node': 'nodejs' }, + { advertService: 'java' }, + { checkoutService: 'go' }, + { cartService: 'dotnet' }, + { paymentService: 'nodejs' }, + { productCatalogService: 'go' }, + ], + definePaths([rum, node, adv, chk, cart, pay, prod]) { + return [ + [ + [rum, 'fetchAd'], + [node, 'GET /nodejs/adTag'], + [adv, 'APIRestController#getAd'], + ['elasticsearch', 'GET ad-*/_search'], + ], + [ + [rum, 'AddToCart'], + [node, 'POST /nodejs/addToCart'], + [cart, 'POST /dotnet/reserveProduct'], + ['redis', 'DECR inventory:i012345:stock'], + ], + { + path: [ + [rum, 'Checkout'], + [node, 'POST /nodejs/placeOrder'], + [chk, 'POST /go/placeOrder'], + [pay, 'POST /nodejs/processPayment'], + ], + transaction: (t) => t.defaults({ 'labels.name': 'transaction hook test' }), + }, + [ + [chk, 'POST /go/clearCart'], + [cart, 'PUT /dotnet/cart/c12345/reset'], + ['redis', 'INCR inventory:i012345:stock'], + ], + [ + [rum, 'ProductDashboard'], + [node, 'GET /nodejs/products'], + [prod, 'GET /go/product-catalog'], + ['elasticsearch', 'GET product-*/_search'], + ], + [ + [chk, 'PUT /go/update-inventory'], + [prod, 'PUT /go/product/i012345'], + ], + [pay], + ]; + }, + }; + + const SERVICE_AGENT_MAP: Record = { + 'frontend-rum': 'rum-js', + 'frontend-node': 'nodejs', + advertService: 'java', + checkoutService: 'go', + cartService: 'dotnet', + paymentService: 'nodejs', + productCatalogService: 'go', + }; + + it('should use the defined agent name for a given service', () => { + const serviceMapGenerator = serviceMap(DETAILED_SERVICE_MAP_OPTS); + const transactions = serviceMapGenerator(TIMESTAMP); + const traceDocs = transactions.flatMap(getTraceDocsSubset); + for (const doc of traceDocs) { + if (!(doc['service.name']! in SERVICE_AGENT_MAP)) { + throw new Error(`Unexpected service name '${doc['service.name']}' found`); + } + + expect(doc).toHaveProperty(['agent.name'], SERVICE_AGENT_MAP[doc['service.name']!]); + } + }); + + it('should use the defined transaction/span names for each trace document', () => { + const serviceMapGenerator = serviceMap(DETAILED_SERVICE_MAP_OPTS); + const transactions = serviceMapGenerator(TIMESTAMP); + const traceDocs = transactions.map((transaction) => { + return getTraceDocsSubset(transaction).map( + ({ 'span.name': spanName, 'transaction.name': transactionName }) => + transactionName || spanName + ); + }); + expect(traceDocs).toMatchInlineSnapshot(` + Array [ + Array [ + "fetchAd", + "fetchAd", + "GET /nodejs/adTag", + "APIRestController#getAd", + "GET ad-*/_search", + ], + Array [ + "AddToCart", + "AddToCart", + "POST /nodejs/addToCart", + "POST /dotnet/reserveProduct", + "DECR inventory:i012345:stock", + ], + Array [ + "Checkout", + "Checkout", + "POST /nodejs/placeOrder", + "POST /go/placeOrder", + "POST /nodejs/processPayment", + ], + Array [ + "POST /go/clearCart", + "POST /go/clearCart", + "PUT /dotnet/cart/c12345/reset", + "INCR inventory:i012345:stock", + ], + Array [ + "ProductDashboard", + "ProductDashboard", + "GET /nodejs/products", + "GET /go/product-catalog", + "GET product-*/_search", + ], + Array [ + "PUT /go/update-inventory", + "PUT /go/update-inventory", + "PUT /go/product/i012345", + ], + Array [ + "GET /api/paymentService/6", + "GET /api/paymentService/6", + ], + ] + `); + }); + + it('should apply the transaction hook function if defined', () => { + const serviceMapGenerator = serviceMap(DETAILED_SERVICE_MAP_OPTS); + const transactions = serviceMapGenerator(TIMESTAMP); + expect(transactions[2].fields['labels.name']).toBe('transaction hook test'); + }); + }); +}); + +function getTraceDocsSubset(transaction: BaseSpan): ApmFields[] { + const subsetFields = pick(transaction.fields, [ + 'processor.event', + 'service.name', + 'agent.name', + 'transaction.name', + 'span.name', + 'span.type', + 'span.subtype', + 'span.destination.service.resource', + ]); + + const children = transaction.getChildren(); + if (children) { + const childFields = children.flatMap((child) => getTraceDocsSubset(child)); + return [subsetFields, ...childFields]; + } + return [subsetFields]; +} + +function getTracePathLabel(transaction: BaseSpan) { + const traceDocs = getTraceDocsSubset(transaction); + const traceSpans = traceDocs.filter((doc) => doc['processor.event'] === 'span'); + const spanLabels = traceSpans.map((span) => + span['span.type'] === 'db' ? span['span.subtype'] : span['service.name'] + ); + return spanLabels.join(' → '); +} diff --git a/packages/kbn-apm-synthtrace-client/src/lib/dsl/service_map.ts b/packages/kbn-apm-synthtrace-client/src/lib/dsl/service_map.ts new file mode 100644 index 0000000000000..4c91352b11d02 --- /dev/null +++ b/packages/kbn-apm-synthtrace-client/src/lib/dsl/service_map.ts @@ -0,0 +1,156 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { AgentName } from '../../types/agent_names'; +import { apm } from '../apm'; +import { Instance } from '../apm/instance'; +import { elasticsearchSpan, redisSpan, sqliteSpan, Span } from '../apm/span'; +import { Transaction } from '../apm/transaction'; + +const ENVIRONMENT = 'Synthtrace: service_map'; + +function service(serviceName: string, agentName: AgentName, environment?: string) { + return apm + .service({ name: serviceName, environment: environment || ENVIRONMENT, agentName }) + .instance(serviceName); +} + +type DbSpan = 'elasticsearch' | 'redis' | 'sqlite'; +type ServiceMapNode = Instance | DbSpan; +type TransactionName = string; +type TraceItem = ServiceMapNode | [ServiceMapNode, TransactionName]; +type TracePath = TraceItem[]; + +function getTraceItem(traceItem: TraceItem) { + if (Array.isArray(traceItem)) { + const transactionName = traceItem[1]; + if (typeof traceItem[0] === 'string') { + const dbSpan = traceItem[0]; + return { dbSpan, transactionName, serviceInstance: undefined }; + } else { + const serviceInstance = traceItem[0]; + return { dbSpan: undefined, transactionName, serviceInstance }; + } + } else if (typeof traceItem === 'string') { + const dbSpan = traceItem; + return { dbSpan, transactionName: undefined, serviceInstance: undefined }; + } else { + const serviceInstance = traceItem; + return { dbSpan: undefined, transactionName: undefined, serviceInstance }; + } +} + +function getTransactionName( + transactionName: string | undefined, + serviceInstance: Instance, + index: number +) { + return transactionName || `GET /api/${serviceInstance.fields['service.name']}/${index}`; +} + +function getChildren( + childTraceItems: TracePath, + parentServiceInstance: Instance, + timestamp: number, + index: number +): Span[] { + if (childTraceItems.length === 0) { + return []; + } + const [first, ...rest] = childTraceItems; + const { dbSpan, serviceInstance, transactionName } = getTraceItem(first); + if (dbSpan) { + switch (dbSpan) { + case 'elasticsearch': + return [ + parentServiceInstance + .span(elasticsearchSpan(transactionName || 'GET ad-*/_search')) + .timestamp(timestamp) + .duration(1000), + ]; + case 'redis': + return [ + parentServiceInstance + .span(redisSpan(transactionName || 'INCR item:i012345:count')) + .timestamp(timestamp) + .duration(1000), + ]; + case 'sqlite': + return [ + parentServiceInstance + .span(sqliteSpan(transactionName || 'SELECT * FROM items')) + .timestamp(timestamp) + .duration(1000), + ]; + } + } + const childSpan = serviceInstance + .span({ + spanName: getTransactionName(transactionName, serviceInstance, index), + spanType: 'app', + }) + .timestamp(timestamp) + .duration(1000) + .children(...getChildren(rest, serviceInstance, timestamp, index)); + if (rest[0]) { + const next = getTraceItem(rest[0]); + if (next.serviceInstance) { + return [childSpan.destination(next.serviceInstance.fields['service.name']!)]; + } + } + return [childSpan]; +} + +interface TracePathOpts { + path: TracePath; + transaction?: (transaction: Transaction) => Transaction; +} +type PathDef = TracePath | TracePathOpts; +export interface ServiceMapOpts { + services: Array; + definePaths: (services: Instance[]) => PathDef[]; + environment?: string; +} + +export function serviceMap(options: ServiceMapOpts) { + const serviceInstances = options.services.map((s) => { + if (typeof s === 'string') { + return service(s, 'nodejs', options.environment); + } + return service(Object.keys(s)[0], Object.values(s)[0], options.environment); + }); + return (timestamp: number) => { + const tracePaths = options.definePaths(serviceInstances); + return tracePaths.map((traceDef, index) => { + const tracePath = 'path' in traceDef ? traceDef.path : traceDef; + const [first] = tracePath; + + const firstTraceItem = getTraceItem(first); + if (firstTraceItem.serviceInstance === undefined) { + throw new Error('First trace item must be a service instance'); + } + const transactionName = getTransactionName( + firstTraceItem.transactionName, + firstTraceItem.serviceInstance, + index + ); + + const transaction = firstTraceItem.serviceInstance + .transaction({ transactionName, transactionType: 'request' }) + .timestamp(timestamp) + .duration(1000) + .children(...getChildren(tracePath, firstTraceItem.serviceInstance, timestamp, index)); + + if ('transaction' in traceDef && traceDef.transaction) { + return traceDef.transaction(transaction); + } + + return transaction; + }); + }; +} diff --git a/packages/kbn-apm-synthtrace-client/src/types/agent_names.ts b/packages/kbn-apm-synthtrace-client/src/types/agent_names.ts new file mode 100644 index 0000000000000..d9e3a371e0e87 --- /dev/null +++ b/packages/kbn-apm-synthtrace-client/src/types/agent_names.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +type ElasticAgentName = + | 'go' + | 'java' + | 'js-base' + | 'iOS/swift' + | 'rum-js' + | 'nodejs' + | 'python' + | 'dotnet' + | 'ruby' + | 'php' + | 'android/java'; + +type OpenTelemetryAgentName = + | 'otlp' + | 'opentelemetry/cpp' + | 'opentelemetry/dotnet' + | 'opentelemetry/erlang' + | 'opentelemetry/go' + | 'opentelemetry/java' + | 'opentelemetry/nodejs' + | 'opentelemetry/php' + | 'opentelemetry/python' + | 'opentelemetry/ruby' + | 'opentelemetry/swift' + | 'opentelemetry/webjs'; + +// Unable to reference AgentName from '@kbn/apm-plugin/typings/es_schemas/ui/fields/agent' due to circular reference +export type AgentName = ElasticAgentName | OpenTelemetryAgentName; diff --git a/packages/kbn-apm-synthtrace/src/scenarios/service_map.ts b/packages/kbn-apm-synthtrace/src/scenarios/service_map.ts index 41e499320fd50..f39d4bdd1e221 100644 --- a/packages/kbn-apm-synthtrace/src/scenarios/service_map.ts +++ b/packages/kbn-apm-synthtrace/src/scenarios/service_map.ts @@ -6,116 +6,71 @@ * Side Public License, v 1. */ -import { apm, ApmFields, Instance } from '@kbn/apm-synthtrace-client'; -import { Transaction } from '@kbn/apm-synthtrace-client/src/lib/apm/transaction'; -import { AgentName } from '@kbn/apm-plugin/typings/es_schemas/ui/fields/agent'; +import { ApmFields, serviceMap } from '@kbn/apm-synthtrace-client'; import { Scenario } from '../cli/scenario'; import { RunOptions } from '../cli/utils/parse_run_cli_flags'; import { getSynthtraceEnvironment } from '../lib/utils/get_synthtrace_environment'; -const ENVIRONMENT = getSynthtraceEnvironment(__filename); - -function generateTrace( - timestamp: number, - transactionName: string, - order: Instance[], - db?: 'elasticsearch' | 'redis' -) { - return order - .concat() - .reverse() - .reduce((prev, instance, index) => { - const invertedIndex = order.length - index - 1; - - const duration = 50; - const time = timestamp + invertedIndex * 10; - - const transaction: Transaction = instance - .transaction({ transactionName }) - .timestamp(time) - .duration(duration); - - if (prev) { - const next = order[invertedIndex + 1].fields['service.name']!; - transaction.children( - instance - .span({ spanName: `GET ${next}/api`, spanType: 'external', spanSubtype: 'http' }) - .destination(next) - .duration(duration) - .timestamp(time + 1) - .children(prev) - ); - } else if (db) { - transaction.children( - instance - .span({ spanName: db, spanType: 'db', spanSubtype: db }) - .destination(db) - .duration(duration) - .timestamp(time + 1) - ); - } - - return transaction; - }, undefined)!; -} - -function service(serviceName: string, agentName: AgentName) { - return apm - .service({ name: serviceName, environment: ENVIRONMENT, agentName }) - .instance(serviceName); -} +const environment = getSynthtraceEnvironment(__filename); const scenario: Scenario = async (runOptions: RunOptions) => { return { generate: ({ range }) => { - const frontendRum = service('frontend-rum', 'rum-js'); - const frontendNode = service('frontend-node', 'nodejs'); - const advertService = service('advertService', 'java'); - const checkoutService = service('checkoutService', 'go'); - const cartService = service('cartService', 'dotnet'); - const paymentService = service('paymentService', 'nodejs'); - const productCatalogService = service('productCatalogService', 'go'); return range .interval('1s') .rate(3) - .generator((timestamp) => { - return [ - generateTrace( - timestamp, - 'GET /api/adTag', - [frontendRum, frontendNode, advertService], - 'elasticsearch' - ), - generateTrace( - timestamp, - 'POST /api/addToCart', - [frontendRum, frontendNode, cartService], - 'redis' - ), - generateTrace(timestamp, 'POST /api/checkout', [ - frontendRum, - frontendNode, - checkoutService, - paymentService, - ]), - generateTrace( - timestamp, - 'DELETE /api/clearCart', - [checkoutService, cartService], - 'redis' - ), - generateTrace( - timestamp, - 'GET /api/products', - [frontendRum, frontendNode, productCatalogService], - 'elasticsearch' - ), - generateTrace(timestamp, 'PUT /api/updateInventory', [ - checkoutService, - productCatalogService, - ]), - ]; - }); + .generator( + serviceMap({ + services: [ + { 'frontend-rum': 'rum-js' }, + { 'frontend-node': 'nodejs' }, + { advertService: 'java' }, + { checkoutService: 'go' }, + { cartService: 'dotnet' }, + { paymentService: 'nodejs' }, + { productCatalogService: 'go' }, + ], + environment, + definePaths([rum, node, adv, chk, cart, pay, prod]) { + return [ + [ + [rum, 'fetchAd'], + [node, 'GET /nodejs/adTag'], + [adv, 'APIRestController#getAd'], + ['elasticsearch', 'GET ad-*/_search'], + ], + [ + [rum, 'AddToCart'], + [node, 'POST /nodejs/addToCart'], + [cart, 'POST /dotnet/reserveProduct'], + ['redis', 'DECR inventory:i012345:stock'], + ], + [ + [rum, 'Checkout'], + [node, 'POST /nodejs/placeOrder'], + [chk, 'POST /go/placeOrder'], + [pay, 'POST /nodejs/processPayment'], + ], + [ + [chk, 'POST /go/clearCart'], + [cart, 'PUT /dotnet/cart/c12345/reset'], + ['redis', 'INCR inventory:i012345:stock'], + ], + [ + [rum, 'ProductDashboard'], + [node, 'GET /nodejs/products'], + [prod, 'GET /go/product-catalog'], + ['elasticsearch', 'GET product-*/_search'], + ], + [ + [chk, 'PUT /go/update-inventory'], + [prod, 'PUT /go/product/i012345'], + ], + [pay], + ]; + }, + }) + ); }, }; }; diff --git a/packages/kbn-apm-synthtrace/tsconfig.json b/packages/kbn-apm-synthtrace/tsconfig.json index 3db0ec03f6f4d..22ff0442879ab 100644 --- a/packages/kbn-apm-synthtrace/tsconfig.json +++ b/packages/kbn-apm-synthtrace/tsconfig.json @@ -8,7 +8,6 @@ "kbn_references": [ "@kbn/datemath", "@kbn/apm-synthtrace-client", - "@kbn/apm-plugin" ], "exclude": [ "target/**/*", diff --git a/packages/kbn-securitysolution-exception-list-components/src/list_header/__snapshots__/list_header.test.tsx.snap b/packages/kbn-securitysolution-exception-list-components/src/list_header/__snapshots__/list_header.test.tsx.snap index 3311b524657af..e23da950c3486 100644 --- a/packages/kbn-securitysolution-exception-list-components/src/list_header/__snapshots__/list_header.test.tsx.snap +++ b/packages/kbn-securitysolution-exception-list-components/src/list_header/__snapshots__/list_header.test.tsx.snap @@ -185,7 +185,7 @@ Object { - Manage rules + Link rules @@ -565,7 +565,7 @@ Object { - Manage rules + Link rules @@ -848,7 +848,7 @@ Object { - Manage rules + Link rules @@ -1074,7 +1074,7 @@ Object { - Manage rules + Link rules @@ -1329,7 +1329,7 @@ Object { - Manage rules + Link rules @@ -1528,7 +1528,7 @@ Object { - Manage rules + Link rules diff --git a/packages/kbn-securitysolution-exception-list-components/src/list_header/menu_items/__snapshots__/menu_items.test.tsx.snap b/packages/kbn-securitysolution-exception-list-components/src/list_header/menu_items/__snapshots__/menu_items.test.tsx.snap index ca6a0b1d4018c..16bda1172b17c 100644 --- a/packages/kbn-securitysolution-exception-list-components/src/list_header/menu_items/__snapshots__/menu_items.test.tsx.snap +++ b/packages/kbn-securitysolution-exception-list-components/src/list_header/menu_items/__snapshots__/menu_items.test.tsx.snap @@ -242,7 +242,7 @@ Object { - Manage rules + Link rules @@ -309,7 +309,7 @@ Object { - Manage rules + Link rules @@ -433,7 +433,7 @@ Object { - Manage rules + Link rules @@ -580,7 +580,7 @@ Object { - Manage rules + Link rules @@ -1022,7 +1022,7 @@ Object { - Manage rules + Link rules @@ -1117,7 +1117,7 @@ Object { - Manage rules + Link rules diff --git a/packages/kbn-securitysolution-exception-list-components/src/list_header/menu_items/index.tsx b/packages/kbn-securitysolution-exception-list-components/src/list_header/menu_items/index.tsx index 14aa823046ff4..9062162b30a47 100644 --- a/packages/kbn-securitysolution-exception-list-components/src/list_header/menu_items/index.tsx +++ b/packages/kbn-securitysolution-exception-list-components/src/list_header/menu_items/index.tsx @@ -81,7 +81,7 @@ const MenuItemsComponent: FC = ({ if (typeof onManageRules === 'function') onManageRules(); }} > - {i18n.EXCEPTION_LIST_HEADER_MANAGE_RULES_BUTTON} + {i18n.EXCEPTION_LIST_HEADER_LINK_RULES_BUTTON} )} diff --git a/packages/kbn-securitysolution-exception-list-components/src/translations.ts b/packages/kbn-securitysolution-exception-list-components/src/translations.ts index c80a6a07a6697..b769b9b10846a 100644 --- a/packages/kbn-securitysolution-exception-list-components/src/translations.ts +++ b/packages/kbn-securitysolution-exception-list-components/src/translations.ts @@ -67,10 +67,10 @@ export const EXCEPTION_LIST_HEADER_DELETE_ACTION = i18n.translate( defaultMessage: 'Delete exception list', } ); -export const EXCEPTION_LIST_HEADER_MANAGE_RULES_BUTTON = i18n.translate( - 'exceptionList-components.exception_list_header_manage_rules_button', +export const EXCEPTION_LIST_HEADER_LINK_RULES_BUTTON = i18n.translate( + 'exceptionList-components.exception_list_header_link_rules_button', { - defaultMessage: 'Manage rules', + defaultMessage: 'Link rules', } ); diff --git a/packages/kbn-securitysolution-grouping/README.md b/packages/kbn-securitysolution-grouping/README.md new file mode 100644 index 0000000000000..87b8047720a37 --- /dev/null +++ b/packages/kbn-securitysolution-grouping/README.md @@ -0,0 +1,3 @@ +# @kbn/securitysolution-grouping + +Grouping component and query. Currently only consumed by security solution alerts table. Package is a WIP. Refactoring to make generic https://github.com/elastic/kibana/issues/152491 diff --git a/packages/kbn-securitysolution-grouping/index.tsx b/packages/kbn-securitysolution-grouping/index.tsx new file mode 100644 index 0000000000000..c9b970a1aed77 --- /dev/null +++ b/packages/kbn-securitysolution-grouping/index.tsx @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; +import { + GroupSelectorProps, + Grouping, + GroupingProps, + GroupSelector, + RawBucket, + getGroupingQuery, + isNoneGroup, +} from './src'; +import type { NamedAggregation, GroupingFieldTotalAggregation, GroupingAggregation } from './src'; + +export const getGrouping = (props: GroupingProps): React.ReactElement => ( + +); + +export const getGroupSelector = ( + props: GroupSelectorProps +): React.ReactElement => ; + +export { isNoneGroup, getGroupingQuery }; + +export type { GroupingAggregation, GroupingFieldTotalAggregation, NamedAggregation, RawBucket }; diff --git a/packages/kbn-securitysolution-grouping/jest.config.js b/packages/kbn-securitysolution-grouping/jest.config.js new file mode 100644 index 0000000000000..6ad3880e11f1a --- /dev/null +++ b/packages/kbn-securitysolution-grouping/jest.config.js @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-securitysolution-grouping'], + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/packages/kbn-securitysolution-grouping/**/*.{ts,tsx}', + '!/packages/kbn-securitysolution-grouping/**/*.test', + '!/packages/kbn-securitysolution-grouping/**/types/*', + '!/packages/kbn-securitysolution-grouping/**/*.type', + '!/packages/kbn-securitysolution-grouping/**/*.styles', + '!/packages/kbn-securitysolution-grouping/**/mocks/*', + '!/packages/kbn-securitysolution-grouping/**/*.config', + '!/packages/kbn-securitysolution-grouping/**/translations', + '!/packages/kbn-securitysolution-grouping/**/types/*', + ], + setupFilesAfterEnv: ['/packages/kbn-securitysolution-grouping/setup_test.ts'], +}; diff --git a/packages/kbn-securitysolution-grouping/kibana.jsonc b/packages/kbn-securitysolution-grouping/kibana.jsonc new file mode 100644 index 0000000000000..532eb8f883dfc --- /dev/null +++ b/packages/kbn-securitysolution-grouping/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "type": "shared-common", + "id": "@kbn/securitysolution-grouping", + "owner": "@elastic/security-threat-hunting-explore" +} diff --git a/packages/kbn-securitysolution-grouping/package.json b/packages/kbn-securitysolution-grouping/package.json new file mode 100644 index 0000000000000..e5baa64c3a1f4 --- /dev/null +++ b/packages/kbn-securitysolution-grouping/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/securitysolution-grouping", + "private": true, + "version": "1.0.0", + "license": "SSPL-1.0 OR Elastic License 2.0" +} \ No newline at end of file diff --git a/packages/kbn-securitysolution-grouping/setup_test.ts b/packages/kbn-securitysolution-grouping/setup_test.ts new file mode 100644 index 0000000000000..bb55d97ec9302 --- /dev/null +++ b/packages/kbn-securitysolution-grouping/setup_test.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +// eslint-disable-next-line import/no-extraneous-dependencies +import '@testing-library/jest-dom'; diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/accordion_panel/group_stats.test.tsx b/packages/kbn-securitysolution-grouping/src/components/accordion_panel/group_stats.test.tsx similarity index 81% rename from x-pack/plugins/security_solution/public/common/components/grouping/accordion_panel/group_stats.test.tsx rename to packages/kbn-securitysolution-grouping/src/components/accordion_panel/group_stats.test.tsx index 175a00ee7d2ac..ab7ab5d543f4b 100644 --- a/x-pack/plugins/security_solution/public/common/components/grouping/accordion_panel/group_stats.test.tsx +++ b/packages/kbn-securitysolution-grouping/src/components/accordion_panel/group_stats.test.tsx @@ -1,14 +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. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import React from 'react'; import { fireEvent, render } from '@testing-library/react'; import { GroupStats } from './group_stats'; -import { TestProviders } from '../../../mock'; const onTakeActionsOpen = jest.fn(); const testProps = { @@ -49,11 +49,7 @@ describe('Group stats', () => { jest.clearAllMocks(); }); it('renders each stat item', () => { - const { getByTestId } = render( - - - - ); + const { getByTestId } = render(); expect(getByTestId('group-stats')).toBeInTheDocument(); testProps.badgeMetricStats.forEach(({ title: stat }) => { expect(getByTestId(`metric-${stat}`)).toBeInTheDocument(); @@ -63,11 +59,7 @@ describe('Group stats', () => { }); }); it('when onTakeActionsOpen is defined, call onTakeActionsOpen on popover click', () => { - const { getByTestId, queryByTestId } = render( - - - - ); + const { getByTestId, queryByTestId } = render(); fireEvent.click(getByTestId('take-action-button')); expect(onTakeActionsOpen).toHaveBeenCalled(); ['takeActionItem-1', 'takeActionItem-2'].forEach((actionItem) => { @@ -75,11 +67,7 @@ describe('Group stats', () => { }); }); it('when onTakeActionsOpen is undefined, render take actions dropdown on popover click', () => { - const { getByTestId } = render( - - - - ); + const { getByTestId } = render(); fireEvent.click(getByTestId('take-action-button')); ['takeActionItem-1', 'takeActionItem-2'].forEach((actionItem) => { expect(getByTestId(actionItem)).toBeInTheDocument(); diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/accordion_panel/group_stats.tsx b/packages/kbn-securitysolution-grouping/src/components/accordion_panel/group_stats.tsx similarity index 87% rename from x-pack/plugins/security_solution/public/common/components/grouping/accordion_panel/group_stats.tsx rename to packages/kbn-securitysolution-grouping/src/components/accordion_panel/group_stats.tsx index 9611019434c86..6de1bf6ef4678 100644 --- a/x-pack/plugins/security_solution/public/common/components/grouping/accordion_panel/group_stats.tsx +++ b/packages/kbn-securitysolution-grouping/src/components/accordion_panel/group_stats.tsx @@ -1,8 +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; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import { @@ -16,7 +17,7 @@ import { } from '@elastic/eui'; import React, { useCallback, useMemo, useState } from 'react'; import type { BadgeMetric, CustomMetric } from '.'; -import { StatsContainer } from '../styles'; +import { statsContainerCss } from '../styles'; import { TAKE_ACTION } from '../translations'; import type { RawBucket } from '../types'; @@ -46,7 +47,7 @@ const GroupStatsComponent = ({ () => badgeMetricStats?.map((metric) => ( - + <> {metric.title} @@ -58,7 +59,7 @@ const GroupStatsComponent = ({ - + )), [badgeMetricStats] @@ -68,10 +69,10 @@ const GroupStatsComponent = ({ () => customMetricStats?.map((customMetric) => ( - + {customMetric.title} {customMetric.customStatRenderer} - + )), [customMetricStats] diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/accordion_panel/helpers.ts b/packages/kbn-securitysolution-grouping/src/components/accordion_panel/helpers.ts similarity index 78% rename from x-pack/plugins/security_solution/public/common/components/grouping/accordion_panel/helpers.ts rename to packages/kbn-securitysolution-grouping/src/components/accordion_panel/helpers.ts index d496b8d79068a..5529d5bf521c0 100644 --- a/x-pack/plugins/security_solution/public/common/components/grouping/accordion_panel/helpers.ts +++ b/packages/kbn-securitysolution-grouping/src/components/accordion_panel/helpers.ts @@ -1,8 +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; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ export const createGroupFilter = (selectedGroup: string, query?: string) => diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/accordion_panel/index.test.tsx b/packages/kbn-securitysolution-grouping/src/components/accordion_panel/index.test.tsx similarity index 93% rename from x-pack/plugins/security_solution/public/common/components/grouping/accordion_panel/index.test.tsx rename to packages/kbn-securitysolution-grouping/src/components/accordion_panel/index.test.tsx index db78f6f2e9257..9aa4b51437130 100644 --- a/x-pack/plugins/security_solution/public/common/components/grouping/accordion_panel/index.test.tsx +++ b/packages/kbn-securitysolution-grouping/src/components/accordion_panel/index.test.tsx @@ -1,8 +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; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import { fireEvent, render } from '@testing-library/react'; diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/accordion_panel/index.tsx b/packages/kbn-securitysolution-grouping/src/components/accordion_panel/index.tsx similarity index 92% rename from x-pack/plugins/security_solution/public/common/components/grouping/accordion_panel/index.tsx rename to packages/kbn-securitysolution-grouping/src/components/accordion_panel/index.tsx index 548aa81272cd9..124c4ede22485 100644 --- a/x-pack/plugins/security_solution/public/common/components/grouping/accordion_panel/index.tsx +++ b/packages/kbn-securitysolution-grouping/src/components/accordion_panel/index.tsx @@ -1,14 +1,15 @@ /* * 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. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import { EuiAccordion, EuiFlexGroup, EuiFlexItem, EuiTitle } from '@elastic/eui'; import type { Filter } from '@kbn/es-query'; import React, { useCallback, useMemo } from 'react'; -import { firstNonNullValue } from '../../../../../common/endpoint/models/ecs_safety_helpers'; +import { firstNonNullValue } from '../../helpers'; import type { RawBucket } from '../types'; import { createGroupFilter } from './helpers'; diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/empty_resuls_panel.tsx b/packages/kbn-securitysolution-grouping/src/components/empty_resuls_panel.tsx similarity index 71% rename from x-pack/plugins/security_solution/public/common/components/grouping/empty_resuls_panel.tsx rename to packages/kbn-securitysolution-grouping/src/components/empty_resuls_panel.tsx index b51cd14e84bab..8a706684d0c7e 100644 --- a/x-pack/plugins/security_solution/public/common/components/grouping/empty_resuls_panel.tsx +++ b/packages/kbn-securitysolution-grouping/src/components/empty_resuls_panel.tsx @@ -1,15 +1,15 @@ /* * 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. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import { EuiFlexGroup, EuiFlexItem, EuiImage, EuiPanel, EuiText, EuiTitle } from '@elastic/eui'; import React from 'react'; -import type { CoreStart } from '@kbn/core/public'; import { FormattedMessage } from '@kbn/i18n-react'; -import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { noResultsIllustrationLight } from '@kbn/shared-svg'; const panelStyle = { maxWidth: 500, @@ -23,8 +23,6 @@ const heights = { export const EmptyGroupingComponent: React.FC<{ height?: keyof typeof heights }> = ({ height = 'tall', }) => { - const { http } = useKibana().services; - return ( @@ -36,27 +34,21 @@ export const EmptyGroupingComponent: React.FC<{ height?: keyof typeof heights }>

- + diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/groups_selector/custom_field_panel.tsx b/packages/kbn-securitysolution-grouping/src/components/group_selector/custom_field_panel.tsx similarity index 81% rename from x-pack/plugins/security_solution/public/common/components/grouping/groups_selector/custom_field_panel.tsx rename to packages/kbn-securitysolution-grouping/src/components/group_selector/custom_field_panel.tsx index dc45df7d7bf2e..158469f1697a2 100644 --- a/x-pack/plugins/security_solution/public/common/components/grouping/groups_selector/custom_field_panel.tsx +++ b/packages/kbn-securitysolution-grouping/src/components/group_selector/custom_field_panel.tsx @@ -1,8 +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; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import type { EuiComboBoxOptionOption } from '@elastic/eui'; @@ -50,22 +51,19 @@ export class CustomFieldPanel extends React.PureComponent {
{ fill onClick={this.handleSubmit} > - {i18n.translate('xpack.securitySolution.selector.grouping.label.add', { + {i18n.translate('grouping.selector.grouping.label.add', { defaultMessage: 'Add', })} diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/groups_selector/index.test.tsx b/packages/kbn-securitysolution-grouping/src/components/group_selector/index.test.tsx similarity index 79% rename from x-pack/plugins/security_solution/public/common/components/grouping/groups_selector/index.test.tsx rename to packages/kbn-securitysolution-grouping/src/components/group_selector/index.test.tsx index a587206572f9d..4706247f2f0a7 100644 --- a/x-pack/plugins/security_solution/public/common/components/grouping/groups_selector/index.test.tsx +++ b/packages/kbn-securitysolution-grouping/src/components/group_selector/index.test.tsx @@ -1,13 +1,13 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import { fireEvent, render } from '@testing-library/react'; -import { TestProviders } from '../../../mock'; -import { GroupsSelector } from '..'; +import { GroupSelector } from '..'; import React from 'react'; const onGroupChange = jest.fn(); @@ -69,19 +69,11 @@ describe('group selector', () => { jest.clearAllMocks(); }); it('Sets the selected group from the groupSelected prop', () => { - const { getByTestId } = render( - - - - ); + const { getByTestId } = render(); expect(getByTestId('group-selector-dropdown').textContent).toBe('Group alerts by: Rule name'); }); it('Presents correct option when group selector dropdown is clicked', () => { - const { getByTestId } = render( - - - - ); + const { getByTestId } = render(); fireEvent.click(getByTestId('group-selector-dropdown')); [ ...testProps.options, @@ -92,11 +84,7 @@ describe('group selector', () => { }); }); it('Presents fields dropdown when custom field option is selected', () => { - const { getByTestId } = render( - - - - ); + const { getByTestId } = render(); fireEvent.click(getByTestId('group-selector-dropdown')); fireEvent.click(getByTestId('panel-none')); expect(onGroupChange).toHaveBeenCalled(); diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/groups_selector/index.tsx b/packages/kbn-securitysolution-grouping/src/components/group_selector/index.tsx similarity index 90% rename from x-pack/plugins/security_solution/public/common/components/grouping/groups_selector/index.tsx rename to packages/kbn-securitysolution-grouping/src/components/group_selector/index.tsx index 81382406d2af4..210ffef50e381 100644 --- a/x-pack/plugins/security_solution/public/common/components/grouping/groups_selector/index.tsx +++ b/packages/kbn-securitysolution-grouping/src/components/group_selector/index.tsx @@ -1,8 +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; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import type { @@ -16,7 +17,8 @@ import { CustomFieldPanel } from './custom_field_panel'; import * as i18n from '../translations'; import { StyledContextMenu, StyledEuiButtonEmpty } from '../styles'; -interface GroupSelectorProps { +export interface GroupSelectorProps { + 'data-test-subj'?: string; fields: FieldSpec[]; groupSelected: string; onGroupChange: (groupSelection: string) => void; @@ -24,7 +26,8 @@ interface GroupSelectorProps { title?: string; } -const GroupsSelectorComponent = ({ +const GroupSelectorComponent = ({ + 'data-test-subj': dataTestSubj, fields, groupSelected = 'none', onGroupChange, @@ -131,6 +134,7 @@ const GroupsSelectorComponent = ({ return ( { }); it('Renders group counts when groupsNumber > 0', () => { const { getByTestId, getAllByTestId, queryByTestId } = render( - - - + + + ); expect(getByTestId('alert-count').textContent).toBe('2 alerts'); expect(getByTestId('groups-count').textContent).toBe('2 groups'); @@ -140,9 +142,9 @@ describe('grouping container', () => { }, }; const { getByTestId, queryByTestId } = render( - - - + + + ); expect(queryByTestId('alert-count')).not.toBeInTheDocument(); expect(queryByTestId('groups-count')).not.toBeInTheDocument(); @@ -152,9 +154,9 @@ describe('grouping container', () => { it('Opens one group at a time when each group is clicked', () => { const { getAllByTestId } = render( - - - + + + ); const group1 = within(getAllByTestId('grouping-accordion')[0]).getAllByRole('button')[0]; const group2 = within(getAllByTestId('grouping-accordion')[1]).getAllByRole('button')[0]; diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/container/index.tsx b/packages/kbn-securitysolution-grouping/src/components/grouping.tsx similarity index 76% rename from x-pack/plugins/security_solution/public/common/components/grouping/container/index.tsx rename to packages/kbn-securitysolution-grouping/src/components/grouping.tsx index 9956ba8e40c06..8d85df8710f95 100644 --- a/x-pack/plugins/security_solution/public/common/components/grouping/container/index.tsx +++ b/packages/kbn-securitysolution-grouping/src/components/grouping.tsx @@ -1,8 +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; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import { @@ -14,31 +15,20 @@ import { } from '@elastic/eui'; import type { Filter } from '@kbn/es-query'; import React, { useMemo, useState } from 'react'; -import { firstNonNullValue } from '../../../../../common/endpoint/models/ecs_safety_helpers'; -import { createGroupFilter } from '../accordion_panel/helpers'; -import { tableDefaults } from '../../../store/data_table/defaults'; -import { defaultUnit } from '../../toolbar/unit'; -import type { BadgeMetric, CustomMetric } from '../accordion_panel'; -import { GroupPanel } from '../accordion_panel'; -import { GroupStats } from '../accordion_panel/group_stats'; -import { EmptyGroupingComponent } from '../empty_resuls_panel'; -import { GroupingStyledContainer, GroupsUnitCount } from '../styles'; -import { GROUPS_UNIT } from '../translations'; -import type { GroupingTableAggregation, RawBucket } from '../types'; +import { defaultUnit, firstNonNullValue } from '../helpers'; +import { createGroupFilter } from './accordion_panel/helpers'; +import type { BadgeMetric, CustomMetric } from './accordion_panel'; +import { GroupPanel } from './accordion_panel'; +import { GroupStats } from './accordion_panel/group_stats'; +import { EmptyGroupingComponent } from './empty_resuls_panel'; +import { groupingContainerCss, groupsUnitCountCss } from './styles'; +import { GROUPS_UNIT } from './translations'; +import type { GroupingAggregation, GroupingFieldTotalAggregation, RawBucket } from './types'; -export interface GroupingContainerProps { +export interface GroupingProps { badgeMetricStats?: (fieldBucket: RawBucket) => BadgeMetric[]; customMetricStats?: (fieldBucket: RawBucket) => CustomMetric[]; - data: GroupingTableAggregation & - Record< - string, - { - value?: number | null; - buckets?: Array<{ - doc_count?: number | null; - }>; - } - >; + data?: GroupingAggregation & GroupingFieldTotalAggregation; groupPanelRenderer?: (fieldBucket: RawBucket) => JSX.Element | undefined; groupsSelector?: JSX.Element; inspectButton?: JSX.Element; @@ -48,6 +38,7 @@ export interface GroupingContainerProps { pageSize: number; onChangeItemsPerPage: (itemsPerPageNumber: number) => void; onChangePage: (pageNumber: number) => void; + itemsPerPageOptions: number[]; }; renderChildComponent: (groupFilter: Filter[]) => React.ReactNode; selectedGroup: string; @@ -55,7 +46,7 @@ export interface GroupingContainerProps { unit?: (n: number) => string; } -const GroupingContainerComponent = ({ +const GroupingComponent = ({ badgeMetricStats, customMetricStats, data, @@ -68,7 +59,7 @@ const GroupingContainerComponent = ({ selectedGroup, takeActionItems, unit = defaultUnit, -}: GroupingContainerProps) => { +}: GroupingProps) => { const [trigger, setTrigger] = useState< Record >({}); @@ -86,7 +77,7 @@ const GroupingContainerComponent = ({ const groupPanels = useMemo( () => - data.stackByMultipleFields0?.buckets?.map((groupBucket) => { + data?.stackByMultipleFields0?.buckets?.map((groupBucket) => { const group = firstNonNullValue(groupBucket.key); const groupKey = `group0-${group}`; @@ -128,7 +119,7 @@ const GroupingContainerComponent = ({ [ badgeMetricStats, customMetricStats, - data.stackByMultipleFields0?.buckets, + data?.stackByMultipleFields0?.buckets, groupPanelRenderer, isLoading, renderChildComponent, @@ -153,12 +144,18 @@ const GroupingContainerComponent = ({ {groupsNumber > 0 ? ( - {unitCountText} + + {unitCountText} + - + {unitGroupsCountText} - + ) : null} @@ -170,7 +167,7 @@ const GroupingContainerComponent = ({ - +
{groupsNumber > 0 ? ( <> {groupPanels} @@ -179,7 +176,7 @@ const GroupingContainerComponent = ({ activePage={pagination.pageIndex} data-test-subj="grouping-table-pagination" itemsPerPage={pagination.pageSize} - itemsPerPageOptions={tableDefaults.itemsPerPageOptions} + itemsPerPageOptions={pagination.itemsPerPageOptions} onChangeItemsPerPage={pagination.onChangeItemsPerPage} onChangePage={pagination.onChangePage} pageCount={pageCount} @@ -194,9 +191,9 @@ const GroupingContainerComponent = ({ )} - +
); }; -export const GroupingContainer = React.memo(GroupingContainerComponent); +export const Grouping = React.memo(GroupingComponent); diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/index.tsx b/packages/kbn-securitysolution-grouping/src/components/index.tsx similarity index 55% rename from x-pack/plugins/security_solution/public/common/components/grouping/index.tsx rename to packages/kbn-securitysolution-grouping/src/components/index.tsx index c239373acd5e2..d44dfe7cc5303 100644 --- a/x-pack/plugins/security_solution/public/common/components/grouping/index.tsx +++ b/packages/kbn-securitysolution-grouping/src/components/index.tsx @@ -1,16 +1,15 @@ /* * 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. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import { NONE_GROUP_KEY } from './types'; -export * from './container'; -export * from './query'; -export * from './query/types'; -export * from './groups_selector'; +export * from './group_selector'; export * from './types'; +export * from './grouping'; export const isNoneGroup = (groupKey: string) => groupKey === NONE_GROUP_KEY; diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/styles.tsx b/packages/kbn-securitysolution-grouping/src/components/styles.tsx similarity index 58% rename from x-pack/plugins/security_solution/public/common/components/grouping/styles.tsx rename to packages/kbn-securitysolution-grouping/src/components/styles.tsx index 80eb0183cb510..ede1b4eae164c 100644 --- a/x-pack/plugins/security_solution/public/common/components/grouping/styles.tsx +++ b/packages/kbn-securitysolution-grouping/src/components/styles.tsx @@ -1,26 +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. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import { EuiButtonEmpty, EuiContextMenu } from '@elastic/eui'; import { euiStyled } from '@kbn/kibana-react-plugin/common'; -import styled from 'styled-components'; +import { css } from '@emotion/react'; +import { euiThemeVars } from '@kbn/ui-theme'; -export const GroupsUnitCount = styled.span` - font-size: ${({ theme }) => theme.eui.euiFontSizeXS}; - font-weight: ${({ theme }) => theme.eui.euiFontWeightSemiBold}; - border-right: ${({ theme }) => theme.eui.euiBorderThin}; +export const groupsUnitCountCss = css` + font-size: ${euiThemeVars.euiFontSizeXS}; + font-weight: ${euiThemeVars.euiFontWeightSemiBold}; + border-right: ${euiThemeVars.euiBorderThin}; margin-right: 16px; padding-right: 16px; `; -export const StatsContainer = styled.span` - font-size: ${({ theme }) => theme.eui.euiFontSizeXS}; - font-weight: ${({ theme }) => theme.eui.euiFontWeightSemiBold}; - border-right: ${({ theme }) => theme.eui.euiBorderThin}; +export const statsContainerCss = css` + font-size: ${euiThemeVars.euiFontSizeXS}; + font-weight: ${euiThemeVars.euiFontWeightSemiBold}; + border-right: ${euiThemeVars.euiBorderThin}; margin-right: 16px; padding-right: 16px; .smallDot { @@ -33,26 +35,26 @@ export const StatsContainer = styled.span` } `; -export const GroupingStyledContainer = styled.div` +export const groupingContainerCss = css` .euiAccordion__childWrapper .euiAccordion__padding--m { margin-left: 8px; margin-right: 8px; - border-left: ${({ theme }) => theme.eui.euiBorderThin}; - border-right: ${({ theme }) => theme.eui.euiBorderThin}; - border-bottom: ${({ theme }) => theme.eui.euiBorderThin}; + border-left: ${euiThemeVars.euiBorderThin}; + border-right: ${euiThemeVars.euiBorderThin}; + border-bottom: ${euiThemeVars.euiBorderThin}; border-radius: 0 0 6px 6px; } .euiAccordion__triggerWrapper { - border-bottom: ${({ theme }) => theme.eui.euiBorderThin}; - border-left: ${({ theme }) => theme.eui.euiBorderThin}; - border-right: ${({ theme }) => theme.eui.euiBorderThin}; + border-bottom: ${euiThemeVars.euiBorderThin}; + border-left: ${euiThemeVars.euiBorderThin}; + border-right: ${euiThemeVars.euiBorderThin}; border-radius: 6px; min-height: 78px; padding-left: 16px; padding-right: 16px; } .groupingAccordionForm { - border-top: ${({ theme }) => theme.eui.euiBorderThin}; + border-top: ${euiThemeVars.euiBorderThin}; border-bottom: none; border-radius: 6px; min-width: 1090px; @@ -75,7 +77,7 @@ export const StyledContextMenu = euiStyled(EuiContextMenu)` text-overflow: ellipsis; } .euiContextMenuItem { - border-bottom: ${({ theme }) => theme.eui.euiBorderThin}; + border-bottom: ${euiThemeVars.euiBorderThin}; } .euiContextMenuItem:last-child { border: none; diff --git a/packages/kbn-securitysolution-grouping/src/components/translations.ts b/packages/kbn-securitysolution-grouping/src/components/translations.ts new file mode 100644 index 0000000000000..0ce0e118e7a43 --- /dev/null +++ b/packages/kbn-securitysolution-grouping/src/components/translations.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; + +export const GROUPS_UNIT = (totalCount: number) => + i18n.translate('grouping.total.unit', { + values: { totalCount }, + defaultMessage: `{totalCount, plural, =1 {group} other {groups}}`, + }); + +export const TAKE_ACTION = i18n.translate('grouping.additionalActions.takeAction', { + defaultMessage: 'Take actions', +}); + +export const BETA = i18n.translate('grouping.betaLabel', { + defaultMessage: 'Beta', +}); + +export const BETA_TOOL_TIP = i18n.translate('grouping.betaToolTip', { + defaultMessage: + 'Grouping may show only a subset of alerts while in beta. To see all alerts, use the list view by selecting "None"', +}); + +export const GROUP_BY = i18n.translate('grouping.alerts.label', { + defaultMessage: 'Group alerts by', +}); + +export const GROUP_BY_CUSTOM_FIELD = i18n.translate('grouping.customGroupByPanelTitle', { + defaultMessage: 'Group By Custom Field', +}); + +export const SELECT_FIELD = i18n.translate('grouping.groupByPanelTitle', { + defaultMessage: 'Select Field', +}); + +export const NONE = i18n.translate('grouping.noneGroupByOptionName', { + defaultMessage: 'None', +}); + +export const CUSTOM_FIELD = i18n.translate('grouping.customGroupByOptionName', { + defaultMessage: 'Custom field', +}); + +export const ALERTS_UNIT = (totalCount: number) => + i18n.translate('grouping.eventsTab.unit', { + values: { totalCount }, + defaultMessage: `{totalCount, plural, =1 {alert} other {alerts}}`, + }); diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/types.ts b/packages/kbn-securitysolution-grouping/src/components/types.ts similarity index 80% rename from x-pack/plugins/security_solution/public/common/components/grouping/types.ts rename to packages/kbn-securitysolution-grouping/src/components/types.ts index b4685c75cab29..5a86bae394dd5 100644 --- a/x-pack/plugins/security_solution/public/common/components/grouping/types.ts +++ b/packages/kbn-securitysolution-grouping/src/components/types.ts @@ -1,13 +1,17 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ -import type { GenericBuckets } from '../../../../common/search_strategy/common'; - -export const DEFAULT_GROUPING_QUERY_ID = 'defaultGroupingQuery'; +// copied from common/search_strategy/common +export interface GenericBuckets { + key: string | string[]; + key_as_string?: string; // contains, for example, formatted dates + doc_count: number; +} export const NONE_GROUP_KEY = 'none'; @@ -43,7 +47,7 @@ export type RawBucket = GenericBuckets & { }; /** Defines the shape of the aggregation returned by Elasticsearch */ -export interface GroupingTableAggregation { +export interface GroupingAggregation { stackByMultipleFields0?: { buckets?: RawBucket[]; }; diff --git a/packages/kbn-securitysolution-grouping/src/containers/index.ts b/packages/kbn-securitysolution-grouping/src/containers/index.ts new file mode 100644 index 0000000000000..acae150b85548 --- /dev/null +++ b/packages/kbn-securitysolution-grouping/src/containers/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export * from './query'; +export * from './query/types'; diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/query/index.test.ts b/packages/kbn-securitysolution-grouping/src/containers/query/index.test.ts similarity index 93% rename from x-pack/plugins/security_solution/public/common/components/grouping/query/index.test.ts rename to packages/kbn-securitysolution-grouping/src/containers/query/index.test.ts index cc4075265f1f9..432f3e645ef2b 100644 --- a/x-pack/plugins/security_solution/public/common/components/grouping/query/index.test.ts +++ b/packages/kbn-securitysolution-grouping/src/containers/query/index.test.ts @@ -1,12 +1,13 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ -import type { GroupingQueryArgs } from '..'; -import { getGroupingQuery, MAX_QUERY_SIZE } from '..'; +import type { GroupingQueryArgs } from './types'; +import { getGroupingQuery, MAX_QUERY_SIZE } from '.'; const testProps: GroupingQueryArgs = { additionalFilters: [], diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/query/index.ts b/packages/kbn-securitysolution-grouping/src/containers/query/index.ts similarity index 95% rename from x-pack/plugins/security_solution/public/common/components/grouping/query/index.ts rename to packages/kbn-securitysolution-grouping/src/containers/query/index.ts index 8a0242e8cc3ae..ab40ac554931a 100644 --- a/x-pack/plugins/security_solution/public/common/components/grouping/query/index.ts +++ b/packages/kbn-securitysolution-grouping/src/containers/query/index.ts @@ -1,8 +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; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import { isEmpty } from 'lodash/fp'; diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/query/types.ts b/packages/kbn-securitysolution-grouping/src/containers/query/types.ts similarity index 90% rename from x-pack/plugins/security_solution/public/common/components/grouping/query/types.ts rename to packages/kbn-securitysolution-grouping/src/containers/query/types.ts index 4f1eb464e6fa6..d6c08c2d12514 100644 --- a/x-pack/plugins/security_solution/public/common/components/grouping/query/types.ts +++ b/packages/kbn-securitysolution-grouping/src/containers/query/types.ts @@ -1,8 +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; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import type { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; diff --git a/packages/kbn-securitysolution-grouping/src/helpers.ts b/packages/kbn-securitysolution-grouping/src/helpers.ts new file mode 100644 index 0000000000000..f07c369e022a0 --- /dev/null +++ b/packages/kbn-securitysolution-grouping/src/helpers.ts @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import * as i18n from './components/translations'; + +/** + * All mappings in Elasticsearch support arrays. They can also return null values or be missing. For example, a `keyword` mapping could return `null` or `[null]` or `[]` or `'hi'`, or `['hi', 'there']`. We need to handle these cases in order to avoid throwing an error. + * When dealing with an value that comes from ES, wrap the underlying type in `ECSField`. For example, if you have a `keyword` or `text` value coming from ES, cast it to `ECSField`. + */ +export type ECSField = T | null | undefined | Array; +/** + * Return first non-null value. If the field contains an array, this will return the first value that isn't null. If the field isn't an array it'll be returned unless it's null. + */ +export function firstNonNullValue(valueOrCollection: ECSField): T | undefined { + if (valueOrCollection === null) { + return undefined; + } else if (Array.isArray(valueOrCollection)) { + for (const value of valueOrCollection) { + if (value !== null) { + return value; + } + } + } else { + return valueOrCollection; + } +} + +export const defaultUnit = (n: number) => i18n.ALERTS_UNIT(n); diff --git a/packages/kbn-securitysolution-grouping/src/index.ts b/packages/kbn-securitysolution-grouping/src/index.ts new file mode 100644 index 0000000000000..b9b10cc40f62a --- /dev/null +++ b/packages/kbn-securitysolution-grouping/src/index.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export * from './components'; +export * from './containers'; +export * from './helpers'; diff --git a/packages/kbn-securitysolution-grouping/tsconfig.json b/packages/kbn-securitysolution-grouping/tsconfig.json new file mode 100644 index 0000000000000..9eeb0195df7ce --- /dev/null +++ b/packages/kbn-securitysolution-grouping/tsconfig.json @@ -0,0 +1,28 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/data-views-plugin", + "@kbn/es-query", + "@kbn/i18n", + "@kbn/i18n-react", + "@kbn/kibana-react-plugin", + "@kbn/shared-svg", + "@kbn/ui-theme" + ] +} diff --git a/packages/kbn-securitysolution-io-ts-list-types/src/request/create_endpoint_list_item_schema/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/request/create_endpoint_list_item_schema/index.ts index 0262e16539e9f..8c8e1d3e0db4b 100644 --- a/packages/kbn-securitysolution-io-ts-list-types/src/request/create_endpoint_list_item_schema/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/request/create_endpoint_list_item_schema/index.ts @@ -22,7 +22,6 @@ import { description } from '../../common/description'; import { name } from '../../common/name'; import { meta } from '../../common/meta'; import { tags } from '../../common/tags'; -import { ExpireTimeOrUndefined, expireTimeOrUndefined } from '../../common'; export const createEndpointListItemSchema = t.intersection([ t.exact( @@ -40,7 +39,6 @@ export const createEndpointListItemSchema = t.intersection([ meta, // defaults to undefined if not set during decode os_types: osTypeArrayOrUndefined, // defaults to empty array if not set during decode tags, // defaults to empty array if not set during decode - expire_time: expireTimeOrUndefined, // defaults to undefined if not set during decode }) ), ]); @@ -50,12 +48,11 @@ export type CreateEndpointListItemSchema = t.OutputOf>, - 'tags' | 'item_id' | 'entries' | 'comments' | 'os_types' | 'expire_time' + 'tags' | 'item_id' | 'entries' | 'comments' | 'os_types' > & { comments: CreateCommentsArray; tags: Tags; item_id: ItemId; entries: EntriesArray; os_types: OsTypeArray; - expire_time: ExpireTimeOrUndefined; }; diff --git a/packages/kbn-securitysolution-io-ts-list-types/src/request/update_endpoint_list_item_schema/index.ts b/packages/kbn-securitysolution-io-ts-list-types/src/request/update_endpoint_list_item_schema/index.ts index b0669b05463cf..8e5aa41e1fad2 100644 --- a/packages/kbn-securitysolution-io-ts-list-types/src/request/update_endpoint_list_item_schema/index.ts +++ b/packages/kbn-securitysolution-io-ts-list-types/src/request/update_endpoint_list_item_schema/index.ts @@ -21,7 +21,6 @@ import { Tags, tags } from '../../common/tags'; import { RequiredKeepUndefined } from '../../common/required_keep_undefined'; import { UpdateCommentsArray } from '../../common/update_comment'; import { EntriesArray } from '../../common/entries'; -import { ExpireTimeOrUndefined, expireTimeOrUndefined } from '../../common'; export const updateEndpointListItemSchema = t.intersection([ t.exact( @@ -41,7 +40,6 @@ export const updateEndpointListItemSchema = t.intersection([ meta, // defaults to undefined if not set during decode os_types: osTypeArrayOrUndefined, // defaults to empty array if not set during decode tags, // defaults to empty array if not set during decode - expire_time: expireTimeOrUndefined, }) ), ]); @@ -51,11 +49,10 @@ export type UpdateEndpointListItemSchema = t.OutputOf>, - 'tags' | 'entries' | 'comments' | 'expire_time' + 'tags' | 'entries' | 'comments' > & { comments: UpdateCommentsArray; tags: Tags; entries: EntriesArray; os_types: OsTypeArray; - expire_time: ExpireTimeOrUndefined; }; diff --git a/src/core/server/integration_tests/saved_objects/migrations/group3/skip_reindex.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group3/skip_reindex.test.ts index 5354a958e8cb7..f239f36c9ebc4 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group3/skip_reindex.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group3/skip_reindex.test.ts @@ -22,7 +22,8 @@ import { } from '../kibana_migrator_test_kit'; import { delay } from '../test_utils'; -describe('when migrating to a new version', () => { +// FLAKY: https://github.com/elastic/kibana/issues/152448 +describe.skip('when migrating to a new version', () => { let esServer: TestElasticsearchUtils['es']; let esClient: ElasticsearchClient; let migrator: IKibanaMigrator; diff --git a/src/plugins/data_view_editor/kibana.jsonc b/src/plugins/data_view_editor/kibana.jsonc index 007a7f78321db..bdec3b4f4943d 100644 --- a/src/plugins/data_view_editor/kibana.jsonc +++ b/src/plugins/data_view_editor/kibana.jsonc @@ -13,6 +13,7 @@ ], "requiredBundles": [ "kibanaReact", + "kibanaUtils", "esUiShared" ] } diff --git a/src/plugins/data_view_editor/public/components/form_fields/title_docs_popover.test.tsx b/src/plugins/data_view_editor/public/components/form_fields/title_docs_popover.test.tsx new file mode 100644 index 0000000000000..37d8f53b69ab9 --- /dev/null +++ b/src/plugins/data_view_editor/public/components/form_fields/title_docs_popover.test.tsx @@ -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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; +import { findTestSubject } from '@elastic/eui/lib/test'; +import { mountWithIntl } from '@kbn/test-jest-helpers'; +import { TitleDocsPopover } from './title_docs_popover'; + +describe('DataViewEditor TitleDocsPopover', () => { + it('should render normally', async () => { + const component = mountWithIntl(); + + expect(findTestSubject(component, 'indexPatternDocsButton').exists()).toBeTruthy(); + expect(findTestSubject(component, 'indexPatternDocsPopoverContent').exists()).toBeFalsy(); + + findTestSubject(component, 'indexPatternDocsButton').simulate('click'); + + await component.update(); + + expect(findTestSubject(component, 'indexPatternDocsPopoverContent').exists()).toBeTruthy(); + }); +}); diff --git a/src/plugins/data_view_editor/public/components/form_fields/title_docs_popover.tsx b/src/plugins/data_view_editor/public/components/form_fields/title_docs_popover.tsx new file mode 100644 index 0000000000000..7e762a161639e --- /dev/null +++ b/src/plugins/data_view_editor/public/components/form_fields/title_docs_popover.tsx @@ -0,0 +1,114 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { useState } from 'react'; +import { css } from '@emotion/react'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { + EuiButtonIcon, + EuiPanel, + EuiPopover, + EuiPopoverTitle, + EuiText, + EuiCode, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; + +export const TitleDocsPopover: React.FC = () => { + const [isOpen, setIsOpen] = useState(false); + + const helpButton = ( + setIsOpen((prev) => !prev)} + iconType="documentation" + data-test-subj="indexPatternDocsButton" + aria-label={i18n.translate('indexPatternEditor.titleDocsPopover.ariaLabel', { + defaultMessage: 'Index pattern examples', + })} + /> + ); + + return ( + setIsOpen(false)} + > + + {i18n.translate('indexPatternEditor.titleDocsPopover.title', { + defaultMessage: 'Index pattern', + })} + + + +

+ +

+
    +
  • +

    + +

    +

    + filebeat-* +

    +
  • +
  • +

    + +

    +

    + filebeat-a,filebeat-b +

    +
  • +
  • +

    + +

    +

    + filebeat-*,-filebeat-c +

    +
  • +
  • +

    + {i18n.translate( + 'indexPatternEditor.titleDocsPopover.dontUseSpecialCharactersDescription', + { + defaultMessage: 'Spaces and the characters /?"<>| are not allowed.', + } + )} +

    +
  • +
+
+
+
+ ); +}; diff --git a/src/plugins/data_view_editor/public/components/form_fields/title_field.tsx b/src/plugins/data_view_editor/public/components/form_fields/title_field.tsx index b2ea9c78e9fca..3824a6cea5258 100644 --- a/src/plugins/data_view_editor/public/components/form_fields/title_field.tsx +++ b/src/plugins/data_view_editor/public/components/form_fields/title_field.tsx @@ -22,6 +22,7 @@ import { canAppendWildcard } from '../../lib'; import { schema } from '../form_schema'; import { RollupIndicesCapsResponse, IndexPatternConfig, MatchedIndicesSet } from '../../types'; import { matchedIndiciesDefault } from '../../data_view_editor_service'; +import { TitleDocsPopover } from './title_docs_popover'; interface TitleFieldProps { isRollup: boolean; @@ -194,6 +195,8 @@ export const TitleField = ({ isLoading={field.isValidating} fullWidth data-test-subj="createIndexPatternTitleInput" + append={} + placeholder="example-*" />
); diff --git a/src/plugins/data_view_editor/public/components/form_schema.ts b/src/plugins/data_view_editor/public/components/form_schema.ts index 69993f17ecb35..eeadf52075440 100644 --- a/src/plugins/data_view_editor/public/components/form_schema.ts +++ b/src/plugins/data_view_editor/public/components/form_schema.ts @@ -28,10 +28,6 @@ export const schema = { defaultMessage: 'Index pattern', }), defaultValue: '', - helpText: i18n.translate('indexPatternEditor.validations.titleHelpText', { - defaultMessage: - 'Enter an index pattern that matches one or more data sources. Use an asterisk (*) to match multiple characters. Spaces and the characters , /, ?, ", <, >, | are not allowed.', - }), validations: [ { validator: fieldValidators.emptyField( @@ -84,7 +80,7 @@ export const schema = { }, isAdHoc: { label: i18n.translate('indexPatternEditor.editor.form.IsAdHocLabel', { - defaultMessage: 'Creeate AdHoc DataView', + defaultMessage: 'Create AdHoc DataView', }), defaultValue: false, type: 'hidden', diff --git a/src/plugins/data_view_editor/public/components/preview_panel/indices_list/__snapshots__/indices_list.test.tsx.snap b/src/plugins/data_view_editor/public/components/preview_panel/indices_list/__snapshots__/indices_list.test.tsx.snap index 609d88fac17b6..c068a7ef09447 100644 --- a/src/plugins/data_view_editor/public/components/preview_panel/indices_list/__snapshots__/indices_list.test.tsx.snap +++ b/src/plugins/data_view_editor/public/components/preview_panel/indices_list/__snapshots__/indices_list.test.tsx.snap @@ -201,6 +201,113 @@ exports[`IndicesList should change per page 1`] = `
`; +exports[`IndicesList should highlight fully when an exact match 1`] = ` +
+ + + + + + + logs + + tash + + + + + + + + some_logs + + + + + + + + + + + + + } + closePopover={[Function]} + display="inline-block" + hasArrow={true} + id="customizablePagination" + isOpen={false} + ownFocus={true} + panelPaddingSize="none" + > + + 5 + , + + 10 + , + + 20 + , + + 50 + , + ] + } + /> + + + +
+`; + exports[`IndicesList should highlight the query in the matches 1`] = `
- es + + es + diff --git a/src/plugins/data_view_editor/public/components/preview_panel/indices_list/indices_list.test.tsx b/src/plugins/data_view_editor/public/components/preview_panel/indices_list/indices_list.test.tsx index 074865006a385..54b996416c223 100644 --- a/src/plugins/data_view_editor/public/components/preview_panel/indices_list/indices_list.test.tsx +++ b/src/plugins/data_view_editor/public/components/preview_panel/indices_list/indices_list.test.tsx @@ -7,24 +7,39 @@ */ import React from 'react'; -import { IndicesList } from '.'; +import { IndicesList, IndicesListProps, PER_PAGE_STORAGE_KEY } from './indices_list'; import { shallow } from 'enzyme'; import { MatchedItem } from '@kbn/data-views-plugin/public'; +import { Storage } from '@kbn/kibana-utils-plugin/public'; const indices = [ { name: 'kibana', tags: [] }, { name: 'es', tags: [] }, ] as unknown as MatchedItem[]; +const similarIndices = [ + { name: 'logstash', tags: [] }, + { name: 'some_logs', tags: [] }, +] as unknown as MatchedItem[]; + describe('IndicesList', () => { + const commonProps: Omit = { + indices, + isExactMatch: jest.fn(() => false), + }; + + afterEach(() => { + new Storage(localStorage).remove(PER_PAGE_STORAGE_KEY); + }); + it('should render normally', () => { - const component = shallow(); + const component = shallow(); expect(component).toMatchSnapshot(); }); it('should change pages', () => { - const component = shallow(); + const component = shallow(); const instance = component.instance() as IndicesList; @@ -36,7 +51,7 @@ describe('IndicesList', () => { }); it('should change per page', () => { - const component = shallow(); + const component = shallow(); const instance = component.instance() as IndicesList; instance.onChangePerPage(1); @@ -46,14 +61,33 @@ describe('IndicesList', () => { }); it('should highlight the query in the matches', () => { - const component = shallow(); + const component = shallow( + indexName === 'es'} + /> + ); + + expect(component).toMatchSnapshot(); + }); + + it('should highlight fully when an exact match', () => { + const component = shallow( + indexName === 'some_logs'} + /> + ); expect(component).toMatchSnapshot(); }); describe('updating props', () => { it('should render all new indices', () => { - const component = shallow(); + const component = shallow(); const moreIndices = [ ...indices, diff --git a/src/plugins/data_view_editor/public/components/preview_panel/indices_list/indices_list.tsx b/src/plugins/data_view_editor/public/components/preview_panel/indices_list/indices_list.tsx index f307bbfc43889..d7542a9e70184 100644 --- a/src/plugins/data_view_editor/public/components/preview_panel/indices_list/indices_list.tsx +++ b/src/plugins/data_view_editor/public/components/preview_panel/indices_list/indices_list.tsx @@ -25,13 +25,14 @@ import { } from '@elastic/eui'; import { Pager } from '@elastic/eui'; - +import { Storage } from '@kbn/kibana-utils-plugin/public'; import { FormattedMessage } from '@kbn/i18n-react'; import { MatchedItem, Tag } from '@kbn/data-views-plugin/public'; -interface IndicesListProps { +export interface IndicesListProps { indices: MatchedItem[]; query: string; + isExactMatch: (indexName: string) => boolean; } interface IndicesListState { @@ -41,15 +42,20 @@ interface IndicesListState { } const PER_PAGE_INCREMENTS = [5, 10, 20, 50]; +export const PER_PAGE_STORAGE_KEY = 'dataViews.previewPanel.indicesPerPage'; export class IndicesList extends React.Component { pager: Pager; + storage: Storage; + constructor(props: IndicesListProps) { super(props); + this.storage = new Storage(localStorage); + this.state = { page: 0, - perPage: PER_PAGE_INCREMENTS[1], + perPage: this.storage.get(PER_PAGE_STORAGE_KEY) || PER_PAGE_INCREMENTS[1], isPerPageControlOpen: false, }; @@ -75,6 +81,7 @@ export class IndicesList extends React.Component { @@ -144,11 +151,20 @@ export class IndicesList extends React.Component q.trim()); + if (isExactMatch(indexName)) { + return {indexName}; + } + + const queryAsArray = query + .split(',') + .map((q) => q.trim()) + .filter(Boolean); let queryIdx = -1; let queryWithoutWildcard = ''; for (let i = 0; i < queryAsArray.length; i++) { @@ -162,6 +178,7 @@ export class IndicesList extends React.Component { diff --git a/src/plugins/data_view_editor/public/components/preview_panel/preview_panel.test.tsx b/src/plugins/data_view_editor/public/components/preview_panel/preview_panel.test.tsx new file mode 100644 index 0000000000000..66ba61b466a62 --- /dev/null +++ b/src/plugins/data_view_editor/public/components/preview_panel/preview_panel.test.tsx @@ -0,0 +1,124 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; +import { findTestSubject } from '@elastic/eui/lib/test'; +import { EuiTable, EuiButtonGroup } from '@elastic/eui'; +import { mountWithIntl } from '@kbn/test-jest-helpers'; +import { INDEX_PATTERN_TYPE, MatchedItem } from '@kbn/data-views-plugin/public'; +import { Props as PreviewPanelProps, PreviewPanel } from './preview_panel'; +import { from } from 'rxjs'; + +const indices = [ + { name: 'kibana_1', tags: [] }, + { name: 'kibana_2', tags: [] }, + { name: 'es', tags: [] }, +] as unknown as MatchedItem[]; + +describe('DataViewEditor PreviewPanel', () => { + const commonProps: Omit = { + type: INDEX_PATTERN_TYPE.DEFAULT, + allowHidden: false, + }; + + it('should render normally by default', async () => { + const matchedIndices$: PreviewPanelProps['matchedIndices$'] = from([ + { + allIndices: indices, + exactMatchedIndices: [], + partialMatchedIndices: [], + visibleIndices: indices, + }, + ]); + const component = await mountWithIntl( + + ); + + expect(component.find(EuiTable).exists()).toBeTruthy(); + expect(component.find(EuiButtonGroup).exists()).toBeFalsy(); + }); + + it('should render matching indices and can switch to all indices', async () => { + const matchedIndices$: PreviewPanelProps['matchedIndices$'] = from([ + { + allIndices: indices, + exactMatchedIndices: [indices[0], indices[1]], + partialMatchedIndices: [], + visibleIndices: [indices[0], indices[1]], + }, + ]); + const component = await mountWithIntl( + + ); + + expect(component.find(EuiTable).exists()).toBeTruthy(); + expect(component.find(EuiButtonGroup).exists()).toBeTruthy(); + + expect(component.find('.euiButtonGroupButton-isSelected').first().text()).toBe( + 'Matching sources' + ); + + findTestSubject(component, 'allIndices').simulate('change', { + target: { + value: true, + }, + }); + + await component.update(); + + expect(component.find('.euiButtonGroupButton-isSelected').first().text()).toBe('All sources'); + }); + + it('should render matching indices with warnings', async () => { + const matchedIndices$: PreviewPanelProps['matchedIndices$'] = from([ + { + allIndices: indices, + exactMatchedIndices: [], + partialMatchedIndices: [indices[0], indices[1]], + visibleIndices: [indices[0], indices[1]], + }, + ]); + const component = await mountWithIntl( + + ); + + expect(component.find(EuiTable).exists()).toBeTruthy(); + expect(component.find(EuiButtonGroup).exists()).toBeTruthy(); + }); + + it('should render all indices tab when ends with a comma and can switch to matching sources', async () => { + const matchedIndices$: PreviewPanelProps['matchedIndices$'] = from([ + { + allIndices: indices, + exactMatchedIndices: [indices[0]], + partialMatchedIndices: [], + visibleIndices: [indices[0]], + }, + ]); + const component = await mountWithIntl( + + ); + + expect(component.find(EuiTable).exists()).toBeTruthy(); + expect(component.find(EuiButtonGroup).exists()).toBeTruthy(); + + expect(component.find('.euiButtonGroupButton-isSelected').first().text()).toBe('All sources'); + + findTestSubject(component, 'onlyMatchingIndices').simulate('change', { + target: { + value: true, + }, + }); + + await component.update(); + + expect(component.find('.euiButtonGroupButton-isSelected').first().text()).toBe( + 'Matching sources' + ); + }); +}); diff --git a/src/plugins/data_view_editor/public/components/preview_panel/preview_panel.tsx b/src/plugins/data_view_editor/public/components/preview_panel/preview_panel.tsx index 07b1fd91b85b6..629d2ae8bde46 100644 --- a/src/plugins/data_view_editor/public/components/preview_panel/preview_panel.tsx +++ b/src/plugins/data_view_editor/public/components/preview_panel/preview_panel.tsx @@ -6,8 +6,9 @@ * Side Public License, v 1. */ -import React from 'react'; -import { EuiSpacer } from '@elastic/eui'; +import React, { useState } from 'react'; +import { EuiButtonGroup, EuiSpacer } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import useObservable from 'react-use/lib/useObservable'; import { Observable } from 'rxjs'; import { INDEX_PATTERN_TYPE } from '@kbn/data-views-plugin/public'; @@ -17,7 +18,27 @@ import { matchedIndiciesDefault } from '../../data_view_editor_service'; import { MatchedIndicesSet } from '../../types'; -interface Props { +enum ViewMode { + allIndices = 'allIndices', + onlyMatchingIndices = 'onlyMatchingIndices', +} + +const viewModeButtons = [ + { + id: ViewMode.allIndices, + label: i18n.translate('indexPatternEditor.previewPanel.viewModeGroup.allSourcesButton', { + defaultMessage: 'All sources', + }), + }, + { + id: ViewMode.onlyMatchingIndices, + label: i18n.translate('indexPatternEditor.previewPanel.viewModeGroup.matchingSourcesButton', { + defaultMessage: 'Matching sources', + }), + }, +]; + +export interface Props { type: INDEX_PATTERN_TYPE; allowHidden: boolean; title: string; @@ -25,20 +46,35 @@ interface Props { } export const PreviewPanel = ({ type, allowHidden, title = '', matchedIndices$ }: Props) => { + const [viewMode, setViewMode] = useState(); const matched = useObservable(matchedIndices$, matchedIndiciesDefault); - const indicesListContent = - matched.visibleIndices.length || matched.allIndices.length ? ( - <> - - - - ) : ( - <> - ); + + let currentlyVisibleIndices; + let currentViewMode; + + if ( + (title.length && !isAboutToIncludeMoreIndices(title) && viewMode !== ViewMode.allIndices) || + viewMode === ViewMode.onlyMatchingIndices + ) { + currentlyVisibleIndices = matched.visibleIndices; + currentViewMode = ViewMode.onlyMatchingIndices; + } else { + currentlyVisibleIndices = matched.allIndices; + currentViewMode = ViewMode.allIndices; + } + + const indicesListContent = currentlyVisibleIndices.length ? ( + + title.length > 0 && matched.exactMatchedIndices.some((index) => index.name === indexName) + } + /> + ) : ( + <> + ); return ( <> @@ -48,7 +84,23 @@ export const PreviewPanel = ({ type, allowHidden, title = '', matchedIndices$ }: isIncludingSystemIndices={allowHidden} query={title} /> + + {Boolean(title) && currentlyVisibleIndices.length > 0 && ( + setViewMode(id as ViewMode)} + /> + )} {indicesListContent} ); }; + +function isAboutToIncludeMoreIndices(query: string) { + return query.trimEnd().endsWith(','); +} diff --git a/src/plugins/data_view_editor/tsconfig.json b/src/plugins/data_view_editor/tsconfig.json index 3f1744281db90..99e066ee3fe66 100644 --- a/src/plugins/data_view_editor/tsconfig.json +++ b/src/plugins/data_view_editor/tsconfig.json @@ -17,6 +17,7 @@ "@kbn/i18n", "@kbn/test-jest-helpers", "@kbn/ui-theme", + "@kbn/kibana-utils-plugin", ], "exclude": [ "target/**/*", diff --git a/src/plugins/data_views/common/index.ts b/src/plugins/data_views/common/index.ts index 5f7b3a544db9d..a26895f6f9d78 100644 --- a/src/plugins/data_views/common/index.ts +++ b/src/plugins/data_views/common/index.ts @@ -79,3 +79,4 @@ export type { IndexPatternLoadExpressionFunctionDefinition, } from './expressions'; export { getIndexPatternLoadMeta } from './expressions'; +export { DataViewMissingIndices } from './lib/errors'; diff --git a/src/plugins/discover/public/application/main/components/sidebar/discover_field.test.tsx b/src/plugins/discover/public/application/main/components/sidebar/discover_field.test.tsx index eb433bb6ee7c3..31919d1e2de20 100644 --- a/src/plugins/discover/public/application/main/components/sidebar/discover_field.test.tsx +++ b/src/plugins/discover/public/application/main/components/sidebar/discover_field.test.tsx @@ -136,8 +136,7 @@ async function getComponent({ return { comp, props }; } -// FLAKY: https://github.com/elastic/kibana/issues/148349 -describe.skip('discover sidebar field', function () { +describe('discover sidebar field', function () { beforeEach(() => { (DetailsUtil.getDetails as jest.Mock).mockClear(); }); @@ -244,6 +243,10 @@ describe.skip('discover sidebar field', function () { await comp.update(); expect(comp.find(EuiPopover).prop('isOpen')).toBe(true); + + await new Promise((resolve) => setTimeout(resolve, 0)); + await comp.update(); + expect(findTestSubject(comp, 'dscFieldStats-title').text()).toBe('Top values'); expect(findTestSubject(comp, 'dscFieldStats-topValues-bucket')).toHaveLength(2); expect( diff --git a/src/plugins/unified_search/kibana.jsonc b/src/plugins/unified_search/kibana.jsonc index 008b9d9fe03d2..5f146723b7c2e 100644 --- a/src/plugins/unified_search/kibana.jsonc +++ b/src/plugins/unified_search/kibana.jsonc @@ -17,7 +17,8 @@ "dataViews", "data", "uiActions", - "screenshotMode" + "screenshotMode", + "savedObjectsManagement" ], "optionalPlugins": [ "usageCollection" diff --git a/src/plugins/unified_search/public/types.ts b/src/plugins/unified_search/public/types.ts index 557c31865a417..66abc195b5b19 100755 --- a/src/plugins/unified_search/public/types.ts +++ b/src/plugins/unified_search/public/types.ts @@ -16,6 +16,7 @@ import { UsageCollectionSetup, UsageCollectionStart } from '@kbn/usage-collectio import { Query, AggregateQuery } from '@kbn/es-query'; import { CoreStart, DocLinksStart } from '@kbn/core/public'; import { IStorageWrapper } from '@kbn/kibana-utils-plugin/public'; +import { SavedObjectsManagementPluginStart } from '@kbn/saved-objects-management-plugin/public'; import { AutocompleteSetup, AutocompleteStart } from './autocomplete'; import type { IndexPatternSelectProps, StatefulSearchBarProps } from '.'; import type { FiltersBuilderProps } from './filters_builder/filters_builder'; @@ -92,4 +93,5 @@ export interface IUnifiedSearchPluginServices extends Partial { dataViews: DataViewsPublicPluginStart; dataViewEditor: DataViewEditorStart; usageCollection?: UsageCollectionStart; + savedObjectsManagement: SavedObjectsManagementPluginStart; } diff --git a/src/plugins/unified_search/tsconfig.json b/src/plugins/unified_search/tsconfig.json index 0a4ab525d04b7..d11390cf0d18a 100644 --- a/src/plugins/unified_search/tsconfig.json +++ b/src/plugins/unified_search/tsconfig.json @@ -38,6 +38,7 @@ "@kbn/utility-types-jest", "@kbn/react-field", "@kbn/ui-theme", + "@kbn/saved-objects-management-plugin", ], "exclude": [ "target/**/*", diff --git a/test/functional/apps/console/_comments.ts b/test/functional/apps/console/_comments.ts index 3250035275976..de8bcda60786b 100644 --- a/test/functional/apps/console/_comments.ts +++ b/test/functional/apps/console/_comments.ts @@ -15,7 +15,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const PageObjects = getPageObjects(['common', 'console', 'header']); - describe('console app', function testComments() { + // Failing: See https://github.com/elastic/kibana/issues/138160 + describe.skip('console app', function testComments() { this.tags('includeFirefox'); before(async () => { log.debug('navigateTo console'); diff --git a/test/functional/apps/context/_discover_navigation.ts b/test/functional/apps/context/_discover_navigation.ts index 9f8e86ad7352e..24da7da392190 100644 --- a/test/functional/apps/context/_discover_navigation.ts +++ b/test/functional/apps/context/_discover_navigation.ts @@ -48,6 +48,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { for (const [columnName, value] of TEST_FILTER_COLUMN_NAMES) { await filterBar.addFilter({ field: columnName, operation: 'is', value }); + await PageObjects.header.waitUntilLoadingHasFinished(); } }); @@ -82,7 +83,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await retry.waitFor('next anchor timestamp matches previous anchor timestamp', async () => { // get the timestamp of the first row const firstContextTimestamp = await getTimestamp(false); - await dataGrid.clickRowToggle({ isAnchorRow: true }); + await dataGrid.clickRowToggle({ rowIndex: 0 }); const rowActions = await dataGrid.getRowActions({ rowIndex: 0 }); await rowActions[1].click(); diff --git a/test/functional/apps/discover/group1/_discover_histogram.ts b/test/functional/apps/discover/group1/_discover_histogram.ts index e451eee881335..03608566969a5 100644 --- a/test/functional/apps/discover/group1/_discover_histogram.ts +++ b/test/functional/apps/discover/group1/_discover_histogram.ts @@ -270,5 +270,27 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(canvasExists).to.be(false); }); }); + + it('should recover from broken query search when clearing the query bar', async () => { + await PageObjects.common.navigateToApp('discover'); + await PageObjects.discover.waitUntilSearchingHasFinished(); + await PageObjects.timePicker.setDefaultAbsoluteRange(); + // Make sure the chart is visible + await testSubjects.click('unifiedHistogramChartOptionsToggle'); + await testSubjects.click('unifiedHistogramChartToggle'); + await PageObjects.discover.waitUntilSearchingHasFinished(); + // type an invalid search query, hit refresh + await queryBar.setQuery('this is > not valid'); + await queryBar.submitQuery(); + // check the error state + expect(await testSubjects.exists('embeddable-lens-failure')).to.be(true); + + // now remove the query + await queryBar.clearQuery(); + await queryBar.submitQuery(); + await PageObjects.discover.waitUntilSearchingHasFinished(); + // check no error state + expect(await PageObjects.discover.isChartVisible()).to.be(true); + }); }); } diff --git a/test/functional/services/filter_bar.ts b/test/functional/services/filter_bar.ts index 7e28176e764e7..656efa1b002f9 100644 --- a/test/functional/services/filter_bar.ts +++ b/test/functional/services/filter_bar.ts @@ -304,6 +304,7 @@ export class FilterBarService extends FtrService { await this.testSubjects.clickWhenNotDisabled('saveFilter'); }); + await this.testSubjects.waitForDeleted('saveFilter'); await this.header.awaitGlobalLoadingIndicatorHidden(); } diff --git a/tsconfig.base.json b/tsconfig.base.json index 1e8bd1ef0ade0..6247306af2a2e 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1060,6 +1060,8 @@ "@kbn/securitysolution-es-utils/*": ["packages/kbn-securitysolution-es-utils/*"], "@kbn/securitysolution-exception-list-components": ["packages/kbn-securitysolution-exception-list-components"], "@kbn/securitysolution-exception-list-components/*": ["packages/kbn-securitysolution-exception-list-components/*"], + "@kbn/securitysolution-grouping": ["packages/kbn-securitysolution-grouping"], + "@kbn/securitysolution-grouping/*": ["packages/kbn-securitysolution-grouping/*"], "@kbn/securitysolution-hook-utils": ["packages/kbn-securitysolution-hook-utils"], "@kbn/securitysolution-hook-utils/*": ["packages/kbn-securitysolution-hook-utils/*"], "@kbn/securitysolution-io-ts-alerting-types": ["packages/kbn-securitysolution-io-ts-alerting-types"], diff --git a/x-pack/plugins/alerting/server/task_runner/rule_action_helper.test.ts b/x-pack/plugins/alerting/server/task_runner/rule_action_helper.test.ts index c69d394d258ec..87af43fe58d2e 100644 --- a/x-pack/plugins/alerting/server/task_runner/rule_action_helper.test.ts +++ b/x-pack/plugins/alerting/server/task_runner/rule_action_helper.test.ts @@ -38,8 +38,7 @@ const mockAction: RuleAction = { const mockSummaryAction: RuleAction = { id: '1', - // @ts-ignore - group: null, + group: 'default', actionTypeId: 'slack', params: {}, frequency: { diff --git a/x-pack/plugins/alerting/server/task_runner/rule_action_helper.ts b/x-pack/plugins/alerting/server/task_runner/rule_action_helper.ts index 2252e38b7c43b..5fa8da9b25d21 100644 --- a/x-pack/plugins/alerting/server/task_runner/rule_action_helper.ts +++ b/x-pack/plugins/alerting/server/task_runner/rule_action_helper.ts @@ -69,7 +69,7 @@ export const isSummaryActionThrottled = ({ }; export const generateActionHash = (action: RuleAction) => { - return `${action.actionTypeId}:${action.group || 'summary'}:${ + return `${action.actionTypeId}:${action.frequency?.summary ? 'summary' : action.group}:${ action.frequency?.throttle || 'no-throttling' }`; }; @@ -82,7 +82,9 @@ export const getSummaryActionsFromTaskState = ({ summaryActions?: ThrottledActions; }) => { return Object.entries(summaryActions).reduce((newObj, [key, val]) => { - const actionExists = actions.some((action) => generateActionHash(action) === key); + const actionExists = actions.some( + (action) => action.frequency?.summary && generateActionHash(action) === key + ); if (actionExists) { return { ...newObj, [key]: val }; } else { diff --git a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts index 779b467160b2d..7a000815e3959 100644 --- a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts +++ b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts @@ -1486,7 +1486,7 @@ describe('Task Runner', () => { generateEnqueueFunctionInput({ isBulk, id: '1', foo: true }) ); expect(result.state.summaryActions).toEqual({ - 'slack:default:1h': { date: new Date(DATE_1970) }, + 'slack:summary:1h': { date: new Date(DATE_1970) }, }); } ); diff --git a/x-pack/plugins/apm/server/lib/anomaly_detection/create_anomaly_detection_jobs.ts b/x-pack/plugins/apm/server/lib/anomaly_detection/create_anomaly_detection_jobs.ts index 85c9550fd230d..636c7b2fde323 100644 --- a/x-pack/plugins/apm/server/lib/anomaly_detection/create_anomaly_detection_jobs.ts +++ b/x-pack/plugins/apm/server/lib/anomaly_detection/create_anomaly_detection_jobs.ts @@ -136,12 +136,12 @@ async function createAnomalyDetectionJob({ ], }); - waitForIndexStatus({ + await waitForIndexStatus({ client: esClient, index: '.ml-*', timeout: DEFAULT_TIMEOUT, status: 'yellow', - }); + })(); return anomalyDetectionJob; }); diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/field_type_icon/__snapshots__/field_type_icon.test.tsx.snap b/x-pack/plugins/data_visualizer/public/application/common/components/field_type_icon/__snapshots__/field_type_icon.test.tsx.snap deleted file mode 100644 index af4464cbc6b4e..0000000000000 --- a/x-pack/plugins/data_visualizer/public/application/common/components/field_type_icon/__snapshots__/field_type_icon.test.tsx.snap +++ /dev/null @@ -1,15 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`FieldTypeIcon render component when type matches a field type 1`] = ` - - - -`; diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/field_type_icon/field_type_icon.test.tsx b/x-pack/plugins/data_visualizer/public/application/common/components/field_type_icon/field_type_icon.test.tsx index e01890d8b0a0f..04e8059163960 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/field_type_icon/field_type_icon.test.tsx +++ b/x-pack/plugins/data_visualizer/public/application/common/components/field_type_icon/field_type_icon.test.tsx @@ -6,47 +6,60 @@ */ import React from 'react'; -import { mount, shallow } from 'enzyme'; - +import { render, fireEvent, waitFor } from '@testing-library/react'; import { FieldTypeIcon } from './field_type_icon'; import { SUPPORTED_FIELD_TYPES } from '../../../../../common/constants'; describe('FieldTypeIcon', () => { - test(`render component when type matches a field type`, () => { - const typeIconComponent = shallow( - + it('renders label and icon but not tooltip content on mouseover if tooltipEnabled=false', async () => { + const { getByText, container } = render( + ); - expect(typeIconComponent).toMatchSnapshot(); - }); - // TODO: Broken with Jest 27 - test.skip(`render with tooltip and test hovering`, () => { - // Use fake timers so we don't have to wait for the EuiToolTip timeout - jest.useFakeTimers({ legacyFakeTimers: true }); + expect(container.querySelector('[data-test-subj="dvFieldTypeIcon-keyword"]')).toBeDefined(); - const typeIconComponent = mount( - - ); - - expect(typeIconComponent.find('EuiToolTip').children()).toHaveLength(1); + fireEvent.mouseOver(getByText('Keyword')); - typeIconComponent.simulate('mouseover'); + await waitFor( + () => { + const tooltip = document.querySelector('[data-test-subj="dvFieldTypeTooltip"]'); + expect(tooltip).toBeNull(); + }, + { timeout: 1500 } // Account for long delay on tooltips + ); + }); - // Run the timers so the EuiTooltip will be visible - jest.runAllTimers(); + it(`renders component when type matches a field type`, () => { + const { container } = render( + + ); - typeIconComponent.update(); - expect(typeIconComponent.find('EuiToolTip').children()).toHaveLength(2); + expect(container.querySelector('[data-test-subj="dvFieldTypeIcon-keyword"]')).toBeDefined(); + expect(container).toHaveTextContent('keyword'); + }); - typeIconComponent.simulate('mouseout'); + it('shows tooltip content on mouseover', async () => { + const { getByText, container } = render( + + ); + expect(container.querySelector('[data-test-subj="dvFieldTypeIcon-keyword"]')).toBeDefined(); + expect(container).toHaveTextContent('keyword'); - // Run the timers so the EuiTooltip will be hidden again - jest.runAllTimers(); + fireEvent.mouseOver(getByText('keyword')); - typeIconComponent.update(); - expect(typeIconComponent.find('EuiToolTip').children()).toHaveLength(2); + await waitFor( + () => { + const tooltip = document.querySelector('[data-test-subj="dvFieldTypeTooltip"]'); + expect(tooltip).toBeVisible(); + expect(tooltip?.textContent).toEqual('Keyword'); + }, + { timeout: 1500 } // Account for long delay on tooltips + ); + fireEvent.mouseOut(getByText('keyword')); - // Clearing all mocks will also reset fake timers. - jest.clearAllMocks(); + await waitFor(() => { + const tooltip = document.querySelector('[data-test-subj="dvFieldTypeTooltip"]'); + expect(tooltip).toBeNull(); + }); }); }); diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/field_type_icon/field_type_icon.tsx b/x-pack/plugins/data_visualizer/public/application/common/components/field_type_icon/field_type_icon.tsx index f7b7ed8142aac..1f77f0284803f 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/field_type_icon/field_type_icon.tsx +++ b/x-pack/plugins/data_visualizer/public/application/common/components/field_type_icon/field_type_icon.tsx @@ -27,8 +27,13 @@ export const FieldTypeIcon: FC = ({ tooltipEnabled = false, }); if (tooltipEnabled === true) { return ( - - + + ); } diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/index/create_custom_pipeline_api_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/index/create_custom_pipeline_api_logic.ts index 7d9a7ede6ad98..ba3b551b23602 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/index/create_custom_pipeline_api_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/index/create_custom_pipeline_api_logic.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { IngestPipeline } from '@elastic/elasticsearch/lib/api/types'; import { i18n } from '@kbn/i18n'; import { createApiLogic } from '../../../shared/api_logic/create_api_logic'; @@ -14,9 +15,7 @@ export interface CreateCustomPipelineApiLogicArgs { indexName: string; } -export interface CreateCustomPipelineApiLogicResponse { - created: string[]; -} +export type CreateCustomPipelineApiLogicResponse = Record; export const createCustomPipeline = async ({ indexName, diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/revert_connector_pipeline_api_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/revert_connector_pipeline_api_logic.test.ts new file mode 100644 index 0000000000000..2753fadb77aea --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/revert_connector_pipeline_api_logic.test.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 { mockHttpValues } from '../../../__mocks__/kea_logic'; + +import { revertConnectorPipeline } from './revert_connector_pipeline_api_logic'; + +describe('RevertConnectorPipelineApiLogic', () => { + it('should call delete pipeline endpoint', () => { + const { http } = mockHttpValues; + revertConnectorPipeline({ indexName: 'indexName' }); + expect(http.delete).toHaveBeenCalledWith( + '/internal/enterprise_search/indices/indexName/pipelines' + ); + }); +}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/revert_connector_pipeline_api_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/revert_connector_pipeline_api_logic.ts new file mode 100644 index 0000000000000..a97cafdcd1881 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/revert_connector_pipeline_api_logic.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Actions, createApiLogic } from '../../../shared/api_logic/create_api_logic'; +import { HttpLogic } from '../../../shared/http'; + +export interface RevertConnectorPipelineArgs { + indexName: string; +} + +export const revertConnectorPipeline = async ({ indexName }: RevertConnectorPipelineArgs) => { + const route = `/internal/enterprise_search/indices/${indexName}/pipelines`; + + return await HttpLogic.values.http.delete(route); +}; + +export const RevertConnectorPipelineApilogic = createApiLogic( + ['revert_connector_pipeline_api'], + revertConnectorPipeline +); + +export type RevertConnectorPipelineActions = Actions; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipelines/customize_pipeline_item.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipelines/customize_pipeline_item.tsx index 96d213ced0f2d..e95fb524f29ab 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipelines/customize_pipeline_item.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipelines/customize_pipeline_item.tsx @@ -9,20 +9,32 @@ import React from 'react'; import { useActions, useValues } from 'kea'; -import { EuiButtonEmpty, EuiFlexGroup, EuiSpacer, EuiText } from '@elastic/eui'; +import { EuiButtonEmpty, EuiConfirmModal, EuiFlexGroup, EuiSpacer, EuiText } from '@elastic/eui'; + import { i18n } from '@kbn/i18n'; +import { Status } from '../../../../../../../common/types/api'; + +import { CANCEL_BUTTON_LABEL } from '../../../../../shared/constants'; + import { KibanaLogic } from '../../../../../shared/kibana'; import { LicensingLogic } from '../../../../../shared/licensing'; import { CreateCustomPipelineApiLogic } from '../../../../api/index/create_custom_pipeline_api_logic'; +import { RevertConnectorPipelineApilogic } from '../../../../api/pipelines/revert_connector_pipeline_api_logic'; import { IndexViewLogic } from '../../index_view_logic'; +import { PipelinesLogic } from '../pipelines_logic'; export const CustomizeIngestPipelineItem: React.FC = () => { const { indexName, ingestionMethod } = useValues(IndexViewLogic); const { isCloud } = useValues(KibanaLogic); const { hasPlatinumLicense } = useValues(LicensingLogic); const { makeRequest: createCustomPipeline } = useActions(CreateCustomPipelineApiLogic); + const { status: createStatus } = useValues(CreateCustomPipelineApiLogic); + const { isDeleteModalOpen, hasIndexIngestionPipeline } = useValues(PipelinesLogic); + const { closeDeleteModal, openDeleteModal } = useActions(PipelinesLogic); + const { makeRequest: revertPipeline } = useActions(RevertConnectorPipelineApilogic); + const { status: revertStatus } = useValues(RevertConnectorPipelineApilogic); const isGated = !isCloud && !hasPlatinumLicense; return ( @@ -49,17 +61,61 @@ export const CustomizeIngestPipelineItem: React.FC = () => { )} - createCustomPipeline({ indexName })} - > - {i18n.translate( - 'xpack.enterpriseSearch.content.index.pipelines.ingestFlyout.copyButtonLabel', - { defaultMessage: 'Copy and customize' } - )} - + {isDeleteModalOpen && ( + revertPipeline({ indexName })} + cancelButtonText={CANCEL_BUTTON_LABEL} + confirmButtonText={i18n.translate( + 'xpack.enterpriseSearch.content.index.pipelines.deleteModal.confirmButton', + { + defaultMessage: 'Delete pipeline', + } + )} + buttonColor="danger" + > +

+ {i18n.translate( + 'xpack.enterpriseSearch.content.index.pipelines.deleteModal.description', + { + defaultMessage: + 'This will delete any custom pipelines associated with this index, including machine learning inference pipelines. The index will revert to using the default ingest pipeline.', + } + )} +

+
+ )} + {hasIndexIngestionPipeline ? ( + openDeleteModal()} + > + {i18n.translate( + 'xpack.enterpriseSearch.content.index.pipelines.ingestFlyout.revertPipelineLabel', + { defaultMessage: 'Delete custom pipeline' } + )} + + ) : ( + createCustomPipeline({ indexName })} + > + {i18n.translate( + 'xpack.enterpriseSearch.content.index.pipelines.ingestFlyout.copyButtonLabel', + { defaultMessage: 'Copy and customize' } + )} + + )}
diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipelines/ingest_pipelines_card.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipelines/ingest_pipelines_card.test.tsx index 0ca347da0712e..a6c68b47c7b5a 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipelines/ingest_pipelines_card.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipelines/ingest_pipelines_card.test.tsx @@ -12,8 +12,6 @@ import React from 'react'; import { shallow } from 'enzyme'; -import { IngestPipeline } from '@elastic/elasticsearch/lib/api/types'; - import { DEFAULT_PIPELINE_NAME } from '../../../../../../../common/constants'; import { CustomPipelineItem } from './custom_pipeline_item'; @@ -52,28 +50,4 @@ describe('IngestPipelinesCard', () => { expect(wrapper.find(CustomizeIngestPipelineItem)).toHaveLength(1); expect(wrapper.find(CustomPipelineItem)).toHaveLength(0); }); - it('does not render customize cta with index ingest pipeline', () => { - const pipelineName = crawlerIndex.name; - const pipelines: Record = { - [pipelineName]: {}, - [`${pipelineName}@custom`]: { - processors: [], - }, - }; - setMockValues({ - ...DEFAULT_VALUES, - data: pipelines, - hasIndexIngestionPipeline: true, - pipelineName, - pipelineState: { - ...DEFAULT_VALUES.pipelineState, - name: pipelineName, - }, - }); - - const wrapper = shallow(); - expect(wrapper.find(CustomizeIngestPipelineItem)).toHaveLength(0); - expect(wrapper.find(DefaultPipelineItem)).toHaveLength(1); - expect(wrapper.find(CustomPipelineItem)).toHaveLength(1); - }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipelines/ingest_pipelines_card.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipelines/ingest_pipelines_card.tsx index d57b4142d2905..64f195e217891 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipelines/ingest_pipelines_card.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ingest_pipelines/ingest_pipelines_card.tsx @@ -24,14 +24,8 @@ import { IngestPipelineFlyout } from './ingest_pipeline_flyout'; export const IngestPipelinesCard: React.FC = () => { const { indexName, ingestionMethod } = useValues(IndexViewLogic); - const { - canSetPipeline, - hasIndexIngestionPipeline, - index, - pipelineName, - pipelineState, - showPipelineSettings, - } = useValues(PipelinesLogic); + const { canSetPipeline, index, pipelineName, pipelineState, showPipelineSettings } = + useValues(PipelinesLogic); const { closePipelineSettings, openPipelineSettings, setPipelineState, savePipeline } = useActions(PipelinesLogic); const { makeRequest: fetchCustomPipeline } = useActions(FetchCustomPipelineApiLogic); @@ -45,7 +39,7 @@ export const IngestPipelinesCard: React.FC = () => { return ( <> - {!hasIndexIngestionPipeline && } + {showPipelineSettings && ( { - const { showAddMlInferencePipelineModal, hasIndexIngestionPipeline, index, pipelineName } = - useValues(PipelinesLogic); + const { + showMissingPipelineCallout, + showAddMlInferencePipelineModal, + hasIndexIngestionPipeline, + index, + pipelineName, + } = useValues(PipelinesLogic); const { closeAddMlInferencePipelineModal, openAddMlInferencePipelineModal } = useActions(PipelinesLogic); + const { indexName } = useValues(IndexNameLogic); + const { makeRequest: revertPipeline } = useActions(RevertConnectorPipelineApilogic); const apiIndex = isApiIndex(index); const pipelinesTabs: EuiTabbedContentTab[] = [ @@ -66,6 +78,36 @@ export const SearchIndexPipelines: React.FC = () => { return ( <> + {showMissingPipelineCallout && ( + +

+ {i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.missingPipeline.description', + { + defaultMessage: + 'The custom pipeline for this index has been deleted. This may affect connector data ingestion. Its configuration will need to be reverted to the default pipeline settings.', + } + )} +

+ revertPipeline({ indexName })}> + {i18n.translate( + 'xpack.enterpriseSearch.content.indices.pipelines.missingPipeline.buttonLabel', + { + defaultMessage: 'Revert pipeline to default', + } + )} + +
+ )} diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.test.ts index a16bd36ee54ba..69e01d45750fe 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.test.ts @@ -35,10 +35,12 @@ const DEFAULT_VALUES = { hasIndexIngestionPipeline: false, index: undefined, indexName: '', + isDeleteModalOpen: false, mlInferencePipelineProcessors: undefined, pipelineName: DEFAULT_PIPELINE_VALUES.name, pipelineState: DEFAULT_PIPELINE_VALUES, showAddMlInferencePipelineModal: false, + showMissingPipelineCallout: false, showPipelineSettings: false, }; @@ -145,16 +147,16 @@ describe('PipelinesLogic', () => { }); }); describe('createCustomPipelineSuccess', () => { - it('should call flashSuccessToast', () => { + it('should call flashSuccessToast and update pipelines', () => { PipelinesLogic.actions.setPipelineState = jest.fn(); PipelinesLogic.actions.savePipeline = jest.fn(); PipelinesLogic.actions.fetchCustomPipeline = jest.fn(); PipelinesLogic.actions.fetchIndexApiSuccess(connectorIndex); - PipelinesLogic.actions.createCustomPipelineSuccess({ created: ['a', 'b'] }); + PipelinesLogic.actions.createCustomPipelineSuccess({ [connectorIndex.name]: {} }); expect(flashSuccessToast).toHaveBeenCalledWith('Custom pipeline created'); expect(PipelinesLogic.actions.setPipelineState).toHaveBeenCalledWith({ ...PipelinesLogic.values.pipelineState, - name: 'a', + name: connectorIndex.name, }); expect(PipelinesLogic.actions.savePipeline).toHaveBeenCalled(); expect(PipelinesLogic.actions.fetchCustomPipeline).toHaveBeenCalled(); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.ts index dbe0239028ad5..bf71dc215243f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/pipelines_logic.ts @@ -66,6 +66,10 @@ import { } from '../../../api/pipelines/detach_ml_inference_pipeline'; import { FetchMlInferencePipelineProcessorsApiLogic } from '../../../api/pipelines/fetch_ml_inference_pipeline_processors'; +import { + RevertConnectorPipelineActions, + RevertConnectorPipelineApilogic, +} from '../../../api/pipelines/revert_connector_pipeline_api_logic'; import { isApiIndex, isConnectorIndex, isCrawlerIndex } from '../../../utils/indices'; type PipelinesActions = Pick< @@ -77,6 +81,7 @@ type PipelinesActions = Pick< AttachMlInferencePipelineResponse >['apiSuccess']; closeAddMlInferencePipelineModal: () => void; + closeDeleteModal: () => void; closePipelineSettings: () => void; createCustomPipeline: Actions< CreateCustomPipelineApiLogicArgs, @@ -132,7 +137,9 @@ type PipelinesActions = Pick< fetchMlInferenceProcessors: typeof FetchMlInferencePipelineProcessorsApiLogic.actions.makeRequest; fetchMlInferenceProcessorsApiError: (error: HttpError) => HttpError; openAddMlInferencePipelineModal: () => void; + openDeleteModal: () => void; openPipelineSettings: () => void; + revertPipelineSuccess: RevertConnectorPipelineActions['apiSuccess']; savePipeline: () => void; setPipelineState(pipeline: IngestPipelineParams): { pipeline: IngestPipelineParams; @@ -148,18 +155,22 @@ interface PipelinesValues { hasIndexIngestionPipeline: boolean; index: CachedFetchIndexApiLogicValues['fetchIndexApiData']; indexName: string; + isDeleteModalOpen: boolean; mlInferencePipelineProcessors: InferencePipeline[]; pipelineName: string; pipelineState: IngestPipelineParams; showAddMlInferencePipelineModal: boolean; + showMissingPipelineCallout: boolean; showPipelineSettings: boolean; } export const PipelinesLogic = kea>({ actions: { closeAddMlInferencePipelineModal: true, + closeDeleteModal: true, closePipelineSettings: true, openAddMlInferencePipelineModal: true, + openDeleteModal: true, openPipelineSettings: true, savePipeline: true, setPipelineState: (pipeline: IngestPipelineParams) => ({ pipeline }), @@ -201,6 +212,8 @@ export const PipelinesLogic = kea { - actions.setPipelineState({ ...values.pipelineState, name: created[0] }); + createCustomPipelineSuccess: (created) => { + actions.fetchCustomPipelineSuccess(created); + actions.setPipelineState({ ...values.pipelineState, name: values.indexName }); actions.savePipeline(); actions.fetchCustomPipeline({ indexName: values.index.name }); }, @@ -313,6 +327,19 @@ export const PipelinesLogic = kea { + if (isConnectorIndex(values.index) || isCrawlerIndex(values.index)) { + if (values.index.connector) { + // had to split up these if checks rather than nest them or typescript wouldn't recognize connector as defined + actions.fetchIndexApiSuccess({ + ...values.index, + connector: { ...values.index.connector, pipeline: values.defaultPipelineValues }, + }); + actions.fetchCustomPipelineSuccess({}); + } + } + actions.fetchCustomPipeline({ indexName: values.indexName }); + }, savePipeline: () => { if (isConnectorIndex(values.index) || isCrawlerIndex(values.index)) { if (values.index.connector) { @@ -326,6 +353,14 @@ export const PipelinesLogic = kea ({ + isDeleteModalOpen: [ + false, + { + closeDeleteModal: () => false, + openDeleteModal: () => true, + revertPipelineSuccess: () => false, + }, + ], pipelineState: [ DEFAULT_PIPELINE_VALUES, { @@ -381,5 +416,25 @@ export const PipelinesLogic = kea customPipelineData && customPipelineData[indexName] ? indexName : pipelineState.name, ], + showMissingPipelineCallout: [ + () => [ + selectors.hasIndexIngestionPipeline, + selectors.pipelineName, + selectors.customPipelineData, + selectors.index, + ], + ( + hasCustomPipeline: boolean, + pipelineName: string, + customPipelineData: Record | undefined, + index: ElasticsearchIndexWithIngestion + ) => + Boolean( + hasCustomPipeline && + customPipelineData && + !customPipelineData[pipelineName] && + isConnectorIndex(index) + ), + ], }), }); diff --git a/x-pack/plugins/enterprise_search/public/assets/source_icons/azure_cloud.svg b/x-pack/plugins/enterprise_search/public/assets/source_icons/azure_blob.svg similarity index 100% rename from x-pack/plugins/enterprise_search/public/assets/source_icons/azure_cloud.svg rename to x-pack/plugins/enterprise_search/public/assets/source_icons/azure_blob.svg diff --git a/x-pack/plugins/enterprise_search/server/integrations.ts b/x-pack/plugins/enterprise_search/server/integrations.ts index b7d1516764187..94b12b35d4120 100644 --- a/x-pack/plugins/enterprise_search/server/integrations.ts +++ b/x-pack/plugins/enterprise_search/server/integrations.ts @@ -617,14 +617,14 @@ export const registerEnterpriseSearchIntegrations = ( }); customIntegrations.registerCustomIntegration({ - id: 'azure_cloud_storage', - title: i18n.translate('xpack.enterpriseSearch.workplaceSearch.integrations.azureCloud', { - defaultMessage: 'Azure Cloud Storage', + id: 'azure_blob_storage', + title: i18n.translate('xpack.enterpriseSearch.workplaceSearch.integrations.azureBlob', { + defaultMessage: 'Azure Blob Storage', }), description: i18n.translate( - 'xpack.enterpriseSearch.workplaceSearch.integrations.azureCloudDescription', + 'xpack.enterpriseSearch.workplaceSearch.integrations.azureBlobDescription', { - defaultMessage: 'Search over your content on Azure Cloud Storage with Enterprise Search.', + defaultMessage: 'Search over your content on Azure Blob Storage with Enterprise Search.', } ), categories: ['enterprise_search', 'elastic_stack', 'custom'], @@ -632,7 +632,7 @@ export const registerEnterpriseSearchIntegrations = ( icons: [ { type: 'svg', - src: http.basePath.prepend('/plugins/enterpriseSearch/assets/source_icons/azure_cloud.svg'), + src: http.basePath.prepend('/plugins/enterpriseSearch/assets/source_icons/azure_blob.svg'), }, ], shipper: 'enterprise_search', diff --git a/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.test.ts b/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.test.ts index 23232fda4199d..91859d66f6e55 100644 --- a/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.test.ts +++ b/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.test.ts @@ -8,8 +8,6 @@ import { merge } from 'lodash'; import { ElasticsearchClient } from '@kbn/core/server'; -import { getInferencePipelineNameFromIndexName } from '../../utils/ml_inference_pipeline_utils'; - import { createIndexPipelineDefinitions } from './create_pipeline_definitions'; import { formatMlPipelineBody } from './create_pipeline_definitions'; @@ -22,19 +20,13 @@ describe('createIndexPipelineDefinitions util function', () => { }, }; - const expectedResult = { - created: [indexName, `${indexName}@custom`, getInferencePipelineNameFromIndexName(indexName)], - }; - beforeEach(() => { jest.clearAllMocks(); }); it('should create the pipelines', async () => { mockClient.ingest.putPipeline.mockImplementation(() => Promise.resolve({ acknowledged: true })); - await expect( - createIndexPipelineDefinitions(indexName, mockClient as unknown as ElasticsearchClient) - ).resolves.toEqual(expectedResult); + await createIndexPipelineDefinitions(indexName, mockClient as unknown as ElasticsearchClient); expect(mockClient.ingest.putPipeline).toHaveBeenCalledTimes(3); }); }); diff --git a/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.ts b/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.ts index 8b511ab22c3e7..209d9d4787ea3 100644 --- a/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.ts +++ b/x-pack/plugins/enterprise_search/server/lib/pipelines/create_pipeline_definitions.ts @@ -5,6 +5,7 @@ * 2.0. */ +import { IngestPipeline } from '@elastic/elasticsearch/lib/api/types'; import { ElasticsearchClient } from '@kbn/core/server'; import { generateMlInferencePipelineBody } from '../../../common/ml_inference_pipeline'; @@ -14,10 +15,6 @@ import { } from '../../../common/types/pipelines'; import { getInferencePipelineNameFromIndexName } from '../../utils/ml_inference_pipeline_utils'; -export interface CreatedPipelines { - created: string[]; -} - /** * Used to create index-specific Ingest Pipelines to be used in conjunction with Enterprise Search * ingestion mechanisms. Three pipelines are created: @@ -33,189 +30,202 @@ export interface CreatedPipelines { export const createIndexPipelineDefinitions = async ( indexName: string, esClient: ElasticsearchClient -): Promise => { +): Promise> => { // TODO: add back descriptions (see: https://github.com/elastic/elasticsearch-specification/issues/1827) - await esClient.ingest.putPipeline({ - description: `Enterprise Search Machine Learning Inference pipeline for the '${indexName}' index`, - id: getInferencePipelineNameFromIndexName(indexName), - processors: [], - version: 1, - }); - await esClient.ingest.putPipeline({ - description: `Enterprise Search customizable ingest pipeline for the '${indexName}' index`, - id: `${indexName}@custom`, - processors: [], - version: 1, - }); - await esClient.ingest.putPipeline({ - _meta: { - managed: true, - managed_by: 'Enterprise Search', - }, - description: `Enterprise Search ingest pipeline for the '${indexName}' index`, - id: `${indexName}`, - processors: [ - { - attachment: { - field: '_attachment', - if: 'ctx?._extract_binary_content == true', - ignore_missing: true, - indexed_chars_field: '_attachment_indexed_chars', - on_failure: [ - { - append: { - field: '_ingestion_errors', - value: [ - [ - "Processor 'attachment' in pipeline '{{ _ingest.on_failure_pipeline }}' failed with message '{{ _ingest.on_failure_message }}'", + let result: Record = {}; + try { + const mlPipeline = { + description: `Enterprise Search Machine Learning Inference pipeline for the '${indexName}' index`, + id: getInferencePipelineNameFromIndexName(indexName), + processors: [], + version: 1, + }; + await esClient.ingest.putPipeline(mlPipeline); + result = { ...result, [mlPipeline.id]: mlPipeline }; + const customPipeline = { + description: `Enterprise Search customizable ingest pipeline for the '${indexName}' index`, + id: `${indexName}@custom`, + processors: [], + version: 1, + }; + await esClient.ingest.putPipeline(customPipeline); + result = { ...result, [customPipeline.id]: customPipeline }; + const ingestPipeline = { + _meta: { + managed: true, + managed_by: 'Enterprise Search', + }, + description: `Enterprise Search ingest pipeline for the '${indexName}' index`, + id: `${indexName}`, + processors: [ + { + attachment: { + field: '_attachment', + if: 'ctx?._extract_binary_content == true', + ignore_missing: true, + indexed_chars_field: '_attachment_indexed_chars', + on_failure: [ + { + append: { + field: '_ingestion_errors', + value: [ + [ + "Processor 'attachment' in pipeline '{{ _ingest.on_failure_pipeline }}' failed with message '{{ _ingest.on_failure_message }}'", + ], ], - ], + }, }, - }, - ], - target_field: '_extracted_attachment', + ], + target_field: '_extracted_attachment', + }, }, - }, - { - set: { - field: 'body', - if: 'ctx?._extract_binary_content == true', - on_failure: [ - { - append: { - field: '_ingestion_errors', - value: [ - [ - "Processor 'set' with tag 'set_body' in pipeline '{{ _ingest.on_failure_pipeline }}' failed with message '{{ _ingest.on_failure_message }}'", + { + set: { + field: 'body', + if: 'ctx?._extract_binary_content == true', + on_failure: [ + { + append: { + field: '_ingestion_errors', + value: [ + [ + "Processor 'set' with tag 'set_body' in pipeline '{{ _ingest.on_failure_pipeline }}' failed with message '{{ _ingest.on_failure_message }}'", + ], ], - ], + }, }, - }, - ], - tag: 'set_body', - value: '{{{_extracted_attachment.content}}}', + ], + tag: 'set_body', + value: '{{{_extracted_attachment.content}}}', + }, }, - }, - { - pipeline: { - if: 'ctx?._run_ml_inference == true', - name: getInferencePipelineNameFromIndexName(indexName), - on_failure: [ - { - append: { - field: '_ingestion_errors', - value: [ - "Processor 'pipeline' with tag 'index_ml_inference_pipeline' in pipeline '{{ _ingest.on_failure_pipeline }}' failed with message '{{ _ingest.on_failure_message }}'", - ], + { + pipeline: { + if: 'ctx?._run_ml_inference == true', + name: getInferencePipelineNameFromIndexName(indexName), + on_failure: [ + { + append: { + field: '_ingestion_errors', + value: [ + "Processor 'pipeline' with tag 'index_ml_inference_pipeline' in pipeline '{{ _ingest.on_failure_pipeline }}' failed with message '{{ _ingest.on_failure_message }}'", + ], + }, }, - }, - ], - tag: 'index_ml_inference_pipeline', + ], + tag: 'index_ml_inference_pipeline', + }, }, - }, - { - pipeline: { - name: `${indexName}@custom`, - on_failure: [ - { - append: { - field: '_ingestion_errors', - value: [ - "Processor 'pipeline' with tag 'index_custom_pipeline' in pipeline '{{ _ingest.on_failure_pipeline }}' failed with message '{{ _ingest.on_failure_message }}'", - ], + { + pipeline: { + name: `${indexName}@custom`, + on_failure: [ + { + append: { + field: '_ingestion_errors', + value: [ + "Processor 'pipeline' with tag 'index_custom_pipeline' in pipeline '{{ _ingest.on_failure_pipeline }}' failed with message '{{ _ingest.on_failure_message }}'", + ], + }, }, - }, - ], - tag: 'index_custom_pipeline', + ], + tag: 'index_custom_pipeline', + }, }, - }, - { - gsub: { - field: 'body', - if: 'ctx?._extract_binary_content == true', - ignore_missing: true, - on_failure: [ - { - append: { - field: '_ingestion_errors', - value: [ - "Processor 'gsub' with tag 'remove_replacement_chars' in pipeline '{{ _ingest.on_failure_pipeline }}' failed with message '{{ _ingest.on_failure_message }}'", - ], + { + gsub: { + field: 'body', + if: 'ctx?._extract_binary_content == true', + ignore_missing: true, + on_failure: [ + { + append: { + field: '_ingestion_errors', + value: [ + "Processor 'gsub' with tag 'remove_replacement_chars' in pipeline '{{ _ingest.on_failure_pipeline }}' failed with message '{{ _ingest.on_failure_message }}'", + ], + }, }, - }, - ], - pattern: '�', - replacement: '', - tag: 'remove_replacement_chars', + ], + pattern: '�', + replacement: '', + tag: 'remove_replacement_chars', + }, }, - }, - { - gsub: { - field: 'body', - if: 'ctx?._reduce_whitespace == true', - ignore_missing: true, - on_failure: [ - { - append: { - field: '_ingestion_errors', - value: [ - "Processor 'gsub' with tag 'remove_extra_whitespace' in pipeline '{{ _ingest.on_failure_pipeline }}' failed with message '{{ _ingest.on_failure_message }}'", - ], + { + gsub: { + field: 'body', + if: 'ctx?._reduce_whitespace == true', + ignore_missing: true, + on_failure: [ + { + append: { + field: '_ingestion_errors', + value: [ + "Processor 'gsub' with tag 'remove_extra_whitespace' in pipeline '{{ _ingest.on_failure_pipeline }}' failed with message '{{ _ingest.on_failure_message }}'", + ], + }, }, - }, - ], - pattern: '\\s+', - replacement: ' ', - tag: 'remove_extra_whitespace', + ], + pattern: '\\s+', + replacement: ' ', + tag: 'remove_extra_whitespace', + }, }, - }, - { - trim: { - field: 'body', - if: 'ctx?._reduce_whitespace == true', - ignore_missing: true, - on_failure: [ - { - append: { - field: '_ingestion_errors', - value: [ - "Processor 'trim' in pipeline '{{ _ingest.on_failure_pipeline }}' failed with message '{{ _ingest.on_failure_message }}'", - ], + { + trim: { + field: 'body', + if: 'ctx?._reduce_whitespace == true', + ignore_missing: true, + on_failure: [ + { + append: { + field: '_ingestion_errors', + value: [ + "Processor 'trim' in pipeline '{{ _ingest.on_failure_pipeline }}' failed with message '{{ _ingest.on_failure_message }}'", + ], + }, }, - }, - ], + ], + }, }, - }, - { - remove: { - field: [ - '_attachment', - '_attachment_indexed_chars', - '_extracted_attachment', - '_extract_binary_content', - '_reduce_whitespace', - '_run_ml_inference', - ], - ignore_missing: true, - on_failure: [ - { - append: { - field: '_ingestion_errors', - value: [ - "Processor 'remove' with tag 'remove_meta_fields' in pipeline '{{ _ingest.on_failure_pipeline }}' failed with message '{{ _ingest.on_failure_message }}'", - ], + { + remove: { + field: [ + '_attachment', + '_attachment_indexed_chars', + '_extracted_attachment', + '_extract_binary_content', + '_reduce_whitespace', + '_run_ml_inference', + ], + ignore_missing: true, + on_failure: [ + { + append: { + field: '_ingestion_errors', + value: [ + "Processor 'remove' with tag 'remove_meta_fields' in pipeline '{{ _ingest.on_failure_pipeline }}' failed with message '{{ _ingest.on_failure_message }}'", + ], + }, }, - }, - ], - tag: 'remove_meta_fields', + ], + tag: 'remove_meta_fields', + }, }, - }, - ], - version: 1, - }); - return { - created: [indexName, `${indexName}@custom`, getInferencePipelineNameFromIndexName(indexName)], - }; + ], + version: 1, + }; + await esClient.ingest.putPipeline(ingestPipeline); + result = { ...result, [ingestPipeline.id]: ingestPipeline }; + return result; + } catch (error) { + // clean up pipelines if one failed to create + for (const id of Object.keys(result)) { + await esClient.ingest.deletePipeline({ id }); + } + throw error; + } }; /** diff --git a/x-pack/plugins/enterprise_search/server/lib/pipelines/delete_pipelines.ts b/x-pack/plugins/enterprise_search/server/lib/pipelines/delete_pipelines.ts new file mode 100644 index 0000000000000..3038f48004ea9 --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/lib/pipelines/delete_pipelines.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IScopedClusterClient } from '@kbn/core/server'; + +import { getInferencePipelineNameFromIndexName } from '../../utils/ml_inference_pipeline_utils'; + +export const deleteIndexPipelines = async ( + client: IScopedClusterClient, + indexName: string +): Promise<{ deleted: string[] }> => { + const deleted: string[] = []; + const promises = [ + client.asCurrentUser.ingest + .deletePipeline({ id: indexName }) + .then(() => deleted.push(indexName)), + client.asCurrentUser.ingest + .deletePipeline({ + id: getInferencePipelineNameFromIndexName(indexName), + }) + .then(() => deleted.push(getInferencePipelineNameFromIndexName(indexName))), + client.asCurrentUser.ingest + .deletePipeline({ id: `${indexName}@custom` }) + .then(() => deleted.push(`${indexName}@custom`)), + ]; + await Promise.allSettled(promises); + return { + deleted, + }; +}; diff --git a/x-pack/plugins/enterprise_search/server/lib/pipelines/revert_custom_pipeline.ts b/x-pack/plugins/enterprise_search/server/lib/pipelines/revert_custom_pipeline.ts new file mode 100644 index 0000000000000..60a9e5cfcf97d --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/lib/pipelines/revert_custom_pipeline.ts @@ -0,0 +1,29 @@ +/* + * 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 { IScopedClusterClient } from '@kbn/core/server'; + +import { CONNECTORS_INDEX } from '../..'; + +import { fetchConnectorByIndexName } from '../connectors/fetch_connectors'; + +import { deleteIndexPipelines } from './delete_pipelines'; + +import { getDefaultPipeline } from './get_default_pipeline'; + +export const revertCustomPipeline = async (client: IScopedClusterClient, indexName: string) => { + const connector = await fetchConnectorByIndexName(client, indexName); + if (connector) { + const pipeline = await getDefaultPipeline(client); + await client.asCurrentUser.update({ + doc: { pipeline }, + id: connector?.id, + index: CONNECTORS_INDEX, + }); + } + return await deleteIndexPipelines(client, indexName); +}; diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts index 238a882142b7c..5bf70def81b76 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.ts @@ -41,9 +41,11 @@ import { deleteMlInferencePipeline } from '../../lib/indices/pipelines/ml_infere import { detachMlInferencePipeline } from '../../lib/indices/pipelines/ml_inference/pipeline_processors/detach_ml_inference_pipeline'; import { fetchMlInferencePipelineProcessors } from '../../lib/indices/pipelines/ml_inference/pipeline_processors/get_ml_inference_pipeline_processors'; import { createIndexPipelineDefinitions } from '../../lib/pipelines/create_pipeline_definitions'; +import { deleteIndexPipelines } from '../../lib/pipelines/delete_pipelines'; import { getCustomPipelines } from '../../lib/pipelines/get_custom_pipelines'; import { getPipeline } from '../../lib/pipelines/get_pipeline'; import { getMlInferencePipelines } from '../../lib/pipelines/ml_inference/get_ml_inference_pipelines'; +import { revertCustomPipeline } from '../../lib/pipelines/revert_custom_pipeline'; import { RouteDependencies } from '../../plugin'; import { createError } from '../../utils/create_error'; import { elasticsearchErrorHandler } from '../../utils/elasticsearch_error_handler'; @@ -196,6 +198,8 @@ export function registerIndexRoutes({ await deleteConnectorById(client, connector.id); } + await deleteIndexPipelines(client, indexName); + await client.asCurrentUser.indices.delete({ index: indexName }); return response.ok({ @@ -299,6 +303,27 @@ export function registerIndexRoutes({ }) ); + router.delete( + { + path: '/internal/enterprise_search/indices/{indexName}/pipelines', + validate: { + params: schema.object({ + indexName: schema.string(), + }), + }, + }, + elasticsearchErrorHandler(log, async (context, request, response) => { + const indexName = decodeURIComponent(request.params.indexName); + const { client } = (await context.core).elasticsearch; + const body = await revertCustomPipeline(client, indexName); + + return response.ok({ + body, + headers: { 'content-type': 'application/json' }, + }); + }) + ); + router.get( { path: '/internal/enterprise_search/indices/{indexName}/pipelines', diff --git a/x-pack/plugins/fleet/common/experimental_features.ts b/x-pack/plugins/fleet/common/experimental_features.ts index 8fae99c53ded7..b8861bfbb1caa 100644 --- a/x-pack/plugins/fleet/common/experimental_features.ts +++ b/x-pack/plugins/fleet/common/experimental_features.ts @@ -19,7 +19,7 @@ export const allowedExperimentalValues = Object.freeze({ experimentalDataStreamSettings: false, displayAgentMetrics: true, showIntegrationsSubcategories: false, - agentFqdnMode: true, + agentFqdnMode: false, showExperimentalShipperOptions: false, fleetServerStandalone: false, }); diff --git a/x-pack/plugins/graph/kibana.jsonc b/x-pack/plugins/graph/kibana.jsonc index c47a12d71cc92..5c85742b492a2 100644 --- a/x-pack/plugins/graph/kibana.jsonc +++ b/x-pack/plugins/graph/kibana.jsonc @@ -16,7 +16,9 @@ "navigation", "savedObjects", "unifiedSearch", - "inspector" + "inspector", + "savedObjectsManagement", + "savedObjectsFinder", ], "optionalPlugins": [ "home", diff --git a/x-pack/plugins/graph/public/application.tsx b/x-pack/plugins/graph/public/application.tsx index bbb14a96ac5eb..90cbc2b88b19f 100644 --- a/x-pack/plugins/graph/public/application.tsx +++ b/x-pack/plugins/graph/public/application.tsx @@ -35,6 +35,7 @@ import('./font_awesome'); import { SavedObjectsStart } from '@kbn/saved-objects-plugin/public'; import { SpacesApi } from '@kbn/spaces-plugin/public'; import { KibanaThemeProvider, toMountPoint } from '@kbn/kibana-react-plugin/public'; +import { SavedObjectsManagementPluginStart } from '@kbn/saved-objects-management-plugin/public'; import { GraphSavePolicy } from './types'; import { graphRouter } from './router'; import { checkLicense } from '../common/check_license'; @@ -72,6 +73,7 @@ export interface GraphDependencies { history: ScopedHistory; spaces?: SpacesApi; inspect: InspectorPublicPluginStart; + savedObjectsManagement: SavedObjectsManagementPluginStart; } export type GraphServices = Omit; diff --git a/x-pack/plugins/graph/public/apps/workspace_route.tsx b/x-pack/plugins/graph/public/apps/workspace_route.tsx index 75aafeb1a7868..8fcff177d054b 100644 --- a/x-pack/plugins/graph/public/apps/workspace_route.tsx +++ b/x-pack/plugins/graph/public/apps/workspace_route.tsx @@ -43,6 +43,7 @@ export const WorkspaceRoute = ({ spaces, indexPatterns: getIndexPatternProvider, inspect, + savedObjectsManagement, }, }: WorkspaceRouteProps) => { /** @@ -70,9 +71,10 @@ export const WorkspaceRoute = ({ storage, data, unifiedSearch, + savedObjectsManagement, ...coreStart, }), - [coreStart, data, storage, unifiedSearch] + [coreStart, data, storage, unifiedSearch, savedObjectsManagement] ); const { loading, requestAdapter, callNodeProxy, callSearchNodeProxy, handleSearchQueryError } = diff --git a/x-pack/plugins/graph/public/components/guidance_panel/guidance_panel.tsx b/x-pack/plugins/graph/public/components/guidance_panel/guidance_panel.tsx index 81be2e191516a..6b6c06dbc02ba 100644 --- a/x-pack/plugins/graph/public/components/guidance_panel/guidance_panel.tsx +++ b/x-pack/plugins/graph/public/components/guidance_panel/guidance_panel.tsx @@ -77,7 +77,7 @@ function GuidancePanelComponent(props: GuidancePanelProps) { const kibana = useKibana(); const { services, overlays } = kibana; - const { http, uiSettings, application, data } = services; + const { http, uiSettings, application, data, savedObjectsManagement } = services; const [hasDataViews, setHasDataViews] = useState(true); useEffect(() => { @@ -90,7 +90,7 @@ function GuidancePanelComponent(props: GuidancePanelProps) { if (!overlays || !application) return null; const onOpenDatasourcePicker = () => { - openSourceModal({ overlays, http, uiSettings }, onIndexPatternSelected); + openSourceModal({ overlays, http, uiSettings, savedObjectsManagement }, onIndexPatternSelected); }; let content = ( diff --git a/x-pack/plugins/graph/public/components/search_bar.test.tsx b/x-pack/plugins/graph/public/components/search_bar.test.tsx index ca21e16c0fb36..e1ee8cb9d6331 100644 --- a/x-pack/plugins/graph/public/components/search_bar.test.tsx +++ b/x-pack/plugins/graph/public/components/search_bar.test.tsx @@ -29,6 +29,7 @@ import { GraphStore, setDatasource, submitSearchSaga } from '../state_management import { ReactWrapper } from 'enzyme'; import { createMockGraphStore } from '../state_management/mocks'; import { Provider } from 'react-redux'; +import { SavedObjectsManagementPluginStart } from '@kbn/saved-objects-management-plugin/public'; jest.mock('../services/source_modal', () => ({ openSourceModal: jest.fn() })); @@ -42,6 +43,7 @@ function getServiceMocks() { }, } as IUiSettingsClient, savedObjects: {} as SavedObjectsStart, + savedObjectsManagement: {} as SavedObjectsManagementPluginStart, notifications: {} as NotificationsStart, docLinks: { links: { diff --git a/x-pack/plugins/graph/public/components/search_bar.tsx b/x-pack/plugins/graph/public/components/search_bar.tsx index fcd5d576116d9..5bf23c1705dec 100644 --- a/x-pack/plugins/graph/public/components/search_bar.tsx +++ b/x-pack/plugins/graph/public/components/search_bar.tsx @@ -107,9 +107,9 @@ export function SearchBarComponent(props: SearchBarStateProps & SearchBarProps) notifications, http, docLinks, + savedObjectsManagement, } = services; if (!overlays) return null; - return (
{ @@ -131,7 +131,11 @@ export function SearchBarComponent(props: SearchBarStateProps & SearchBarProps) data-test-subj="graphDatasourceButton" onClick={() => { confirmWipeWorkspace( - () => openSourceModal({ overlays, http, uiSettings }, onIndexPatternSelected), + () => + openSourceModal( + { overlays, http, uiSettings, savedObjectsManagement }, + onIndexPatternSelected + ), i18n.translate('xpack.graph.clearWorkspace.confirmText', { defaultMessage: 'If you change data sources, your current fields and vertices will be reset.', diff --git a/x-pack/plugins/graph/public/components/source_picker.tsx b/x-pack/plugins/graph/public/components/source_picker.tsx index ceb165fd50840..ec227fdddc5bd 100644 --- a/x-pack/plugins/graph/public/components/source_picker.tsx +++ b/x-pack/plugins/graph/public/components/source_picker.tsx @@ -9,22 +9,28 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; import { CoreStart } from '@kbn/core/public'; -import { SavedObjectFinderUi } from '@kbn/saved-objects-plugin/public'; +import { SavedObjectFinder } from '@kbn/saved-objects-finder-plugin/public'; +import { SavedObjectsManagementPluginStart } from '@kbn/saved-objects-management-plugin/public'; import { IndexPatternSavedObject } from '../types'; export interface SourcePickerProps { onIndexPatternSelected: (indexPattern: IndexPatternSavedObject) => void; http: CoreStart['http']; uiSettings: CoreStart['uiSettings']; + savedObjectsManagement: SavedObjectsManagementPluginStart; } const fixedPageSize = 8; -export function SourcePicker({ http, uiSettings, onIndexPatternSelected }: SourcePickerProps) { +export function SourcePicker({ + http, + uiSettings, + savedObjectsManagement, + onIndexPatternSelected, +}: SourcePickerProps) { return ( - { onIndexPatternSelected(indexPattern as IndexPatternSavedObject); }} diff --git a/x-pack/plugins/graph/public/plugin.ts b/x-pack/plugins/graph/public/plugin.ts index 96dac017eeabb..feca5656f73d6 100644 --- a/x-pack/plugins/graph/public/plugin.ts +++ b/x-pack/plugins/graph/public/plugin.ts @@ -28,6 +28,7 @@ import { LicensingPluginStart } from '@kbn/licensing-plugin/public'; import type { HomePublicPluginSetup, HomePublicPluginStart } from '@kbn/home-plugin/public'; import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; import { SavedObjectsStart } from '@kbn/saved-objects-plugin/public'; +import { SavedObjectsManagementPluginStart } from '@kbn/saved-objects-management-plugin/public'; import { checkLicense } from '../common/check_license'; import { ConfigSchema } from '../config'; @@ -44,6 +45,7 @@ export interface GraphPluginStartDependencies { inspector: InspectorPublicPluginStart; home?: HomePublicPluginStart; spaces?: SpacesApi; + savedObjectsManagement: SavedObjectsManagementPluginStart; } export class GraphPlugin @@ -113,6 +115,7 @@ export class GraphPlugin uiSettings: core.uiSettings, spaces: pluginsStart.spaces, inspect: pluginsStart.inspector, + savedObjectsManagement: pluginsStart.savedObjectsManagement, }); }, }); diff --git a/x-pack/plugins/graph/public/services/source_modal.tsx b/x-pack/plugins/graph/public/services/source_modal.tsx index 258bb58d1e077..6da003833d1a9 100644 --- a/x-pack/plugins/graph/public/services/source_modal.tsx +++ b/x-pack/plugins/graph/public/services/source_modal.tsx @@ -8,6 +8,7 @@ import { CoreStart } from '@kbn/core/public'; import React from 'react'; import { KibanaReactOverlays } from '@kbn/kibana-react-plugin/public'; +import { SavedObjectsManagementPluginStart } from '@kbn/saved-objects-management-plugin/public'; import { SourceModal } from '../components/source_modal'; import { IndexPatternSavedObject } from '../types'; @@ -16,17 +17,20 @@ export function openSourceModal( overlays, http, uiSettings, + savedObjectsManagement, }: { overlays: KibanaReactOverlays; http: CoreStart['http']; uiSettings: CoreStart['uiSettings']; + savedObjectsManagement: SavedObjectsManagementPluginStart; }, onSelected: (indexPattern: IndexPatternSavedObject) => void ) { const modalRef = overlays.openModal( { onSelected(indexPattern); modalRef.close(); diff --git a/x-pack/plugins/graph/tsconfig.json b/x-pack/plugins/graph/tsconfig.json index 0f9bc04b6975a..3979bb5b4d9a0 100644 --- a/x-pack/plugins/graph/tsconfig.json +++ b/x-pack/plugins/graph/tsconfig.json @@ -38,6 +38,8 @@ "@kbn/utility-types", "@kbn/react-field", "@kbn/shared-ux-router", + "@kbn/saved-objects-management-plugin", + "@kbn/saved-objects-finder-plugin", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/delete_data_stream_confirmation_modal/delete_data_stream_confirmation_modal.tsx b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/delete_data_stream_confirmation_modal/delete_data_stream_confirmation_modal.tsx index f10718788eeab..bdf3958c79ca7 100644 --- a/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/delete_data_stream_confirmation_modal/delete_data_stream_confirmation_modal.tsx +++ b/x-pack/plugins/index_management/public/application/sections/home/data_stream_list/delete_data_stream_confirmation_modal/delete_data_stream_confirmation_modal.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { Fragment } from 'react'; +import React, { Fragment, useState } from 'react'; import { EuiCallOut, EuiConfirmModal, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; @@ -25,60 +25,65 @@ export const DeleteDataStreamConfirmationModal: React.FunctionComponent = dataStreams: string[]; onClose: (data?: { hasDeletedDataStreams: boolean }) => void; }) => { + const [isLoading, setLoading] = useState(false); + const dataStreamsCount = dataStreams.length; const handleDeleteDataStreams = () => { - deleteDataStreams(dataStreams).then(({ data: { dataStreamsDeleted, errors }, error }) => { - const hasDeletedDataStreams = dataStreamsDeleted && dataStreamsDeleted.length; + setLoading(true); + + deleteDataStreams(dataStreams) + .then(({ data: { dataStreamsDeleted, errors }, error }) => { + const hasDeletedDataStreams = dataStreamsDeleted && dataStreamsDeleted.length; + + if (hasDeletedDataStreams) { + const successMessage = + dataStreamsDeleted.length === 1 + ? i18n.translate( + 'xpack.idxMgmt.deleteDataStreamsConfirmationModal.successDeleteSingleNotificationMessageText', + { + defaultMessage: "Deleted data stream '{dataStreamName}'", + values: { dataStreamName: dataStreams[0] }, + } + ) + : i18n.translate( + 'xpack.idxMgmt.deleteDataStreamsConfirmationModal.successDeleteMultipleNotificationMessageText', + { + defaultMessage: + 'Deleted {numSuccesses, plural, one {# data stream} other {# data streams}}', + values: { numSuccesses: dataStreamsDeleted.length }, + } + ); - if (hasDeletedDataStreams) { - const successMessage = - dataStreamsDeleted.length === 1 + onClose({ hasDeletedDataStreams }); + notificationService.showSuccessToast(successMessage); + } + + if (error || (errors && errors.length)) { + const hasMultipleErrors = + (errors && errors.length > 1) || (error && dataStreams.length > 1); + + const errorMessage = hasMultipleErrors ? i18n.translate( - 'xpack.idxMgmt.deleteDataStreamsConfirmationModal.successDeleteSingleNotificationMessageText', + 'xpack.idxMgmt.deleteDataStreamsConfirmationModal.multipleErrorsNotificationMessageText', { - defaultMessage: "Deleted data stream '{dataStreamName}'", - values: { dataStreamName: dataStreams[0] }, + defaultMessage: 'Error deleting {count} data streams', + values: { + count: (errors && errors.length) || dataStreams.length, + }, } ) : i18n.translate( - 'xpack.idxMgmt.deleteDataStreamsConfirmationModal.successDeleteMultipleNotificationMessageText', + 'xpack.idxMgmt.deleteDataStreamsConfirmationModal.errorNotificationMessageText', { - defaultMessage: - 'Deleted {numSuccesses, plural, one {# data stream} other {# data streams}}', - values: { numSuccesses: dataStreamsDeleted.length }, + defaultMessage: "Error deleting data stream '{name}'", + values: { name: (errors && errors[0].name) || dataStreams[0] }, } ); - - onClose({ hasDeletedDataStreams }); - notificationService.showSuccessToast(successMessage); - } - - if (error || (errors && errors.length)) { - const hasMultipleErrors = - (errors && errors.length > 1) || (error && dataStreams.length > 1); - - const errorMessage = hasMultipleErrors - ? i18n.translate( - 'xpack.idxMgmt.deleteDataStreamsConfirmationModal.multipleErrorsNotificationMessageText', - { - defaultMessage: 'Error deleting {count} data streams', - values: { - count: (errors && errors.length) || dataStreams.length, - }, - } - ) - : i18n.translate( - 'xpack.idxMgmt.deleteDataStreamsConfirmationModal.errorNotificationMessageText', - { - defaultMessage: "Error deleting data stream '{name}'", - values: { name: (errors && errors[0].name) || dataStreams[0] }, - } - ); - - notificationService.showDangerToast(errorMessage); - } - }); + notificationService.showDangerToast(errorMessage); + } + }) + .finally(() => setLoading(false)); }; return ( @@ -107,6 +112,7 @@ export const DeleteDataStreamConfirmationModal: React.FunctionComponent = values={{ dataStreamsCount }} /> } + isLoading={isLoading} > ; -export const logViewReferenceRT = rt.type({ +export const persistedLogViewReferenceRT = rt.type({ logViewId: rt.string, type: rt.literal('log-view-reference'), }); +export type PersistedLogViewReference = rt.TypeOf; + +export const inlineLogViewReferenceRT = rt.type({ + type: rt.literal('log-view-inline'), + id: rt.string, + attributes: logViewAttributesRT, +}); + +export const logViewReferenceRT = rt.union([persistedLogViewReferenceRT, inlineLogViewReferenceRT]); + export type LogViewReference = rt.TypeOf; diff --git a/x-pack/plugins/infra/common/search_strategies/log_entries/log_entries.ts b/x-pack/plugins/infra/common/search_strategies/log_entries/log_entries.ts index 65bcec8c98e6a..f8daaa1b9227b 100644 --- a/x-pack/plugins/infra/common/search_strategies/log_entries/log_entries.ts +++ b/x-pack/plugins/infra/common/search_strategies/log_entries/log_entries.ts @@ -13,7 +13,7 @@ import { logEntryCursorRT, logEntryRT, } from '../../log_entry'; -import { logViewColumnConfigurationRT } from '../../log_views'; +import { logViewColumnConfigurationRT, logViewReferenceRT } from '../../log_views'; import { jsonObjectRT } from '../../typed_json'; import { searchStrategyErrorRT } from '../common/errors'; @@ -21,7 +21,7 @@ export const LOG_ENTRIES_SEARCH_STRATEGY = 'infra-log-entries'; const logEntriesBaseSearchRequestParamsRT = rt.intersection([ rt.type({ - sourceId: rt.string, + logView: logViewReferenceRT, startTimestamp: rt.number, endTimestamp: rt.number, size: rt.number, diff --git a/x-pack/plugins/infra/common/search_strategies/log_entries/log_entry.ts b/x-pack/plugins/infra/common/search_strategies/log_entries/log_entry.ts index 2dc182c4ba0e2..6d2a7891264d1 100644 --- a/x-pack/plugins/infra/common/search_strategies/log_entries/log_entry.ts +++ b/x-pack/plugins/infra/common/search_strategies/log_entries/log_entry.ts @@ -7,12 +7,13 @@ import * as rt from 'io-ts'; import { logEntryCursorRT, logEntryFieldRT } from '../../log_entry'; +import { logViewReferenceRT } from '../../log_views'; import { searchStrategyErrorRT } from '../common/errors'; export const LOG_ENTRY_SEARCH_STRATEGY = 'infra-log-entry'; export const logEntrySearchRequestParamsRT = rt.type({ - sourceId: rt.string, + logView: logViewReferenceRT, logEntryId: rt.string, }); diff --git a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/editor.tsx b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/editor.tsx index c6b18bebc98b3..1c38dca829aef 100644 --- a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/editor.tsx +++ b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/editor.tsx @@ -13,7 +13,7 @@ import { ForLastExpression, RuleTypeParamsExpressionProps, } from '@kbn/triggers-actions-ui-plugin/public'; -import { LogViewReference, ResolvedLogViewField } from '../../../../../common/log_views'; +import { PersistedLogViewReference, ResolvedLogViewField } from '../../../../../common/log_views'; import { Comparator, isOptimizableGroupedThreshold, @@ -54,7 +54,7 @@ const DEFAULT_BASE_EXPRESSION = { const DEFAULT_FIELD = 'log.level'; -const createLogViewReference = (logViewId: string): LogViewReference => ({ +const createLogViewReference = (logViewId: string): PersistedLogViewReference => ({ logViewId, type: 'log-view-reference', }); @@ -69,7 +69,7 @@ const createDefaultCriterion = ( const createDefaultCountRuleParams = ( availableFields: ResolvedLogViewField[], - logView: LogViewReference + logView: PersistedLogViewReference ): PartialCountRuleParams => ({ ...DEFAULT_BASE_EXPRESSION, logView, @@ -82,7 +82,7 @@ const createDefaultCountRuleParams = ( const createDefaultRatioRuleParams = ( availableFields: ResolvedLogViewField[], - logView: LogViewReference + logView: PersistedLogViewReference ): PartialRatioRuleParams => ({ ...DEFAULT_BASE_EXPRESSION, logView, @@ -226,11 +226,11 @@ export const Editor: React.FC createLogViewReference(logViewId), [logViewId]); + const logViewReference = useMemo(() => createLogViewReference(logViewId), [logViewId]); const defaultCountAlertParams = useMemo( - () => createDefaultCountRuleParams(supportedFields, logViewReferemnce), - [supportedFields, logViewReferemnce] + () => createDefaultCountRuleParams(supportedFields, logViewReference), + [supportedFields, logViewReference] ); const updateType = useCallback( @@ -238,12 +238,12 @@ export const Editor: React.FC { diff --git a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/hooks/use_chart_preview_data.tsx b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/hooks/use_chart_preview_data.tsx index 9b9dc501e1591..0b99cea2fd7c9 100644 --- a/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/hooks/use_chart_preview_data.tsx +++ b/x-pack/plugins/infra/public/alerting/log_threshold/components/expression_editor/hooks/use_chart_preview_data.tsx @@ -73,7 +73,7 @@ export const callGetChartPreviewDataAPI = async ( body: JSON.stringify( getLogAlertsChartPreviewDataRequestPayloadRT.encode({ data: { - sourceId, + logView: { type: 'log-view-reference', logViewId: sourceId }, alertParams, buckets, }, diff --git a/x-pack/plugins/infra/public/containers/logs/log_entry.ts b/x-pack/plugins/infra/public/containers/logs/log_entry.ts index b9f95f3db6ab0..958097fc3baa5 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_entry.ts +++ b/x-pack/plugins/infra/public/containers/logs/log_entry.ts @@ -30,7 +30,10 @@ export const useLogEntry = ({ return !!logEntryId && !!sourceId ? { request: { - params: logEntrySearchRequestParamsRT.encode({ sourceId, logEntryId }), + params: logEntrySearchRequestParamsRT.encode({ + logView: { type: 'log-view-reference', logViewId: sourceId }, + logEntryId, + }), }, options: { strategy: LOG_ENTRY_SEARCH_STRATEGY }, } diff --git a/x-pack/plugins/infra/public/containers/logs/log_highlights/log_entry_highlights.tsx b/x-pack/plugins/infra/public/containers/logs/log_highlights/log_entry_highlights.tsx index fc1026243a7e0..d9f7ab078ae0b 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_highlights/log_entry_highlights.tsx +++ b/x-pack/plugins/infra/public/containers/logs/log_highlights/log_entry_highlights.tsx @@ -37,7 +37,7 @@ export const useLogEntryHighlights = ( return await fetchLogEntriesHighlights( { - sourceId, + logView: { type: 'log-view-reference', logViewId: sourceId }, startTimestamp, endTimestamp, center: centerPoint, diff --git a/x-pack/plugins/infra/public/containers/logs/log_highlights/log_summary_highlights.ts b/x-pack/plugins/infra/public/containers/logs/log_highlights/log_summary_highlights.ts index 59abb716f6cb3..e994e2a013bb7 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_highlights/log_summary_highlights.ts +++ b/x-pack/plugins/infra/public/containers/logs/log_highlights/log_summary_highlights.ts @@ -39,7 +39,7 @@ export const useLogSummaryHighlights = ( return await fetchLogSummaryHighlights( { - sourceId, + logView: { type: 'log-view-reference', logViewId: sourceId }, startTimestamp, endTimestamp, bucketSize, diff --git a/x-pack/plugins/infra/public/containers/logs/log_stream/use_fetch_log_entries_after.ts b/x-pack/plugins/infra/public/containers/logs/log_stream/use_fetch_log_entries_after.ts index 1e9e1dd48a47b..3ee39fbda3d49 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_stream/use_fetch_log_entries_after.ts +++ b/x-pack/plugins/infra/public/containers/logs/log_stream/use_fetch_log_entries_after.ts @@ -58,7 +58,7 @@ export const useLogEntriesAfterRequest = ({ highlightPhrase, query: query as JsonObject, size: params.size, - sourceId, + logView: { type: 'log-view-reference', logViewId: sourceId }, startTimestamp, }), }, diff --git a/x-pack/plugins/infra/public/containers/logs/log_stream/use_fetch_log_entries_before.ts b/x-pack/plugins/infra/public/containers/logs/log_stream/use_fetch_log_entries_before.ts index 6e72fce5a1d2b..581d31a28a8c5 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_stream/use_fetch_log_entries_before.ts +++ b/x-pack/plugins/infra/public/containers/logs/log_stream/use_fetch_log_entries_before.ts @@ -58,7 +58,7 @@ export const useLogEntriesBeforeRequest = ({ highlightPhrase, query: query as JsonObject, size: params.size, - sourceId, + logView: { type: 'log-view-reference', logViewId: sourceId }, startTimestamp: params.extendTo ?? startTimestamp, }), }, diff --git a/x-pack/plugins/infra/public/containers/logs/log_summary/log_summary.test.tsx b/x-pack/plugins/infra/public/containers/logs/log_summary/log_summary.test.tsx index 25e02101984f4..fe02367e4b1ff 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_summary/log_summary.test.tsx +++ b/x-pack/plugins/infra/public/containers/logs/log_summary/log_summary.test.tsx @@ -62,7 +62,7 @@ describe('useLogSummary hook', () => { expect(fetchLogSummaryMock).toHaveBeenCalledTimes(1); expect(fetchLogSummaryMock).toHaveBeenLastCalledWith( expect.objectContaining({ - sourceId: 'INITIAL_SOURCE_ID', + logView: { logViewId: 'INITIAL_SOURCE_ID', type: 'log-view-reference' }, }), expect.anything() ); @@ -74,7 +74,7 @@ describe('useLogSummary hook', () => { expect(fetchLogSummaryMock).toHaveBeenCalledTimes(2); expect(fetchLogSummaryMock).toHaveBeenLastCalledWith( expect.objectContaining({ - sourceId: 'CHANGED_SOURCE_ID', + logView: { logViewId: 'CHANGED_SOURCE_ID', type: 'log-view-reference' }, }), expect.anything() ); diff --git a/x-pack/plugins/infra/public/containers/logs/log_summary/log_summary.tsx b/x-pack/plugins/infra/public/containers/logs/log_summary/log_summary.tsx index b3e7f8235ace7..c4b933ab04cd0 100644 --- a/x-pack/plugins/infra/public/containers/logs/log_summary/log_summary.tsx +++ b/x-pack/plugins/infra/public/containers/logs/log_summary/log_summary.tsx @@ -35,7 +35,7 @@ export const useLogSummary = ( pushLogSummaryBucketsArgs([ { - sourceId, + logView: { type: 'log-view-reference', logViewId: sourceId }, startTimestamp, endTimestamp, bucketSize, diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/service_calls/get_log_entry_category_datasets.ts b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/service_calls/get_log_entry_category_datasets.ts index 51d4a69ada295..34358b983e12b 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/service_calls/get_log_entry_category_datasets.ts +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/service_calls/get_log_entry_category_datasets.ts @@ -31,7 +31,7 @@ export const callGetLogEntryCategoryDatasetsAPI = async ( body: JSON.stringify( getLogEntryCategoryDatasetsRequestPayloadRT.encode({ data: { - sourceId, + logView: { type: 'log-view-reference', logViewId: sourceId }, timeRange: { startTime, endTime, diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/service_calls/get_log_entry_category_examples.ts b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/service_calls/get_log_entry_category_examples.ts index 90727fd6f0853..e3b99750af715 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/service_calls/get_log_entry_category_examples.ts +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/service_calls/get_log_entry_category_examples.ts @@ -35,7 +35,7 @@ export const callGetLogEntryCategoryExamplesAPI = async ( data: { categoryId, exampleCount, - sourceId, + logView: { type: 'log-view-reference', logViewId: sourceId }, timeRange: { startTime, endTime, diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/service_calls/get_top_log_entry_categories.ts b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/service_calls/get_top_log_entry_categories.ts index 9472991e15c66..93e9daf0b9cb6 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_categories/service_calls/get_top_log_entry_categories.ts +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_categories/service_calls/get_top_log_entry_categories.ts @@ -36,7 +36,7 @@ export const callGetTopLogEntryCategoriesAPI = async ( body: JSON.stringify( getLogEntryCategoriesRequestPayloadRT.encode({ data: { - sourceId, + logView: { type: 'log-view-reference', logViewId: sourceId }, timeRange: { startTime, endTime, diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/service_calls/get_log_entry_anomalies.ts b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/service_calls/get_log_entry_anomalies.ts index 5f0f95a3e7976..7916cad0f1e07 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/service_calls/get_log_entry_anomalies.ts +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/service_calls/get_log_entry_anomalies.ts @@ -30,7 +30,7 @@ export const callGetLogEntryAnomaliesAPI = async (requestArgs: RequestArgs, fetc body: JSON.stringify( getLogEntryAnomaliesRequestPayloadRT.encode({ data: { - sourceId, + logView: { type: 'log-view-reference', logViewId: sourceId }, timeRange: { startTime, endTime, diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/service_calls/get_log_entry_anomalies_datasets.ts b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/service_calls/get_log_entry_anomalies_datasets.ts index 9b560845186f7..16a8092f290f8 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/service_calls/get_log_entry_anomalies_datasets.ts +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/service_calls/get_log_entry_anomalies_datasets.ts @@ -29,7 +29,7 @@ export const callGetLogEntryAnomaliesDatasetsAPI = async ( body: JSON.stringify( getLogEntryAnomaliesDatasetsRequestPayloadRT.encode({ data: { - sourceId, + logView: { type: 'log-view-reference', logViewId: sourceId }, timeRange: { startTime, endTime, diff --git a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/service_calls/get_log_entry_examples.ts b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/service_calls/get_log_entry_examples.ts index 5844e00ebfe4e..0e44e5b02feb7 100644 --- a/x-pack/plugins/infra/public/pages/logs/log_entry_rate/service_calls/get_log_entry_examples.ts +++ b/x-pack/plugins/infra/public/pages/logs/log_entry_rate/service_calls/get_log_entry_examples.ts @@ -32,7 +32,7 @@ export const callGetLogEntryExamplesAPI = async (requestArgs: RequestArgs, fetch data: { dataset, exampleCount, - sourceId, + logView: { type: 'log-view-reference', logViewId: sourceId }, timeRange: { startTime, endTime, diff --git a/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts b/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts index e62fd9291fc33..bd033b5285b3e 100644 --- a/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts +++ b/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts @@ -158,7 +158,10 @@ export const createInventoryMetricThresholdExecutor = (libs: InfraBackendLibs) = const [, , { logViews }] = await libs.getStartServices(); const logQueryFields: LogQueryFields | undefined = await logViews .getClient(savedObjectsClient, esClient) - .getResolvedLogView(sourceId) + .getResolvedLogView({ + type: 'log-view-reference', + logViewId: sourceId, + }) .then( ({ indices }) => ({ indexPattern: indices }), () => undefined diff --git a/x-pack/plugins/infra/server/lib/alerting/log_threshold/log_threshold_executor.ts b/x-pack/plugins/infra/server/lib/alerting/log_threshold/log_threshold_executor.ts index 37eb4698ff089..1d0470c244fd1 100644 --- a/x-pack/plugins/infra/server/lib/alerting/log_threshold/log_threshold_executor.ts +++ b/x-pack/plugins/infra/server/lib/alerting/log_threshold/log_threshold_executor.ts @@ -188,7 +188,7 @@ export const createLogThresholdExecutor = (libs: InfraBackendLibs) => const { indices, timestampField, runtimeMappings } = await logViews .getClient(savedObjectsClient, scopedClusterClient.asCurrentUser) - .getResolvedLogView(validatedParams.logView.logViewId); + .getResolvedLogView(validatedParams.logView); if (!isRatioRuleParams(validatedParams)) { await executeAlert( diff --git a/x-pack/plugins/infra/server/lib/domains/log_entries_domain/log_entries_domain.ts b/x-pack/plugins/infra/server/lib/domains/log_entries_domain/log_entries_domain.ts index 1e0daad376a1a..fcda9b30b0dac 100644 --- a/x-pack/plugins/infra/server/lib/domains/log_entries_domain/log_entries_domain.ts +++ b/x-pack/plugins/infra/server/lib/domains/log_entries_domain/log_entries_domain.ts @@ -15,6 +15,7 @@ import { LogColumn, LogEntry, LogEntryCursor } from '../../../../common/log_entr import { LogViewColumnConfiguration, logViewFieldColumnConfigurationRT, + LogViewReference, ResolvedLogView, } from '../../../../common/log_views'; import { decodeOrThrow } from '../../../../common/runtime_types'; @@ -66,7 +67,7 @@ export class InfraLogEntriesDomain { public async getLogEntriesAround( requestContext: InfraPluginRequestHandlerContext, - sourceId: string, + logView: LogViewReference, params: LogEntriesAroundParams, columnOverrides?: LogViewColumnConfiguration[] ): Promise<{ entries: LogEntry[]; hasMoreBefore?: boolean; hasMoreAfter?: boolean }> { @@ -84,7 +85,7 @@ export class InfraLogEntriesDomain { const { entries: entriesBefore, hasMoreBefore } = await this.getLogEntries( requestContext, - sourceId, + logView, { startTimestamp, endTimestamp, @@ -110,7 +111,7 @@ export class InfraLogEntriesDomain { const { entries: entriesAfter, hasMoreAfter } = await this.getLogEntries( requestContext, - sourceId, + logView, { startTimestamp, endTimestamp, @@ -126,7 +127,7 @@ export class InfraLogEntriesDomain { public async getLogEntries( requestContext: InfraPluginRequestHandlerContext, - sourceId: string, + logView: LogViewReference, params: LogEntriesParams, columnOverrides?: LogViewColumnConfiguration[] ): Promise<{ entries: LogEntry[]; hasMoreBefore?: boolean; hasMoreAfter?: boolean }> { @@ -134,7 +135,7 @@ export class InfraLogEntriesDomain { const { savedObjects, elasticsearch } = await requestContext.core; const resolvedLogView = await logViews .getClient(savedObjects.client, elasticsearch.client.asCurrentUser) - .getResolvedLogView(sourceId); + .getResolvedLogView(logView); const columnDefinitions = columnOverrides ?? resolvedLogView.columns; const messageFormattingRules = compileFormattingRules( @@ -184,7 +185,7 @@ export class InfraLogEntriesDomain { public async getLogSummaryBucketsBetween( requestContext: InfraPluginRequestHandlerContext, - sourceId: string, + logView: LogViewReference, start: number, end: number, bucketSize: number, @@ -194,7 +195,7 @@ export class InfraLogEntriesDomain { const { savedObjects, elasticsearch } = await requestContext.core; const resolvedLogView = await logViews .getClient(savedObjects.client, elasticsearch.client.asCurrentUser) - .getResolvedLogView(sourceId); + .getResolvedLogView(logView); const dateRangeBuckets = await this.adapter.getContainedLogSummaryBuckets( requestContext, resolvedLogView, @@ -208,7 +209,7 @@ export class InfraLogEntriesDomain { public async getLogSummaryHighlightBucketsBetween( requestContext: InfraPluginRequestHandlerContext, - sourceId: string, + logView: LogViewReference, startTimestamp: number, endTimestamp: number, bucketSize: number, @@ -219,7 +220,7 @@ export class InfraLogEntriesDomain { const { savedObjects, elasticsearch } = await requestContext.core; const resolvedLogView = await logViews .getClient(savedObjects.client, elasticsearch.client.asCurrentUser) - .getResolvedLogView(sourceId); + .getResolvedLogView(logView); const messageFormattingRules = compileFormattingRules( getBuiltinRules(resolvedLogView.messageField) ); diff --git a/x-pack/plugins/infra/server/lib/log_analysis/log_entry_anomalies.ts b/x-pack/plugins/infra/server/lib/log_analysis/log_entry_anomalies.ts index 22bf5466ee3b4..b17afa68d2d4d 100644 --- a/x-pack/plugins/infra/server/lib/log_analysis/log_entry_anomalies.ts +++ b/x-pack/plugins/infra/server/lib/log_analysis/log_entry_anomalies.ts @@ -16,7 +16,7 @@ import { logEntryRateJobTypes, Pagination, } from '../../../common/log_analysis'; -import { ResolvedLogView } from '../../../common/log_views'; +import { PersistedLogViewReference, ResolvedLogView } from '../../../common/log_views'; import { startTracingSpan, TracingSpan } from '../../../common/performance_tracing'; import { decodeOrThrow } from '../../../common/runtime_types'; import type { @@ -54,11 +54,11 @@ interface MappedAnomalyHit { async function getCompatibleAnomaliesJobIds( spaceId: string, - sourceId: string, + logViewId: string, mlAnomalyDetectors: MlAnomalyDetectors ) { - const logRateJobId = getJobId(spaceId, sourceId, logEntryRateJobTypes[0]); - const logCategoriesJobId = getJobId(spaceId, sourceId, logEntryCategoriesJobTypes[0]); + const logRateJobId = getJobId(spaceId, logViewId, logEntryRateJobTypes[0]); + const logCategoriesJobId = getJobId(spaceId, logViewId, logEntryCategoriesJobTypes[0]); const jobIds: string[] = []; let jobSpans: TracingSpan[] = []; @@ -99,7 +99,7 @@ export async function getLogEntryAnomalies( context: InfraPluginRequestHandlerContext & { infra: Promise>; }, - sourceId: string, + logView: PersistedLogViewReference, startTime: number, endTime: number, sort: AnomaliesSort, @@ -114,7 +114,7 @@ export async function getLogEntryAnomalies( timing: { spans: jobSpans }, } = await getCompatibleAnomaliesJobIds( infraContext.spaceId, - sourceId, + logView.logViewId, infraContext.mlAnomalyDetectors ); @@ -155,7 +155,7 @@ export async function getLogEntryAnomalies( const logEntryCategoriesCountJobId = getJobId( infraContext.spaceId, - sourceId, + logView.logViewId, logEntryCategoriesJobTypes[0] ); @@ -331,7 +331,7 @@ export async function getLogEntryExamples( context: InfraPluginRequestHandlerContext & { infra: Promise>; }, - sourceId: string, + logView: PersistedLogViewReference, startTime: number, endTime: number, dataset: string, @@ -345,7 +345,7 @@ export async function getLogEntryExamples( const jobId = getJobId( infraContext.spaceId, - sourceId, + logView.logViewId, categoryId != null ? logEntryCategoriesJobTypes[0] : logEntryRateJobTypes[0] ); @@ -370,7 +370,7 @@ export async function getLogEntryExamples( timing: { spans: fetchLogEntryExamplesSpans }, } = await fetchLogEntryExamples( context, - sourceId, + logView, indices, runtimeMappings, timestampField, @@ -397,7 +397,7 @@ export async function fetchLogEntryExamples( context: InfraPluginRequestHandlerContext & { infra: Promise>; }, - sourceId: string, + logView: PersistedLogViewReference, indices: string, runtimeMappings: estypes.MappingRuntimeFields, timestampField: string, @@ -420,7 +420,7 @@ export async function fetchLogEntryExamples( const logEntryCategoriesCountJobId = getJobId( infraContext.spaceId, - sourceId, + logView.logViewId, logEntryCategoriesJobTypes[0] ); @@ -483,7 +483,7 @@ export async function getLogEntryAnomaliesDatasets( spaceId: string; }; }, - sourceId: string, + logView: PersistedLogViewReference, startTime: number, endTime: number ) { @@ -492,7 +492,7 @@ export async function getLogEntryAnomaliesDatasets( timing: { spans: jobSpans }, } = await getCompatibleAnomaliesJobIds( context.infra.spaceId, - sourceId, + logView.logViewId, context.infra.mlAnomalyDetectors ); diff --git a/x-pack/plugins/infra/server/lib/log_analysis/log_entry_categories_analysis.ts b/x-pack/plugins/infra/server/lib/log_analysis/log_entry_categories_analysis.ts index 9152945002e2a..d8eb18e4890b5 100644 --- a/x-pack/plugins/infra/server/lib/log_analysis/log_entry_categories_analysis.ts +++ b/x-pack/plugins/infra/server/lib/log_analysis/log_entry_categories_analysis.ts @@ -15,7 +15,7 @@ import { logEntryCategoriesJobTypes, } from '../../../common/log_analysis'; import { LogEntryContext } from '../../../common/log_entry'; -import { ResolvedLogView } from '../../../common/log_views'; +import { PersistedLogViewReference, ResolvedLogView } from '../../../common/log_views'; import { startTracingSpan } from '../../../common/performance_tracing'; import { decodeOrThrow } from '../../../common/runtime_types'; import type { MlAnomalyDetectors, MlSystem } from '../../types'; @@ -47,7 +47,7 @@ export async function getTopLogEntryCategories( spaceId: string; }; }, - sourceId: string, + logView: PersistedLogViewReference, startTime: number, endTime: number, categoryCount: number, @@ -59,7 +59,7 @@ export async function getTopLogEntryCategories( const logEntryCategoriesCountJobId = getJobId( context.infra.spaceId, - sourceId, + logView.logViewId, logEntryCategoriesJobTypes[0] ); @@ -119,13 +119,13 @@ export async function getLogEntryCategoryDatasets( spaceId: string; }; }, - sourceId: string, + logView: PersistedLogViewReference, startTime: number, endTime: number ) { const logEntryCategoriesCountJobId = getJobId( context.infra.spaceId, - sourceId, + logView.logViewId, logEntryCategoriesJobTypes[0] ); @@ -143,7 +143,7 @@ export async function getLogEntryCategoryExamples( spaceId: string; }; }, - sourceId: string, + logView: PersistedLogViewReference, startTime: number, endTime: number, categoryId: number, @@ -154,7 +154,7 @@ export async function getLogEntryCategoryExamples( const logEntryCategoriesCountJobId = getJobId( context.infra.spaceId, - sourceId, + logView.logViewId, logEntryCategoriesJobTypes[0] ); diff --git a/x-pack/plugins/infra/server/lib/log_analysis/log_entry_rate_analysis.ts b/x-pack/plugins/infra/server/lib/log_analysis/log_entry_rate_analysis.ts index 7da6298fff76a..1e043fed0986a 100644 --- a/x-pack/plugins/infra/server/lib/log_analysis/log_entry_rate_analysis.ts +++ b/x-pack/plugins/infra/server/lib/log_analysis/log_entry_rate_analysis.ts @@ -24,13 +24,13 @@ export async function getLogEntryRateBuckets( spaceId: string; }; }, - sourceId: string, + logViewId: string, startTime: number, endTime: number, bucketDuration: number, datasets?: string[] ) { - const logRateJobId = getJobId(context.infra.spaceId, sourceId, 'log-entry-rate'); + const logRateJobId = getJobId(context.infra.spaceId, logViewId, 'log-entry-rate'); let mlModelPlotBuckets: LogRateModelPlotBucket[] = []; let afterLatestBatchKey: CompositeTimestampPartitionKey | undefined; diff --git a/x-pack/plugins/infra/server/routes/log_alerts/chart_preview_data.ts b/x-pack/plugins/infra/server/routes/log_alerts/chart_preview_data.ts index 95b0c8320559e..fbc530397f4e3 100644 --- a/x-pack/plugins/infra/server/routes/log_alerts/chart_preview_data.ts +++ b/x-pack/plugins/infra/server/routes/log_alerts/chart_preview_data.ts @@ -29,11 +29,11 @@ export const initGetLogAlertsChartPreviewDataRoute = ({ }, framework.router.handleLegacyErrors(async (requestContext, request, response) => { const { - data: { sourceId, buckets, alertParams }, + data: { logView, buckets, alertParams }, } = request.body; const [, , { logViews }] = await getStartServices(); - const resolvedLogView = await logViews.getScopedClient(request).getResolvedLogView(sourceId); + const resolvedLogView = await logViews.getScopedClient(request).getResolvedLogView(logView); try { const { series } = await getChartPreviewData( diff --git a/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_anomalies.ts b/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_anomalies.ts index dd6254cf560e2..13df82f8fe343 100644 --- a/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_anomalies.ts +++ b/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_anomalies.ts @@ -31,7 +31,7 @@ export const initGetLogEntryAnomaliesRoute = ({ framework }: InfraBackendLibs) = framework.router.handleLegacyErrors(async (requestContext, request, response) => { const { data: { - sourceId, + logView, timeRange: { startTime, endTime }, sort: sortParam, pagination: paginationParam, @@ -51,7 +51,7 @@ export const initGetLogEntryAnomaliesRoute = ({ framework }: InfraBackendLibs) = timing, } = await getLogEntryAnomalies( infraMlContext, - sourceId, + logView, startTime, endTime, sort, diff --git a/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_anomalies_datasets.ts b/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_anomalies_datasets.ts index 1d1f620063b2e..5f7aec90376af 100644 --- a/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_anomalies_datasets.ts +++ b/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_anomalies_datasets.ts @@ -29,7 +29,7 @@ export const initGetLogEntryAnomaliesDatasetsRoute = ({ framework }: InfraBacken framework.router.handleLegacyErrors(async (requestContext, request, response) => { const { data: { - sourceId, + logView, timeRange: { startTime, endTime }, }, } = request.body; @@ -39,7 +39,7 @@ export const initGetLogEntryAnomaliesDatasetsRoute = ({ framework }: InfraBacken const { datasets, timing } = await getLogEntryAnomaliesDatasets( { infra: await infraMlContext.infra }, - sourceId, + logView, startTime, endTime ); diff --git a/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_categories.ts b/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_categories.ts index 6e2e8e8a6c2ad..1a484a0662e05 100644 --- a/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_categories.ts +++ b/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_categories.ts @@ -31,7 +31,7 @@ export const initGetLogEntryCategoriesRoute = ({ framework }: InfraBackendLibs) data: { categoryCount, histograms, - sourceId, + logView, timeRange: { startTime, endTime }, datasets, sort, @@ -43,7 +43,7 @@ export const initGetLogEntryCategoriesRoute = ({ framework }: InfraBackendLibs) const { data: topLogEntryCategories, timing } = await getTopLogEntryCategories( { infra: await infraMlContext.infra }, - sourceId, + logView, startTime, endTime, categoryCount, diff --git a/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_category_datasets.ts b/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_category_datasets.ts index de5ac9dac4b07..92f0cd576a0f8 100644 --- a/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_category_datasets.ts +++ b/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_category_datasets.ts @@ -29,7 +29,7 @@ export const initGetLogEntryCategoryDatasetsRoute = ({ framework }: InfraBackend framework.router.handleLegacyErrors(async (requestContext, request, response) => { const { data: { - sourceId, + logView, timeRange: { startTime, endTime }, }, } = request.body; @@ -39,7 +39,7 @@ export const initGetLogEntryCategoryDatasetsRoute = ({ framework }: InfraBackend const { data: logEntryCategoryDatasets, timing } = await getLogEntryCategoryDatasets( { infra: await infraMlContext.infra }, - sourceId, + logView, startTime, endTime ); diff --git a/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_category_examples.ts b/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_category_examples.ts index b51aed45b7e11..40de491c1673f 100644 --- a/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_category_examples.ts +++ b/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_category_examples.ts @@ -34,20 +34,20 @@ export const initGetLogEntryCategoryExamplesRoute = ({ data: { categoryId, exampleCount, - sourceId, + logView, timeRange: { startTime, endTime }, }, } = request.body; const [, , { logViews }] = await getStartServices(); - const resolvedLogView = await logViews.getScopedClient(request).getResolvedLogView(sourceId); + const resolvedLogView = await logViews.getScopedClient(request).getResolvedLogView(logView); try { const infraMlContext = await assertHasInfraMlPlugins(requestContext); const { data: logEntryCategoryExamples, timing } = await getLogEntryCategoryExamples( { infra: await infraMlContext.infra, core: await infraMlContext.core }, - sourceId, + logView, startTime, endTime, categoryId, diff --git a/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_examples.ts b/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_examples.ts index fb82a2cd90df5..23ba1072a60fc 100644 --- a/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_examples.ts +++ b/x-pack/plugins/infra/server/routes/log_analysis/results/log_entry_examples.ts @@ -34,21 +34,21 @@ export const initGetLogEntryExamplesRoute = ({ data: { dataset, exampleCount, - sourceId, + logView, timeRange: { startTime, endTime }, categoryId, }, } = request.body; const [, , { logViews }] = await getStartServices(); - const resolvedLogView = await logViews.getScopedClient(request).getResolvedLogView(sourceId); + const resolvedLogView = await logViews.getScopedClient(request).getResolvedLogView(logView); try { const infraMlContext = await assertHasInfraMlPlugins(requestContext); const { data: logEntryExamples, timing } = await getLogEntryExamples( infraMlContext, - sourceId, + logView, startTime, endTime, dataset, diff --git a/x-pack/plugins/infra/server/routes/log_entries/highlights.ts b/x-pack/plugins/infra/server/routes/log_entries/highlights.ts index bb7c615358c0e..aa8876951ee6c 100644 --- a/x-pack/plugins/infra/server/routes/log_entries/highlights.ts +++ b/x-pack/plugins/infra/server/routes/log_entries/highlights.ts @@ -38,14 +38,14 @@ export const initLogEntriesHighlightsRoute = ({ framework, logEntries }: InfraBa fold(throwErrors(Boom.badRequest), identity) ); - const { startTimestamp, endTimestamp, sourceId, query, size, highlightTerms } = payload; + const { startTimestamp, endTimestamp, logView, query, size, highlightTerms } = payload; let entriesPerHighlightTerm; if ('center' in payload) { entriesPerHighlightTerm = await Promise.all( highlightTerms.map((highlightTerm) => - logEntries.getLogEntriesAround(requestContext, sourceId, { + logEntries.getLogEntriesAround(requestContext, logView, { startTimestamp, endTimestamp, query: parseFilterQuery(query), @@ -65,7 +65,7 @@ export const initLogEntriesHighlightsRoute = ({ framework, logEntries }: InfraBa entriesPerHighlightTerm = await Promise.all( highlightTerms.map((highlightTerm) => - logEntries.getLogEntries(requestContext, sourceId, { + logEntries.getLogEntries(requestContext, logView, { startTimestamp, endTimestamp, query: parseFilterQuery(query), diff --git a/x-pack/plugins/infra/server/routes/log_entries/summary.ts b/x-pack/plugins/infra/server/routes/log_entries/summary.ts index 3ff0ded8a7c24..dd48c21a590ae 100644 --- a/x-pack/plugins/infra/server/routes/log_entries/summary.ts +++ b/x-pack/plugins/infra/server/routes/log_entries/summary.ts @@ -37,11 +37,11 @@ export const initLogEntriesSummaryRoute = ({ framework, logEntries }: InfraBacke logEntriesSummaryRequestRT.decode(request.body), fold(throwErrors(Boom.badRequest), identity) ); - const { sourceId, startTimestamp, endTimestamp, bucketSize, query } = payload; + const { logView, startTimestamp, endTimestamp, bucketSize, query } = payload; const buckets = await logEntries.getLogSummaryBucketsBetween( requestContext, - sourceId, + logView, startTimestamp, endTimestamp, bucketSize, diff --git a/x-pack/plugins/infra/server/routes/log_entries/summary_highlights.ts b/x-pack/plugins/infra/server/routes/log_entries/summary_highlights.ts index ca219cac41e2b..206e02bc57278 100644 --- a/x-pack/plugins/infra/server/routes/log_entries/summary_highlights.ts +++ b/x-pack/plugins/infra/server/routes/log_entries/summary_highlights.ts @@ -39,11 +39,11 @@ export const initLogEntriesSummaryHighlightsRoute = ({ logEntriesSummaryHighlightsRequestRT.decode(request.body), fold(throwErrors(Boom.badRequest), identity) ); - const { sourceId, startTimestamp, endTimestamp, bucketSize, query, highlightTerms } = payload; + const { logView, startTimestamp, endTimestamp, bucketSize, query, highlightTerms } = payload; const bucketsPerHighlightTerm = await logEntries.getLogSummaryHighlightBucketsBetween( requestContext, - sourceId, + logView, startTimestamp, endTimestamp, bucketSize, diff --git a/x-pack/plugins/infra/server/routes/snapshot/index.ts b/x-pack/plugins/infra/server/routes/snapshot/index.ts index 27c49032c03f4..0c893171b5b67 100644 --- a/x-pack/plugins/infra/server/routes/snapshot/index.ts +++ b/x-pack/plugins/infra/server/routes/snapshot/index.ts @@ -43,7 +43,10 @@ export const initSnapshotRoute = (libs: InfraBackendLibs) => { const [, , { logViews }] = await libs.getStartServices(); const logQueryFields: LogQueryFields | undefined = await logViews .getScopedClient(request) - .getResolvedLogView(snapshotRequest.sourceId) + .getResolvedLogView({ + type: 'log-view-reference', + logViewId: snapshotRequest.sourceId, + }) .then( ({ indices }) => ({ indexPattern: indices }), () => undefined diff --git a/x-pack/plugins/infra/server/services/log_entries/log_entries_search_strategy.test.ts b/x-pack/plugins/infra/server/services/log_entries/log_entries_search_strategy.test.ts index 99579c5a588c6..bb21053cfe9d8 100644 --- a/x-pack/plugins/infra/server/services/log_entries/log_entries_search_strategy.test.ts +++ b/x-pack/plugins/infra/server/services/log_entries/log_entries_search_strategy.test.ts @@ -57,7 +57,7 @@ describe('LogEntries search strategy', () => { logEntriesSearchStrategy.search( { params: { - sourceId: 'SOURCE_ID', + logView: { type: 'log-view-reference', logViewId: 'SOURCE_ID' }, startTimestamp: 100, endTimestamp: 200, size: 3, @@ -143,7 +143,7 @@ describe('LogEntries search strategy', () => { { id: requestId, params: { - sourceId: 'SOURCE_ID', + logView: { type: 'log-view-reference', logViewId: 'SOURCE_ID' }, startTimestamp: 100, endTimestamp: 200, size: 3, @@ -223,7 +223,7 @@ describe('LogEntries search strategy', () => { { id: logEntriesSearchRequestStateRT.encode({ esRequestId: 'UNKNOWN_ID' }), params: { - sourceId: 'SOURCE_ID', + logView: { type: 'log-view-reference', logViewId: 'SOURCE_ID' }, startTimestamp: 100, endTimestamp: 200, size: 3, diff --git a/x-pack/plugins/infra/server/services/log_entries/log_entries_search_strategy.ts b/x-pack/plugins/infra/server/services/log_entries/log_entries_search_strategy.ts index 81ef319828be1..f0f5c6304d615 100644 --- a/x-pack/plugins/infra/server/services/log_entries/log_entries_search_strategy.ts +++ b/x-pack/plugins/infra/server/services/log_entries/log_entries_search_strategy.ts @@ -72,7 +72,7 @@ export const logEntriesSearchStrategyProvider = ({ const request = decodeOrThrow(asyncRequestRT)(rawRequest); const resolvedLogView$ = defer(() => - logViews.getScopedClient(dependencies.request).getResolvedLogView(request.params.sourceId) + logViews.getScopedClient(dependencies.request).getResolvedLogView(request.params.logView) ).pipe(take(1), shareReplay(1)); const messageFormattingRules$ = defer(() => diff --git a/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.test.ts b/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.test.ts index d2d28174490c8..19d5345122374 100644 --- a/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.test.ts +++ b/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.test.ts @@ -56,7 +56,10 @@ describe('LogEntry search strategy', () => { const response = await lastValueFrom( logEntrySearchStrategy.search( { - params: { sourceId: 'SOURCE_ID', logEntryId: 'LOG_ENTRY_ID' }, + params: { + logView: { type: 'log-view-reference', logViewId: 'SOURCE_ID' }, + logEntryId: 'LOG_ENTRY_ID', + }, }, {}, mockDependencies @@ -141,7 +144,10 @@ describe('LogEntry search strategy', () => { logEntrySearchStrategy.search( { id: requestId, - params: { sourceId: 'SOURCE_ID', logEntryId: 'LOG_ENTRY_ID' }, + params: { + logView: { type: 'log-view-reference', logViewId: 'SOURCE_ID' }, + logEntryId: 'LOG_ENTRY_ID', + }, }, {}, mockDependencies @@ -193,7 +199,10 @@ describe('LogEntry search strategy', () => { const response = logEntrySearchStrategy.search( { id: logEntrySearchRequestStateRT.encode({ esRequestId: 'UNKNOWN_ID' }), - params: { sourceId: 'SOURCE_ID', logEntryId: 'LOG_ENTRY_ID' }, + params: { + logView: { type: 'log-view-reference', logViewId: 'SOURCE_ID' }, + logEntryId: 'LOG_ENTRY_ID', + }, }, {}, mockDependencies diff --git a/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.ts b/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.ts index 714e0b792c612..1d558094e351d 100644 --- a/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.ts +++ b/x-pack/plugins/infra/server/services/log_entries/log_entry_search_strategy.ts @@ -48,7 +48,7 @@ export const logEntrySearchStrategyProvider = ({ const request = decodeOrThrow(asyncRequestRT)(rawRequest); const resolvedLogView$ = defer(() => - logViews.getScopedClient(dependencies.request).getResolvedLogView(request.params.sourceId) + logViews.getScopedClient(dependencies.request).getResolvedLogView(request.params.logView) ).pipe(take(1), shareReplay(1)); const recoveredRequest$ = of(request).pipe( diff --git a/x-pack/plugins/infra/server/services/log_views/log_views_client.mock.ts b/x-pack/plugins/infra/server/services/log_views/log_views_client.mock.ts index 5c20297b82c65..5738c94c8aa40 100644 --- a/x-pack/plugins/infra/server/services/log_views/log_views_client.mock.ts +++ b/x-pack/plugins/infra/server/services/log_views/log_views_client.mock.ts @@ -5,12 +5,15 @@ * 2.0. */ +import { LogViewReference } from '../../../common/log_views'; import { createResolvedLogViewMock } from '../../../common/log_views/resolved_log_view.mock'; import { ILogViewsClient } from './types'; export const createLogViewsClientMock = (): jest.Mocked => ({ getLogView: jest.fn(), - getResolvedLogView: jest.fn((logViewId: string) => Promise.resolve(createResolvedLogViewMock())), + getResolvedLogView: jest.fn((logViewReference: LogViewReference) => + Promise.resolve(createResolvedLogViewMock()) + ), putLogView: jest.fn(), resolveLogView: jest.fn(), }); diff --git a/x-pack/plugins/infra/server/services/log_views/log_views_client.ts b/x-pack/plugins/infra/server/services/log_views/log_views_client.ts index 9f43cee871f73..3f832c6770717 100644 --- a/x-pack/plugins/infra/server/services/log_views/log_views_client.ts +++ b/x-pack/plugins/infra/server/services/log_views/log_views_client.ts @@ -19,7 +19,9 @@ import { LogIndexReference, LogView, LogViewAttributes, + LogViewReference, LogViewsStaticConfig, + persistedLogViewReferenceRT, ResolvedLogView, resolveLogView, } from '../../../common/log_views'; @@ -65,8 +67,10 @@ export class LogViewsClient implements ILogViewsClient { ); } - public async getResolvedLogView(logViewId: string): Promise { - const logView = await this.getLogView(logViewId); + public async getResolvedLogView(logViewReference: LogViewReference): Promise { + const logView = persistedLogViewReferenceRT.is(logViewReference) + ? await this.getLogView(logViewReference.logViewId) + : logViewReference; const resolvedLogView = await this.resolveLogView(logView.id, logView.attributes); return resolvedLogView; } diff --git a/x-pack/plugins/infra/server/services/log_views/types.ts b/x-pack/plugins/infra/server/services/log_views/types.ts index 50b4e65cf7548..b5f91cb3587b4 100644 --- a/x-pack/plugins/infra/server/services/log_views/types.ts +++ b/x-pack/plugins/infra/server/services/log_views/types.ts @@ -16,6 +16,7 @@ import { PluginStart as DataViewsServerPluginStart } from '@kbn/data-views-plugi import { LogView, LogViewAttributes, + LogViewReference, LogViewsStaticConfig, ResolvedLogView, } from '../../../common/log_views'; @@ -44,7 +45,7 @@ export interface LogViewsServiceStart { export interface ILogViewsClient { getLogView(logViewId: string): Promise; - getResolvedLogView(logViewId: string): Promise; + getResolvedLogView(logView: LogViewReference): Promise; putLogView(logViewId: string, logViewAttributes: Partial): Promise; resolveLogView(logViewId: string, logViewAttributes: LogViewAttributes): Promise; } diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx index 9501598c53db2..970aaf83b5ae8 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/processor.helpers.tsx @@ -187,4 +187,7 @@ type TestSubject = | 'droppableList.addButton' | 'droppableList.input-0' | 'droppableList.input-1' - | 'droppableList.input-2'; + | 'droppableList.input-2' + | 'prefixField.input' + | 'suffixField.input' + | 'patternDefinitionsField'; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/redact.test.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/redact.test.tsx new file mode 100644 index 0000000000000..d34e4d1476bb8 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/__jest__/processors/redact.test.tsx @@ -0,0 +1,141 @@ +/* + * 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 { act } from 'react-dom/test-utils'; +import { setup, SetupResult, getProcessorValue, setupEnvironment } from './processor.helpers'; + +const REDACT_TYPE = 'redact'; + +describe('Processor: Redact', () => { + let onUpdate: jest.Mock; + let testBed: SetupResult; + let clickAddPattern: () => Promise; + const { httpSetup } = setupEnvironment(); + + beforeAll(() => { + jest.useFakeTimers({ legacyFakeTimers: true }); + }); + + afterAll(() => { + jest.useRealTimers(); + }); + + beforeEach(async () => { + onUpdate = jest.fn(); + + await act(async () => { + testBed = await setup(httpSetup, { + value: { + processors: [], + }, + onFlyoutOpen: jest.fn(), + onUpdate, + }); + }); + + const { find, component, actions } = testBed; + + clickAddPattern = async () => { + await act(async () => { + find('droppableList.addButton').simulate('click'); + }); + component.update(); + }; + + component.update(); + + // Open flyout to add new processor + actions.addProcessor(); + // Add type (the other fields are not visible until a type is selected) + await actions.addProcessorType(REDACT_TYPE); + }); + + test('prevents form submission if required fields are not provided', async () => { + const { + actions: { saveNewProcessor }, + form, + } = testBed; + + // Click submit button with only the type defined + await saveNewProcessor(); + + // Expect form error as "field" is a required parameter + expect(form.getErrorsMessages()).toEqual([ + 'A field value is required.', // "Field" input + 'A value is required.', // First input in "Patterns" list + ]); + }); + + test('saves with default parameter values', async () => { + const { + actions: { saveNewProcessor }, + form, + } = testBed; + + // Add "field" value + form.setInputValue('fieldNameField.input', 'test_redact_processor'); + + // Add pattern 1 + form.setInputValue('droppableList.input-0', 'pattern1'); + + // Add pattern 2 + await clickAddPattern(); + form.setInputValue('droppableList.input-1', 'pattern2'); + + // Save the field + await saveNewProcessor(); + + const processors = getProcessorValue(onUpdate, REDACT_TYPE); + + expect(processors[0][REDACT_TYPE]).toEqual({ + field: 'test_redact_processor', + patterns: ['pattern1', 'pattern2'], + }); + }); + + test('saves with optional parameter values', async () => { + const { + actions: { saveNewProcessor }, + component, + find, + form, + } = testBed; + + // Add "field" value + form.setInputValue('fieldNameField.input', 'test_redact_processor'); + + // Add one pattern to the list + form.setInputValue('droppableList.input-0', 'pattern1'); + + // Set suffix and prefix + form.setInputValue('prefixField.input', '$'); + form.setInputValue('suffixField.input', '$'); + + await act(async () => { + find('patternDefinitionsField').simulate('change', { + jsonContent: JSON.stringify({ GITHUB_NAME: '@%{USERNAME}' }), + }); + + // advance timers to allow the form to validate + jest.advanceTimersByTime(0); + }); + component.update(); + + // Save the field + await saveNewProcessor(); + + const processors = getProcessorValue(onUpdate, REDACT_TYPE); + + expect(processors[0][REDACT_TYPE]).toEqual({ + field: 'test_redact_processor', + patterns: ['pattern1'], + suffix: '$', + prefix: '$', + pattern_definitions: { GITHUB_NAME: '@%{USERNAME}' }, + }); + }); +}); diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/index.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/index.ts index bb63461d71209..e4b9817e89579 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/index.ts +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/index.ts @@ -8,3 +8,4 @@ export { DragAndDropTextList } from './drag_and_drop_text_list'; export { XJsonEditor } from './xjson_editor'; export { TextEditor } from './text_editor'; +export { InputList } from './input_list'; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/input_list.scss b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/input_list.scss new file mode 100644 index 0000000000000..bec0c9981e308 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/input_list.scss @@ -0,0 +1,20 @@ +.pipelineProcessorsEditor__form__inputList { + &__panel { + background-color: $euiColorLightestShade; + padding: $euiSizeM; + } + + &__removeButton { + margin-left: $euiSizeS; + } + + &__item { + background-color: $euiColorLightestShade; + padding-top: $euiSizeS; + padding-bottom: $euiSizeS; + } + + &__labelContainer { + margin-bottom: $euiSizeXS; + } +} diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/input_list.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/input_list.tsx new file mode 100644 index 0000000000000..602c5598551a5 --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/field_components/input_list.tsx @@ -0,0 +1,166 @@ +/* + * 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 React, { useState } from 'react'; +import { v4 as uuidv4 } from 'uuid'; +import { + EuiButtonEmpty, + EuiButtonIcon, + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + EuiFieldText, + EuiFormRow, + EuiText, +} from '@elastic/eui'; + +import { + UseField, + ArrayItem, + ValidationFunc, + getFieldValidityAndErrorMessage, +} from '../../../../../../shared_imports'; + +import './input_list.scss'; + +interface Props { + label: string; + helpText: React.ReactNode; + error: string | null; + value: ArrayItem[]; + onAdd: () => void; + onRemove: (id: number) => void; + addLabel: string; + /** + * Validation to be applied to every text item + */ + textValidations?: Array>; + /** + * Serializer to be applied to every text item + */ + textSerializer?: (v: string) => O; + /** + * Deserializer to be applied to every text item + */ + textDeserializer?: (v: unknown) => string; +} + +const i18nTexts = { + removeItemButtonAriaLabel: i18n.translate( + 'xpack.ingestPipelines.pipelineEditor.inputList.removeItemLabel', + { defaultMessage: 'Remove item' } + ), +}; + +export function InputList({ + label, + helpText, + error, + value, + onAdd, + onRemove, + addLabel, + textValidations, + textDeserializer, + textSerializer, +}: Props): JSX.Element { + const [firstItemId] = useState(() => uuidv4()); + + return ( + + <> + + + + + + + + +

{helpText}

+
+
+
+ +
+ {value.map((item, idx) => ( + + + + path={item.path} + config={{ + validations: textValidations + ? textValidations.map((validator) => ({ validator })) + : undefined, + deserializer: textDeserializer, + serializer: textSerializer, + }} + readDefaultValueOnForm={!item.isNew} + > + {(field) => { + const { isInvalid, errorMessage } = getFieldValidityAndErrorMessage(field); + return ( + + + + ); + }} + + + + {value.length > 1 ? ( + onRemove(item.id)} + size="s" + /> + ) : ( + + )} + + + ))} + + {addLabel} + +
+ +
+ ); +} diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/index.ts b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/index.ts index e3a0fae36e577..bf9ac7006e1c2 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/index.ts +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/index.ts @@ -31,6 +31,7 @@ export { Kv } from './kv'; export { Lowercase } from './lowercase'; export { NetworkDirection } from './network_direction'; export { Pipeline } from './pipeline'; +export { Redact } from './redact'; export { RegisteredDomain } from './registered_domain'; export { Remove } from './remove'; export { Rename } from './rename'; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/redact.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/redact.tsx new file mode 100644 index 0000000000000..4e8885e94eb7e --- /dev/null +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/processor_form/processors/redact.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FunctionComponent } from 'react'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { EuiCode, EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; + +import { + FIELD_TYPES, + Field, + UseField, + UseArray, + fieldValidators, + ValidationFunc, +} from '../../../../../../shared_imports'; + +import { XJsonEditor, InputList } from '../field_components'; + +import { FieldNameField } from './common_fields/field_name_field'; +import { IgnoreMissingField } from './common_fields/ignore_missing_field'; +import { FieldsConfig, to, from, EDITOR_PX_HEIGHT } from './shared'; + +const { isJsonField, emptyField } = fieldValidators; + +const i18nTexts = { + addPatternLabel: i18n.translate( + 'xpack.ingestPipelines.pipelineEditor.redactForm.patternsAddPatternLabel', + { defaultMessage: 'Add pattern' } + ), +}; + +const valueRequiredMessage = i18n.translate( + 'xpack.ingestPipelines.pipelineEditor.redactForm.patternsValueRequiredError', + { defaultMessage: 'A value is required.' } +); + +const patternsValidation: ValidationFunc = ({ value }) => { + if (typeof value === 'string' && value.length === 0) { + return { + message: valueRequiredMessage, + }; + } +}; + +const patternValidations = [emptyField(valueRequiredMessage)]; + +const fieldsConfig: FieldsConfig = { + /* Required field configs */ + patterns: { + label: i18n.translate('xpack.ingestPipelines.pipelineEditor.redactForm.patternsFieldLabel', { + defaultMessage: 'Patterns', + }), + deserializer: String, + helpText: i18n.translate('xpack.ingestPipelines.pipelineEditor.redactForm.patternsHelpText', { + defaultMessage: 'A list of grok expressions to match and redact named captures with.', + }), + validations: [ + { + validator: patternsValidation as ValidationFunc, + }, + ], + }, + /* Optional field configs */ + pattern_definitions: { + type: FIELD_TYPES.TEXT, + deserializer: to.jsonString, + serializer: from.optionalJson, + label: i18n.translate( + 'xpack.ingestPipelines.pipelineEditor.redactForm.patternDefinitionsLabel', + { + defaultMessage: 'Pattern definitions (optional)', + } + ), + helpText: i18n.translate( + 'xpack.ingestPipelines.pipelineEditor.redactForm.patternDefinitionsHelpText', + { + defaultMessage: + 'A map of pattern-name and pattern tuples defining custom patterns to be used by the processor. Patterns matching existing names will override the pre-existing definition.', + } + ), + validations: [ + { + validator: isJsonField( + i18n.translate( + 'xpack.ingestPipelines.pipelineEditor.redactForm.patternsDefinitionsInvalidJSONError', + { defaultMessage: 'Invalid JSON' } + ), + { + allowEmptyString: true, + } + ), + }, + ], + }, + + prefix: { + type: FIELD_TYPES.TEXT, + label: i18n.translate('xpack.ingestPipelines.pipelineEditor.redactForm.prefixLabel', { + defaultMessage: 'Prefix (optional)', + }), + deserializer: String, + serializer: from.undefinedIfValue(''), + helpText: ( + {'<'} }} + /> + ), + }, + + suffix: { + type: FIELD_TYPES.TEXT, + label: i18n.translate('xpack.ingestPipelines.pipelineEditor.redactForm.suffixLabel', { + defaultMessage: 'Suffix (optional)', + }), + deserializer: String, + serializer: from.undefinedIfValue(''), + helpText: ( + {'>'} }} + /> + ), + }, +}; + +export const Redact: FunctionComponent = () => { + return ( + <> + + + + {({ items, addItem, removeItem, error }) => { + return ( + + ); + }} + + + + + + + + + + + + + + + + + + + + ); +}; diff --git a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/map_processor_type_to_form.tsx b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/map_processor_type_to_form.tsx index d47f90abbd36d..cd53afedcc341 100644 --- a/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/map_processor_type_to_form.tsx +++ b/x-pack/plugins/ingest_pipelines/public/application/components/pipeline_editor/components/shared/map_processor_type_to_form.tsx @@ -37,6 +37,7 @@ import { Lowercase, NetworkDirection, Pipeline, + Redact, RegisteredDomain, Remove, Rename, @@ -577,6 +578,24 @@ export const mapProcessorTypeToDescriptor: MapProcessorTypeToDescriptor = { }, }), }, + redact: { + FieldsComponent: Redact, + docLinkPath: '/redact-processor.html', + label: i18n.translate('xpack.ingestPipelines.processors.label.redact', { + defaultMessage: 'Redact', + }), + typeDescription: i18n.translate('xpack.ingestPipelines.processors.description.redact', { + defaultMessage: + 'The Redact processor uses the Grok rules engine to obscure text in the input document matching the given Grok patterns.', + }), + getDefaultDescription: ({ field }) => + i18n.translate('xpack.ingestPipelines.processors.defaultDescription.redact', { + defaultMessage: 'Redact values from "{field}" that match a grok pattern', + values: { + field, + }, + }), + }, registered_domain: { FieldsComponent: RegisteredDomain, docLinkPath: '/registered-domain-processor.html', diff --git a/x-pack/plugins/lens/public/embeddable/embeddable.tsx b/x-pack/plugins/lens/public/embeddable/embeddable.tsx index edb3d82b09e13..2f6d57bc86942 100644 --- a/x-pack/plugins/lens/public/embeddable/embeddable.tsx +++ b/x-pack/plugins/lens/public/embeddable/embeddable.tsx @@ -504,6 +504,9 @@ export class Embeddable this.inputReloadSubscriptions.push( shouldFetch$(this.getUpdated$(), () => this.getInput()).subscribe( (input) => { + // reset removable messages + // Dashboard search/context changes are detected here + this.additionalUserMessages = {}; this.onContainerStateChanged(input); } ) @@ -588,11 +591,10 @@ export class Embeddable }) ); - const mergedSearchContext = this.getMergedSearchContext(); - if (!this.savedVis) { return userMessages; } + const mergedSearchContext = this.getMergedSearchContext(); const frameDatasourceAPI: FrameDatasourceAPI = { dataViews: { @@ -644,13 +646,9 @@ export class Embeddable } return () => { - const withMessagesRemoved = { - ...this.additionalUserMessages, - }; - - messages.map(({ uniqueId }) => uniqueId).forEach((id) => delete withMessagesRemoved[id]); - - this.additionalUserMessages = withMessagesRemoved; + messages.forEach(({ uniqueId }) => { + delete this.additionalUserMessages[uniqueId]; + }); }; }; @@ -1174,7 +1172,11 @@ export class Embeddable if (!this.savedVis || !this.isInitialized || this.isDestroyed) { return; } - this.handleContainerStateChanged(this.input); + if (this.handleContainerStateChanged(this.input)) { + // reset removable messages + // Unified histogram search/context changes are detected here + this.additionalUserMessages = {}; + } if (this.domNode) { this.render(this.domNode); } diff --git a/x-pack/plugins/lists/server/routes/create_endpoint_list_item_route.ts b/x-pack/plugins/lists/server/routes/create_endpoint_list_item_route.ts index f031b9d1e2882..d6272626618ec 100644 --- a/x-pack/plugins/lists/server/routes/create_endpoint_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/create_endpoint_list_item_route.ts @@ -43,7 +43,6 @@ export const createEndpointListItemRoute = (router: ListsPluginRouter): void => comments, description, entries, - expire_time: expireTime, item_id: itemId, os_types: osTypes, type, @@ -63,7 +62,6 @@ export const createEndpointListItemRoute = (router: ListsPluginRouter): void => comments, description, entries, - expireTime, itemId, meta, name, diff --git a/x-pack/plugins/lists/server/routes/update_endpoint_list_item_route.ts b/x-pack/plugins/lists/server/routes/update_endpoint_list_item_route.ts index a0a2c8f43f83f..e1e117f6c5604 100644 --- a/x-pack/plugins/lists/server/routes/update_endpoint_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/update_endpoint_list_item_route.ts @@ -49,7 +49,6 @@ export const updateEndpointListItemRoute = (router: ListsPluginRouter): void => entries, item_id: itemId, tags, - expire_time: expireTime, } = request.body; const exceptionLists = await getExceptionListClient(context); const exceptionListItem = await exceptionLists.updateEndpointListItem({ @@ -57,7 +56,6 @@ export const updateEndpointListItemRoute = (router: ListsPluginRouter): void => comments, description, entries, - expireTime, id, itemId, meta, diff --git a/x-pack/plugins/lists/server/routes/update_exception_list_item_route.ts b/x-pack/plugins/lists/server/routes/update_exception_list_item_route.ts index e4751662a1949..00ecb1a8e32a0 100644 --- a/x-pack/plugins/lists/server/routes/update_exception_list_item_route.ts +++ b/x-pack/plugins/lists/server/routes/update_exception_list_item_route.ts @@ -65,7 +65,7 @@ export const updateExceptionListItemRoute = (router: ListsPluginRouter): void => }); } else { const exceptionLists = await getExceptionListClient(context); - const exceptionListItem = await exceptionLists.updateExceptionListItem({ + const exceptionListItem = await exceptionLists.updateOverwriteExceptionListItem({ _version, comments, description, diff --git a/x-pack/plugins/lists/server/services/exception_lists/duplicate_exception_list.ts b/x-pack/plugins/lists/server/services/exception_lists/duplicate_exception_list.ts index 0395c36494d7d..4d4c8a07b455e 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/duplicate_exception_list.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/duplicate_exception_list.ts @@ -83,6 +83,7 @@ export const duplicateExceptionListAndItems = async ({ comments: [], description: item.description, entries: item.entries, + expire_time: item.expire_time, item_id: newItemId, list_id: newlyCreatedList.list_id, meta: item.meta, diff --git a/x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts b/x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts index b8fbb35f29354..db9c62ae5b377 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/exception_list_client.ts @@ -97,6 +97,7 @@ import { findExceptionListsItemPointInTimeFinder } from './find_exception_list_i import { findValueListExceptionListItemsPointInTimeFinder } from './find_value_list_exception_list_items_point_in_time_finder'; import { findExceptionListItemPointInTimeFinder } from './find_exception_list_item_point_in_time_finder'; import { duplicateExceptionListAndItems } from './duplicate_exception_list'; +import { updateOverwriteExceptionListItem } from './update_overwrite_exception_list_item'; /** * Class for use for exceptions that are with trusted applications or @@ -287,7 +288,6 @@ export class ExceptionListClient { comments, description, entries, - expireTime, itemId, meta, name, @@ -301,7 +301,7 @@ export class ExceptionListClient { comments, description, entries, - expireTime, + expireTime: undefined, // Not currently used with endpoint exceptions itemId, listId: ENDPOINT_LIST_ID, meta, @@ -358,7 +358,6 @@ export class ExceptionListClient { comments, description, entries, - expireTime, id, itemId, meta, @@ -374,7 +373,7 @@ export class ExceptionListClient { comments, description, entries, - expireTime, + expireTime: undefined, // Not currently used with endpoint exceptions id, itemId, meta, @@ -579,6 +578,11 @@ export class ExceptionListClient { /** * Update an existing exception list item + * + * NOTE: This method will PATCH the targeted exception list item, not fully overwrite it. + * Any undefined fields passed in will not be changed in the existing record. To unset any + * fields use the `updateOverwriteExceptionListItem` method + * * @param options * @param options._version document version * @param options.comments user comments attached to item @@ -647,6 +651,81 @@ export class ExceptionListClient { }); }; + /** + * Update an existing exception list item using the overwrite method in order to behave + * more like a PUT request rather than a PATCH request. + * + * This was done in order to correctly unset types via update which cannot be accomplished + * using the regular `updateExceptionItem` method. All other results of the methods are identical + * + * @param options + * @param options._version document version + * @param options.comments user comments attached to item + * @param options.entries item exception entries logic + * @param options.id the "id" of the exception list item + * @param options.description a description of the exception list + * @param options.itemId the "item_id" of the exception list item + * @param options.meta Optional meta data about the exception list item + * @param options.name the "name" of the exception list + * @param options.namespaceType saved object namespace (single | agnostic) + * @param options.osTypes item os types to apply + * @param options.tags user assigned tags of exception list + * @param options.type container type + * @returns the updated exception list item or null if none exists + */ + public updateOverwriteExceptionListItem = async ({ + _version, + comments, + description, + entries, + expireTime, + id, + itemId, + meta, + name, + namespaceType, + osTypes, + tags, + type, + }: UpdateExceptionListItemOptions): Promise => { + const { savedObjectsClient, user } = this; + let updatedItem: UpdateExceptionListItemOptions = { + _version, + comments, + description, + entries, + expireTime, + id, + itemId, + meta, + name, + namespaceType, + osTypes, + tags, + type, + }; + + if (this.enableServerExtensionPoints) { + updatedItem = await this.serverExtensionsClient.pipeRun( + 'exceptionsListPreUpdateItem', + updatedItem, + this.getServerExtensionCallbackContext(), + (data) => { + return validateData( + updateExceptionListItemSchema, + transformUpdateExceptionListItemOptionsToUpdateExceptionListItemSchema(data) + ); + } + ); + } + + return updateOverwriteExceptionListItem({ + ...updatedItem, + savedObjectsClient, + user, + }); + }; + /** * Delete an exception list item by either id or item_id * @param options diff --git a/x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts b/x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts index b994919398a1c..b93de1413e4db 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/exception_list_client_types.ts @@ -274,8 +274,6 @@ export interface CreateEndpointListItemOptions { comments: CreateCommentsArray; /** The entries of the endpoint list item */ entries: EntriesArray; - /** an optional datetime string with an expiration time */ - expireTime: ExpireTimeOrUndefined; /** The item id of the list item */ itemId: ItemId; /** The name of the list item */ @@ -347,8 +345,6 @@ export interface UpdateEndpointListItemOptions { comments: UpdateCommentsArray; /** The entries of the endpoint list item */ entries: EntriesArray; - /** an optional datetime string with an expiration time */ - expireTime: ExpireTimeOrUndefined; /** The id of the list item (Either this or itemId has to be defined) */ id: IdOrUndefined; /** The item id of the list item (Either this or id has to be defined) */ diff --git a/x-pack/plugins/lists/server/services/exception_lists/update_exception_list_item.ts b/x-pack/plugins/lists/server/services/exception_lists/update_exception_list_item.ts index e3fcb9d2461e4..4a680c7d2fb06 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/update_exception_list_item.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/update_exception_list_item.ts @@ -32,7 +32,7 @@ import { } from './utils'; import { getExceptionListItem } from './get_exception_list_item'; -interface UpdateExceptionListItemOptions { +export interface UpdateExceptionListItemOptions { id: IdOrUndefined; comments: UpdateCommentsArrayOrUndefined; _version: _VersionOrUndefined; diff --git a/x-pack/plugins/lists/server/services/exception_lists/update_overwrite_exception_list_item.ts b/x-pack/plugins/lists/server/services/exception_lists/update_overwrite_exception_list_item.ts new file mode 100644 index 0000000000000..ef1d470bf67a0 --- /dev/null +++ b/x-pack/plugins/lists/server/services/exception_lists/update_overwrite_exception_list_item.ts @@ -0,0 +1,85 @@ +/* + * 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 { ExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; +import { getSavedObjectType } from '@kbn/securitysolution-list-utils'; + +import { ExceptionListSoSchema } from '../../schemas/saved_objects'; + +import { + transformSavedObjectUpdateToExceptionListItem, + transformUpdateCommentsToComments, +} from './utils'; +import { getExceptionListItem } from './get_exception_list_item'; +import { UpdateExceptionListItemOptions } from './update_exception_list_item'; + +export const updateOverwriteExceptionListItem = async ({ + _version, + comments, + entries, + expireTime, + id, + savedObjectsClient, + namespaceType, + name, + osTypes, + description, + itemId, + meta, + user, + tags, + type, +}: UpdateExceptionListItemOptions): Promise => { + const savedObjectType = getSavedObjectType({ namespaceType }); + const exceptionListItem = await getExceptionListItem({ + id, + itemId, + namespaceType, + savedObjectsClient, + }); + if (exceptionListItem == null) { + return null; + } else { + const transformedComments = transformUpdateCommentsToComments({ + comments, + existingComments: exceptionListItem.comments, + user, + }); + const savedObject = await savedObjectsClient.create( + savedObjectType, + { + comments: transformedComments, + created_at: exceptionListItem.created_at, + created_by: exceptionListItem.created_by, + description: description ?? exceptionListItem.description, + entries, + expire_time: expireTime, + immutable: undefined, + item_id: itemId, + list_id: exceptionListItem.list_id, + list_type: 'item', + meta, + name: name ?? exceptionListItem.name, + os_types: osTypes, + tags: tags ?? exceptionListItem.tags, + tie_breaker_id: exceptionListItem.tie_breaker_id, + type: type ?? exceptionListItem.type, + updated_by: user, + version: exceptionListItem._version ? parseInt(exceptionListItem._version, 10) : undefined, + }, + { + id, + overwrite: true, + version: _version, + } + ); + return transformSavedObjectUpdateToExceptionListItem({ + exceptionListItem, + savedObject, + }); + } +}; diff --git a/x-pack/plugins/lists/server/services/exception_lists/utils/index.ts b/x-pack/plugins/lists/server/services/exception_lists/utils/index.ts index 8af2bfcfa7175..362d7e94072c1 100644 --- a/x-pack/plugins/lists/server/services/exception_lists/utils/index.ts +++ b/x-pack/plugins/lists/server/services/exception_lists/utils/index.ts @@ -228,7 +228,7 @@ export const transformSavedObjectUpdateToExceptionListItem = ({ created_by: exceptionListItem.created_by, description: description ?? exceptionListItem.description, entries: entries ?? exceptionListItem.entries, - expire_time: expireTime ?? exceptionListItem.expire_time, + expire_time: expireTime, id, item_id: exceptionListItem.item_id, list_id: exceptionListItem.list_id, diff --git a/x-pack/plugins/ml/public/application/routing/routes/new_job/wizard.tsx b/x-pack/plugins/ml/public/application/routing/routes/new_job/wizard.tsx index 4300d73ae010e..a60fbae514e7f 100644 --- a/x-pack/plugins/ml/public/application/routing/routes/new_job/wizard.tsx +++ b/x-pack/plugins/ml/public/application/routing/routes/new_job/wizard.tsx @@ -127,14 +127,13 @@ export const multiMetricRouteFactory = ( // redirect route to reset the job wizard when converting to multi metric job export const multiMetricRouteFactoryRedirect = (): MlRoute => ({ path: createPath(ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_CONVERT_TO_MULTI_METRIC), - render: (props) => ( - - ), + render: (props) => { + return ( + + ); + }, breadcrumbs: [], }); diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/embeddable/index.tsx b/x-pack/plugins/observability/public/components/shared/exploratory_view/embeddable/index.tsx index 6647d2499159c..48747afe53305 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/embeddable/index.tsx +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/embeddable/index.tsx @@ -91,6 +91,7 @@ export function getExploratoryViewEmbeddable( ); const { dataViews, loading } = useAppDataView({ + series, dataViewCache, dataViewsService, dataTypesIndexPatterns, diff --git a/x-pack/plugins/observability/public/components/shared/exploratory_view/embeddable/use_app_data_view.ts b/x-pack/plugins/observability/public/components/shared/exploratory_view/embeddable/use_app_data_view.ts index 768a0ac46238c..99df5a1fb6952 100644 --- a/x-pack/plugins/observability/public/components/shared/exploratory_view/embeddable/use_app_data_view.ts +++ b/x-pack/plugins/observability/public/components/shared/exploratory_view/embeddable/use_app_data_view.ts @@ -12,13 +12,16 @@ import type { ExploratoryEmbeddableProps, ObservabilityPublicPluginsStart } from import type { DataViewState } from '../hooks/use_app_data_view'; import type { AppDataType } from '../types'; import { ObservabilityDataViews } from '../../../../utils/observability_data_views/observability_data_views'; +import { SeriesUrl } from '../../../..'; export const useAppDataView = ({ + series, dataViewCache, seriesDataType, dataViewsService, dataTypesIndexPatterns, }: { + series: SeriesUrl; seriesDataType: AppDataType; dataViewCache: Record; dataViewsService: ObservabilityPublicPluginsStart['dataViews']; @@ -56,10 +59,11 @@ export const useAppDataView = ({ ); useEffect(() => { - if (seriesDataType) { + if (seriesDataType && !loading && !dataViews[seriesDataType]) { loadIndexPattern({ dataType: seriesDataType }); } - }, [seriesDataType, loadIndexPattern]); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [seriesDataType, loadIndexPattern, JSON.stringify(series)]); return { dataViews, loading }; }; diff --git a/x-pack/plugins/observability/public/components/slo/slo_status_badge/index.tsx b/x-pack/plugins/observability/public/components/slo/slo_status_badge/index.tsx new file mode 100644 index 0000000000000..c77b46d62c2a0 --- /dev/null +++ b/x-pack/plugins/observability/public/components/slo/slo_status_badge/index.tsx @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { SloStatusBadge } from './slo_status_badge'; diff --git a/x-pack/plugins/observability/public/pages/slos/components/badges/slo_status_badge.stories.tsx b/x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_status_badge.stories.tsx similarity index 78% rename from x-pack/plugins/observability/public/pages/slos/components/badges/slo_status_badge.stories.tsx rename to x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_status_badge.stories.tsx index 5ab384419dd28..1c1313beb15cf 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/badges/slo_status_badge.stories.tsx +++ b/x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_status_badge.stories.tsx @@ -8,13 +8,13 @@ import React from 'react'; import { ComponentStory } from '@storybook/react'; -import { KibanaReactStorybookDecorator } from '../../../../utils/kibana_react.storybook_decorator'; +import { KibanaReactStorybookDecorator } from '../../../utils/kibana_react.storybook_decorator'; import { SloStatusBadge as Component, SloStatusProps } from './slo_status_badge'; -import { buildSlo } from '../../../../data/slo/slo'; +import { buildSlo } from '../../../data/slo/slo'; export default { component: Component, - title: 'app/SLO/ListPage/Badges/SloStatusBadge', + title: 'app/SLO/Badges/SloStatusBadge', decorators: [KibanaReactStorybookDecorator], }; diff --git a/x-pack/plugins/observability/public/pages/slos/components/badges/slo_status_badge.tsx b/x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_status_badge.tsx similarity index 80% rename from x-pack/plugins/observability/public/pages/slos/components/badges/slo_status_badge.tsx rename to x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_status_badge.tsx index ed69ebae221e5..ef6e931f76ff4 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/badges/slo_status_badge.tsx +++ b/x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_status_badge.tsx @@ -21,7 +21,7 @@ export function SloStatusBadge({ slo }: SloStatusProps) {
{slo.summary.status === 'NO_DATA' && ( - {i18n.translate('xpack.observability.slos.slo.state.noData', { + {i18n.translate('xpack.observability.slo.sloStatusBadge.noData', { defaultMessage: 'No data', })} @@ -29,7 +29,7 @@ export function SloStatusBadge({ slo }: SloStatusProps) { {slo.summary.status === 'HEALTHY' && ( - {i18n.translate('xpack.observability.slos.slo.state.healthy', { + {i18n.translate('xpack.observability.slo.sloStatusBadge.healthy', { defaultMessage: 'Healthy', })} @@ -37,7 +37,7 @@ export function SloStatusBadge({ slo }: SloStatusProps) { {slo.summary.status === 'DEGRADING' && ( - {i18n.translate('xpack.observability.slos.slo.state.degrading', { + {i18n.translate('xpack.observability.slo.sloStatusBadge.degrading', { defaultMessage: 'Degrading', })} @@ -45,7 +45,7 @@ export function SloStatusBadge({ slo }: SloStatusProps) { {slo.summary.status === 'VIOLATED' && ( - {i18n.translate('xpack.observability.slos.slo.state.violated', { + {i18n.translate('xpack.observability.slo.sloStatusBadge.violated', { defaultMessage: 'Violated', })} @@ -56,7 +56,7 @@ export function SloStatusBadge({ slo }: SloStatusProps) {
- {i18n.translate('xpack.observability.slos.slo.state.forecasted', { + {i18n.translate('xpack.observability.slo.sloStatusBadge.forecasted', { defaultMessage: 'Forecasted', })} diff --git a/x-pack/plugins/observability/public/pages/slo_details/components/error_budget_chart_panel.tsx b/x-pack/plugins/observability/public/pages/slo_details/components/error_budget_chart_panel.tsx new file mode 100644 index 0000000000000..ed984e5ea4a59 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/slo_details/components/error_budget_chart_panel.tsx @@ -0,0 +1,81 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiStat, EuiText, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { SLOWithSummaryResponse } from '@kbn/slo-schema'; +import React from 'react'; + +import { ChartData } from '../../../typings/slo'; +import { toHighPrecisionPercentage } from '../helpers/number'; +import { WideChart } from './wide_chart'; + +export interface Props { + data: ChartData[]; + isLoading: boolean; + slo: SLOWithSummaryResponse; +} + +export function ErrorBudgetChartPanel({ data, isLoading, slo }: Props) { + const isSloFailed = slo.summary.status === 'DEGRADING' || slo.summary.status === 'VIOLATED'; + + return ( + + + + + +

+ {i18n.translate('xpack.observability.slo.sloDetails.errorBudgetChartPanel.title', { + defaultMessage: 'Error budget burn down', + })} +

+
+
+ + + {i18n.translate('xpack.observability.slo.sloDetails.errorBudgetChartPanel.duration', { + defaultMessage: 'Last {duration}', + values: { duration: slo.timeWindow.duration }, + })} + + +
+ + + + + + + + + + +
+
+ ); +} diff --git a/x-pack/plugins/observability/public/pages/slo_details/components/header_control.stories.tsx b/x-pack/plugins/observability/public/pages/slo_details/components/header_control.stories.tsx new file mode 100644 index 0000000000000..af6338d4a3977 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/slo_details/components/header_control.stories.tsx @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { ComponentStory } from '@storybook/react'; + +import { KibanaReactStorybookDecorator } from '../../../utils/kibana_react.storybook_decorator'; +import { buildSlo } from '../../../data/slo/slo'; +import { HeaderControl as Component, Props } from './header_control'; + +export default { + component: Component, + title: 'app/SLO/DetailsPage/HeaderControl', + decorators: [KibanaReactStorybookDecorator], +}; + +const Template: ComponentStory = (props: Props) => ; + +const defaultProps: Props = { + slo: buildSlo(), + isLoading: false, +}; + +export const Default = Template.bind({}); +Default.args = defaultProps; + +export const WithLoading = Template.bind({}); +WithLoading.args = { slo: undefined, isLoading: true }; diff --git a/x-pack/plugins/observability/public/pages/slo_details/components/header_control.tsx b/x-pack/plugins/observability/public/pages/slo_details/components/header_control.tsx new file mode 100644 index 0000000000000..fdd0beb82fce9 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/slo_details/components/header_control.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 { EuiButton, EuiContextMenuItem, EuiContextMenuPanel, EuiPopover } from '@elastic/eui'; +import React, { useState } from 'react'; +import { i18n } from '@kbn/i18n'; +import { SLOWithSummaryResponse } from '@kbn/slo-schema'; + +import { paths } from '../../../config'; +import { useKibana } from '../../../utils/kibana_react'; +import { ObservabilityAppServices } from '../../../application/types'; +import { useCapabilities } from '../../../hooks/slo/use_capabilities'; + +export interface Props { + slo: SLOWithSummaryResponse | undefined; + isLoading: boolean; +} + +export function HeaderControl({ isLoading, slo }: Props) { + const { + application: { navigateToUrl }, + http: { basePath }, + } = useKibana().services; + const { hasWriteCapabilities } = useCapabilities(); + const [isPopoverOpen, setIsPopoverOpen] = useState(false); + + const handleActionsClick = () => setIsPopoverOpen((value) => !value); + const closePopover = () => setIsPopoverOpen(false); + + const handleEdit = () => { + if (slo) { + navigateToUrl(basePath.prepend(paths.observability.sloEdit(slo.id))); + } + }; + + return ( + + {i18n.translate('xpack.observability.slo.sloDetails.headerControl.actions', { + defaultMessage: 'Actions', + })} + + } + isOpen={isPopoverOpen} + closePopover={closePopover} + > + + {i18n.translate('xpack.observability.slo.sloDetails.headerControl.edit', { + defaultMessage: 'Edit', + })} + , + ]} + /> + + ); +} diff --git a/x-pack/plugins/observability/public/pages/slo_details/components/header_title.stories.tsx b/x-pack/plugins/observability/public/pages/slo_details/components/header_title.stories.tsx new file mode 100644 index 0000000000000..daf5e8038fdd3 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/slo_details/components/header_title.stories.tsx @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { ComponentStory } from '@storybook/react'; + +import { KibanaReactStorybookDecorator } from '../../../utils/kibana_react.storybook_decorator'; +import { buildSlo } from '../../../data/slo/slo'; +import { HeaderTitle as Component, Props } from './header_title'; + +export default { + component: Component, + title: 'app/SLO/DetailsPage/HeaderTitle', + decorators: [KibanaReactStorybookDecorator], +}; + +const Template: ComponentStory = (props: Props) => ; + +const defaultProps: Props = { + slo: buildSlo(), + isLoading: false, +}; + +export const Default = Template.bind({}); +Default.args = defaultProps; + +export const WithLoading = Template.bind({}); +WithLoading.args = { slo: undefined, isLoading: false }; diff --git a/x-pack/plugins/observability/public/pages/slo_details/components/page_title.tsx b/x-pack/plugins/observability/public/pages/slo_details/components/header_title.tsx similarity index 55% rename from x-pack/plugins/observability/public/pages/slo_details/components/page_title.tsx rename to x-pack/plugins/observability/public/pages/slo_details/components/header_title.tsx index a4803a83eeb17..d2448d8959ad7 100644 --- a/x-pack/plugins/observability/public/pages/slo_details/components/page_title.tsx +++ b/x-pack/plugins/observability/public/pages/slo_details/components/header_title.tsx @@ -5,20 +5,31 @@ * 2.0. */ -import { EuiLoadingSpinner } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiLoadingSpinner } from '@elastic/eui'; import { SLOWithSummaryResponse } from '@kbn/slo-schema'; import React from 'react'; +import { SloStatusBadge } from '../../../components/slo/slo_status_badge'; + export interface Props { slo: SLOWithSummaryResponse | undefined; isLoading: boolean; } -export function PageTitle(props: Props) { +export function HeaderTitle(props: Props) { const { isLoading, slo } = props; if (isLoading) { return ; } - return <>{slo && slo.name}; + return ( + + {slo && slo.name} + {!!slo && ( + + + + )} + + ); } diff --git a/x-pack/plugins/observability/public/pages/slo_details/components/overview.stories.tsx b/x-pack/plugins/observability/public/pages/slo_details/components/overview.stories.tsx new file mode 100644 index 0000000000000..3a3666d901304 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/slo_details/components/overview.stories.tsx @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { ComponentStory } from '@storybook/react'; + +import { KibanaReactStorybookDecorator } from '../../../utils/kibana_react.storybook_decorator'; +import { buildSlo } from '../../../data/slo/slo'; +import { Overview as Component, Props } from './overview'; + +export default { + component: Component, + title: 'app/SLO/DetailsPage/Overview', + decorators: [KibanaReactStorybookDecorator], +}; + +const Template: ComponentStory = (props: Props) => ; + +const defaultProps: Props = { + slo: buildSlo(), +}; + +export const Overview = Template.bind({}); +Overview.args = defaultProps; diff --git a/x-pack/plugins/observability/public/pages/slo_details/components/overview.tsx b/x-pack/plugins/observability/public/pages/slo_details/components/overview.tsx new file mode 100644 index 0000000000000..24de662f5ce05 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/slo_details/components/overview.tsx @@ -0,0 +1,157 @@ +/* + * 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 { EuiFlexGroup, EuiPanel } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { SLOWithSummaryResponse } from '@kbn/slo-schema'; +import { assertNever } from '@kbn/std'; +import moment from 'moment'; +import React from 'react'; +import { DEFAULT_DATE_FORMAT } from '../constants'; +import { toHighPrecisionPercentage } from '../helpers/number'; + +import { OverviewItem } from './overview_item'; + +export interface Props { + slo: SLOWithSummaryResponse; +} + +export function Overview({ slo }: Props) { + const hasNoData = slo.summary.status === 'NO_DATA'; + return ( + + + + + + + + + + + + + + + + + + ); +} + +function toTimeWindowLabel(timeWindow: SLOWithSummaryResponse['timeWindow']): string { + if ('isRolling' in timeWindow) { + return i18n.translate('xpack.observability.slo.sloDetails.overview.rollingTimeWindow', { + defaultMessage: '{duration} rolling', + values: { + duration: timeWindow.duration, + }, + }); + } + + return i18n.translate('xpack.observability.slo.sloDetails.overview.calendarAlignedTimeWindow', { + defaultMessage: '{duration}', + values: { + duration: timeWindow.duration, + }, + }); +} + +function toIndicatorTypeLabel(indicatorType: SLOWithSummaryResponse['indicator']['type']): string { + switch (indicatorType) { + case 'sli.kql.custom': + return i18n.translate('xpack.observability.slo.sloDetails.overview.customKqlIndicator', { + defaultMessage: 'Custom KQL', + }); + + case 'sli.apm.transactionDuration': + return i18n.translate('xpack.observability.slo.sloDetails.overview.apmLatencyIndicator', { + defaultMessage: 'APM latency', + }); + + case 'sli.apm.transactionErrorRate': + return i18n.translate( + 'xpack.observability.slo.sloDetails.overview.apmAvailabilityIndicator', + { + defaultMessage: 'APM availability', + } + ); + default: + assertNever(indicatorType); + } +} + +function toBudgetingMethod(budgetingMethod: SLOWithSummaryResponse['budgetingMethod']): string { + if (budgetingMethod === 'occurrences') { + return i18n.translate( + 'xpack.observability.slo.sloDetails.overview.occurrencesBudgetingMethod', + { defaultMessage: 'Occurrences' } + ); + } + + return i18n.translate('xpack.observability.slo.sloDetails.overview.timeslicesBudgetingMethod', { + defaultMessage: 'Timeslices', + }); +} diff --git a/x-pack/plugins/observability/public/pages/slo_details/components/overview_item.tsx b/x-pack/plugins/observability/public/pages/slo_details/components/overview_item.tsx new file mode 100644 index 0000000000000..ccc4a61a5d7f0 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/slo_details/components/overview_item.tsx @@ -0,0 +1,31 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiFlexGroup, EuiFlexItem, EuiText } from '@elastic/eui'; +import React from 'react'; + +export interface Props { + title: string; + subtitle: string; +} + +export function OverviewItem({ title, subtitle }: Props) { + return ( + + + + + {title} + + + + {subtitle} + + + + ); +} diff --git a/x-pack/plugins/observability/public/pages/slo_details/components/sli_chart_panel.tsx b/x-pack/plugins/observability/public/pages/slo_details/components/sli_chart_panel.tsx new file mode 100644 index 0000000000000..a40372b583b8b --- /dev/null +++ b/x-pack/plugins/observability/public/pages/slo_details/components/sli_chart_panel.tsx @@ -0,0 +1,93 @@ +/* + * 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 { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiStat, EuiText, EuiTitle } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { SLOWithSummaryResponse } from '@kbn/slo-schema'; +import React from 'react'; + +import { ChartData } from '../../../typings/slo'; +import { toHighPrecisionPercentage } from '../helpers/number'; +import { WideChart } from './wide_chart'; + +export interface Props { + data: ChartData[]; + isLoading: boolean; + slo: SLOWithSummaryResponse; +} + +export function SliChartPanel({ data, isLoading, slo }: Props) { + const isSloFailed = slo.summary.status === 'DEGRADING' || slo.summary.status === 'VIOLATED'; + const hasNoData = slo.summary.status === 'NO_DATA'; + + return ( + + + + + +

+ {i18n.translate('xpack.observability.slo.sloDetails.sliHistoryChartPanel.title', { + defaultMessage: 'Historical SLI', + })} +

+
+
+ + + {i18n.translate('xpack.observability.slo.sloDetails.sliHistoryChartPanel.duration', { + defaultMessage: 'Last {duration}', + values: { duration: slo.timeWindow.duration }, + })} + + +
+ + + + + + + + + + + + + +
+
+ ); +} diff --git a/x-pack/plugins/observability/public/pages/slo_details/components/slo_details.stories.tsx b/x-pack/plugins/observability/public/pages/slo_details/components/slo_details.stories.tsx index bf462b7c360bb..237af2c0698ae 100644 --- a/x-pack/plugins/observability/public/pages/slo_details/components/slo_details.stories.tsx +++ b/x-pack/plugins/observability/public/pages/slo_details/components/slo_details.stories.tsx @@ -8,13 +8,14 @@ import React from 'react'; import { ComponentStory } from '@storybook/react'; +import { KibanaReactStorybookDecorator } from '../../../utils/kibana_react.storybook_decorator'; import { buildSlo } from '../../../data/slo/slo'; import { SloDetails as Component, Props } from './slo_details'; export default { component: Component, title: 'app/SLO/DetailsPage/SloDetails', - argTypes: {}, + decorators: [KibanaReactStorybookDecorator], }; const Template: ComponentStory = (props: Props) => ; diff --git a/x-pack/plugins/observability/public/pages/slo_details/components/slo_details.tsx b/x-pack/plugins/observability/public/pages/slo_details/components/slo_details.tsx index ed717865a710d..4ba0f333f892c 100644 --- a/x-pack/plugins/observability/public/pages/slo_details/components/slo_details.tsx +++ b/x-pack/plugins/observability/public/pages/slo_details/components/slo_details.tsx @@ -5,14 +5,47 @@ * 2.0. */ +import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { SLOWithSummaryResponse } from '@kbn/slo-schema'; import React from 'react'; +import { formatHistoricalData } from '../../../utils/slo/chart_data_formatter'; +import { useFetchHistoricalSummary } from '../../../hooks/slo/use_fetch_historical_summary'; +import { ErrorBudgetChartPanel } from './error_budget_chart_panel'; +import { Overview as Overview } from './overview'; +import { SliChartPanel } from './sli_chart_panel'; + export interface Props { slo: SLOWithSummaryResponse; } -export function SloDetails(props: Props) { - const { slo } = props; - return
{JSON.stringify(slo, null, 2)}
; +export function SloDetails({ slo }: Props) { + const { isLoading: historicalSummaryLoading, sloHistoricalSummaryResponse = {} } = + useFetchHistoricalSummary({ sloIds: [slo.id] }); + + const errorBudgetBurnDownData = formatHistoricalData( + sloHistoricalSummaryResponse[slo.id], + 'error_budget_remaining' + ); + const historicalSliData = formatHistoricalData(sloHistoricalSummaryResponse[slo.id], 'sli_value'); + + return ( + + + + + + + + + + + + + + ); } diff --git a/x-pack/plugins/observability/public/pages/slo_details/components/wide_chart.tsx b/x-pack/plugins/observability/public/pages/slo_details/components/wide_chart.tsx new file mode 100644 index 0000000000000..ae9f5701f3cf6 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/slo_details/components/wide_chart.tsx @@ -0,0 +1,91 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + AreaSeries, + Axis, + Chart, + Fit, + LineSeries, + Position, + ScaleType, + Settings, +} from '@elastic/charts'; +import React from 'react'; +import { EuiIcon, EuiLoadingChart, useEuiTheme } from '@elastic/eui'; + +import moment from 'moment'; +import { ChartData } from '../../../typings'; +import { useKibana } from '../../../utils/kibana_react'; +import { toHighPrecisionPercentage } from '../helpers/number'; +import { DEFAULT_DATE_FORMAT } from '../constants'; + +type ChartType = 'area' | 'line'; +type State = 'success' | 'error'; + +export interface Props { + id: string; + data: ChartData[]; + chart: ChartType; + state: State; + isLoading: boolean; +} + +export function WideChart({ chart, data, id, isLoading, state }: Props) { + const charts = useKibana().services.charts; + const theme = charts.theme.useChartsTheme(); + const baseTheme = charts.theme.useChartsBaseTheme(); + const { euiTheme } = useEuiTheme(); + + const color = state === 'error' ? euiTheme.colors.danger : euiTheme.colors.success; + const ChartComponent = chart === 'area' ? AreaSeries : LineSeries; + + if (isLoading) { + return ; + } + + return ( + + } + /> + moment(d).format(DEFAULT_DATE_FORMAT)} + /> + `${toHighPrecisionPercentage(d)}%`} + /> + + + ); +} diff --git a/x-pack/plugins/observability/public/pages/slo_details/constants.ts b/x-pack/plugins/observability/public/pages/slo_details/constants.ts new file mode 100644 index 0000000000000..b70a27b81eade --- /dev/null +++ b/x-pack/plugins/observability/public/pages/slo_details/constants.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 const DEFAULT_DATE_FORMAT = 'MMM D, YYYY @ HH:mm:ss.SSS'; diff --git a/x-pack/plugins/observability/public/pages/slo_details/helpers/number.ts b/x-pack/plugins/observability/public/pages/slo_details/helpers/number.ts new file mode 100644 index 0000000000000..6d8c67d4d12fc --- /dev/null +++ b/x-pack/plugins/observability/public/pages/slo_details/helpers/number.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export function toHighPrecisionPercentage(value: number): number { + return Math.trunc(value * 100000) / 1000; +} diff --git a/x-pack/plugins/observability/public/pages/slo_details/index.test.tsx b/x-pack/plugins/observability/public/pages/slo_details/index.test.tsx index bb5d481df9282..291ddeb9eaf48 100644 --- a/x-pack/plugins/observability/public/pages/slo_details/index.test.tsx +++ b/x-pack/plugins/observability/public/pages/slo_details/index.test.tsx @@ -18,6 +18,10 @@ import { buildSlo } from '../../data/slo/slo'; import type { ConfigSchema } from '../../plugin'; import type { Subset } from '../../typings'; import { paths } from '../../config'; +import { useFetchHistoricalSummary } from '../../hooks/slo/use_fetch_historical_summary'; +import { useCapabilities } from '../../hooks/slo/use_capabilities'; +import { historicalSummaryData } from '../../data/slo/historical_summary_data'; +import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), @@ -28,11 +32,15 @@ jest.mock('../../utils/kibana_react'); jest.mock('../../hooks/use_breadcrumbs'); jest.mock('../../hooks/use_license'); jest.mock('../../hooks/slo/use_fetch_slo_details'); +jest.mock('../../hooks/slo/use_fetch_historical_summary'); +jest.mock('../../hooks/slo/use_capabilities'); const useKibanaMock = useKibana as jest.Mock; const useParamsMock = useParams as jest.Mock; const useLicenseMock = useLicense as jest.Mock; const useFetchSloDetailsMock = useFetchSloDetails as jest.Mock; +const useFetchHistoricalSummaryMock = useFetchHistoricalSummary as jest.Mock; +const useCapabilitiesMock = useCapabilities as jest.Mock; const mockNavigate = jest.fn(); const mockBasePathPrepend = jest.fn(); @@ -41,6 +49,7 @@ const mockKibana = () => { useKibanaMock.mockReturnValue({ services: { application: { navigateToUrl: mockNavigate }, + charts: chartPluginMock.createSetupContract(), http: { basePath: { prepend: mockBasePathPrepend, @@ -60,6 +69,11 @@ describe('SLO Details Page', () => { beforeEach(() => { jest.clearAllMocks(); mockKibana(); + useCapabilitiesMock.mockReturnValue({ hasWriteCapabilities: true, hasReadCapabilities: true }); + useFetchHistoricalSummaryMock.mockReturnValue({ + isLoading: false, + sloHistoricalSummaryResponse: historicalSummaryData, + }); }); describe('when the feature flag is not enabled', () => { @@ -110,7 +124,7 @@ describe('SLO Details Page', () => { expect(screen.queryByTestId('pageNotFound')).toBeFalsy(); expect(screen.queryByTestId('loadingTitle')).toBeTruthy(); - expect(screen.queryByTestId('loadingDetails')).toBeTruthy(); + expect(screen.queryByTestId('sloDetailsLoading')).toBeTruthy(); }); it('renders the SLO details page', async () => { @@ -122,7 +136,6 @@ describe('SLO Details Page', () => { render(, config); expect(screen.queryByTestId('sloDetailsPage')).toBeTruthy(); - expect(screen.queryByTestId('sloDetails')).toBeTruthy(); }); }); }); diff --git a/x-pack/plugins/observability/public/pages/slo_details/index.tsx b/x-pack/plugins/observability/public/pages/slo_details/index.tsx index 2ba02c9464c55..dc0770b0f4ef0 100644 --- a/x-pack/plugins/observability/public/pages/slo_details/index.tsx +++ b/x-pack/plugins/observability/public/pages/slo_details/index.tsx @@ -11,7 +11,8 @@ import { EuiBreadcrumbProps } from '@elastic/eui/src/components/breadcrumbs/brea import { EuiLoadingSpinner } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import type { IBasePath } from '@kbn/core-http-browser'; -import type { SLOResponse } from '@kbn/slo-schema'; +import type { SLOWithSummaryResponse } from '@kbn/slo-schema'; + import { useKibana } from '../../utils/kibana_react'; import { usePluginContext } from '../../hooks/use_plugin_context'; import { useBreadcrumbs } from '../../hooks/use_breadcrumbs'; @@ -20,29 +21,26 @@ import { useLicense } from '../../hooks/use_license'; import PageNotFound from '../404'; import { isSloFeatureEnabled } from '../slos/helpers/is_slo_feature_enabled'; import { SloDetails } from './components/slo_details'; -import { PageTitle } from './components/page_title'; +import { HeaderTitle } from './components/header_title'; import { paths } from '../../config'; import type { SloDetailsPathParams } from './types'; import type { ObservabilityAppServices } from '../../application/types'; +import { HeaderControl } from './components/header_control'; export function SloDetailsPage() { const { application: { navigateToUrl }, http: { basePath }, } = useKibana().services; - const { ObservabilityPageTemplate, config } = usePluginContext(); - const { sloId } = useParams(); - const { hasAtLeast } = useLicense(); const hasRightLicense = hasAtLeast('platinum'); + const { sloId } = useParams(); const { isLoading, slo } = useFetchSloDetails(sloId); - useBreadcrumbs(getBreadcrumbs(basePath, slo)); const isSloNotFound = !isLoading && slo === undefined; - if (!isSloFeatureEnabled(config) || isSloNotFound) { return ; } @@ -54,19 +52,22 @@ export function SloDetailsPage() { return ( , - rightSideItems: [], - bottomBorder: true, + pageTitle: , + rightSideItems: [], + bottomBorder: false, }} data-test-subj="sloDetailsPage" > - {isLoading && } + {isLoading && } {!isLoading && } ); } -function getBreadcrumbs(basePath: IBasePath, slo: SLOResponse | undefined): EuiBreadcrumbProps[] { +function getBreadcrumbs( + basePath: IBasePath, + slo: SLOWithSummaryResponse | undefined +): EuiBreadcrumbProps[] { return [ { href: basePath.prepend(paths.observability.slos), diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/apm_availability/apm_availability_indicator_type_form.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/apm_availability/apm_availability_indicator_type_form.tsx index e61e1c7056596..51cefb5ce1400 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/apm_availability/apm_availability_indicator_type_form.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/apm_availability/apm_availability_indicator_type_form.tsx @@ -33,11 +33,11 @@ export function ApmAvailabilityIndicatorTypeForm() { - {i18n.translate('xpack.observability.slos.sloEdit.apmAvailability.goodStatusCodes', { + {i18n.translate('xpack.observability.slo.sloEdit.apmAvailability.goodStatusCodes', { defaultMessage: 'Good status codes', })} @@ -119,13 +113,13 @@ export function ApmAvailabilityIndicatorTypeForm() { - {i18n.translate('xpack.observability.slos.sloEdit.apmLatency.threshold.placeholder', { + {i18n.translate('xpack.observability.slo.sloEdit.apmLatency.threshold.placeholder', { defaultMessage: 'Threshold (ms)', })} @@ -119,12 +119,12 @@ export function ApmLatencyIndicatorTypeForm() { control={control} dataTestSubj="apmLatencyFilterInput" indexPatternString={watch('indicator.params.index')} - label={i18n.translate('xpack.observability.slos.sloEdit.apmLatency.filter', { + label={i18n.translate('xpack.observability.slo.sloEdit.apmLatency.filter', { defaultMessage: 'Query filter', })} name="indicator.params.filter" placeholder={i18n.translate( - 'xpack.observability.slos.sloEdit.apmLatency.filter.placeholder', + 'xpack.observability.slo.sloEdit.apmLatency.filter.placeholder', { defaultMessage: 'Custom filter to apply on the index', } diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/custom_kql_indicator_type_form.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/custom_kql_indicator_type_form.tsx index a9fb7cd58e480..bdcbb516d8f29 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/custom_kql_indicator_type_form.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/custom_kql_indicator_type_form.tsx @@ -27,12 +27,12 @@ export function CustomKqlIndicatorTypeForm() { control={control} dataTestSubj="customKqlIndicatorFormQueryFilterInput" indexPatternString={watch('indicator.params.index')} - label={i18n.translate('xpack.observability.slos.sloEdit.sliType.customKql.queryFilter', { + label={i18n.translate('xpack.observability.slo.sloEdit.sliType.customKql.queryFilter', { defaultMessage: 'Query filter', })} name="indicator.params.filter" placeholder={i18n.translate( - 'xpack.observability.slos.sloEdit.sliType.customKql.customFilter', + 'xpack.observability.slo.sloEdit.sliType.customKql.customFilter', { defaultMessage: 'Custom filter to apply on the index', } @@ -45,12 +45,12 @@ export function CustomKqlIndicatorTypeForm() { control={control} dataTestSubj="customKqlIndicatorFormGoodQueryInput" indexPatternString={watch('indicator.params.index')} - label={i18n.translate('xpack.observability.slos.sloEdit.sliType.customKql.goodQuery', { + label={i18n.translate('xpack.observability.slo.sloEdit.sliType.customKql.goodQuery', { defaultMessage: 'Good query', })} name="indicator.params.good" placeholder={i18n.translate( - 'xpack.observability.slos.sloEdit.sliType.customKql.goodQueryPlaceholder', + 'xpack.observability.slo.sloEdit.sliType.customKql.goodQueryPlaceholder', { defaultMessage: 'Define the good events', } @@ -63,12 +63,12 @@ export function CustomKqlIndicatorTypeForm() { control={control} dataTestSubj="customKqlIndicatorFormTotalQueryInput" indexPatternString={watch('indicator.params.index')} - label={i18n.translate('xpack.observability.slos.sloEdit.sliType.customKql.totalQuery', { + label={i18n.translate('xpack.observability.slo.sloEdit.sliType.customKql.totalQuery', { defaultMessage: 'Total query', })} name="indicator.params.total" placeholder={i18n.translate( - 'xpack.observability.slos.sloEdit.sliType.customKql.totalQueryPlaceholder', + 'xpack.observability.slo.sloEdit.sliType.customKql.totalQueryPlaceholder', { defaultMessage: 'Define the total events', } diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/index_selection.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/index_selection.tsx index 07c7b878410f9..1e815f1f2c27c 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/index_selection.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/index_selection.tsx @@ -49,7 +49,7 @@ export function IndexSelection({ control }: Props) { const searchWithStarSuffix = search.endsWith('*') ? search : `${search}*`; options.push({ label: i18n.translate( - 'xpack.observability.slos.sloEdit.customKql.indexSelection.indexPatternLabel', + 'xpack.observability.slo.sloEdit.customKql.indexSelection.indexPatternLabel', { defaultMessage: 'Use an index pattern' } ), options: [{ value: searchWithStarSuffix, label: searchWithStarSuffix }], @@ -60,11 +60,11 @@ export function IndexSelection({ control }: Props) { return (

- {i18n.translate('xpack.observability.slos.sloEdit.definition.title', { + {i18n.translate('xpack.observability.slo.sloEdit.definition.title', { defaultMessage: 'Define SLI', })}

@@ -162,7 +162,7 @@ export function SloEditForm({ slo }: Props) { - {i18n.translate('xpack.observability.slos.sloEdit.definition.sliType', { + {i18n.translate('xpack.observability.slo.sloEdit.definition.sliType', { defaultMessage: 'SLI type', })} @@ -205,7 +205,7 @@ export function SloEditForm({ slo }: Props) {

- {i18n.translate('xpack.observability.slos.sloEdit.objectives.title', { + {i18n.translate('xpack.observability.slo.sloEdit.objectives.title', { defaultMessage: 'Set objectives', })}

@@ -236,7 +236,7 @@ export function SloEditForm({ slo }: Props) {

- {i18n.translate('xpack.observability.slos.sloEdit.description.title', { + {i18n.translate('xpack.observability.slo.sloEdit.description.title', { defaultMessage: 'Describe SLO', })}

@@ -258,10 +258,10 @@ export function SloEditForm({ slo }: Props) { onClick={handleSubmit} > {isEditMode - ? i18n.translate('xpack.observability.slos.sloEdit.editSloButton', { + ? i18n.translate('xpack.observability.slo.sloEdit.editSloButton', { defaultMessage: 'Update SLO', }) - : i18n.translate('xpack.observability.slos.sloEdit.createSloButton', { + : i18n.translate('xpack.observability.slo.sloEdit.createSloButton', { defaultMessage: 'Create SLO', })} @@ -272,7 +272,7 @@ export function SloEditForm({ slo }: Props) { fill onClick={() => navigateToUrl(basePath.prepend(paths.observability.slos))} > - {i18n.translate('xpack.observability.slos.sloEdit.cancelButton', { + {i18n.translate('xpack.observability.slo.sloEdit.cancelButton', { defaultMessage: 'Cancel', })} diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_description.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_description.tsx index 6b6780358376f..c770335bd1161 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_description.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_description.tsx @@ -27,7 +27,7 @@ export function SloEditFormDescription() { - {i18n.translate('xpack.observability.slos.sloEdit.description.sloName', { + {i18n.translate('xpack.observability.slo.sloEdit.description.sloName', { defaultMessage: 'SLO Name', })} @@ -42,7 +42,7 @@ export function SloEditFormDescription() { id={sloNameId} data-test-subj="sloFormNameInput" placeholder={i18n.translate( - 'xpack.observability.slos.sloEdit.description.sloNamePlaceholder', + 'xpack.observability.slo.sloEdit.description.sloNamePlaceholder', { defaultMessage: 'Name for the SLO', } @@ -55,7 +55,7 @@ export function SloEditFormDescription() { - {i18n.translate('xpack.observability.slos.sloEdit.description.sloDescription', { + {i18n.translate('xpack.observability.slo.sloEdit.description.sloDescription', { defaultMessage: 'Description', })} @@ -70,7 +70,7 @@ export function SloEditFormDescription() { id={descriptionId} data-test-subj="sloFormDescriptionTextArea" placeholder={i18n.translate( - 'xpack.observability.slos.sloEdit.description.sloDescriptionPlaceholder', + 'xpack.observability.slo.sloEdit.description.sloDescriptionPlaceholder', { defaultMessage: 'A short description of the SLO', } diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_objectives.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_objectives.tsx index 083224af18595..9f2be82ba9835 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_objectives.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_objectives.tsx @@ -32,7 +32,7 @@ export function SloEditFormObjectives() { - {i18n.translate('xpack.observability.slos.sloEdit.budgetingMethod.label', { + {i18n.translate('xpack.observability.slo.sloEdit.budgetingMethod.label', { defaultMessage: 'Budgeting method', })} @@ -54,7 +54,7 @@ export function SloEditFormObjectives() { - {i18n.translate('xpack.observability.slos.sloEdit.timeWindow.label', { + {i18n.translate('xpack.observability.slo.sloEdit.timeWindow.label', { defaultMessage: 'Time window', })} @@ -77,7 +77,7 @@ export function SloEditFormObjectives() { - {i18n.translate('xpack.observability.slos.sloEdit.targetSlo.label', { + {i18n.translate('xpack.observability.slo.sloEdit.targetSlo.label', { defaultMessage: 'Target / SLO (%)', })} diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_objectives_timeslices.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_objectives_timeslices.tsx index 2d18c57c203c4..823a739ca4bcf 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_objectives_timeslices.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_objectives_timeslices.tsx @@ -17,7 +17,7 @@ export function SloEditFormObjectivesTimeslices() { - {i18n.translate('xpack.observability.slos.sloEdit.timeSliceTarget.label', { + {i18n.translate('xpack.observability.slo.sloEdit.timeSliceTarget.label', { defaultMessage: 'Timeslice target (%)', })} @@ -47,7 +47,7 @@ export function SloEditFormObjectivesTimeslices() { - {i18n.translate('xpack.observability.slos.sloEdit.timesliceWindow.label', { + {i18n.translate('xpack.observability.slo.sloEdit.timesliceWindow.label', { defaultMessage: 'Timeslice window (minutes)', })} diff --git a/x-pack/plugins/observability/public/pages/slo_edit/constants.ts b/x-pack/plugins/observability/public/pages/slo_edit/constants.ts index a7e44f34b4f55..d3e42dc76d020 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/constants.ts +++ b/x-pack/plugins/observability/public/pages/slo_edit/constants.ts @@ -14,19 +14,19 @@ export const SLI_OPTIONS: Array<{ }> = [ { value: 'sli.kql.custom', - text: i18n.translate('xpack.observability.slos.sliTypes.kqlCustomIndicator', { + text: i18n.translate('xpack.observability.slo.sliTypes.kqlCustomIndicator', { defaultMessage: 'KQL custom', }), }, { value: 'sli.apm.transactionDuration', - text: i18n.translate('xpack.observability.slos.sliTypes.apmLatencyIndicator', { + text: i18n.translate('xpack.observability.slo.sliTypes.apmLatencyIndicator', { defaultMessage: 'APM latency', }), }, { value: 'sli.apm.transactionErrorRate', - text: i18n.translate('xpack.observability.slos.sliTypes.apmAvailabilityIndicator', { + text: i18n.translate('xpack.observability.slo.sliTypes.apmAvailabilityIndicator', { defaultMessage: 'APM availability', }), }, @@ -35,13 +35,13 @@ export const SLI_OPTIONS: Array<{ export const BUDGETING_METHOD_OPTIONS: Array<{ value: BudgetingMethod; text: string }> = [ { value: 'occurrences', - text: i18n.translate('xpack.observability.slos.sloEdit.budgetingMethod.occurrences', { + text: i18n.translate('xpack.observability.slo.sloEdit.budgetingMethod.occurrences', { defaultMessage: 'Occurrences', }), }, { value: 'timeslices', - text: i18n.translate('xpack.observability.slos.sloEdit.budgetingMethod.timeslices', { + text: i18n.translate('xpack.observability.slo.sloEdit.budgetingMethod.timeslices', { defaultMessage: 'Timeslices', }), }, @@ -49,7 +49,7 @@ export const BUDGETING_METHOD_OPTIONS: Array<{ value: BudgetingMethod; text: str export const TIMEWINDOW_OPTIONS = [90, 30, 7].map((number) => ({ value: `${number}d`, - text: i18n.translate('xpack.observability.slos.sloEdit.timeWindow.days', { + text: i18n.translate('xpack.observability.slo.sloEdit.timeWindow.days', { defaultMessage: '{number} days', values: { number }, }), diff --git a/x-pack/plugins/observability/public/pages/slos/components/badges/slo_badges.tsx b/x-pack/plugins/observability/public/pages/slos/components/badges/slo_badges.tsx index cd4c7d9c2d5d5..33baec901097f 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/badges/slo_badges.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/badges/slo_badges.tsx @@ -13,7 +13,7 @@ import { i18n } from '@kbn/i18n'; import { useKibana } from '../../../../utils/kibana_react'; import { paths } from '../../../../config'; import { ActiveAlerts } from '../../../../hooks/slo/use_fetch_active_alerts'; -import { SloStatusBadge } from './slo_status_badge'; +import { SloStatusBadge } from '../../../../components/slo/slo_status_badge'; import { SloIndicatorTypeBadge } from './slo_indicator_type_badge'; import { SloTimeWindowBadge } from './slo_time_window_badge'; @@ -52,12 +52,12 @@ export function SloBadges({ slo, activeAlerts }: Props) { color="danger" onClick={handleClick} onClickAriaLabel={i18n.translate( - 'xpack.observability.slos.slo.activeAlertsBadge.ariaLabel', + 'xpack.observability.slo.slo.activeAlertsBadge.ariaLabel', { defaultMessage: 'active alerts badge' } )} data-test-subj="o11ySlosPageSloActiveAlertsBadge" > - {i18n.translate('xpack.observability.slos.slo.activeAlertsBadge.label', { + {i18n.translate('xpack.observability.slo.slo.activeAlertsBadge.label', { defaultMessage: '{count, plural, one {# alert} other {# alerts}}', values: { count: activeAlerts.count }, })} diff --git a/x-pack/plugins/observability/public/pages/slos/components/badges/slo_indicator_type_badge.tsx b/x-pack/plugins/observability/public/pages/slos/components/badges/slo_indicator_type_badge.tsx index 0dde7681b840a..9dcd221cc38bd 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/badges/slo_indicator_type_badge.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/badges/slo_indicator_type_badge.tsx @@ -28,15 +28,15 @@ export function SloIndicatorTypeBadge({ slo }: Props) { function toIndicatorLabel(indicatorType: SLOWithSummaryResponse['indicator']['type']) { switch (indicatorType) { case 'sli.kql.custom': - return i18n.translate('xpack.observability.slos.slo.indicator.customKql', { + return i18n.translate('xpack.observability.slo.slo.indicator.customKql', { defaultMessage: 'KQL', }); case 'sli.apm.transactionDuration': - return i18n.translate('xpack.observability.slos.slo.indicator.apmLatency', { + return i18n.translate('xpack.observability.slo.slo.indicator.apmLatency', { defaultMessage: 'Latency', }); case 'sli.apm.transactionErrorRate': - return i18n.translate('xpack.observability.slos.slo.indicator.apmAvailability', { + return i18n.translate('xpack.observability.slo.slo.indicator.apmAvailability', { defaultMessage: 'Availability', }); default: diff --git a/x-pack/plugins/observability/public/pages/slos/components/badges/slo_time_window_badge.tsx b/x-pack/plugins/observability/public/pages/slos/components/badges/slo_time_window_badge.tsx index 22f5e6499503e..e4bc2de0eda7b 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/badges/slo_time_window_badge.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/badges/slo_time_window_badge.tsx @@ -50,7 +50,7 @@ export function SloTimeWindowBadge({ slo }: Props) { return (
- {i18n.translate('xpack.observability.slos.slo.timeWindow.calendar', { + {i18n.translate('xpack.observability.slo.slo.timeWindow.calendar', { defaultMessage: '{elapsed}/{total} days', values: { elapsed: Math.min(elapsedDurationInDays, totalDurationInDays), @@ -65,27 +65,27 @@ export function SloTimeWindowBadge({ slo }: Props) { function toDurationLabel(duration: number, durationUnit: string) { switch (durationUnit) { case 'd': - return i18n.translate('xpack.observability.slos.slo.timeWindow.days', { + return i18n.translate('xpack.observability.slo.slo.timeWindow.days', { defaultMessage: '{duration} days', values: { duration }, }); case 'w': - return i18n.translate('xpack.observability.slos.slo.timeWindow.weeks', { + return i18n.translate('xpack.observability.slo.slo.timeWindow.weeks', { defaultMessage: '{duration} weeks', values: { duration }, }); case 'M': - return i18n.translate('xpack.observability.slos.slo.timeWindow.months', { + return i18n.translate('xpack.observability.slo.slo.timeWindow.months', { defaultMessage: '{duration} months', values: { duration }, }); case 'Q': - return i18n.translate('xpack.observability.slos.slo.timeWindow.quarterss', { + return i18n.translate('xpack.observability.slo.slo.timeWindow.quarterss', { defaultMessage: '{duration} quarters', values: { duration }, }); case 'Y': - return i18n.translate('xpack.observability.slos.slo.timeWindow.years', { + return i18n.translate('xpack.observability.slo.slo.timeWindow.years', { defaultMessage: '{duration} years', values: { duration }, }); diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_delete_confirmation_modal.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_delete_confirmation_modal.tsx index 2d753000d7d5d..4a292bef8c14b 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_delete_confirmation_modal.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_delete_confirmation_modal.tsx @@ -52,7 +52,7 @@ export function SloDeleteConfirmationModal({ onCancel={onCancel} onConfirm={handleConfirm} > - {i18n.translate('xpack.observability.slos.slo.deleteConfirmationModal.descriptionText', { + {i18n.translate('xpack.observability.slo.slo.deleteConfirmationModal.descriptionText', { defaultMessage: "You can't recover {name} after deleting.", values: { name }, })} @@ -61,24 +61,24 @@ export function SloDeleteConfirmationModal({ } const getTitle = () => - i18n.translate('xpack.observability.slos.slo.deleteConfirmationModal.title', { + i18n.translate('xpack.observability.slo.slo.deleteConfirmationModal.title', { defaultMessage: 'Are you sure?', }); const getCancelButtonText = () => - i18n.translate('xpack.observability.slos.slo.deleteConfirmationModal.cancelButtonLabel', { + i18n.translate('xpack.observability.slo.slo.deleteConfirmationModal.cancelButtonLabel', { defaultMessage: 'Cancel', }); const getConfirmButtonText = (name: string) => - i18n.translate('xpack.observability.slos.slo.deleteConfirmationModal.deleteButtonLabel', { + i18n.translate('xpack.observability.slo.slo.deleteConfirmationModal.deleteButtonLabel', { defaultMessage: 'Delete {name}', values: { name }, }); const getDeleteSuccesfulMessage = (name: string) => i18n.translate( - 'xpack.observability.slos.slo.deleteConfirmationModal.successNotification.descriptionText', + 'xpack.observability.slo.slo.deleteConfirmationModal.successNotification.descriptionText', { defaultMessage: 'Deleted {name}', values: { name }, @@ -87,7 +87,7 @@ const getDeleteSuccesfulMessage = (name: string) => const getDeleteFailMessage = (name: string) => i18n.translate( - 'xpack.observability.slos.slo.deleteConfirmationModal.errorNotification.descriptionText', + 'xpack.observability.slo.slo.deleteConfirmationModal.errorNotification.descriptionText', { defaultMessage: 'Failed to delete {name}', values: { name }, diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_list_empty.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_list_empty.tsx index eac54fdafec3d..cac36a8f3bcc9 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_list_empty.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_list_empty.tsx @@ -12,13 +12,13 @@ import { i18n } from '@kbn/i18n'; export function SloListEmpty() { return ( - {i18n.translate('xpack.observability.slos.list.emptyMessage', { + {i18n.translate('xpack.observability.slo.list.emptyMessage', { defaultMessage: 'There are no results for your criteria.', })} diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_list_error.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_list_error.tsx index 47ae04b13c9ab..8e9729ba07621 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_list_error.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_list_error.tsx @@ -16,14 +16,14 @@ export function SloListError() { color="danger" title={

- {i18n.translate('xpack.observability.slos.list.errorTitle', { + {i18n.translate('xpack.observability.slo.list.errorTitle', { defaultMessage: 'Unable to load SLOs', })}

} body={

- {i18n.translate('xpack.observability.slos.list.errorMessage', { + {i18n.translate('xpack.observability.slo.list.errorMessage', { defaultMessage: 'There was an error loading the SLOs. Contact your administrator for help.', })} diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_list_item.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_list_item.tsx index 282b82bf41b7e..df2b62e0d5848 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_list_item.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_list_item.tsx @@ -13,6 +13,7 @@ import { EuiContextMenuPanel, EuiFlexGroup, EuiFlexItem, + EuiLink, EuiPanel, EuiPopover, EuiText, @@ -62,6 +63,10 @@ export function SloListItem({ setIsActionsPopoverOpen(!isActionsPopoverOpen); }; + const handleViewDetails = () => { + navigateToUrl(basePath.prepend(paths.observability.sloDetails(slo.id))); + }; + const handleEdit = () => { navigateToUrl(basePath.prepend(paths.observability.sloEdit(slo.id))); }; @@ -102,7 +107,9 @@ export function SloListItem({ - {slo.name} + + {slo.name} + @@ -139,6 +146,16 @@ export function SloListItem({ + {i18n.translate('xpack.observability.slo.slo.item.actions.details', { + defaultMessage: 'Details', + })} + , - {i18n.translate('xpack.observability.slos.slo.item.actions.edit', { + {i18n.translate('xpack.observability.slo.slo.item.actions.edit', { defaultMessage: 'Edit', })} , @@ -157,7 +174,7 @@ export function SloListItem({ onClick={handleClone} data-test-subj="sloActionsClone" > - {i18n.translate('xpack.observability.slos.slo.item.actions.clone', { + {i18n.translate('xpack.observability.slo.slo.item.actions.clone', { defaultMessage: 'Clone', })} , @@ -168,7 +185,7 @@ export function SloListItem({ onClick={handleDelete} data-test-subj="sloActionsDelete" > - {i18n.translate('xpack.observability.slos.slo.item.actions.delete', { + {i18n.translate('xpack.observability.slo.slo.item.actions.delete', { defaultMessage: 'Delete', })} , diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_list_search_filter_sort_bar.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_list_search_filter_sort_bar.tsx index 0e7ccc31d54ee..ebc01f94a99c2 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_list_search_filter_sort_bar.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_list_search_filter_sort_bar.tsx @@ -41,14 +41,14 @@ export type Item = EuiSelectableOption & { const SORT_OPTIONS: Array> = [ { - label: i18n.translate('xpack.observability.slos.list.sortBy.name', { + label: i18n.translate('xpack.observability.slo.list.sortBy.name', { defaultMessage: 'Name', }), type: 'name', checked: 'on', }, { - label: i18n.translate('xpack.observability.slos.list.sortBy.indicatorType', { + label: i18n.translate('xpack.observability.slo.list.sortBy.indicatorType', { defaultMessage: 'Indicator type', }), type: 'indicatorType', @@ -57,19 +57,19 @@ const SORT_OPTIONS: Array> = [ const INDICATOR_TYPE_OPTIONS: Array> = [ { - label: i18n.translate('xpack.observability.slos.list.indicatorTypeFilter.apmLatency', { + label: i18n.translate('xpack.observability.slo.list.indicatorTypeFilter.apmLatency', { defaultMessage: 'APM latency', }), type: 'sli.apm.transactionDuration', }, { - label: i18n.translate('xpack.observability.slos.list.indicatorTypeFilter.apmAvailability', { + label: i18n.translate('xpack.observability.slo.list.indicatorTypeFilter.apmAvailability', { defaultMessage: 'APM availability', }), type: 'sli.apm.transactionErrorRate', }, { - label: i18n.translate('xpack.observability.slos.list.indicatorTypeFilter.customKql', { + label: i18n.translate('xpack.observability.slo.list.indicatorTypeFilter.customKql', { defaultMessage: 'Custom KQL', }), type: 'sli.kql.custom', @@ -121,7 +121,7 @@ export function SloListSearchFilterSortBar({ fullWidth isLoading={loading} onChange={onChangeQuery} - placeholder={i18n.translate('xpack.observability.slos.list.search', { + placeholder={i18n.translate('xpack.observability.slo.list.search', { defaultMessage: 'Search', })} /> @@ -137,7 +137,7 @@ export function SloListSearchFilterSortBar({ isSelected={isFilterPopoverOpen} numFilters={selectedIndicatorTypeFilter.length} > - {i18n.translate('xpack.observability.slos.list.indicatorTypeFilter', { + {i18n.translate('xpack.observability.slo.list.indicatorTypeFilter', { defaultMessage: 'Indicator type', })} @@ -149,7 +149,7 @@ export function SloListSearchFilterSortBar({ >

- {i18n.translate('xpack.observability.slos.list.indicatorTypeFilter', { + {i18n.translate('xpack.observability.slo.list.indicatorTypeFilter', { defaultMessage: 'Indicator type', })} @@ -173,7 +173,7 @@ export function SloListSearchFilterSortBar({ onClick={handleToggleSortButton} isSelected={isSortPopoverOpen} > - {i18n.translate('xpack.observability.slos.list.sortByType', { + {i18n.translate('xpack.observability.slo.list.sortByType', { defaultMessage: 'Sort by {type}', values: { type: selectedSort?.label.toLowerCase() || '' }, })} @@ -186,7 +186,7 @@ export function SloListSearchFilterSortBar({ >
- {i18n.translate('xpack.observability.slos.list.sortBy', { + {i18n.translate('xpack.observability.slo.list.sortBy', { defaultMessage: 'Sort by', })} diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_list_welcome_prompt.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_list_welcome_prompt.tsx index 5231edb3d945c..8ab49befd627c 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_list_welcome_prompt.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_list_welcome_prompt.tsx @@ -45,7 +45,7 @@ export function SloListWelcomePrompt() { title={

- {i18n.translate('xpack.observability.slos.sloList.welcomePrompt.title', { + {i18n.translate('xpack.observability.slo.sloList.welcomePrompt.title', { defaultMessage: 'Track and deliver on your SLOs', })}

@@ -58,14 +58,14 @@ export function SloListWelcomePrompt() { body={ <>

- {i18n.translate('xpack.observability.slos.sloList.welcomePrompt.messageParagraph1', { + {i18n.translate('xpack.observability.slo.sloList.welcomePrompt.messageParagraph1', { defaultMessage: 'Measure key metrics important to the business, such as service-level indicators and service-level objectives (SLIs/SLOs) to deliver on SLAs.', })}

- {i18n.translate('xpack.observability.slos.sloList.welcomePrompt.messageParagraph2', { + {i18n.translate('xpack.observability.slo.sloList.welcomePrompt.messageParagraph2', { defaultMessage: 'Easily report the uptime and reliability of your services to stakeholders with real-time insights.', })} @@ -81,7 +81,7 @@ export function SloListWelcomePrompt() { {i18n.translate( - 'xpack.observability.slos.sloList.welcomePrompt.getStartedMessage', + 'xpack.observability.slo.sloList.welcomePrompt.getStartedMessage', { defaultMessage: 'To get started, create your first SLO.', } @@ -93,12 +93,9 @@ export function SloListWelcomePrompt() { - {i18n.translate( - 'xpack.observability.slos.sloList.welcomePrompt.buttonLabel', - { - defaultMessage: 'Create SLO', - } - )} + {i18n.translate('xpack.observability.slo.sloList.welcomePrompt.buttonLabel', { + defaultMessage: 'Create SLO', + })} @@ -109,7 +106,7 @@ export function SloListWelcomePrompt() { {i18n.translate( - 'xpack.observability.slos.sloList.welcomePrompt.needLicenseMessage', + 'xpack.observability.slo.sloList.welcomePrompt.needLicenseMessage', { defaultMessage: 'You need an Elastic Cloud subscription or Platinum license to use SLOs.', @@ -129,7 +126,7 @@ export function SloListWelcomePrompt() { data-test-subj="slosPageWelcomePromptSignupForCloudButton" > {i18n.translate( - 'xpack.observability.slos.sloList.welcomePrompt.signupForCloud', + 'xpack.observability.slo.sloList.welcomePrompt.signupForCloud', { defaultMessage: 'Sign up for Elastic Cloud', } @@ -144,7 +141,7 @@ export function SloListWelcomePrompt() { data-test-subj="slosPageWelcomePromptSignupForLicenseButton" > {i18n.translate( - 'xpack.observability.slos.sloList.welcomePrompt.signupForLicense', + 'xpack.observability.slo.sloList.welcomePrompt.signupForLicense', { defaultMessage: 'Sign up for license', } @@ -161,14 +158,14 @@ export function SloListWelcomePrompt() { <> - {i18n.translate('xpack.observability.slos.sloList.welcomePrompt.learnMore', { + {i18n.translate('xpack.observability.slo.sloList.welcomePrompt.learnMore', { defaultMessage: 'Want to learn more?', })}   - {i18n.translate('xpack.observability.slos.sloList.welcomePrompt.learnMoreLink', { + {i18n.translate('xpack.observability.slo.sloList.welcomePrompt.learnMoreLink', { defaultMessage: 'Read the docs', })} diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_summary.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_summary.tsx index ed5935139e15f..943b7f9742c58 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_summary.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_summary.tsx @@ -9,6 +9,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiStat } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { HistoricalSummaryResponse, SLOWithSummaryResponse } from '@kbn/slo-schema'; +import { formatHistoricalData } from '../../../utils/slo/chart_data_formatter'; import { NOT_AVAILABLE_LABEL } from '../../../../common/i18n'; import { asPercentWithTwoDecimals } from '../../../../common/utils/formatters'; import { SloSparkline } from './slo_sparkline'; @@ -22,15 +23,8 @@ export interface Props { export function SloSummary({ slo, historicalSummary = [], historicalSummaryLoading }: Props) { const isSloFailed = slo.summary.status === 'VIOLATED' || slo.summary.status === 'DEGRADING'; const titleColor = isSloFailed ? 'danger' : ''; - - const historicalSliData = historicalSummary.map((data) => ({ - key: new Date(data.date).getTime(), - value: data.status === 'NO_DATA' ? undefined : data.sliValue, - })); - const errorBudgetBurnDownData = historicalSummary.map((data) => ({ - key: new Date(data.date).getTime(), - value: data.status === 'NO_DATA' ? undefined : data.errorBudget.remaining, - })); + const errorBudgetBurnDownData = formatHistoricalData(historicalSummary, 'error_budget_remaining'); + const historicalSliData = formatHistoricalData(historicalSummary, 'sli_value'); return ( @@ -38,7 +32,7 @@ export function SloSummary({ slo, historicalSummary = [], historicalSummaryLoadi - {i18n.translate('xpack.observability.slos.sloList.pageHeader.createNewButtonLabel', { + {i18n.translate('xpack.observability.slo.sloList.pageHeader.createNewButtonLabel', { defaultMessage: 'Create new SLO', })} , diff --git a/x-pack/plugins/observability/public/typings/slo/index.ts b/x-pack/plugins/observability/public/typings/slo/index.ts index 677ec38f84c53..180a92c6f77a2 100644 --- a/x-pack/plugins/observability/public/typings/slo/index.ts +++ b/x-pack/plugins/observability/public/typings/slo/index.ts @@ -22,4 +22,9 @@ interface BurnRateRuleParams extends RuleTypeParams { shortWindow: Duration; } -export type { BurnRateRuleParams, Duration, DurationUnit }; +interface ChartData { + key: number; + value: number | undefined; +} + +export type { BurnRateRuleParams, ChartData, Duration, DurationUnit }; diff --git a/x-pack/plugins/observability/public/utils/observability_data_views/observability_data_views.ts b/x-pack/plugins/observability/public/utils/observability_data_views/observability_data_views.ts index 00552c0adc6f1..0c9ad40784ec8 100644 --- a/x-pack/plugins/observability/public/utils/observability_data_views/observability_data_views.ts +++ b/x-pack/plugins/observability/public/utils/observability_data_views/observability_data_views.ts @@ -13,6 +13,7 @@ import type { DataViewSpec, } from '@kbn/data-views-plugin/public'; import { RuntimeField } from '@kbn/data-views-plugin/public'; +import { DataViewMissingIndices } from '@kbn/data-views-plugin/common'; import { DataTypesLabels } from '../../components/shared/exploratory_view/labels'; import { syntheticsRuntimeFields } from '../../components/shared/exploratory_view/configurations/synthetics/runtime_fields'; import { getApmDataViewTitle } from '../../components/shared/exploratory_view/utils/utils'; @@ -121,25 +122,33 @@ export class ObservabilityDataViews { const { runtimeFields } = getFieldFormatsForApp(app); - const dataView = await this.dataViews.create( - { - title: appIndicesPattern, - id: getAppDataViewId(app, indices), - timeFieldName: '@timestamp', - fieldFormats: this.getFieldFormats(app), - name: DataTypesLabels[app], - }, - false, - false - ); - - if (runtimeFields !== null) { - runtimeFields.forEach(({ name, field }) => { - dataView.addRuntimeField(name, field); - }); - } + const id = getAppDataViewId(app, indices); + + try { + const dataView = await this.dataViews.create( + { + id, + title: appIndicesPattern, + timeFieldName: '@timestamp', + fieldFormats: this.getFieldFormats(app), + name: DataTypesLabels[app], + }, + false, + false + ); - return dataView; + if (runtimeFields !== null) { + runtimeFields.forEach(({ name, field }) => { + dataView.addRuntimeField(name, field); + }); + } + + return dataView; + } catch (e) { + if (e instanceof DataViewMissingIndices) { + this.dataViews.clearInstanceCache(id); + } + } } async createAndSavedDataView(app: AppDataType, indices: string) { diff --git a/x-pack/plugins/observability/public/utils/slo/chart_data_formatter.ts b/x-pack/plugins/observability/public/utils/slo/chart_data_formatter.ts new file mode 100644 index 0000000000000..40625fbdee0cb --- /dev/null +++ b/x-pack/plugins/observability/public/utils/slo/chart_data_formatter.ts @@ -0,0 +1,37 @@ +/* + * 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 { FetchHistoricalSummaryResponse } from '@kbn/slo-schema'; + +import { ChartData } from '../../typings/slo'; + +type DataType = 'error_budget_remaining' | 'error_budget_consumed' | 'sli_value'; + +export function formatHistoricalData( + historicalSummary: FetchHistoricalSummaryResponse[string] | undefined, + dataType: DataType +): ChartData[] { + function getDataValue(data: FetchHistoricalSummaryResponse[string][number]) { + switch (dataType) { + case 'error_budget_consumed': + return data.errorBudget.consumed; + case 'error_budget_remaining': + return data.errorBudget.remaining; + default: + return data.sliValue; + } + } + + if (!historicalSummary) { + return []; + } + + return historicalSummary.map((data) => ({ + key: new Date(data.date).getTime(), + value: data.status === 'NO_DATA' ? undefined : getDataValue(data), + })); +} diff --git a/x-pack/plugins/observability/server/lib/rules/slo_burn_rate/register.ts b/x-pack/plugins/observability/server/lib/rules/slo_burn_rate/register.ts index 6a2351435e9aa..4f01d59f70174 100644 --- a/x-pack/plugins/observability/server/lib/rules/slo_burn_rate/register.ts +++ b/x-pack/plugins/observability/server/lib/rules/slo_burn_rate/register.ts @@ -38,7 +38,7 @@ export function sloBurnRateRuleType(createLifecycleRuleExecutor: CreateLifecycle defaultActionGroupId: FIRED_ACTION.id, actionGroups: [FIRED_ACTION], producer: 'slo', - minimumLicenseRequired: 'basic' as LicenseType, + minimumLicenseRequired: 'platinum' as LicenseType, isExportable: true, executor: createLifecycleRuleExecutor(getRuleExecutor()), doesSetRecoveryContext: true, diff --git a/x-pack/plugins/profiling/public/app.tsx b/x-pack/plugins/profiling/public/app.tsx index bf3a35d060f05..bf2f53aed0b0b 100644 --- a/x-pack/plugins/profiling/public/app.tsx +++ b/x-pack/plugins/profiling/public/app.tsx @@ -22,6 +22,7 @@ import { profilingRouter } from './routing'; import { Services } from './services'; import { ProfilingPluginPublicSetupDeps, ProfilingPluginPublicStartDeps } from './types'; import { ProfilingHeaderActionMenu } from './components/profiling_header_action_menu'; +import { RouterErrorBoundary } from './routing/router_error_boundary'; interface Props { profilingFetchServices: Services; @@ -82,21 +83,23 @@ function App({ - - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/x-pack/plugins/profiling/public/routing/router_error_boundary.tsx b/x-pack/plugins/profiling/public/routing/router_error_boundary.tsx new file mode 100644 index 0000000000000..355ee1bd42f79 --- /dev/null +++ b/x-pack/plugins/profiling/public/routing/router_error_boundary.tsx @@ -0,0 +1,71 @@ +/* + * 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 { NotFoundRouteException } from '@kbn/typed-react-router-config'; +import { EuiErrorBoundary } from '@elastic/eui'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import React from 'react'; +import { NotFoundPrompt } from '@kbn/shared-ux-prompt-not-found'; +import { useLocation } from 'react-router-dom'; +import { i18n } from '@kbn/i18n'; +import { ProfilingPluginPublicStartDeps } from '../types'; + +export function RouterErrorBoundary({ children }: { children?: React.ReactNode }) { + const location = useLocation(); + return {children}; +} + +class ErrorBoundary extends React.Component<{ children?: React.ReactNode }, { error?: Error }, {}> { + public state: { error?: Error } = { + error: undefined, + }; + + static getDerivedStateFromError(error: Error) { + return { error }; + } + + render() { + if (this.state.error) { + return ; + } + + return this.props.children; + } +} + +const pageHeader = { + pageTitle: i18n.translate('xpack.profiling.universalProfiling', { + defaultMessage: 'Universal Profiling', + }), +}; + +function ErrorWithTemplate({ error }: { error: Error }) { + const { services } = useKibana(); + const { observability } = services; + + const ObservabilityPageTemplate = observability.navigation.PageTemplate; + + if (error instanceof NotFoundRouteException) { + return ( + + + + ); + } + + return ( + + + + + + ); +} + +function DummyComponent({ error }: { error: Error }) { + throw error; + return

; +} diff --git a/x-pack/plugins/profiling/tsconfig.json b/x-pack/plugins/profiling/tsconfig.json index b1044792b3209..6364139982415 100644 --- a/x-pack/plugins/profiling/tsconfig.json +++ b/x-pack/plugins/profiling/tsconfig.json @@ -40,6 +40,7 @@ "@kbn/core-http-request-handler-context-server", "@kbn/spaces-plugin", "@kbn/cloud-plugin", + "@kbn/shared-ux-prompt-not-found", // add references to other TypeScript projects the plugin depends on // requiredPlugins from ./kibana.json diff --git a/x-pack/plugins/security_solution/public/common/components/grouping/translations.ts b/x-pack/plugins/security_solution/public/common/components/grouping/translations.ts deleted file mode 100644 index a9cd9a7d233dc..0000000000000 --- a/x-pack/plugins/security_solution/public/common/components/grouping/translations.ts +++ /dev/null @@ -1,59 +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'; - -export const GROUPS_UNIT = (totalCount: number) => - i18n.translate('xpack.securitySolution.grouping.total.unit', { - values: { totalCount }, - defaultMessage: `{totalCount, plural, =1 {group} other {groups}}`, - }); - -export const TAKE_ACTION = i18n.translate( - 'xpack.securitySolution.grouping.additionalActions.takeAction', - { - defaultMessage: 'Take actions', - } -); - -export const BETA = i18n.translate('xpack.securitySolution.grouping.betaLabel', { - defaultMessage: 'Beta', -}); - -export const BETA_TOOL_TIP = i18n.translate('xpack.securitySolution.grouping.betaToolTip', { - defaultMessage: - 'Grouping may show only a subset of alerts while in beta. To see all alerts, use the list view by selecting "None"', -}); - -export const GROUP_BY = i18n.translate('xpack.securitySolution.selector.grouping.label', { - defaultMessage: 'Group alerts by', -}); - -export const GROUP_BY_CUSTOM_FIELD = i18n.translate( - 'xpack.securitySolution.groupsSelector.customGroupByPanelTitle', - { - defaultMessage: 'Group By Custom Field', - } -); - -export const SELECT_FIELD = i18n.translate( - 'xpack.securitySolution.groupsSelector.groupByPanelTitle', - { - defaultMessage: 'Select Field', - } -); - -export const NONE = i18n.translate('xpack.securitySolution.groupsSelector.noneGroupByOptionName', { - defaultMessage: 'None', -}); - -export const CUSTOM_FIELD = i18n.translate( - 'xpack.securitySolution.groupsSelector.customGroupByOptionName', - { - defaultMessage: 'Custom field', - } -); diff --git a/x-pack/plugins/security_solution/public/common/components/import_data_modal/utils.test.ts b/x-pack/plugins/security_solution/public/common/components/import_data_modal/utils.test.ts index 6b432edfb5bd1..376c7fbf66d39 100644 --- a/x-pack/plugins/security_solution/public/common/components/import_data_modal/utils.test.ts +++ b/x-pack/plugins/security_solution/public/common/components/import_data_modal/utils.test.ts @@ -306,7 +306,102 @@ describe('showToasterMessage', () => { expect(addSuccess).toHaveBeenNthCalledWith(2, 'Successfully imported 1 connector.'); expect(addError).not.toHaveBeenCalled(); }); + it('should display 1 error message has 2 invalid connectors in the title even when error array has one message but "id" field', () => { + const addError = jest.fn(); + const addSuccess = jest.fn(); + showToasterMessage({ + importResponse: { + success: false, + success_count: 1, + rules_count: 2, + action_connectors_success: false, + errors: [ + { + rule_id: 'rule_id', + error: { + status_code: 400, + message: 'an error message', + }, + }, + ], + action_connectors_errors: [ + { + rule_id: 'rule_id', + id: 'connector1,connector2', + error: { + status_code: 400, + message: 'an error message', + }, + }, + ], + exceptions_success: true, + exceptions_success_count: 0, + }, + exceptionsIncluded: false, + actionConnectorsIncluded: true, + successMessage: (msg) => `success: ${msg}`, + errorMessage: (msg) => `error: ${msg}`, + errorMessageDetailed: (msg) => `errorDetailed: ${msg}`, + addError, + addSuccess, + }); + + expect(addError).toHaveBeenCalledTimes(1); + + expect(addError).toHaveBeenCalledWith(new Error('errorDetailed: an error message'), { + title: 'Failed to import 2 connectors', + }); + expect(addSuccess).not.toHaveBeenCalled(); + }); + it('should display 1 error message has 1 invalid connectors in the title even when error array has one message but "id" field', () => { + const addError = jest.fn(); + const addSuccess = jest.fn(); + + showToasterMessage({ + importResponse: { + success: false, + success_count: 1, + rules_count: 2, + action_connectors_success: false, + errors: [ + { + rule_id: 'rule_id', + error: { + status_code: 400, + message: 'an error message', + }, + }, + ], + action_connectors_errors: [ + { + rule_id: 'rule_id', + id: 'connector1', + error: { + status_code: 400, + message: 'an error message', + }, + }, + ], + exceptions_success: true, + exceptions_success_count: 0, + }, + exceptionsIncluded: false, + actionConnectorsIncluded: true, + successMessage: (msg) => `success: ${msg}`, + errorMessage: (msg) => `error: ${msg}`, + errorMessageDetailed: (msg) => `errorDetailed: ${msg}`, + addError, + addSuccess, + }); + + expect(addError).toHaveBeenCalledTimes(1); + + expect(addError).toHaveBeenCalledWith(new Error('errorDetailed: an error message'), { + title: 'Failed to import 1 connector', + }); + expect(addSuccess).not.toHaveBeenCalled(); + }); it('should display 1 error message for rules and connectors even when both fail', () => { const addError = jest.fn(); const addSuccess = jest.fn(); diff --git a/x-pack/plugins/security_solution/public/common/components/import_data_modal/utils.ts b/x-pack/plugins/security_solution/public/common/components/import_data_modal/utils.ts index 92c6f9f666e4b..4ab30388168df 100644 --- a/x-pack/plugins/security_solution/public/common/components/import_data_modal/utils.ts +++ b/x-pack/plugins/security_solution/public/common/components/import_data_modal/utils.ts @@ -33,8 +33,14 @@ export const formatError = ( const mapErrorMessageToUserMessage = ( actionConnectorsErrors: Array ) => { - return actionConnectorsErrors.map((connectorError) => { - const { error } = connectorError; + let concatenatedActionIds: string = ''; + const mappedErrors = actionConnectorsErrors.map((connectorError) => { + // Using "as ImportResponseError" because the "id" field belongs only to + // "ImportResponseError" and if the connectorError has the id we use it to get the + // number of failing connectors by spliting the unique the connectors ids. + const { id, error } = connectorError as ImportResponseError; + concatenatedActionIds = + concatenatedActionIds && concatenatedActionIds !== id ? `${concatenatedActionIds},${id}` : id; const { status_code: statusCode, message: originalMessage } = error || {}; let message; switch (statusCode) { @@ -47,9 +53,12 @@ const mapErrorMessageToUserMessage = ( break; } - return { ...connectorError, error: { ...error, message } }; }); + const actionIds: Set = new Set( + concatenatedActionIds && [...concatenatedActionIds.split(',')] + ); + return { mappedErrors, numberOfActions: actionIds.size }; }; export const showToasterMessage = ({ @@ -100,13 +109,13 @@ export const showToasterMessage = ({ importResponse.action_connectors_errors != null && importResponse.action_connectors_errors.length > 0 ) { - const userErrorMessages = mapErrorMessageToUserMessage( + const { mappedErrors: userErrorMessages, numberOfActions } = mapErrorMessageToUserMessage( importResponse.action_connectors_errors ); const connectorError = formatError(errorMessageDetailed, importResponse, userErrorMessages); return addError(connectorError, { - title: i18n.IMPORT_CONNECTORS_FAILED(userErrorMessages.length), + title: i18n.IMPORT_CONNECTORS_FAILED(numberOfActions || userErrorMessages.length), }); } const ruleError = formatError(errorMessageDetailed, importResponse, importResponse.errors); diff --git a/x-pack/plugins/security_solution/public/common/containers/grouping/hooks/use_get_group_selector.tsx b/x-pack/plugins/security_solution/public/common/containers/grouping/hooks/use_get_group_selector.tsx index 0e29b3edba7ab..2eae8e9e0b49b 100644 --- a/x-pack/plugins/security_solution/public/common/containers/grouping/hooks/use_get_group_selector.tsx +++ b/x-pack/plugins/security_solution/public/common/containers/grouping/hooks/use_get_group_selector.tsx @@ -6,16 +6,15 @@ */ import type { FieldSpec } from '@kbn/data-views-plugin/common'; -import React, { useCallback, useEffect, useMemo } from 'react'; +import { useCallback, useEffect } from 'react'; import { useDispatch, useSelector } from 'react-redux'; -import { GROUP_BY } from '../../../components/grouping/translations'; +import { getGroupSelector, isNoneGroup } from '@kbn/securitysolution-grouping'; import type { TableId } from '../../../../../common/types'; import { getDefaultGroupingOptions } from '../../../../detections/components/alerts_table/grouping_settings'; import type { State } from '../../../store'; import { defaultGroup } from '../../../store/grouping/defaults'; import type { GroupOption } from '../../../store/grouping'; import { groupActions, groupSelectors } from '../../../store/grouping'; -import { GroupsSelector, isNoneGroup } from '../../../components/grouping'; export interface UseGetGroupSelectorArgs { fields: FieldSpec[]; @@ -23,11 +22,7 @@ export interface UseGetGroupSelectorArgs { tableId: TableId; } -export const useGetGroupingSelector = ({ - fields, - groupingId, - tableId, -}: UseGetGroupSelectorArgs) => { +export const useGetGroupSelector = ({ fields, groupingId, tableId }: UseGetGroupSelectorArgs) => { const dispatch = useDispatch(); const getGroupByIdSelector = groupSelectors.getGroupByIdSelector(); @@ -76,45 +71,31 @@ export const useGetGroupingSelector = ({ ); }, [defaultGroupingOptions, selectedGroup, setOptions, options]); - const groupsSelector = useMemo( - () => ( - { - if (groupSelection === selectedGroup) { - return; - } - setGroupsActivePage(0); - setSelectedGroup(groupSelection); + const groupsSelector = getGroupSelector({ + groupSelected: selectedGroup, + 'data-test-subj': 'alerts-table-group-selector', + onGroupChange: (groupSelection: string) => { + if (groupSelection === selectedGroup) { + return; + } + setGroupsActivePage(0); + setSelectedGroup(groupSelection); - if (!isNoneGroup(groupSelection) && !options.find((o) => o.key === groupSelection)) { - setOptions([ - ...defaultGroupingOptions, - { - label: groupSelection, - key: groupSelection, - }, - ]); - } else { - setOptions(defaultGroupingOptions); - } - }} - fields={fields} - options={options} - title={GROUP_BY} - /> - ), - [ - defaultGroupingOptions, - fields, - options, - selectedGroup, - setGroupsActivePage, - setOptions, - setSelectedGroup, - ] - ); + if (!isNoneGroup(groupSelection) && !options.find((o) => o.key === groupSelection)) { + setOptions([ + ...defaultGroupingOptions, + { + label: groupSelection, + key: groupSelection, + }, + ]); + } else { + setOptions(defaultGroupingOptions); + } + }, + fields, + options, + }); return groupsSelector; }; diff --git a/x-pack/plugins/security_solution/public/common/containers/grouping/hooks/use_grouping_pagination.ts b/x-pack/plugins/security_solution/public/common/containers/grouping/hooks/use_grouping_pagination.ts index c55246e39d509..75dc20b3ec916 100644 --- a/x-pack/plugins/security_solution/public/common/containers/grouping/hooks/use_grouping_pagination.ts +++ b/x-pack/plugins/security_solution/public/common/containers/grouping/hooks/use_grouping_pagination.ts @@ -7,6 +7,7 @@ import { useDispatch, useSelector } from 'react-redux'; import { useCallback, useMemo } from 'react'; +import { tableDefaults } from '../../../store/data_table/defaults'; import { groupActions, groupSelectors } from '../../../store/grouping'; import type { State } from '../../../store'; import { defaultGroup } from '../../../store/grouping/defaults'; @@ -45,6 +46,7 @@ export const useGroupingPagination = ({ groupingId }: UseGroupingPaginationArgs) pageSize: itemsPerPage, onChangeItemsPerPage: setGroupsItemsPerPage, onChangePage: setGroupsActivePage, + itemsPerPageOptions: tableDefaults.itemsPerPageOptions, }), [activePage, itemsPerPage, setGroupsActivePage, setGroupsItemsPerPage] ); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/index.tsx index 5a71b73d719ff..ca0c1fb9e868d 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/index.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/index.tsx @@ -34,7 +34,7 @@ import { isTab } from '@kbn/timelines-plugin/public'; import type { DataViewListItem } from '@kbn/data-views-plugin/common'; import { AlertsTableComponent } from '../../../../detections/components/alerts_table'; -import { GroupedAlertsTable } from '../../../../detections/components/alerts_table/grouped_alerts'; +import { GroupedAlertsTable } from '../../../../detections/components/alerts_table/alerts_grouping'; import { useDataTableFilters } from '../../../../common/hooks/use_data_table_filters'; import { FILTER_OPEN, TableId } from '../../../../../common/types'; import { isMlRule } from '../../../../../common/machine_learning/helpers'; @@ -840,17 +840,19 @@ const RuleDetailsPageComponent: React.FC = ({ {ruleId != null && ( )} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx index fae192a479de4..41e0c8717a1fa 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/add_exception_flyout/index.tsx @@ -535,12 +535,16 @@ export const AddExceptionFlyout = memo(function AddExceptionFlyout({ newCommentValue={newComment} newCommentOnChange={setComment} /> - - + {listType !== ExceptionListTypeEnum.ENDPOINT && ( + <> + + + + )} {showAlertCloseOptions && ( <> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/index.tsx index adcbd7ac36b5f..c0cbe1ac5caf4 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/index.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/index.tsx @@ -229,7 +229,7 @@ const ExceptionsViewerComponent = ({ ); const exceptionListFilter = useMemo(() => { - if (exceptionsToShow.active && exceptionsToShow.expired) { + if (isEndpointSpecified || (exceptionsToShow.active && exceptionsToShow.expired)) { return undefined; } const savedObjectPrefixes = getSavedObjectTypes({ @@ -241,7 +241,7 @@ const ExceptionsViewerComponent = ({ if (exceptionsToShow.expired) { return buildShowExpiredExceptionsFilter(savedObjectPrefixes); } - }, [exceptionsToShow, namespaceTypes]); + }, [exceptionsToShow, namespaceTypes, isEndpointSpecified]); const handleFetchItems = useCallback( async (options?: GetExceptionItemProps) => { @@ -516,6 +516,7 @@ const ExceptionsViewerComponent = ({ exceptionsToShow={exceptionsToShow} onChangeExceptionsToShow={handleExceptionsToShow} lastUpdated={lastUpdated} + isEndpoint={isEndpointSpecified} /> { exceptionsToShow={{ active: true }} onChangeExceptionsToShow={(optionId: string) => {}} lastUpdated={1660534202} + isEndpoint={false} /> ); @@ -47,6 +48,7 @@ describe('ExceptionsViewerUtility', () => { exceptionsToShow={{ active: true }} onChangeExceptionsToShow={(optionId: string) => {}} lastUpdated={Date.now()} + isEndpoint={false} /> ); diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/utility_bar.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/utility_bar.tsx index d7ea7acfd5f31..f1b909b050f87 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/utility_bar.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/all_exception_items_table/utility_bar.tsx @@ -42,6 +42,7 @@ interface ExceptionsViewerUtilityProps { lastUpdated: string | number; exceptionsToShow: { [id: string]: boolean }; onChangeExceptionsToShow: (optionId: string) => void; + isEndpoint: boolean; } /** @@ -52,6 +53,7 @@ const ExceptionsViewerUtilityComponent: React.FC = lastUpdated, exceptionsToShow, onChangeExceptionsToShow, + isEndpoint, }): JSX.Element => { return ( @@ -88,22 +90,24 @@ const ExceptionsViewerUtilityComponent: React.FC = /> - + {!isEndpoint && ( + + )} diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.tsx index 04a350e328a26..1dd03d8bc9f9d 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/edit_exception_flyout/index.tsx @@ -400,12 +400,16 @@ const EditExceptionFlyoutComponent: React.FC = ({ newCommentValue={newComment} newCommentOnChange={setComment} /> - - + {listType !== ExceptionListTypeEnum.ENDPOINT && ( + <> + + + + )} {showAlertCloseOptions && ( <> diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/utils.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/utils.tsx index e70844348c385..4d1570ba3b491 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/utils.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/components/flyout_components/utils.tsx @@ -66,11 +66,8 @@ export const enrichItemWithName = */ export const enrichItemWithExpireTime = (expireTimeToAdd: Moment | undefined) => - (items: ExceptionsBuilderReturnExceptionItem[]): ExceptionsBuilderReturnExceptionItem[] => { - return expireTimeToAdd != null - ? enrichNewExceptionItemsWithExpireTime(items, expireTimeToAdd) - : items; - }; + (items: ExceptionsBuilderReturnExceptionItem[]): ExceptionsBuilderReturnExceptionItem[] => + enrichNewExceptionItemsWithExpireTime(items, expireTimeToAdd); /** * Modifies item entries to be in correct format and adds os selection to items diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/helpers.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/helpers.tsx index aaaffb0e70d2c..87d2e437baeed 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/helpers.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_exceptions/utils/helpers.tsx @@ -186,12 +186,13 @@ export const enrichNewExceptionItemsWithComments = ( */ export const enrichNewExceptionItemsWithExpireTime = ( exceptionItems: ExceptionsBuilderReturnExceptionItem[], - expireTime: Moment + expireTime: Moment | undefined ): ExceptionsBuilderReturnExceptionItem[] => { + const expireTimeDateString = expireTime !== undefined ? expireTime.toISOString() : undefined; return exceptionItems.map((item: ExceptionsBuilderReturnExceptionItem) => { return { ...item, - expire_time: expireTime.toISOString(), + expire_time: expireTimeDateString, }; }); }; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts index 1eadf14b02b8c..0f93d66efbf6f 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/logic/types.ts @@ -124,7 +124,6 @@ const MetaRule = t.intersection([ }), ]); -// TODO: make a ticket export const RuleSchema = t.intersection([ t.type({ author: RuleAuthorArray, diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouped_alerts.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx similarity index 70% rename from x-pack/plugins/security_solution/public/detections/components/alerts_table/grouped_alerts.tsx rename to x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx index 6c5f68d546f97..fe895b93feecb 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouped_alerts.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/alerts_grouping.tsx @@ -8,32 +8,30 @@ import { isEmpty } from 'lodash/fp'; import React, { useCallback, useEffect, useMemo } from 'react'; import type { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/types'; -import type { ConnectedProps } from 'react-redux'; -import { connect, useDispatch, useSelector } from 'react-redux'; +import { useDispatch, useSelector } from 'react-redux'; import { v4 as uuidv4 } from 'uuid'; -import type { Filter } from '@kbn/es-query'; +import type { Filter, Query } from '@kbn/es-query'; import { buildEsQuery } from '@kbn/es-query'; import { getEsQueryConfig } from '@kbn/data-plugin/common'; -import { useGetGroupingSelector } from '../../../common/containers/grouping/hooks/use_get_group_selector'; +import type { + GroupingFieldTotalAggregation, + GroupingAggregation, + RawBucket, +} from '@kbn/securitysolution-grouping'; +import { getGrouping, isNoneGroup } from '@kbn/securitysolution-grouping'; +import { useGetGroupSelector } from '../../../common/containers/grouping/hooks/use_get_group_selector'; import type { Status } from '../../../../common/detection_engine/schemas/common'; import { defaultGroup } from '../../../common/store/grouping/defaults'; import { groupSelectors } from '../../../common/store/grouping'; import { InspectButton } from '../../../common/components/inspect'; import { defaultUnit } from '../../../common/components/toolbar/unit'; -import type { - GroupingFieldTotalAggregation, - GroupingTableAggregation, - RawBucket, -} from '../../../common/components/grouping'; -import { GroupingContainer, isNoneGroup } from '../../../common/components/grouping'; import { useGlobalTime } from '../../../common/containers/use_global_time'; import { combineQueries } from '../../../common/lib/kuery'; import type { TableIdLiteral } from '../../../../common/types'; import { useSourcererDataView } from '../../../common/containers/sourcerer'; import { useInvalidFilterQuery } from '../../../common/hooks/use_invalid_filter_query'; import { useKibana } from '../../../common/lib/kibana'; -import type { inputsModel, State } from '../../../common/store'; -import { inputsSelectors } from '../../../common/store'; +import type { State } from '../../../common/store'; import { SourcererScopeName } from '../../../common/store/sourcerer/model'; import { useInspectButton } from '../alerts_kpis/common/hooks'; @@ -51,26 +49,25 @@ import { import { initGrouping } from '../../../common/store/grouping/actions'; import { useGroupingPagination } from '../../../common/containers/grouping/hooks/use_grouping_pagination'; -/** This local storage key stores the `Grid / Event rendered view` selection */ -export const ALERTS_TABLE_GROUPS_SELECTION_KEY = 'securitySolution.alerts.table.group-selection'; - const ALERTS_GROUPING_ID = 'alerts-grouping'; interface OwnProps { + currentAlertStatusFilterValue?: Status; defaultFilters?: Filter[]; from: string; + globalFilters: Filter[]; + globalQuery: Query; hasIndexMaintenance: boolean; hasIndexWrite: boolean; loading: boolean; - tableId: TableIdLiteral; - to: string; + renderChildComponent: (groupingFilters: Filter[]) => React.ReactElement; runtimeMappings: MappingRuntimeFields; signalIndexName: string | null; - currentAlertStatusFilterValue?: Status; - renderChildComponent: (groupingFilters: Filter[]) => React.ReactElement; + tableId: TableIdLiteral; + to: string; } -export type AlertsTableComponentProps = OwnProps & PropsFromRedux; +export type AlertsTableComponentProps = OwnProps; export const GroupedAlertsTableComponent: React.FC = ({ defaultFilters = [], @@ -95,20 +92,18 @@ export const GroupedAlertsTableComponent: React.FC = const { activeGroup: selectedGroup } = useSelector((state: State) => getGroupByIdSelector(state, groupingId)) ?? defaultGroup; - const { - browserFields, - indexPattern: indexPatterns, - selectedPatterns, - } = useSourcererDataView(SourcererScopeName.detections); + const { browserFields, indexPattern, selectedPatterns } = useSourcererDataView( + SourcererScopeName.detections + ); const kibana = useKibana(); const getGlobalQuery = useCallback( (customFilters: Filter[]) => { - if (browserFields != null && indexPatterns != null) { + if (browserFields != null && indexPattern != null) { return combineQueries({ config: getEsQueryConfig(kibana.services.uiSettings), dataProviders: [], - indexPattern: indexPatterns, + indexPattern, browserFields, filters: [ ...(defaultFilters ?? []), @@ -122,7 +117,7 @@ export const GroupedAlertsTableComponent: React.FC = } return null; }, - [browserFields, defaultFilters, globalFilters, globalQuery, indexPatterns, kibana, to, from] + [browserFields, defaultFilters, globalFilters, globalQuery, indexPattern, kibana, to, from] ); useInvalidFilterQuery({ @@ -188,7 +183,7 @@ export const GroupedAlertsTableComponent: React.FC = request, response, setQuery: setAlertsQuery, - } = useQueryAlerts<{}, GroupingTableAggregation & GroupingFieldTotalAggregation>({ + } = useQueryAlerts<{}, GroupingAggregation & GroupingFieldTotalAggregation>({ query: queryGroups, indexName: signalIndexName, queryName: ALERTS_QUERY_NAMES.ALERTS_GROUPING, @@ -218,14 +213,14 @@ export const GroupedAlertsTableComponent: React.FC = [uniqueQueryId] ); - const groupsSelector = useGetGroupingSelector({ + const groupsSelector = useGetGroupSelector({ tableId, groupingId, - fields: indexPatterns.fields, + fields: indexPattern.fields, }); const takeActionItems = useGroupTakeActionsItems({ - indexName: indexPatterns.title, + indexName: indexPattern.title, currentStatus: currentAlertStatusFilterValue, showAlertStatusActions: hasIndexWrite && hasIndexMaintenance, }); @@ -238,30 +233,25 @@ export const GroupedAlertsTableComponent: React.FC = const groupedAlerts = useMemo( () => - isNoneGroup(selectedGroup) ? ( - renderChildComponent([]) - ) : ( - - getSelectedGroupBadgeMetrics(selectedGroup, fieldBucket) - } - customMetricStats={(fieldBucket: RawBucket) => - getSelectedGroupCustomMetrics(selectedGroup, fieldBucket) - } - data={alertsGroupsData?.aggregations ?? {}} - groupPanelRenderer={(fieldBucket: RawBucket) => - getSelectedGroupButtonContent(selectedGroup, fieldBucket) - } - groupsSelector={groupsSelector} - inspectButton={inspect} - isLoading={loading || isLoadingGroups} - pagination={pagination} - renderChildComponent={renderChildComponent} - selectedGroup={selectedGroup} - takeActionItems={getTakeActionItems} - unit={defaultUnit} - /> - ), + isNoneGroup(selectedGroup) + ? renderChildComponent([]) + : getGrouping({ + badgeMetricStats: (fieldBucket: RawBucket) => + getSelectedGroupBadgeMetrics(selectedGroup, fieldBucket), + customMetricStats: (fieldBucket: RawBucket) => + getSelectedGroupCustomMetrics(selectedGroup, fieldBucket), + data: alertsGroupsData?.aggregations, + groupPanelRenderer: (fieldBucket: RawBucket) => + getSelectedGroupButtonContent(selectedGroup, fieldBucket), + groupsSelector, + inspectButton: inspect, + isLoading: loading || isLoadingGroups, + pagination, + renderChildComponent, + selectedGroup, + takeActionItems: getTakeActionItems, + unit: defaultUnit, + }), [ alertsGroupsData?.aggregations, getTakeActionItems, @@ -282,21 +272,4 @@ export const GroupedAlertsTableComponent: React.FC = return groupedAlerts; }; -const makeMapStateToProps = () => { - const getGlobalInputs = inputsSelectors.globalSelector(); - const mapStateToProps = (state: State) => { - const globalInputs: inputsModel.InputsRange = getGlobalInputs(state); - const { query, filters } = globalInputs; - return { - globalQuery: query, - globalFilters: filters, - }; - }; - return mapStateToProps; -}; - -const connector = connect(makeMapStateToProps); - -type PropsFromRedux = ConnectedProps; - -export const GroupedAlertsTable = connector(React.memo(GroupedAlertsTableComponent)); +export const GroupedAlertsTable = React.memo(GroupedAlertsTableComponent); diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_panel_renderers.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_panel_renderers.tsx index ce400a4373b39..c75c7585a6860 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_panel_renderers.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_panel_renderers.tsx @@ -18,9 +18,9 @@ import { import { euiThemeVars } from '@kbn/ui-theme'; import { isArray } from 'lodash/fp'; import React from 'react'; +import type { RawBucket } from '@kbn/securitysolution-grouping'; import { firstNonNullValue } from '../../../../../common/endpoint/models/ecs_safety_helpers'; import type { GenericBuckets } from '../../../../../common/search_strategy'; -import type { RawBucket } from '../../../../common/components/grouping'; import { PopoverItems } from '../../../../common/components/popover_items'; import { COLUMN_TAGS } from '../../../pages/detection_engine/rules/translations'; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_stats.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_stats.tsx index 51cbfc5d51553..d7f4d5d384560 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_stats.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/group_stats.tsx @@ -7,11 +7,7 @@ import { EuiIcon } from '@elastic/eui'; import React from 'react'; -import type { - BadgeMetric, - CustomMetric, -} from '../../../../common/components/grouping/accordion_panel'; -import type { RawBucket } from '../../../../common/components/grouping'; +import type { RawBucket } from '@kbn/securitysolution-grouping'; import * as i18n from '../translations'; const getSingleGroupSeverity = (severity?: string) => { @@ -67,10 +63,7 @@ const multiSeverity = ( ); -export const getSelectedGroupBadgeMetrics = ( - selectedGroup: string, - bucket: RawBucket -): BadgeMetric[] => { +export const getSelectedGroupBadgeMetrics = (selectedGroup: string, bucket: RawBucket) => { const defaultBadges = [ { title: i18n.STATS_GROUP_ALERTS, @@ -138,10 +131,7 @@ export const getSelectedGroupBadgeMetrics = ( ]; }; -export const getSelectedGroupCustomMetrics = ( - selectedGroup: string, - bucket: RawBucket -): CustomMetric[] => { +export const getSelectedGroupCustomMetrics = (selectedGroup: string, bucket: RawBucket) => { const singleSeverityComponent = bucket.severitiesSubAggregation?.buckets && bucket.severitiesSubAggregation?.buckets?.length ? getSingleGroupSeverity(bucket.severitiesSubAggregation?.buckets[0].key.toString()) diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/query_builder.test.ts b/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/query_builder.test.ts index 33f31d914e5a5..dbb1b15b8236f 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/query_builder.test.ts +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/query_builder.test.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { MAX_QUERY_SIZE } from '../../../../common/components/grouping'; import { getAlertsGroupingQuery } from '.'; describe('getAlertsGroupingQuery', () => { @@ -95,7 +94,7 @@ describe('getAlertsGroupingQuery', () => { }, }, multi_terms: { - size: MAX_QUERY_SIZE, + size: 10000, terms: [ { field: 'kibana.alert.rule.name', diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/query_builder.ts b/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/query_builder.ts index ed20de72adab2..96e4dd047769d 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/query_builder.ts +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/grouping_settings/query_builder.ts @@ -7,8 +7,8 @@ import type { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/types'; import type { BoolQuery } from '@kbn/es-query'; -import type { NamedAggregation } from '../../../../common/components/grouping'; -import { getGroupingQuery } from '../../../../common/components/grouping'; +import type { NamedAggregation } from '@kbn/securitysolution-grouping'; +import { getGroupingQuery } from '@kbn/securitysolution-grouping'; const getGroupFields = (groupValue: string) => { if (groupValue === 'kibana.alert.rule.name') { diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_table/index.test.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_table/index.test.tsx index 8cb24295f62a4..0074f539b715e 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_table/index.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_table/index.test.tsx @@ -18,8 +18,8 @@ import { SUB_PLUGINS_REDUCER, TestProviders, } from '../../../common/mock'; -import type { AlertsTableComponentProps } from './grouped_alerts'; -import { GroupedAlertsTableComponent } from './grouped_alerts'; +import type { AlertsTableComponentProps } from './alerts_grouping'; +import { GroupedAlertsTableComponent } from './alerts_grouping'; import { TableId } from '../../../../common/types'; import { useSourcererDataView } from '../../../common/containers/sourcerer'; import type { UseFieldBrowserOptionsProps } from '../../../timelines/components/fields_browser'; @@ -181,7 +181,6 @@ const renderChildComponent = (groupingFilters: Filter[]) =>

diff --git a/x-pack/plugins/security_solution/public/exceptions/components/manage_rules/index.tsx b/x-pack/plugins/security_solution/public/exceptions/components/manage_rules/index.tsx index 20a4fd280beec..4a82c748da97e 100644 --- a/x-pack/plugins/security_solution/public/exceptions/components/manage_rules/index.tsx +++ b/x-pack/plugins/security_solution/public/exceptions/components/manage_rules/index.tsx @@ -55,7 +55,7 @@ export const ManageRules: FC = memo( > -

{i18n.MANAGE_RULES_HEADER}

+

{i18n.LINK_RULES_HEADER}

diff --git a/x-pack/plugins/security_solution/public/exceptions/hooks/use_exceptions_list.card/index.tsx b/x-pack/plugins/security_solution/public/exceptions/hooks/use_exceptions_list.card/index.tsx index d0ccd384156c7..27ce5f3604c2f 100644 --- a/x-pack/plugins/security_solution/public/exceptions/hooks/use_exceptions_list.card/index.tsx +++ b/x-pack/plugins/security_solution/public/exceptions/hooks/use_exceptions_list.card/index.tsx @@ -125,7 +125,19 @@ export const useExceptionsListCard = ({ key: 'Export', icon: 'exportAction', label: i18n.EXPORT_EXCEPTION_LIST, - onClick: (e: React.MouseEvent) => setShowExportModal(true), + onClick: (e: React.MouseEvent) => { + if (listType === ExceptionListTypeEnum.ENDPOINT) { + handleExport({ + id: exceptionsList.id, + listId: exceptionsList.list_id, + name: exceptionsList.name, + namespaceType: exceptionsList.namespace_type, + includeExpiredExceptions: true, + })(); + } else { + setShowExportModal(true); + } + }, }, { key: 'Delete', @@ -141,10 +153,10 @@ export const useExceptionsListCard = ({ }, }, { - key: 'ManageRules', + key: 'LinkRules', icon: 'gear', disabled: listCannotBeEdited, - label: 'Manage Rules', + label: i18n.LINK_RULES_OVERFLOW_BUTTON_TITLE, onClick: (e: React.MouseEvent) => { handleManageRules(); }, @@ -153,11 +165,14 @@ export const useExceptionsListCard = ({ [ exceptionsList.id, exceptionsList.list_id, + exceptionsList.name, exceptionsList.namespace_type, handleDelete, setShowExportModal, listCannotBeEdited, handleManageRules, + handleExport, + listType, ] ); diff --git a/x-pack/plugins/security_solution/public/exceptions/pages/list_detail_view/index.tsx b/x-pack/plugins/security_solution/public/exceptions/pages/list_detail_view/index.tsx index fc09a603b2e13..d4e2c8f4f0977 100644 --- a/x-pack/plugins/security_solution/public/exceptions/pages/list_detail_view/index.tsx +++ b/x-pack/plugins/security_solution/public/exceptions/pages/list_detail_view/index.tsx @@ -14,6 +14,7 @@ import { } from '@kbn/securitysolution-exception-list-components'; import { EuiLoadingContent } from '@elastic/eui'; import { useParams } from 'react-router-dom'; +import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types'; import { SecurityPageName } from '../../../../common/constants'; import { SpyRoute } from '../../../common/utils/route/spy_routes'; import { ReferenceErrorModal } from '../../../detections/components/value_lists_management_flyout/reference_error_modal'; @@ -67,6 +68,14 @@ export const ListsDetailViewComponent: FC = () => { const onModalOpen = useCallback(() => setShowExportModal(true), [setShowExportModal]); + const handleExportList = useCallback(() => { + if (list?.type === ExceptionListTypeEnum.ENDPOINT) { + onExportList(true); + } else { + onModalOpen(); + } + }, [onModalOpen, list, onExportList]); + const detailsViewContent = useMemo(() => { if (viewerStatus === ViewerStatus.ERROR) return ; @@ -87,7 +96,7 @@ export const ListsDetailViewComponent: FC = () => { backOptions={headerBackOptions} securityLinkAnchorComponent={ListDetailsLinkAnchor} onEditListDetails={onEditListDetails} - onExportList={onModalOpen} + onExportList={handleExportList} onDeleteList={handleDelete} onManageRules={onManageRules} /> @@ -155,7 +164,7 @@ export const ListsDetailViewComponent: FC = () => { handleDelete, handleReferenceDelete, onModalClose, - onModalOpen, + handleExportList, ]); return ( <> diff --git a/x-pack/plugins/security_solution/public/exceptions/translations/list_details_view.ts b/x-pack/plugins/security_solution/public/exceptions/translations/list_details_view.ts index d37c5e29b9fc2..6d1f8c115fab3 100644 --- a/x-pack/plugins/security_solution/public/exceptions/translations/list_details_view.ts +++ b/x-pack/plugins/security_solution/public/exceptions/translations/list_details_view.ts @@ -112,10 +112,17 @@ export const MANAGE_RULES_SAVE = i18n.translate( defaultMessage: 'Save', } ); -export const MANAGE_RULES_HEADER = i18n.translate( - 'xpack.securitySolution.exceptions.list.manage_rules_header', +export const LINK_RULES_HEADER = i18n.translate( + 'xpack.securitySolution.exceptions.list.link_rules_header', { - defaultMessage: 'Manage rules', + defaultMessage: 'Link rules', + } +); + +export const LINK_RULES_OVERFLOW_BUTTON_TITLE = i18n.translate( + 'xpack.securitySolution.exceptions.list.link_rules_overflow_button_title', + { + defaultMessage: 'Link rules', } ); diff --git a/x-pack/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.test.tsx b/x-pack/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.test.tsx index 41eb4c3be7912..174496f1f3d21 100644 --- a/x-pack/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.test.tsx +++ b/x-pack/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.test.tsx @@ -13,6 +13,10 @@ import { fireEvent, act } from '@testing-library/react'; import { EndpointDocGenerator } from '../../../../common/endpoint/generate_data'; import type { AppContextTestRender } from '../../../common/mock/endpoint'; import { createAppRootMockRenderer } from '../../../common/mock/endpoint'; +import { useUserPrivileges } from '../../../common/components/user_privileges'; +import { initialUserPrivilegesState } from '../../../common/components/user_privileges/user_privileges_context'; + +jest.mock('../../../common/components/user_privileges'); describe('when using EffectedPolicySelect component', () => { const generator = new EndpointDocGenerator('effected-policy-select'); @@ -161,5 +165,44 @@ describe('when using EffectedPolicySelect component', () => { selectPerPolicy(); expect(queryByTestId('loading-spinner')).not.toBeNull(); }); + + it('should hide policy link when no policy management privileges', () => { + (useUserPrivileges as jest.Mock).mockReturnValue({ + ...initialUserPrivilegesState(), + endpointPrivileges: { + loading: false, + canWritePolicyManagement: false, + canReadPolicyManagement: false, + }, + }); + const { queryByTestId } = render({ isGlobal: false }); + expect(queryByTestId('test-policyLink')).toBeNull(); + }); + + it('should show policy link when all policy management privileges', () => { + (useUserPrivileges as jest.Mock).mockReturnValue({ + ...initialUserPrivilegesState(), + endpointPrivileges: { + loading: false, + canWritePolicyManagement: true, + canReadPolicyManagement: true, + }, + }); + const { getByTestId } = render({ isGlobal: false }); + expect(getByTestId('test-policyLink')); + }); + + it('should show policy link when read policy management privileges', () => { + (useUserPrivileges as jest.Mock).mockReturnValue({ + ...initialUserPrivilegesState(), + endpointPrivileges: { + loading: false, + canWritePolicyManagement: false, + canReadPolicyManagement: true, + }, + }); + const { getByTestId } = render({ isGlobal: false }); + expect(getByTestId('test-policyLink')); + }); }); }); diff --git a/x-pack/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.tsx b/x-pack/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.tsx index da5c1c1f68535..079ea01492dcc 100644 --- a/x-pack/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.tsx +++ b/x-pack/plugins/security_solution/public/management/components/effected_policy_select/effected_policy_select.tsx @@ -22,6 +22,7 @@ import { i18n } from '@kbn/i18n'; import type { EuiSelectableOption } from '@elastic/eui/src/components/selectable/selectable_option'; import { FormattedMessage } from '@kbn/i18n-react'; import styled from 'styled-components'; +import { useUserPrivileges } from '../../../common/components/user_privileges'; import type { PolicyData } from '../../../../common/endpoint/types'; import { LinkToApp } from '../../../common/components/endpoint/link_to_app'; import { getPolicyDetailPath } from '../../common/routing'; @@ -104,6 +105,7 @@ export const EffectedPolicySelect = memo( ...otherSelectableProps }) => { const { getAppUrl } = useAppUrl(); + const { canReadPolicyManagement } = useUserPrivileges().endpointPrivileges; const getTestId = useTestIdGenerator(dataTestSubj); @@ -145,25 +147,35 @@ export const EffectedPolicySelect = memo( data-test-subj={`policy-${policy.id}-checkbox`} /> ), - append: ( + append: canReadPolicyManagement ? ( - ), + ) : null, policy, checked: isPolicySelected.has(policy.id) ? 'on' : undefined, disabled: isGlobal || !isPlatinumPlus || disabled, 'data-test-subj': `policy-${policy.id}`, })) .sort(({ label: labelA }, { label: labelB }) => labelA.localeCompare(labelB)); - }, [disabled, getAppUrl, isGlobal, isPlatinumPlus, options, selected]); + }, [ + canReadPolicyManagement, + disabled, + getAppUrl, + getTestId, + isGlobal, + isPlatinumPlus, + options, + selected, + ]); const handleOnPolicySelectChange = useCallback< Required>['onChange'] diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts index 7d822733b4da5..a200afdd34199 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/routes/utils.ts @@ -21,7 +21,9 @@ export interface OutputError { statusCode: number; } export interface BulkError { + // Id can be single id or stringified ids. id?: string; + // rule_id can be single rule_id or stringified rules ids. rule_id?: string; error: { status_code: number; diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/import_rule_action_connectors.test.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/import_rule_action_connectors.test.ts index 2f81d1284eb53..54574c85f7036 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/import_rule_action_connectors.test.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/import_rule_action_connectors.test.ts @@ -174,6 +174,7 @@ describe('importRuleActionConnectors', () => { '1 connector is missing. Connector id missing is: cabc78e0-9031-11ed-b076-53cc4d57aaf1', status_code: 404, }, + id: 'cabc78e0-9031-11ed-b076-53cc4d57aaf1', rule_id: 'rule-1', }, ], @@ -220,6 +221,7 @@ describe('importRuleActionConnectors', () => { status_code: 404, }, rule_id: 'rule-1', + id: 'cabc78e0-9031-11ed-b076-53cc4d57aaf1,cabc78e0-9031-11ed-b076-53cc4d57aaf2', }, ], warnings: [], @@ -270,6 +272,7 @@ describe('importRuleActionConnectors', () => { status_code: 404, }, rule_id: 'rule-1,rule-2', + id: 'cabc78e0-9031-11ed-b076-53cc4d57aaf1,cabc78e0-9031-11ed-b076-53cc4d57aaf2', }, ], warnings: [], diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/utils/index.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/utils/index.ts index caea8ad664f01..4ab122f6da94e 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/utils/index.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/import/action_connectors/utils/index.ts @@ -43,6 +43,7 @@ export const handleActionsHaveNoConnectors = ( : 'connector is missing. Connector id missing is:'; errors.push( createBulkErrorObject({ + id: actionsIds.join(), statusCode: 404, message: `${actionsIds.length} ${errorMessage} ${actionsIds.join(', ')}`, ruleId: ruleIds, diff --git a/x-pack/plugins/security_solution/tsconfig.json b/x-pack/plugins/security_solution/tsconfig.json index 1cc1a355d3537..c5654f37517fb 100644 --- a/x-pack/plugins/security_solution/tsconfig.json +++ b/x-pack/plugins/security_solution/tsconfig.json @@ -144,5 +144,6 @@ "@kbn/shared-ux-router", "@kbn/alerts-as-data-utils", "@kbn/expandable-flyout", + "@kbn/securitysolution-grouping", ] } diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_status.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_status.tsx index 2842581994d83..48ef68df3455f 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_status.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/overview_status.tsx @@ -48,7 +48,7 @@ export function OverviewStatus() { up: status?.up || 0, down: 0, disabledCount: 0, - pending: status?.pending, + pending: 0, }); break; case 'down': { @@ -56,7 +56,7 @@ export function OverviewStatus() { up: 0, down: status?.down || 0, disabledCount: 0, - pending: status?.pending, + pending: 0, }); break; } @@ -65,7 +65,7 @@ export function OverviewStatus() { up: 0, down: 0, disabledCount: status?.disabledCount || 0, - pending: status?.pending, + pending: 0, }); break; } diff --git a/x-pack/plugins/synthetics/server/queries/query_monitor_status.ts b/x-pack/plugins/synthetics/server/queries/query_monitor_status.ts index 058d28d046c8a..a737e80e08069 100644 --- a/x-pack/plugins/synthetics/server/queries/query_monitor_status.ts +++ b/x-pack/plugins/synthetics/server/queries/query_monitor_status.ts @@ -53,7 +53,6 @@ export async function queryMonitorStatus( const pageCount = Math.ceil(monitorQueryIds.length / idSize); let up = 0; let down = 0; - let pending = 0; const upConfigs: Record = {}; const downConfigs: Record = {}; const monitorsWithoutData = new Map(Object.entries(cloneDeep(monitorLocationsMap))); @@ -135,8 +134,6 @@ export async function queryMonitorStatus( 'getCurrentStatusOverview' + i ); - pending += idsToQuery.length - (result.aggregations?.id.buckets.length ?? 0); - result.aggregations?.id.buckets.forEach(({ location, key: queryId }) => { const locationSummaries = location.buckets.map(({ status, key: locationName }) => { const ping = status.hits.hits[0]._source; @@ -188,8 +185,6 @@ export async function queryMonitorStatus( if (!monitorsWithoutData.get(monitorQueryId)?.length) { monitorsWithoutData.delete(monitorQueryId); } - } else { - pending += 1; } }); }); @@ -212,7 +207,7 @@ export async function queryMonitorStatus( return { up, down, - pending, + pending: Object.values(pendingConfigs).length, upConfigs, downConfigs, pendingConfigs, diff --git a/x-pack/plugins/synthetics/server/routes/overview_status/overview_status.test.ts b/x-pack/plugins/synthetics/server/routes/overview_status/overview_status.test.ts index 4679d555f6504..635b964c922ab 100644 --- a/x-pack/plugins/synthetics/server/routes/overview_status/overview_status.test.ts +++ b/x-pack/plugins/synthetics/server/routes/overview_status/overview_status.test.ts @@ -4,11 +4,21 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - +import { SavedObjectsFindResult } from '@kbn/core-saved-objects-api-server'; +import { savedObjectsClientMock } from '@kbn/core-saved-objects-api-server-mocks'; import { getUptimeESMockClient } from '../../legacy_uptime/lib/requests/test_helpers'; import { periodToMs } from './overview_status'; import { queryMonitorStatus } from '../../queries/query_monitor_status'; +import { RouteContext } from '../../legacy_uptime/routes'; +import { getStatus } from './overview_status'; import times from 'lodash/times'; +import * as monitorsFns from '../../saved_objects/synthetics_monitor/get_all_monitors'; +import { EncryptedSyntheticsMonitor } from '../../../common/runtime_types'; + +jest.mock('../../saved_objects/synthetics_monitor/get_all_monitors', () => ({ + ...jest.requireActual('../../saved_objects/synthetics_monitor/get_all_monitors'), + getAllMonitors: jest.fn(), +})); jest.mock('../common', () => ({ getMonitors: jest.fn().mockReturnValue({ @@ -34,6 +44,7 @@ jest.mock('../common', () => ({ }, ], }), + getMonitorFilters: () => '', })); jest.mock('../../legacy_uptime/lib/requests/get_snapshot_counts', () => ({ @@ -61,7 +72,7 @@ describe('current status route', () => { }); }); - describe('getStats', () => { + describe('queryMonitorStatus', () => { it('parses expected agg fields', async () => { const { esClient, uptimeEsClient } = getUptimeESMockClient(); esClient.search.mockResponseOnce( @@ -514,7 +525,7 @@ describe('current status route', () => { } ) ).toEqual({ - pending: 2, + pending: 4, down: 1, enabledMonitorQueryIds: ['id1', 'id2', 'project-monitor-id', 'id4'], up: 2, @@ -575,6 +586,239 @@ describe('current status route', () => { }); }); }); + + describe('getStatus', () => { + it.each([ + [['US Central QA'], 1], + [['North America - US Central'], 1], + [['North America - US Central', 'US Central QA'], 2], + [undefined, 2], + ])('handles disabled count when using location filters', async (locations, disabledCount) => { + jest.spyOn(monitorsFns, 'getAllMonitors').mockResolvedValue([ + { + type: 'synthetics-monitor', + id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', + attributes: { + enabled: false, + schedule: { + number: '3', + unit: 'm', + }, + config_id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', + locations: [ + { + color: 'default', + isServiceManaged: true, + label: 'US Central QA', + id: 'us_central_qa', + }, + { + isServiceManaged: true, + label: 'North America - US Central', + id: 'us_central', + }, + ], + origin: 'project', + id: 'a-test2-default', + }, + references: [], + migrationVersion: { + 'synthetics-monitor': '8.6.0', + }, + coreMigrationVersion: '8.0.0', + updated_at: '2023-02-28T14:31:37.641Z', + created_at: '2023-02-28T14:31:37.641Z', + version: 'Wzg0MzkzLDVd', + namespaces: ['default'], + score: null, + sort: ['a', 3013], + } as unknown as SavedObjectsFindResult, + ]); + const { esClient, uptimeEsClient } = getUptimeESMockClient(); + esClient.search.mockResponseOnce( + getEsResponse([ + { + key: 'id1', + location: { + buckets: [ + { + key: 'Asia/Pacific - Japan', + status: { + hits: { + hits: [ + { + _source: { + '@timestamp': '2022-09-15T16:08:16.724Z', + monitor: { + status: 'up', + id: 'id1', + }, + summary: { + up: 1, + down: 0, + }, + config_id: 'id1', + observer: { + geo: { + name: 'Asia/Pacific - Japan', + }, + }, + }, + }, + ], + }, + }, + }, + ], + }, + }, + { + key: 'id2', + location: { + buckets: [ + { + key: 'Asia/Pacific - Japan', + status: { + hits: { + hits: [ + { + _source: { + '@timestamp': '2022-09-15T16:09:16.724Z', + monitor: { + status: 'up', + id: 'id2', + }, + summary: { + up: 1, + down: 0, + }, + config_id: 'id2', + observer: { + geo: { + name: 'Asia/Pacific - Japan', + }, + }, + }, + }, + ], + }, + }, + }, + { + key: 'Europe - Germany', + status: { + hits: { + hits: [ + { + _source: { + '@timestamp': '2022-09-15T16:19:16.724Z', + monitor: { + status: 'down', + id: 'id2', + }, + summary: { + down: 1, + up: 0, + }, + config_id: 'id2', + observer: { + geo: { + name: 'Europe - Germany', + }, + }, + }, + }, + ], + }, + }, + }, + ], + }, + }, + ]) + ); + expect( + await getStatus( + { + uptimeEsClient, + savedObjectsClient: savedObjectsClientMock.create(), + } as unknown as RouteContext, + { + locations, + } + ) + ).toEqual( + expect.objectContaining({ + disabledCount, + }) + ); + }); + + it.each([ + [['US Central QA'], 1], + [['North America - US Central'], 1], + [['North America - US Central', 'US Central QA'], 2], + [undefined, 2], + ])('handles pending count when using location filters', async (locations, pending) => { + jest.spyOn(monitorsFns, 'getAllMonitors').mockResolvedValue([ + { + type: 'synthetics-monitor', + id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', + attributes: { + enabled: true, + schedule: { + number: '3', + unit: 'm', + }, + config_id: 'a9a94f2f-47ba-4fe2-afaa-e5cd29b281f1', + locations: [ + { + color: 'default', + isServiceManaged: true, + label: 'US Central QA', + id: 'us_central_qa', + }, + { + isServiceManaged: true, + label: 'North America - US Central', + id: 'us_central', + }, + ], + origin: 'project', + id: 'a-test2-default', + }, + references: [], + migrationVersion: { + 'synthetics-monitor': '8.6.0', + }, + coreMigrationVersion: '8.0.0', + updated_at: '2023-02-28T14:31:37.641Z', + created_at: '2023-02-28T14:31:37.641Z', + version: 'Wzg0MzkzLDVd', + namespaces: ['default'], + score: null, + sort: ['a', 3013], + } as unknown as SavedObjectsFindResult, + ]); + const { esClient, uptimeEsClient } = getUptimeESMockClient(); + esClient.search.mockResponseOnce(getEsResponse([])); + expect( + await getStatus( + { + uptimeEsClient, + savedObjectsClient: savedObjectsClientMock.create(), + } as unknown as RouteContext, + { + locations, + } + ) + ).toEqual( + expect.objectContaining({ + pending, + }) + ); + }); + }); }); function getEsResponse(buckets: any[]) { diff --git a/x-pack/plugins/synthetics/server/routes/overview_status/overview_status.ts b/x-pack/plugins/synthetics/server/routes/overview_status/overview_status.ts index 750727d85f7ce..11ae9ff793e21 100644 --- a/x-pack/plugins/synthetics/server/routes/overview_status/overview_status.ts +++ b/x-pack/plugins/synthetics/server/routes/overview_status/overview_status.ts @@ -76,7 +76,13 @@ export async function getStatus(context: RouteContext, params: OverviewStatusQue disabledMonitorsCount, projectMonitorsCount, monitorQueryIdToConfigIdMap, - } = await processMonitors(allMonitors, server, savedObjectsClient, syntheticsMonitorClient); + } = await processMonitors( + allMonitors, + server, + savedObjectsClient, + syntheticsMonitorClient, + queryLocations + ); // Account for locations filter const queryLocationsArray = diff --git a/x-pack/plugins/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.ts b/x-pack/plugins/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.ts index d134705093937..e0f404ebef875 100644 --- a/x-pack/plugins/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.ts +++ b/x-pack/plugins/synthetics/server/saved_objects/synthetics_monitor/get_all_monitors.ts @@ -11,6 +11,7 @@ import { SavedObjectsFindResult, } from '@kbn/core-saved-objects-api-server'; import pMap from 'p-map'; +import { intersection } from 'lodash'; import { periodToMs } from '../../routes/overview_status/overview_status'; import { UptimeServerSetup } from '../../legacy_uptime/lib/adapters'; import { getAllLocations } from '../../synthetics_service/get_all_locations'; @@ -64,7 +65,8 @@ export const processMonitors = async ( allMonitors: Array>, server: UptimeServerSetup, soClient: SavedObjectsClientContract, - syntheticsMonitorClient: SyntheticsMonitorClient + syntheticsMonitorClient: SyntheticsMonitorClient, + queryLocations?: string[] | string ) => { /** * Walk through all monitor saved objects, bucket IDs by disabled/enabled status. @@ -72,7 +74,6 @@ export const processMonitors = async ( * Track max period to make sure the snapshot query should reach back far enough to catch * latest ping for all enabled monitors. */ - const enabledMonitorQueryIds: string[] = []; let disabledCount = 0; let disabledMonitorsCount = 0; @@ -109,7 +110,13 @@ export const processMonitors = async ( monitorQueryIdToConfigIdMap[attrs[ConfigKey.MONITOR_QUERY_ID]] = attrs[ConfigKey.CONFIG_ID]; if (attrs[ConfigKey.ENABLED] === false) { - disabledCount += attrs[ConfigKey.LOCATIONS].length; + const monitorLocations = attrs[ConfigKey.LOCATIONS].map((location) => location.label); + const queriedLocations = Array.isArray(queryLocations) ? queryLocations : [queryLocations]; + const intersectingLocations = intersection( + monitorLocations, + queryLocations ? queriedLocations : monitorLocations + ); + disabledCount += intersectingLocations.length; disabledMonitorsCount += 1; } else { const missingLabels = new Set(); @@ -133,7 +140,10 @@ export const processMonitors = async ( getLocationLabel(locationId) ); - monitorLocationMap[attrs[ConfigKey.MONITOR_QUERY_ID]] = [...monLocs, ...locLabels]; + const monitorLocations = [...monLocs, ...locLabels]; + monitorLocationMap[attrs[ConfigKey.MONITOR_QUERY_ID]] = queryLocations + ? intersection(monitorLocations, queryLocations) + : monitorLocations; listOfLocationsSet = new Set([...listOfLocationsSet, ...monLocs, ...locLabels]); maxPeriod = Math.max(maxPeriod, periodToMs(attrs[ConfigKey.SCHEDULE])); diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 82a2c51216e42..aed7fe5ae463b 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -2477,7 +2477,6 @@ "exceptionList-components.exception_list_header_edit_modal_save_button": "Enregistrer", "exceptionList-components.exception_list_header_export_action": "Exporter la liste d'exceptions", "exceptionList-components.exception_list_header_list_id": "ID de liste", - "exceptionList-components.exception_list_header_manage_rules_button": "Gérer les règles", "exceptionList-components.exception_list_header_name": "Ajouter un nom", "exceptionList-components.exception_list_header_Name_textbox": "Nom", "exceptionList-components.exceptions.exceptionItem.card.conditions.and": "AND", @@ -3880,7 +3879,6 @@ "indexPatternEditor.typeSelect.standardDescription": "Effectuer des agrégations complètes à partir de n'importe quelles données", "indexPatternEditor.typeSelect.standardTitle": "Vue de données standard", "indexPatternEditor.validations.noSingleAstriskPattern": "Un seul astérisque \"*\" n’est pas un modèle d'indexation autorisé", - "indexPatternEditor.validations.titleHelpText": "Entrez un modèle d'indexation qui correspond à une ou plusieurs sources de données. Utilisez un astérisque (*) pour faire correspondre plusieurs caractères. Les espaces et les caractères , /, ?, \", <, >, | ne sont pas autorisés.", "indexPatternEditor.validations.titleIsRequiredErrorMessage": "Un modèle d'indexation est requis.", "indexPatternFieldEditor.date.momentLabel": "Modèle de format Moment.js (par défaut : {defaultPattern})", "indexPatternFieldEditor.defaultErrorMessage": "Une erreur s'est produite lors de l'utilisation de cette configuration de format : {message}.", @@ -29580,7 +29578,6 @@ "xpack.securitySolution.exceptions.list.exceptionItemsFetchErrorDescription": "Une erreur s'est produite lors du chargement des éléments d'exception. Contactez votre administrateur pour obtenir de l'aide.", "xpack.securitySolution.exceptions.list.manage_rules_cancel": "Annuler", "xpack.securitySolution.exceptions.list.manage_rules_description": "Associez des règles à cette liste d'exceptions ou dissociez des règles de cette liste.", - "xpack.securitySolution.exceptions.list.manage_rules_header": "Gérer les règles", "xpack.securitySolution.exceptions.list.manage_rules_save": "Enregistrer", "xpack.securitySolution.exceptions.list.utility.title": "exceptions de règle", "xpack.securitySolution.exceptions.manageExceptions.createItemButton": "Créer un élément d'exception", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 9f1cb387004e9..efdd751897a6e 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -2475,7 +2475,6 @@ "exceptionList-components.exception_list_header_edit_modal_save_button": "保存", "exceptionList-components.exception_list_header_export_action": "例外リストのエクスポート", "exceptionList-components.exception_list_header_list_id": "リスト ID", - "exceptionList-components.exception_list_header_manage_rules_button": "ルールの管理", "exceptionList-components.exception_list_header_name": "名前を追加", "exceptionList-components.exception_list_header_Name_textbox": "名前", "exceptionList-components.exceptions.exceptionItem.card.conditions.and": "AND", @@ -3877,7 +3876,6 @@ "indexPatternEditor.typeSelect.standardDescription": "すべてのデータに完全アグリゲーションを実行", "indexPatternEditor.typeSelect.standardTitle": "標準データビュー", "indexPatternEditor.validations.noSingleAstriskPattern": "単一の「*」は許可されたパターンではありません", - "indexPatternEditor.validations.titleHelpText": "1つ以上のデータソースと一致するインデックスパターンを入力します。複数の文字の一致にアスタリスク(*)を使用します。ペースと / ? , \" < > | 文字は使用できません。", "indexPatternEditor.validations.titleIsRequiredErrorMessage": "インデックスパターンが必要です。", "indexPatternFieldEditor.date.momentLabel": "Moment.jsのフォーマットパターン(デフォルト:{defaultPattern})", "indexPatternFieldEditor.defaultErrorMessage": "このフォーマット構成の使用を試みた際にエラーが発生しました:{message}", @@ -29549,7 +29547,6 @@ "xpack.securitySolution.exceptions.list.exceptionItemsFetchErrorDescription": "例外アイテムの読み込みエラーが発生しました。ヘルプについては、管理者にお問い合わせください。", "xpack.securitySolution.exceptions.list.manage_rules_cancel": "キャンセル", "xpack.securitySolution.exceptions.list.manage_rules_description": "ルールをこの例外リストに関連付けたり、関連付けを解除したりします。", - "xpack.securitySolution.exceptions.list.manage_rules_header": "ルールの管理", "xpack.securitySolution.exceptions.list.manage_rules_save": "保存", "xpack.securitySolution.exceptions.list.utility.title": "ルール例外", "xpack.securitySolution.exceptions.manageExceptions.createItemButton": "例外アイテムの作成", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index cc3498186a34a..8213052dd50de 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -2479,7 +2479,6 @@ "exceptionList-components.exception_list_header_edit_modal_save_button": "保存", "exceptionList-components.exception_list_header_export_action": "导出例外列表", "exceptionList-components.exception_list_header_list_id": "列表 ID", - "exceptionList-components.exception_list_header_manage_rules_button": "管理规则", "exceptionList-components.exception_list_header_name": "添加名称", "exceptionList-components.exception_list_header_Name_textbox": "名称", "exceptionList-components.exceptions.exceptionItem.card.conditions.and": "且", @@ -3882,7 +3881,6 @@ "indexPatternEditor.typeSelect.standardDescription": "对任何数据执行完全聚合", "indexPatternEditor.typeSelect.standardTitle": "标准数据视图", "indexPatternEditor.validations.noSingleAstriskPattern": "不允许以单个“*”作为索引模式", - "indexPatternEditor.validations.titleHelpText": "输入与一个或多个数据源匹配的索引模式。使用星号 (*) 匹配多个字符。不允许使用空格和字符 /、?、\"、<、>、|。", "indexPatternEditor.validations.titleIsRequiredErrorMessage": "“索引模式”必填。", "indexPatternFieldEditor.date.momentLabel": "Moment.js 格式模式(默认值:{defaultPattern})", "indexPatternFieldEditor.defaultErrorMessage": "尝试使用此格式配置时发生错误:{message}", @@ -29583,7 +29581,6 @@ "xpack.securitySolution.exceptions.list.exceptionItemsFetchErrorDescription": "加载例外项时出现错误。请联系您的管理员寻求帮助。", "xpack.securitySolution.exceptions.list.manage_rules_cancel": "取消", "xpack.securitySolution.exceptions.list.manage_rules_description": "将规则链接到此例外列表或取消链接。", - "xpack.securitySolution.exceptions.list.manage_rules_header": "管理规则", "xpack.securitySolution.exceptions.list.manage_rules_save": "保存", "xpack.securitySolution.exceptions.list.utility.title": "规则例外", "xpack.securitySolution.exceptions.manageExceptions.createItemButton": "创建例外项", diff --git a/x-pack/plugins/triggers_actions_ui/public/common/expression_items/group_by_over.tsx b/x-pack/plugins/triggers_actions_ui/public/common/expression_items/group_by_over.tsx index e20fdd1c1a0b7..0819f7541d1cc 100644 --- a/x-pack/plugins/triggers_actions_ui/public/common/expression_items/group_by_over.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/common/expression_items/group_by_over.tsx @@ -185,6 +185,7 @@ export const GroupByExpression = ({ 0} error={errors.termSize}> { describe('optional kuery param', () => { before(async () => { - const go = apm - .service({ name: 'synthbeans-go', environment: 'test', agentName: 'go' }) - .instance('synthbeans-go'); - const java = apm - .service({ name: 'synthbeans-java', environment: 'test', agentName: 'java' }) - .instance('synthbeans-java'); - const node = apm - .service({ name: 'synthbeans-node', environment: 'test', agentName: 'nodejs' }) - .instance('synthbeans-node'); - const events = timerange(start, end) .interval('15m') .rate(1) - .generator((timestamp) => { - return [ - generateTrace(timestamp, [go, java]), - generateTrace(timestamp, [java, go], 'redis'), - generateTrace(timestamp, [node], 'redis'), - generateTrace(timestamp, [node, java, go], 'elasticsearch').defaults({ - 'labels.name': 'node-java-go-es', - }), - generateTrace(timestamp, [go, node, java]), - ]; - }); + .generator( + serviceMap({ + services: [ + { 'synthbeans-go': 'go' }, + { 'synthbeans-java': 'java' }, + { 'synthbeans-node': 'nodejs' }, + ], + definePaths([go, java, node]) { + return [ + [go, java], + [java, go, 'redis'], + [node, 'redis'], + { + path: [node, java, go, 'elasticsearch'], + transaction: (t) => t.defaults({ 'labels.name': 'node-java-go-es' }), + }, + [go, node, java], + ]; + }, + }) + ); await synthtraceEsClient.index(events); }); diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/import_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/import_rules.ts index 123e7bdbed2e5..a15b6d799adea 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/import_rules.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group10/import_rules.ts @@ -866,6 +866,7 @@ export default ({ getService }: FtrProviderContext): void => { errors: [ { rule_id: 'rule-1', + id: '123', error: { status_code: 404, message: '1 connector is missing. Connector id missing is: 123', @@ -881,6 +882,7 @@ export default ({ getService }: FtrProviderContext): void => { action_connectors_errors: [ { rule_id: 'rule-1', + id: '123', error: { status_code: 404, message: '1 connector is missing. Connector id missing is: 123', @@ -1153,6 +1155,7 @@ export default ({ getService }: FtrProviderContext): void => { errors: [ { rule_id: 'rule-2', + id: 'cabc78e0-9031-11ed-b076-53cc4d57aa22', error: { status_code: 404, message: @@ -1173,6 +1176,7 @@ export default ({ getService }: FtrProviderContext): void => { '1 connector is missing. Connector id missing is: cabc78e0-9031-11ed-b076-53cc4d57aa22', }, rule_id: 'rule-2', + id: 'cabc78e0-9031-11ed-b076-53cc4d57aa22', }, ], action_connectors_warnings: [], diff --git a/x-pack/test/functional/apps/lens/group2/dashboard.ts b/x-pack/test/functional/apps/lens/group2/dashboard.ts index caa2dd3ca1785..6e4255808df8c 100644 --- a/x-pack/test/functional/apps/lens/group2/dashboard.ts +++ b/x-pack/test/functional/apps/lens/group2/dashboard.ts @@ -28,6 +28,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const security = getService('security'); const panelActions = getService('dashboardPanelActions'); const inspector = getService('inspector'); + const queryBar = getService('queryBar'); async function clickInChart(x: number, y: number) { const el = await elasticChart.getCanvas(); @@ -294,5 +295,28 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.lens.removeDimension('lnsXY_xDimensionPanel'); await PageObjects.lens.expectSaveAndReturnButtonDisabled(); }); + + it('should recover lens panel in an error state when fixing search query', async () => { + await PageObjects.common.navigateToApp('dashboard'); + await PageObjects.dashboard.clickNewDashboard(); + await dashboardAddPanel.clickOpenAddPanel(); + await dashboardAddPanel.filterEmbeddableNames('lnsXYvis'); + await find.clickByButtonText('lnsXYvis'); + await dashboardAddPanel.closeAddPanel(); + await PageObjects.lens.goToTimeRange(); + // type an invalid search query, hit refresh + await queryBar.setQuery('this is > not valid'); + await queryBar.submitQuery(); + // check the error state + await PageObjects.header.waitUntilLoadingHasFinished(); + const errors = await testSubjects.findAll('embeddableStackError'); + expect(errors.length).to.be(1); + // now remove the query + await queryBar.setQuery(''); + await queryBar.submitQuery(); + await PageObjects.header.waitUntilLoadingHasFinished(); + // check the success state + await PageObjects.dashboard.verifyNoRenderErrors(); + }); }); } diff --git a/x-pack/test/functional/services/rules/api.ts b/x-pack/test/functional/services/rules/api.ts index e4952adb1e473..0fdb40cc918a3 100644 --- a/x-pack/test/functional/services/rules/api.ts +++ b/x-pack/test/functional/services/rules/api.ts @@ -60,7 +60,7 @@ export function RulesAPIServiceProvider({ getService }: FtrProviderContext) { .set('kbn-xsrf', 'foo') .expect(200); - for (const rule of body) { + for (const rule of body.data) { await this.deleteRule(rule.id); } }, diff --git a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/index.ts b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/index.ts index 85e118756c4b7..32f0e2ea49f92 100644 --- a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/index.ts +++ b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/index.ts @@ -10,6 +10,7 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ loadTestFile, getService }: FtrProviderContext) { const browser = getService('browser'); const actions = getService('actions'); + const rules = getService('rules'); describe('stack alerting', function () { before(async () => { @@ -23,10 +24,12 @@ export default function ({ loadTestFile, getService }: FtrProviderContext) { }); after(async () => { + await rules.api.deleteAllRules(); await actions.api.deleteAllConnectors(); }); loadTestFile(require.resolve('./list_view')); loadTestFile(require.resolve('./connector_types')); + loadTestFile(require.resolve('./index_threshold_rule')); }); } diff --git a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/index_threshold_rule.ts b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/index_threshold_rule.ts new file mode 100644 index 0000000000000..ec27e67f0874e --- /dev/null +++ b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_alerting/index_threshold_rule.ts @@ -0,0 +1,141 @@ +/* + * 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 function ({ getService, getPageObjects }: FtrProviderContext) { + const comboBox = getService('comboBox'); + const commonScreenshots = getService('commonScreenshots'); + const find = getService('find'); + const rules = getService('rules'); + const testSubjects = getService('testSubjects'); + const pageObjects = getPageObjects(['common', 'header']); + const screenshotDirectories = ['response_ops_docs', 'stack_alerting']; + + describe('index threshold rule', function () { + it('create rule screenshot', async () => { + await pageObjects.common.navigateToApp('triggersActions'); + await pageObjects.header.waitUntilLoadingHasFinished(); + await rules.common.clickCreateAlertButton(); + await testSubjects.setValue('ruleNameInput', 'kibana sites - high egress'); + await testSubjects.click('tagsComboBox'); + await testSubjects.setValue('tagsComboBox', 'sample-data'); + await testSubjects.click('solutionsFilterButton'); + await testSubjects.click('solutionstackAlertsFilterOption'); + await testSubjects.setValue('solutionsFilterButton', 'solutionstackAlertsFilterOption'); + await commonScreenshots.takeScreenshot( + 'rule-types-index-threshold-select', + screenshotDirectories, + 1400, + 1024 + ); + + await testSubjects.click('.index-threshold-SelectOption'); + await commonScreenshots.takeScreenshot( + 'rule-types-index-threshold-conditions', + screenshotDirectories, + 1400, + 1024 + ); + + await testSubjects.scrollIntoView('selectIndexExpression'); + await testSubjects.click('selectIndexExpression'); + const indexComboBox = await find.byCssSelector('#indexSelectSearchBox'); + await indexComboBox.click(); + await indexComboBox.type('kibana_sample_data_logs '); + const filterSelectItem = await find.byCssSelector(`.euiFilterSelectItem`); + await filterSelectItem.click(); + await testSubjects.click('thresholdAlertTimeFieldSelect'); + await testSubjects.setValue('thresholdAlertTimeFieldSelect', '@timestamp'); + await commonScreenshots.takeScreenshot( + 'rule-types-index-threshold-example-index', + screenshotDirectories, + 1400, + 1024 + ); + await testSubjects.click('closePopover'); + + await testSubjects.click('whenExpression'); + await testSubjects.click('whenExpressionSelect'); + await testSubjects.setValue('whenExpressionSelect', 'sum()'); + await testSubjects.click('ofExpressionPopover'); + const ofComboBox = await find.byCssSelector('#ofField'); + await ofComboBox.click(); + await commonScreenshots.takeScreenshot( + 'rule-types-index-threshold-example-aggregation', + screenshotDirectories, + 1400, + 1024 + ); + await ofComboBox.type('bytes'); + const ofOptionsString = await comboBox.getOptionsList('availablefieldsOptionsComboBox'); + const ofOptions = ofOptionsString.trim().split('\n'); + expect(ofOptions.length > 0).to.be(true); + await comboBox.set('availablefieldsOptionsComboBox', ofOptions[0]); + + await testSubjects.click('groupByExpression'); + await testSubjects.click('overExpressionSelect'); + await testSubjects.setValue('overExpressionSelect', 'top'); + await testSubjects.setValue('fieldsNumberSelect', '4'); + await testSubjects.setValue('fieldsExpressionSelect', 'host.keyword'); + await commonScreenshots.takeScreenshot( + 'rule-types-index-threshold-example-grouping', + screenshotDirectories, + 1400, + 1024 + ); + // need this two out of popup clicks to close them + const nameInput1 = await testSubjects.find('ruleNameInput'); + await nameInput1.click(); + + await testSubjects.click('thresholdPopover'); + await testSubjects.setValue('alertThresholdInput', '420000'); + await testSubjects.click('forLastExpression'); + await testSubjects.setValue('timeWindowSizeNumber', '24'); + await testSubjects.setValue('timeWindowUnitSelect', 'hours'); + // need this two out of popup clicks to close them + const nameInput2 = await testSubjects.find('ruleNameInput'); + await nameInput2.click(); + await testSubjects.scrollIntoView('thresholdPopover'); + await commonScreenshots.takeScreenshot( + 'rule-types-index-threshold-example-threshold', + screenshotDirectories, + 1400, + 1024 + ); + + await testSubjects.setValue('intervalInput', '4'); + await testSubjects.setValue('intervalInputUnit', 'hours'); + // need this two out of popup clicks to close them + const nameInput3 = await testSubjects.find('ruleNameInput'); + await nameInput3.click(); + await testSubjects.scrollIntoView('alertVisualizationChart'); + await commonScreenshots.takeScreenshot( + 'rule-types-index-threshold-example-preview', + screenshotDirectories, + 1400, + 1024 + ); + + await testSubjects.click('.server-log-alerting-ActionTypeSelectOption'); + await testSubjects.scrollIntoView('addAlertActionButton'); + await commonScreenshots.takeScreenshot( + 'rule-types-index-threshold-example-action', + screenshotDirectories, + 1400, + 1024 + ); + /* + * const saveButton = await testSubjects.find('saveRuleButton'); + * await saveButton.click(); + */ + const flyOutCancelButton = await testSubjects.find('euiFlyoutCloseButton'); + await flyOutCancelButton.click(); + }); + }); +} diff --git a/yarn.lock b/yarn.lock index 5dbae5b6a72b2..373279a97253e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -393,7 +393,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.10.3", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.21.1", "@babel/parser@^7.21.2": +"@babel/parser@^7.1.0", "@babel/parser@^7.10.3", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.21.2": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3" integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ== @@ -4841,6 +4841,10 @@ version "0.0.0" uid "" +"@kbn/securitysolution-grouping@link:packages/kbn-securitysolution-grouping": + version "0.0.0" + uid "" + "@kbn/securitysolution-autocomplete@link:packages/kbn-securitysolution-autocomplete": version "0.0.0" uid "" @@ -23984,10 +23988,10 @@ react-grid-layout@^1.3.4: react-draggable "^4.0.0" react-resizable "^3.0.4" -react-hook-form@^7.43.1: - version "7.43.1" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.43.1.tgz#0d0d7822f3f7fc05ffc41d5f012b49b90fcfa0f0" - integrity sha512-+s3+s8LLytRMriwwuSqeLStVjRXFGxgjjx2jED7Z+wz1J/88vpxieRQGvJVvzrzVxshZ0BRuocFERb779m2kNg== +react-hook-form@^7.43.2: + version "7.43.2" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.43.2.tgz#d8ff71956dc3de258dce19d4b1c7e1c6a0188e67" + integrity sha512-NvD3Oe2Y9hhqo2R4I4iJigDzSLpdMnzUpNMxlnzTbdiT7NT3BW0GxWCzEtwPudZMUPbZhNcSy1EcGAygyhDORg== react-input-autosize@^3.0.0: version "3.0.0" @@ -27126,7 +27130,7 @@ terser@^4.1.2, terser@^4.6.3: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.14.1, terser@^5.16.4, terser@^5.3.4, terser@^5.9.0: +terser@^5.14.1, terser@^5.16.5, terser@^5.3.4, terser@^5.9.0: version "5.16.5" resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.5.tgz#1c285ca0655f467f92af1bbab46ab72d1cb08e5a" integrity sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==