diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml index 8a5d4c2ea3f9f3..70be71f08184ab 100644 --- a/.buildkite/ftr_configs.yml +++ b/.buildkite/ftr_configs.yml @@ -413,5 +413,6 @@ enabled: - x-pack/performance/journeys/ecommerce_dashboard_tsvb_gauge_only.ts - x-pack/performance/journeys/dashboard_listing_page.ts - x-pack/performance/journeys/cloud_security_dashboard.ts + - x-pack/performance/journeys/apm_service_inventory.ts - x-pack/test/custom_branding/config.ts - x-pack/test/profiling_api_integration/cloud/config.ts diff --git a/.buildkite/pipelines/pull_request/defend_workflows.yml b/.buildkite/pipelines/pull_request/defend_workflows.yml index 22be5122727bf4..02f9239a8e6a26 100644 --- a/.buildkite/pipelines/pull_request/defend_workflows.yml +++ b/.buildkite/pipelines/pull_request/defend_workflows.yml @@ -8,8 +8,6 @@ steps: parallelism: 2 retry: automatic: - - exit_status: '-1' - limit: 3 - exit_status: '*' limit: 1 artifact_paths: @@ -24,8 +22,6 @@ steps: parallelism: 6 retry: automatic: - - exit_status: '-1' - limit: 3 - exit_status: '*' limit: 1 artifact_paths: diff --git a/.buildkite/pipelines/pull_request/osquery_cypress.yml b/.buildkite/pipelines/pull_request/osquery_cypress.yml index 15d3330f75c56f..4eefffdf7ee06f 100644 --- a/.buildkite/pipelines/pull_request/osquery_cypress.yml +++ b/.buildkite/pipelines/pull_request/osquery_cypress.yml @@ -8,8 +8,6 @@ steps: parallelism: 6 retry: automatic: - - exit_status: '-1' - limit: 3 - exit_status: '*' limit: 1 artifact_paths: diff --git a/.buildkite/pipelines/pull_request/response_ops.yml b/.buildkite/pipelines/pull_request/response_ops.yml index 2f71568f38cb5d..b2ef5199fab91e 100644 --- a/.buildkite/pipelines/pull_request/response_ops.yml +++ b/.buildkite/pipelines/pull_request/response_ops.yml @@ -8,7 +8,7 @@ steps: parallelism: 4 retry: automatic: - - exit_status: '-1' - limit: 3 - exit_status: '*' limit: 1 + artifact_paths: + - "target/kibana-security-solution/**/*" diff --git a/.buildkite/pipelines/pull_request/response_ops_cases.yml b/.buildkite/pipelines/pull_request/response_ops_cases.yml index 84497c953afc70..af2e58b65ab34a 100644 --- a/.buildkite/pipelines/pull_request/response_ops_cases.yml +++ b/.buildkite/pipelines/pull_request/response_ops_cases.yml @@ -7,7 +7,7 @@ steps: timeout_in_minutes: 120 retry: automatic: - - exit_status: '-1' - limit: 3 - exit_status: '*' limit: 1 + artifact_paths: + - "target/kibana-security-solution/**/*" diff --git a/.buildkite/pipelines/pull_request/security_solution.yml b/.buildkite/pipelines/pull_request/security_solution.yml index 6002756c8889dc..a30609ac5ca21b 100644 --- a/.buildkite/pipelines/pull_request/security_solution.yml +++ b/.buildkite/pipelines/pull_request/security_solution.yml @@ -1,14 +1,14 @@ steps: - command: .buildkite/scripts/steps/functional/security_solution.sh - label: 'Security Solution Tests' + label: 'Security Solution Cypress Tests' agents: queue: n2-4-spot depends_on: build timeout_in_minutes: 60 - parallelism: 7 + parallelism: 10 retry: automatic: - - exit_status: '-1' - limit: 3 - exit_status: '*' limit: 1 + artifact_paths: + - "target/kibana-security-solution/**/*" diff --git a/.buildkite/pipelines/pull_request/security_solution_explore.yml b/.buildkite/pipelines/pull_request/security_solution_explore.yml index 1ab77db5b4cfc7..3ff38c0e012f5b 100644 --- a/.buildkite/pipelines/pull_request/security_solution_explore.yml +++ b/.buildkite/pipelines/pull_request/security_solution_explore.yml @@ -1,6 +1,6 @@ steps: - command: .buildkite/scripts/steps/functional/security_solution_explore.sh - label: 'Explore - Security Solution Tests' + label: 'Explore - Security Solution Cypress Tests' agents: queue: n2-4-spot depends_on: build @@ -8,7 +8,7 @@ steps: parallelism: 2 retry: automatic: - - exit_status: '-1' - limit: 3 - exit_status: '*' limit: 1 + artifact_paths: + - "target/kibana-security-solution/**/*" diff --git a/.buildkite/pipelines/pull_request/security_solution_investigations.yml b/.buildkite/pipelines/pull_request/security_solution_investigations.yml index 7ec4efb5f2a9e6..395055db922a85 100644 --- a/.buildkite/pipelines/pull_request/security_solution_investigations.yml +++ b/.buildkite/pipelines/pull_request/security_solution_investigations.yml @@ -1,6 +1,6 @@ steps: - command: .buildkite/scripts/steps/functional/security_solution_investigations.sh - label: 'Investigations - Security Solution Tests' + label: 'Investigations - Security Solution Cypress Tests' agents: queue: n2-4-spot depends_on: build @@ -8,7 +8,7 @@ steps: parallelism: 4 retry: automatic: - - exit_status: '-1' - limit: 3 - exit_status: '*' limit: 1 + artifact_paths: + - "target/kibana-security-solution/**/*" diff --git a/.buildkite/pipelines/pull_request/threat_intelligence.yml b/.buildkite/pipelines/pull_request/threat_intelligence.yml index 9a16eb9527882c..f9b9050d28d952 100644 --- a/.buildkite/pipelines/pull_request/threat_intelligence.yml +++ b/.buildkite/pipelines/pull_request/threat_intelligence.yml @@ -1,6 +1,6 @@ steps: - command: .buildkite/scripts/steps/functional/threat_intelligence.sh - label: 'Threat Intelligence Tests' + label: 'Threat Intelligence Cypress Tests' agents: queue: n2-4-spot depends_on: build @@ -8,8 +8,6 @@ steps: parallelism: 2 retry: automatic: - - exit_status: '-1' - limit: 3 - exit_status: '*' limit: 1 artifact_paths: diff --git a/.buildkite/scripts/steps/artifacts/cloud.sh b/.buildkite/scripts/steps/artifacts/cloud.sh index 16f280f68c5392..2faf5175b97b77 100644 --- a/.buildkite/scripts/steps/artifacts/cloud.sh +++ b/.buildkite/scripts/steps/artifacts/cloud.sh @@ -69,6 +69,9 @@ export CLOUD_DEPLOYMENT_ELASTICSEARCH_URL=$(ecctl deployment show "$CLOUD_DEPLOY echo "Kibana: $CLOUD_DEPLOYMENT_KIBANA_URL" echo "ES: $CLOUD_DEPLOYMENT_ELASTICSEARCH_URL" +# Disable ansi color output for Node.js as we want to get plain values when executing node as a script runner below +export FORCE_COLOR=0 + export TEST_KIBANA_PROTOCOL=$(node -e "console.log(new URL(process.env.CLOUD_DEPLOYMENT_KIBANA_URL).protocol.replace(':', ''))") export TEST_KIBANA_HOSTNAME=$(node -e "console.log(new URL(process.env.CLOUD_DEPLOYMENT_KIBANA_URL).hostname)") export TEST_KIBANA_PORT=$(node -e "console.log(new URL(process.env.CLOUD_DEPLOYMENT_KIBANA_URL).port || 443)") @@ -81,6 +84,9 @@ export TEST_ES_PORT=$(node -e "console.log(new URL(process.env.CLOUD_DEPLOYMENT_ export TEST_ES_USERNAME="$CLOUD_DEPLOYMENT_USERNAME" export TEST_ES_PASSWORD="$CLOUD_DEPLOYMENT_PASSWORD" +# Enabling ansi color output for Node.js again as we don't need to use it as a script interpreter anymore +export FORCE_COLOR=1 + export TEST_BROWSER_HEADLESS=1 # Error: attempted to use the "es" service to fetch Elasticsearch version info but the request failed: ConnectionError: self signed certificate in certificate chain diff --git a/.buildkite/scripts/steps/functional/security_solution.sh b/.buildkite/scripts/steps/functional/security_solution.sh index f021cdc7c8fc38..5890b463f77350 100755 --- a/.buildkite/scripts/steps/functional/security_solution.sh +++ b/.buildkite/scripts/steps/functional/security_solution.sh @@ -8,6 +8,6 @@ source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} -echo "--- Security Solution tests (Chrome)" +echo "--- Security Solution Cypress tests (Chrome)" yarn --cwd x-pack/plugins/security_solution cypress:run diff --git a/.buildkite/scripts/steps/functional/threat_intelligence.sh b/.buildkite/scripts/steps/functional/threat_intelligence.sh index c07ea8605c2d05..0c2c80942e7c69 100755 --- a/.buildkite/scripts/steps/functional/threat_intelligence.sh +++ b/.buildkite/scripts/steps/functional/threat_intelligence.sh @@ -8,6 +8,6 @@ source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-threat-intelligence-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} -echo "--- Threat Intelligence tests (Chrome)" +echo "--- Threat Intelligence Cypress tests (Chrome)" yarn --cwd x-pack/plugins/threat_intelligence cypress:run diff --git a/.eslintrc.js b/.eslintrc.js index d79e1584331022..515fbef1f2e4e3 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -725,7 +725,7 @@ module.exports = { { files: ['**/*.test.{js,mjs,ts,tsx}'], rules: { - 'jest/valid-describe': 'error', + 'jest/valid-describe-callback': 'error', }, }, diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 12d60292a2dde7..15707819971158 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -492,6 +492,7 @@ x-pack/packages/ml/data_grid @elastic/ml-ui x-pack/packages/ml/date_picker @elastic/ml-ui x-pack/packages/ml/date_utils @elastic/ml-ui x-pack/packages/ml/error_utils @elastic/ml-ui +x-pack/packages/ml/in_memory_table @elastic/ml-ui x-pack/packages/ml/is_defined @elastic/ml-ui x-pack/packages/ml/is_populated_object @elastic/ml-ui x-pack/packages/ml/kibana_theme @elastic/ml-ui @@ -1071,6 +1072,7 @@ x-pack/plugins/cloud_integrations/cloud_full_story/server/config.ts @elastic/kib /x-pack/plugins/security_solution/public/detections/components/alerts_kpis @elastic/security-threat-hunting-investigations /x-pack/plugins/security_solution/public/detections/components/alerts_table @elastic/security-threat-hunting-investigations /x-pack/plugins/security_solution/public/detections/components/alerts_info @elastic/security-threat-hunting-investigations +/x-pack/plugins/security_solution/public/flyout @elastic/security-threat-hunting-investigations /x-pack/plugins/security_solution/public/resolver @elastic/security-threat-hunting-investigations /x-pack/plugins/security_solution/public/timelines @elastic/security-threat-hunting-investigations diff --git a/api_docs/actions.devdocs.json b/api_docs/actions.devdocs.json index 8da0cbc8216cf3..3c2653e17a1a16 100644 --- a/api_docs/actions.devdocs.json +++ b/api_docs/actions.devdocs.json @@ -697,7 +697,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -1659,6 +1659,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", @@ -3331,7 +3333,7 @@ "section": "def-server.FindActionResult", "text": "FindActionResult" }, - "[]>; getBulk: (ids: string[], throwIfSystemAction?: boolean) => Promise<", + "[]>; getBulk: ({ ids, throwIfSystemAction, }: { ids: string[]; throwIfSystemAction?: boolean | undefined; }) => Promise<", { "pluginId": "actions", "scope": "server", diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 5a3acd96839b21..d11859f8b448ff 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-07-28 +date: 2023-08-01 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 d185d224fb1dea..da924dd1245d04 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-07-28 +date: 2023-08-01 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 874d58236f32bb..c601a3b82efc27 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.devdocs.json b/api_docs/alerting.devdocs.json index a6d92e8e087c77..f96a5fa431e212 100644 --- a/api_docs/alerting.devdocs.json +++ b/api_docs/alerting.devdocs.json @@ -108,13 +108,13 @@ "deprecated": true, "trackAdoption": false, "references": [ - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/es_query/index.ts" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/alerting/register_ml_alerts.ts" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/es_query/index.ts" } ], "children": [ diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 6c3492b53bd236..b3d8a225a89eea 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.devdocs.json b/api_docs/apm.devdocs.json index 9056cdd8f9858e..9e9f705674f747 100644 --- a/api_docs/apm.devdocs.json +++ b/api_docs/apm.devdocs.json @@ -651,9 +651,7 @@ "GetResponse", ">; delete: (deleteParams: { id: string; }) => Promise<", "WriteResponseBase", - ">; } | undefined>; getOpenAIClient(): ", - "IOpenAIClient", - " | undefined; alertsLocator: ", + ">; } | undefined>; alertsLocator: ", { "pluginId": "share", "scope": "common", diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 7aa636a2cceb9f..ad4d4881e6617b 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 15fc28540900df..4089eb9f2912c5 100644 --- a/api_docs/asset_manager.mdx +++ b/api_docs/asset_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager title: "assetManager" image: https://source.unsplash.com/400x175/?github description: API docs for the assetManager plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager'] --- import assetManagerObj from './asset_manager.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 18b7e4a29bc886..0628d0705cf2f3 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-07-28 +date: 2023-08-01 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 e0d59e0bb590c8..867b0a291b482a 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-07-28 +date: 2023-08-01 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 fea05a92026041..e3cfc7a2ee7b39 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index dc6e12ef21c3b3..f7d5f54c8f59a4 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index e7d7285fbae763..c8d3f9a7365d57 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-07-28 +date: 2023-08-01 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 91149e0e02b5d5..d9db397200a417 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-07-28 +date: 2023-08-01 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 9fa928c76c3838..c3caf5a296f6d4 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChat'] --- import cloudChatObj from './cloud_chat.devdocs.json'; diff --git a/api_docs/cloud_chat_provider.mdx b/api_docs/cloud_chat_provider.mdx index 6ea831251f400f..a88701856b53ce 100644 --- a/api_docs/cloud_chat_provider.mdx +++ b/api_docs/cloud_chat_provider.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChatProvider title: "cloudChatProvider" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChatProvider plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChatProvider'] --- import cloudChatProviderObj from './cloud_chat_provider.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index cee55d96fe3eef..f737ed8d48b566 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-07-28 +date: 2023-08-01 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 dc205a8e2d153c..7a178123d581a2 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-07-28 +date: 2023-08-01 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 7cf2c5c1dc369f..99f79abc8dfaae 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-07-28 +date: 2023-08-01 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 560f7b8c3fd144..4ce933fd87463b 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-07-28 +date: 2023-08-01 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 c7845dc384471a..aea3731dc3f8e8 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-07-28 +date: 2023-08-01 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 287a9d9b9c7533..7a7dd4d7e6786e 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-07-28 +date: 2023-08-01 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 acfa097d08372d..e8d8e851ae9257 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-07-28 +date: 2023-08-01 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 9999a645dcbf9f..c397d0e02b9c34 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-07-28 +date: 2023-08-01 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 a83df2633f752a..dcf8efb5964ae7 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-07-28 +date: 2023-08-01 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 746ff2a3ee8a2a..50142133b0c11d 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-07-28 +date: 2023-08-01 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 b55e871e97a850..f1b0fb31aa7d98 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -12792,10 +12792,6 @@ "plugin": "dashboard", "path": "src/plugins/dashboard/public/services/data/data_service.ts" }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/threshold/expression.tsx" - }, { "plugin": "dataVisualizer", "path": "x-pack/plugins/data_visualizer/public/application/common/components/stats_table/components/field_data_row/document_stats.tsx" @@ -12808,6 +12804,10 @@ "plugin": "dataVisualizer", "path": "x-pack/plugins/data_visualizer/public/application/common/components/stats_table/components/field_data_expanded_row/choropleth_map.tsx" }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/threshold/expression.tsx" + }, { "plugin": "expressionPartitionVis", "path": "src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.test.ts" @@ -13312,6 +13312,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/detections/components/detection_page_filters/index.tsx" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.ts" @@ -13560,14 +13564,6 @@ "plugin": "lens", "path": "x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx" }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx" - }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_flyout.tsx" - }, { "plugin": "dataViews", "path": "src/plugins/data_views/server/rest_api_routes/public/update_data_view.ts" @@ -13632,42 +13628,6 @@ "plugin": "exploratoryView", "path": "x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx" }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/entity_index_expression.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx" @@ -13676,10 +13636,6 @@ "plugin": "dataVisualizer", "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts" }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_details.tsx" @@ -13760,6 +13716,42 @@ "plugin": "ml", "path": "x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx" }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/entity_index_expression.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx" + }, { "plugin": "infra", "path": "x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts" @@ -17990,7 +17982,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -18952,6 +18944,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", @@ -21001,6 +20995,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/detections/components/detection_page_filters/index.tsx" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.ts" @@ -21249,14 +21247,6 @@ "plugin": "lens", "path": "x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx" }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx" - }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_flyout.tsx" - }, { "plugin": "dataViews", "path": "src/plugins/data_views/server/rest_api_routes/public/update_data_view.ts" @@ -21321,42 +21311,6 @@ "plugin": "exploratoryView", "path": "x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx" }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/entity_index_expression.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx" @@ -21365,10 +21319,6 @@ "plugin": "dataVisualizer", "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts" }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_details.tsx" @@ -21449,6 +21399,42 @@ "plugin": "ml", "path": "x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx" }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/entity_index_expression.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx" + }, { "plugin": "infra", "path": "x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts" diff --git a/api_docs/data.mdx b/api_docs/data.mdx index a9fbbb13c3eeb6..22f1bd9c3701b1 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-07-28 +date: 2023-08-01 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 eb26092786abf1..d013676b777e4a 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-07-28 +date: 2023-08-01 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 6bf2228558c540..832b1f54cab37f 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-07-28 +date: 2023-08-01 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 957924c3977ba6..f72e100b1f21f7 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-07-28 +date: 2023-08-01 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 d7330b4b772568..03e80612d850ca 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-07-28 +date: 2023-08-01 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 42f3451c9ee02e..ae3c22f8c8557f 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-07-28 +date: 2023-08-01 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 bedd6348c12ea8..ace6026c2be0e2 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -127,6 +127,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/detections/components/detection_page_filters/index.tsx" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.ts" @@ -379,14 +383,6 @@ "plugin": "lens", "path": "x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx" }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx" - }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_flyout.tsx" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/server/models/data_frame_analytics/index_patterns.ts" @@ -443,42 +439,6 @@ "plugin": "exploratoryView", "path": "x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx" }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/entity_index_expression.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx" @@ -487,10 +447,6 @@ "plugin": "dataVisualizer", "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts" }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_details.tsx" @@ -571,6 +527,42 @@ "plugin": "ml", "path": "x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx" }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/entity_index_expression.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx" + }, { "plugin": "infra", "path": "x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts" @@ -7989,6 +7981,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/detections/components/detection_page_filters/index.tsx" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.ts" @@ -8241,14 +8237,6 @@ "plugin": "lens", "path": "x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx" }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx" - }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_flyout.tsx" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/server/models/data_frame_analytics/index_patterns.ts" @@ -8305,42 +8293,6 @@ "plugin": "exploratoryView", "path": "x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx" }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/entity_index_expression.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx" @@ -8349,10 +8301,6 @@ "plugin": "dataVisualizer", "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts" }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_details.tsx" @@ -8433,6 +8381,42 @@ "plugin": "ml", "path": "x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx" }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/entity_index_expression.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx" + }, { "plugin": "infra", "path": "x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts" @@ -13703,7 +13687,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -14665,6 +14649,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", @@ -14970,6 +14956,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/public/detections/components/detection_page_filters/index.tsx" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx" + }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_query_filter.ts" @@ -15222,14 +15212,6 @@ "plugin": "lens", "path": "x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx" }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx" - }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_flyout.tsx" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/server/models/data_frame_analytics/index_patterns.ts" @@ -15286,42 +15268,6 @@ "plugin": "exploratoryView", "path": "x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx" }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/entity_index_expression.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" - }, - { - "plugin": "stackAlerts", - "path": "x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx" - }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx" @@ -15330,10 +15276,6 @@ "plugin": "dataVisualizer", "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts" }, - { - "plugin": "dataVisualizer", - "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_details.tsx" @@ -15414,6 +15356,42 @@ "plugin": "ml", "path": "x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx" }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/boundary_index_expression.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/expressions/entity_index_expression.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/geo_containment/query_builder/index.tsx" + }, + { + "plugin": "stackAlerts", + "path": "x-pack/plugins/stack_alerts/public/rule_types/components/data_view_select_popover.tsx" + }, { "plugin": "infra", "path": "x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts" diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 30bd4a0f877c12..e03aabb9aa09b5 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.devdocs.json b/api_docs/data_visualizer.devdocs.json index f690a344389435..9f100882c91c91 100644 --- a/api_docs/data_visualizer.devdocs.json +++ b/api_docs/data_visualizer.devdocs.json @@ -300,6 +300,54 @@ ], "enums": [], "misc": [ + { + "parentPluginId": "dataVisualizer", + "id": "def-public.DataComparisonSpec", + "type": "Type", + "tags": [], + "label": "DataComparisonSpec", + "description": [], + "signature": [ + "React.FunctionComponent<", + "DataComparisonDetectionAppStateProps", + ">" + ], + "path": "x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_app_state.tsx", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "dataVisualizer", + "id": "def-public.DataComparisonSpec.$1", + "type": "CompoundType", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P & { children?: React.ReactNode; }" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "dataVisualizer", + "id": "def-public.DataComparisonSpec.$2", + "type": "Any", + "tags": [], + "label": "context", + "description": [], + "signature": [ + "any" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "dataVisualizer", "id": "def-public.FileDataVisualizerSpec", @@ -449,7 +497,9 @@ "section": "def-public.GetAdditionalLinks", "text": "GetAdditionalLinks" }, - " | undefined; }>>; getMaxBytesFormatted: () => string; }" + " | undefined; }>>; getDataComparisonComponent: () => Promise<() => React.FC<", + "DataComparisonDetectionAppStateProps", + ">>; getMaxBytesFormatted: () => string; }" ], "path": "x-pack/plugins/data_visualizer/public/plugin.ts", "deprecated": false, diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 9bfc9645be966a..3b034404c7410c 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.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 | |-------------------|-----------|------------------------|-----------------| -| 28 | 3 | 24 | 0 | +| 31 | 3 | 25 | 1 | ## Client diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 6549da97e59f6f..5c99ef189dbac9 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -16,20 +16,22 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Referencing plugin(s) | Remove By | | ---------------|-----------|-----------| -| | stackAlerts, ml | - | +| | ml, stackAlerts | - | | | ruleRegistry, observability, ml, infra, monitoring, securitySolution, stackAlerts, synthetics, transform, uptime | - | -| | stackAlerts, alerting, securitySolution, inputControlVis | - | -| | stackAlerts, infra, graph, inputControlVis, securitySolution, savedObjects | - | -| | dashboard, stackAlerts, dataVisualizer, expressionPartitionVis | - | -| | @kbn/es-query, @kbn/visualization-ui-components, observability, securitySolution, timelines, lists, threatIntelligence, savedSearch, dataViews, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, @kbn/event-annotation-components, lens, aiops, ml, logsShared, visTypeTimeseries, apm, triggersActionsUi, exploratoryView, stackAlerts, fleet, dataVisualizer, infra, canvas, enterpriseSearch, graph, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega, data | - | -| | stackAlerts, alerting, securitySolution, inputControlVis | - | -| | @kbn/es-query, @kbn/visualization-ui-components, observability, securitySolution, timelines, lists, threatIntelligence, savedSearch, dataViews, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, @kbn/event-annotation-components, lens, aiops, ml, logsShared, visTypeTimeseries, apm, triggersActionsUi, exploratoryView, stackAlerts, fleet, dataVisualizer, infra, canvas, enterpriseSearch, graph, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega, data | - | -| | @kbn/es-query, @kbn/visualization-ui-components, observability, securitySolution, timelines, lists, threatIntelligence, savedSearch, data, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, @kbn/event-annotation-components, lens, aiops, ml, logsShared, visTypeTimeseries, apm, triggersActionsUi, exploratoryView, stackAlerts, fleet, dataVisualizer, infra, canvas, enterpriseSearch, graph, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega | - | -| | home, data, esUiShared, savedObjectsManagement, exploratoryView, fleet, observability, ml, apm, indexLifecycleManagement, observabilityOnboarding, synthetics, upgradeAssistant, uptime, ux, kibanaOverview | - | +| | @kbn/es-query, @kbn/visualization-ui-components, observability, securitySolution, timelines, lists, threatIntelligence, savedSearch, dataViews, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, @kbn/event-annotation-components, lens, ml, logsShared, visTypeTimeseries, apm, triggersActionsUi, exploratoryView, fleet, dataVisualizer, stackAlerts, infra, canvas, enterpriseSearch, graph, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega, data | - | +| | @kbn/es-query, @kbn/visualization-ui-components, observability, securitySolution, timelines, lists, threatIntelligence, savedSearch, dataViews, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, @kbn/event-annotation-components, lens, ml, logsShared, visTypeTimeseries, apm, triggersActionsUi, exploratoryView, fleet, dataVisualizer, stackAlerts, infra, canvas, enterpriseSearch, graph, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega, data | - | +| | @kbn/es-query, @kbn/visualization-ui-components, observability, securitySolution, timelines, lists, threatIntelligence, savedSearch, data, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, @kbn/event-annotation-components, lens, ml, logsShared, visTypeTimeseries, apm, triggersActionsUi, exploratoryView, fleet, dataVisualizer, stackAlerts, infra, canvas, enterpriseSearch, graph, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega | - | +| | inspector, data, advancedSettings, savedObjects, embeddable, dataViewEditor, unifiedSearch, visualizations, controls, dashboard, licensing, savedObjectsTagging, eventAnnotation, dataViewFieldEditor, lens, @kbn/ml-date-picker, aiops, security, triggersActionsUi, cases, observabilityShared, discover, exploratoryView, fleet, maps, telemetry, dataVisualizer, ml, observability, banners, reporting, timelines, runtimeFields, indexManagement, dashboardEnhanced, imageEmbeddable, graph, monitoring, securitySolution, synthetics, transform, uptime, console, dataViewManagement, filesManagement, uiActions, visTypeVislib | - | +| | home, data, esUiShared, savedObjectsManagement, exploratoryView, fleet, ml, observability, apm, indexLifecycleManagement, observabilityOnboarding, synthetics, upgradeAssistant, uptime, ux, kibanaOverview | - | +| | share, uiActions, guidedOnboarding, home, management, data, advancedSettings, spaces, savedObjects, visualizations, controls, dashboard, savedObjectsTagging, expressionXY, lens, expressionMetricVis, expressionGauge, alerting, security, triggersActionsUi, serverless, cases, discover, exploratoryView, fleet, maps, licenseManagement, dataVisualizer, ml, observability, infra, profiling, apm, canvas, expressionImage, expressionMetric, expressionError, expressionRevealImage, expressionRepeatImage, expressionShape, indexManagement, crossClusterReplication, enterpriseSearch, globalSearchBar, graph, grokdebugger, indexLifecycleManagement, ingestPipelines, logstash, monitoring, observabilityOnboarding, osquery, devTools, painlessLab, remoteClusters, rollup, searchprofiler, newsfeed, securitySolution, serverlessSearch, snapshotRestore, synthetics, transform, upgradeAssistant, uptime, ux, watcher, cloudDataMigration, console, dataViewManagement, filesManagement, kibanaOverview, visDefaultEditor, expressionHeatmap, expressionLegacyMetricVis, expressionPartitionVis, expressionTagcloud, visTypeTable, visTypeTimelion, visTypeTimeseries, visTypeVega, visTypeVislib | - | | | encryptedSavedObjects, actions, data, ml, logstash, securitySolution, cloudChat | - | | | actions, ml, savedObjectsTagging, enterpriseSearch | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core, savedObjects, presentationUtil, visualizations, aiops, ml, dataVisualizer, dashboardEnhanced, graph, uptime, lens, securitySolution, eventAnnotation, @kbn/core-saved-objects-browser-mocks | - | | | @kbn/core, savedObjects, embeddable, visualizations, canvas, graph, ml, @kbn/core-saved-objects-common, @kbn/core-saved-objects-server, actions, alerting, savedSearch, enterpriseSearch, securitySolution, taskManager, @kbn/core-saved-objects-server-internal, @kbn/core-saved-objects-api-server | - | +| | stackAlerts, alerting, securitySolution, inputControlVis | - | +| | stackAlerts, infra, graph, inputControlVis, securitySolution, savedObjects | - | +| | dashboard, dataVisualizer, stackAlerts, expressionPartitionVis | - | +| | stackAlerts, alerting, securitySolution, inputControlVis | - | | | observability, @kbn/securitysolution-data-table, securitySolution | - | | | @kbn/core-saved-objects-api-browser, @kbn/core, savedObjects, savedObjectsManagement, visualizations, savedObjectsTagging, eventAnnotation, lens, graph, dashboard, savedObjectsTaggingOss, kibanaUtils, expressions, data, embeddable, controls, uiActionsEnhanced, maps, canvas, dashboardEnhanced, globalSearchProviders, infra | - | | | monitoring | - | @@ -44,7 +46,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | @kbn/securitysolution-data-table, securitySolution | - | | | securitySolution | - | | | securitySolution | - | -| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-api-server, @kbn/core, home, savedObjectsTagging, canvas, savedObjects, @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-import-export-server-internal, savedObjectsTaggingOss, lists, securitySolution, upgradeAssistant, savedObjectsManagement, synthetics, @kbn/core-ui-settings-server-internal | - | +| | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-api-server, @kbn/core, home, savedObjectsTagging, canvas, savedObjects, @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-import-export-server-internal, savedObjectsTaggingOss, lists, securitySolution, upgradeAssistant, savedObjectsManagement, @kbn/core-ui-settings-server-internal | - | | | @kbn/core-saved-objects-migration-server-internal, actions, dataViews, data, alerting, lens, cases, savedObjectsTagging, visualizations, savedSearch, canvas, graph, lists, maps, securitySolution, dashboard, @kbn/core-test-helpers-so-type-serializer | - | | | lists, securitySolution, @kbn/securitysolution-io-ts-list-types | - | | | lists, securitySolution, @kbn/securitysolution-io-ts-list-types | - | @@ -129,8 +131,10 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | visTypePie | - | | | visTypePie | - | | | @kbn/core-elasticsearch-server-internal, @kbn/core-plugins-server-internal, observabilityOnboarding, console | - | -| | encryptedSavedObjects | - | | | @kbn/content-management-table-list-view, filesManagement | - | +| | navigation | - | +| | @kbn/react-kibana-context-styled, kibanaReact | - | +| | encryptedSavedObjects | - | | | @kbn/core | - | | | @kbn/core | - | | | @kbn/core-lifecycle-browser-mocks, @kbn/core, @kbn/core-plugins-browser-internal | - | @@ -186,6 +190,8 @@ Safe to remove. | | expressions | | | kibanaReact | | | kibanaReact | +| | kibanaReact | +| | kibanaReact | | | licensing | | | licensing | | | licensing | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 4241b062f51b7d..ad3501206ff724 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -314,6 +314,22 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## @kbn/ml-date-picker + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [use_date_picker_context.tsx](https://github.com/elastic/kibana/tree/main/x-pack/packages/ml/date_picker/src/hooks/use_date_picker_context.tsx#:~:text=toMountPoint) | - | + + + +## @kbn/react-kibana-context-styled + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [index.ts](https://github.com/elastic/kibana/tree/main/packages/react/kibana_context/styled/index.ts#:~:text=KibanaStyledComponentsThemeProviderDecorator) | - | + + + ## @kbn/securitysolution-data-table | Deprecated API | Reference location(s) | Remove By | @@ -372,6 +388,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [form.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/advanced_settings/public/management_app/components/form/form.tsx#:~:text=toMountPoint), [form.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/advanced_settings/public/management_app/components/form/form.tsx#:~:text=toMountPoint) | - | +| | [form.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/advanced_settings/public/management_app/components/form/form.tsx#:~:text=KibanaThemeProvider), [form.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/advanced_settings/public/management_app/components/form/form.tsx#:~:text=KibanaThemeProvider), [form.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/advanced_settings/public/management_app/components/form/form.tsx#:~:text=KibanaThemeProvider), [mount_management_section.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx#:~:text=KibanaThemeProvider), [mount_management_section.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx#:~:text=KibanaThemeProvider), [mount_management_section.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx#:~:text=KibanaThemeProvider) | - | | | [to_editable_config.ts](https://github.com/elastic/kibana/tree/main/src/plugins/advanced_settings/public/management_app/lib/to_editable_config.ts#:~:text=SavedObjectAttribute), [to_editable_config.ts](https://github.com/elastic/kibana/tree/main/src/plugins/advanced_settings/public/management_app/lib/to_editable_config.ts#:~:text=SavedObjectAttribute) | - | | | [to_editable_config.ts](https://github.com/elastic/kibana/tree/main/src/plugins/advanced_settings/public/management_app/lib/to_editable_config.ts#:~:text=metric) | - | @@ -381,9 +399,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [log_categorization_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx#:~:text=title), [log_categorization_for_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_flyout.tsx#:~:text=title), [log_categorization_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx#:~:text=title), [log_categorization_for_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_flyout.tsx#:~:text=title) | - | -| | [log_categorization_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx#:~:text=title), [log_categorization_for_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_flyout.tsx#:~:text=title), [log_categorization_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx#:~:text=title), [log_categorization_for_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_flyout.tsx#:~:text=title) | - | -| | [log_categorization_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx#:~:text=title), [log_categorization_for_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_flyout.tsx#:~:text=title) | - | +| | [log_categorization_app_state.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_app_state.tsx#:~:text=toMountPoint), [log_categorization_app_state.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_app_state.tsx#:~:text=toMountPoint), [show_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx#:~:text=toMountPoint), [show_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx#:~:text=toMountPoint), [show_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx#:~:text=toMountPoint), [log_rate_analysis_app_state.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_app_state.tsx#:~:text=toMountPoint), [log_rate_analysis_app_state.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_app_state.tsx#:~:text=toMountPoint), [change_point_detection_root.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/change_point_detection/change_point_detection_root.tsx#:~:text=toMountPoint), [change_point_detection_root.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/change_point_detection/change_point_detection_root.tsx#:~:text=toMountPoint), [log_rate_analysis_content_wrapper.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content_wrapper.tsx#:~:text=toMountPoint)+ 1 more | - | | | [search_utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/application/utils/search_utils.ts#:~:text=SimpleSavedObject), [search_utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/application/utils/search_utils.ts#:~:text=SimpleSavedObject) | - | @@ -399,6 +415,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [wrap_search_source_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/lib/wrap_search_source_client.ts#:~:text=create) | - | | | [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/lib/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/lib/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/lib/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/lib/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/lib/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/lib/wrap_search_source_client.test.ts#:~:text=fetch), [wrap_search_source_client.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/lib/wrap_search_source_client.test.ts#:~:text=fetch) | - | | | [plugin.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/plugin.test.ts#:~:text=getKibanaFeatures) | 8.8.0 | +| | [maintenance_windows.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/public/application/maintenance_windows.tsx#:~:text=KibanaThemeProvider), [maintenance_windows.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/public/application/maintenance_windows.tsx#:~:text=KibanaThemeProvider), [maintenance_windows.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/public/application/maintenance_windows.tsx#:~:text=KibanaThemeProvider) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/plugin.ts#:~:text=license%24), [license_state.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/lib/license_state.test.ts#:~:text=license%24), [license_state.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/lib/license_state.test.ts#:~:text=license%24) | 8.8.0 | | | [task.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/usage/task.ts#:~:text=index) | - | | | [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes)+ 54 more | - | @@ -415,12 +432,21 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [create_static_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/server/routes/data_view/create_static_data_view.ts#:~:text=title) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/plugin.ts#:~:text=environment) | 8.8.0 | | | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/components/routing/app_root/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/components/routing/app_root/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/components/routing/app_root/index.tsx#:~:text=RedirectAppLinks) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/application/index.tsx#:~:text=KibanaThemeProvider) | - | | | [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode)+ 2 more | 8.8.0 | | | [license_context.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/context/license/license_context.tsx#:~:text=license%24) | 8.8.0 | | | [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode)+ 2 more | 8.8.0 | +## banners + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/banners/public/plugin.tsx#:~:text=toMountPoint), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/banners/public/plugin.tsx#:~:text=toMountPoint) | - | + + + ## canvas | Deprecated API | Reference location(s) | Remove By | @@ -439,6 +465,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [setup_expressions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/setup_expressions.ts#:~:text=getTypes), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/application.tsx#:~:text=getTypes), [functions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/functions/functions.ts#:~:text=getTypes) | - | | | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/server/demodata/index.ts#:~:text=context), [embeddable.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.ts#:~:text=context), [esdocs.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/esdocs.ts#:~:text=context), [escount.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/browser/escount.ts#:~:text=context), [filters.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/common/functions/filters.ts#:~:text=context), [neq.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/common/neq.ts#:~:text=context), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts#:~:text=context) | - | | | [home.component.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/components/home/home.component.tsx#:~:text=KibanaPageTemplate), [home.component.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/components/home/home.component.tsx#:~:text=KibanaPageTemplate), [home.component.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/components/home/home.component.tsx#:~:text=KibanaPageTemplate) | - | +| | [embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx#:~:text=KibanaThemeProvider), [embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx#:~:text=KibanaThemeProvider), [embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/advanced_filter/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/advanced_filter/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/advanced_filter/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/dropdown_filter/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/dropdown_filter/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/dropdown_filter/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/time_filter/index.tsx#:~:text=KibanaThemeProvider)+ 16 more | - | | | [workpad.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/services/workpad.ts#:~:text=ResolvedSimpleSavedObject), [workpad.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/services/workpad.ts#:~:text=ResolvedSimpleSavedObject), [workpad.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/services/workpad.ts#:~:text=ResolvedSimpleSavedObject), [workpad.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/services/workpad.ts#:~:text=ResolvedSimpleSavedObject) | - | | | [workpad_route_context.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/workpad_route_context.ts#:~:text=migrationVersion) | - | | | [find.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/custom_elements/find.ts#:~:text=SavedObjectAttributes), [find.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/custom_elements/find.ts#:~:text=SavedObjectAttributes), [find.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/workpad/find.ts#:~:text=SavedObjectAttributes), [find.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/workpad/find.ts#:~:text=SavedObjectAttributes), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/shareable_runtime/types.ts#:~:text=SavedObjectAttributes), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/shareable_runtime/types.ts#:~:text=SavedObjectAttributes), [find.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/custom_elements/find.ts#:~:text=SavedObjectAttributes), [find.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/custom_elements/find.ts#:~:text=SavedObjectAttributes), [find.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/workpad/find.ts#:~:text=SavedObjectAttributes), [find.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/workpad/find.ts#:~:text=SavedObjectAttributes) | - | @@ -452,6 +479,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [use_cases_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/common/use_cases_toast.tsx#:~:text=toMountPoint), [use_cases_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/common/use_cases_toast.tsx#:~:text=toMountPoint), [use_cases_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/common/use_cases_toast.tsx#:~:text=toMountPoint), [add_to_new_case.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/components/visualizations/actions/add_to_new_case.tsx#:~:text=toMountPoint), [add_to_new_case.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/components/visualizations/actions/add_to_new_case.tsx#:~:text=toMountPoint), [add_to_existing_case.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.tsx#:~:text=toMountPoint), [add_to_existing_case.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.tsx#:~:text=toMountPoint) | - | +| | [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/application.tsx#:~:text=KibanaThemeProvider) | - | | | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/common/ui/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/common/ui/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/common/ui/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/common/ui/types.ts#:~:text=ResolvedSimpleSavedObject) | - | | | [cases.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/server/saved_object_types/cases.ts#:~:text=convertToMultiNamespaceTypeVersion), [configure.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/server/saved_object_types/configure.ts#:~:text=convertToMultiNamespaceTypeVersion), [comments.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/server/saved_object_types/comments.ts#:~:text=convertToMultiNamespaceTypeVersion), [user_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/server/saved_object_types/user_actions.ts#:~:text=convertToMultiNamespaceTypeVersion), [connector_mappings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/server/saved_object_types/connector_mappings.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | @@ -465,6 +494,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## cloudDataMigration + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/index.tsx#:~:text=KibanaThemeProvider) | - | + + + ## cloudSecurityPosture | Deprecated API | Reference location(s) | Remove By | @@ -477,6 +514,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/src/plugins/console/public/shared_imports.ts#:~:text=toMountPoint), [use_send_current_request.ts](https://github.com/elastic/kibana/tree/main/src/plugins/console/public/application/hooks/use_send_current_request/use_send_current_request.ts#:~:text=toMountPoint), [use_send_current_request.ts](https://github.com/elastic/kibana/tree/main/src/plugins/console/public/application/hooks/use_send_current_request/use_send_current_request.ts#:~:text=toMountPoint) | - | +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/src/plugins/console/public/shared_imports.ts#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/console/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/console/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/console/public/application/index.tsx#:~:text=KibanaThemeProvider) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/console/server/plugin.ts#:~:text=legacy) | - | @@ -488,6 +527,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [options_list_service.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/services/options_list/options_list_service.ts#:~:text=title), [options_list_service.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/services/options_list/options_list_service.ts#:~:text=title), [data_views.story.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/services/data_views/data_views.story.ts#:~:text=title), [options_list_service.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/services/options_list/options_list_service.ts#:~:text=title), [options_list_service.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/services/options_list/options_list_service.ts#:~:text=title), [data_views.story.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/services/data_views/data_views.story.ts#:~:text=title) | - | | | [options_list_service.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/services/options_list/options_list_service.ts#:~:text=title), [options_list_service.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/services/options_list/options_list_service.ts#:~:text=title), [data_views.story.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/services/data_views/data_views.story.ts#:~:text=title), [options_list_service.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/services/options_list/options_list_service.ts#:~:text=title), [options_list_service.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/services/options_list/options_list_service.ts#:~:text=title), [data_views.story.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/services/data_views/data_views.story.ts#:~:text=title) | - | | | [options_list_service.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/services/options_list/options_list_service.ts#:~:text=title), [options_list_service.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/services/options_list/options_list_service.ts#:~:text=title), [data_views.story.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/services/data_views/data_views.story.ts#:~:text=title) | - | +| | [open_add_data_control_flyout.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/control_group/editor/open_add_data_control_flyout.tsx#:~:text=toMountPoint), [open_add_data_control_flyout.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/control_group/editor/open_add_data_control_flyout.tsx#:~:text=toMountPoint), [open_edit_control_group_flyout.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/control_group/editor/open_edit_control_group_flyout.tsx#:~:text=toMountPoint), [open_edit_control_group_flyout.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/control_group/editor/open_edit_control_group_flyout.tsx#:~:text=toMountPoint), [edit_control_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/control_group/actions/edit_control_action.tsx#:~:text=toMountPoint), [edit_control_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/control_group/actions/edit_control_action.tsx#:~:text=toMountPoint) | - | +| | [options_list_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/options_list/embeddable/options_list_embeddable.tsx#:~:text=KibanaThemeProvider), [options_list_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/options_list/embeddable/options_list_embeddable.tsx#:~:text=KibanaThemeProvider), [options_list_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/options_list/embeddable/options_list_embeddable.tsx#:~:text=KibanaThemeProvider), [range_slider_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/range_slider/embeddable/range_slider_embeddable.tsx#:~:text=KibanaThemeProvider), [range_slider_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/range_slider/embeddable/range_slider_embeddable.tsx#:~:text=KibanaThemeProvider), [range_slider_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/range_slider/embeddable/range_slider_embeddable.tsx#:~:text=KibanaThemeProvider), [control_group_container.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/control_group/embeddable/control_group_container.tsx#:~:text=KibanaThemeProvider), [control_group_container.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/control_group/embeddable/control_group_container.tsx#:~:text=KibanaThemeProvider), [control_group_container.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/control_group/embeddable/control_group_container.tsx#:~:text=KibanaThemeProvider), [time_slider_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/controls/public/time_slider/embeddable/time_slider_embeddable.tsx#:~:text=KibanaThemeProvider)+ 2 more | - | | | [options_list_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/common/options_list/options_list_persistable_state.ts#:~:text=SavedObjectReference), [options_list_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/common/options_list/options_list_persistable_state.ts#:~:text=SavedObjectReference), [options_list_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/common/options_list/options_list_persistable_state.ts#:~:text=SavedObjectReference), [range_slider_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/common/range_slider/range_slider_persistable_state.ts#:~:text=SavedObjectReference), [range_slider_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/common/range_slider/range_slider_persistable_state.ts#:~:text=SavedObjectReference), [range_slider_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/common/range_slider/range_slider_persistable_state.ts#:~:text=SavedObjectReference), [time_slider_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/common/time_slider/time_slider_persistable_state.ts#:~:text=SavedObjectReference), [time_slider_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/common/time_slider/time_slider_persistable_state.ts#:~:text=SavedObjectReference), [time_slider_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/common/time_slider/time_slider_persistable_state.ts#:~:text=SavedObjectReference), [control_group_persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/controls/common/control_group/control_group_persistable_state.ts#:~:text=SavedObjectReference)+ 2 more | - | @@ -496,6 +537,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cross_cluster_replication/public/shared_imports.ts#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cross_cluster_replication/public/app/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cross_cluster_replication/public/app/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cross_cluster_replication/public/app/index.tsx#:~:text=KibanaThemeProvider) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cross_cluster_replication/public/plugin.ts#:~:text=license%24) | 8.8.0 | @@ -505,6 +547,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/services/data/types.ts#:~:text=fieldFormats), [data_service.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/services/data/data_service.ts#:~:text=fieldFormats) | - | +| | [show_settings.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/show_settings.tsx#:~:text=toMountPoint), [show_settings.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/show_settings.tsx#:~:text=toMountPoint), [confirm_overlays.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx#:~:text=toMountPoint), [confirm_overlays.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx#:~:text=toMountPoint), [dashboard_no_match.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx#:~:text=toMountPoint), [dashboard_no_match.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx#:~:text=toMountPoint), [dashboard_listing.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_listing/dashboard_listing.tsx#:~:text=toMountPoint), [dashboard_listing.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_listing/dashboard_listing.tsx#:~:text=toMountPoint), [open_replace_panel_flyout.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/open_replace_panel_flyout.tsx#:~:text=toMountPoint), [open_replace_panel_flyout.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/open_replace_panel_flyout.tsx#:~:text=toMountPoint)+ 4 more | - | +| | [placeholder_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/placeholder_embeddable/placeholder_embeddable.tsx#:~:text=KibanaThemeProvider), [placeholder_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/placeholder_embeddable/placeholder_embeddable.tsx#:~:text=KibanaThemeProvider), [placeholder_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/placeholder_embeddable/placeholder_embeddable.tsx#:~:text=KibanaThemeProvider), [dashboard_container.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx#:~:text=KibanaThemeProvider), [dashboard_container.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx#:~:text=KibanaThemeProvider), [dashboard_container.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx#:~:text=KibanaThemeProvider), [dashboard_router.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_app/dashboard_router.tsx#:~:text=KibanaThemeProvider), [dashboard_router.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_app/dashboard_router.tsx#:~:text=KibanaThemeProvider), [dashboard_router.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_app/dashboard_router.tsx#:~:text=KibanaThemeProvider) | - | | | [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | | | [clone_panel_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/clone_panel_action.tsx#:~:text=SavedObject), [clone_panel_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/clone_panel_action.tsx#:~:text=SavedObject), [clone_panel_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/clone_panel_action.tsx#:~:text=SavedObject) | 8.8.0 | | | [index.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/index.ts#:~:text=savedObjects) | - | @@ -521,6 +565,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [flyout_create_drilldown.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_create_drilldown/flyout_create_drilldown.tsx#:~:text=toMountPoint), [flyout_create_drilldown.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_create_drilldown/flyout_create_drilldown.tsx#:~:text=toMountPoint), [flyout_edit_drilldown.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/flyout_edit_drilldown.tsx#:~:text=toMountPoint), [flyout_edit_drilldown.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/flyout_edit_drilldown.tsx#:~:text=toMountPoint) | - | | | [collect_config_container.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/abstract_dashboard_drilldown/components/collect_config_container.tsx#:~:text=savedObjects), [collect_config_container.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/abstract_dashboard_drilldown/components/collect_config_container.tsx#:~:text=savedObjects) | - | | | [collect_config_container.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/abstract_dashboard_drilldown/components/collect_config_container.tsx#:~:text=find) | - | | | [collect_config_container.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/dashboard_enhanced/public/services/drilldowns/abstract_dashboard_drilldown/components/collect_config_container.tsx#:~:text=get) | - | @@ -536,7 +581,9 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [inspector_stats.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/search_source/inspect/inspector_stats.ts#:~:text=title), [response_writer.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/tabify/response_writer.ts#:~:text=title), [field.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/param_types/field.ts#:~:text=title), [get_display_value.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/query/filter_manager/lib/get_display_value.ts#:~:text=title), [painless_error.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/errors/painless_error.tsx#:~:text=title), [agg_config.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/agg_config.test.ts#:~:text=title), [_terms_other_bucket_helper.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.test.ts#:~:text=title), [multi_terms.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/buckets/multi_terms.test.ts#:~:text=title), [multi_terms.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/buckets/multi_terms.test.ts#:~:text=title), [rare_terms.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/buckets/rare_terms.test.ts#:~:text=title)+ 3 more | - | | | [inspector_stats.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/search_source/inspect/inspector_stats.ts#:~:text=title), [response_writer.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/tabify/response_writer.ts#:~:text=title), [field.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/param_types/field.ts#:~:text=title), [get_display_value.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/query/filter_manager/lib/get_display_value.ts#:~:text=title), [painless_error.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/errors/painless_error.tsx#:~:text=title), [agg_config.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/agg_config.test.ts#:~:text=title), [_terms_other_bucket_helper.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.test.ts#:~:text=title), [multi_terms.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/buckets/multi_terms.test.ts#:~:text=title), [multi_terms.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/buckets/multi_terms.test.ts#:~:text=title), [rare_terms.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/buckets/rare_terms.test.ts#:~:text=title)+ 3 more | - | | | [inspector_stats.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/search_source/inspect/inspector_stats.ts#:~:text=title), [response_writer.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/tabify/response_writer.ts#:~:text=title), [field.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/param_types/field.ts#:~:text=title), [get_display_value.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/query/filter_manager/lib/get_display_value.ts#:~:text=title), [painless_error.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/errors/painless_error.tsx#:~:text=title), [agg_config.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/agg_config.test.ts#:~:text=title), [_terms_other_bucket_helper.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.test.ts#:~:text=title), [multi_terms.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/buckets/multi_terms.test.ts#:~:text=title), [multi_terms.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/buckets/multi_terms.test.ts#:~:text=title), [rare_terms.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/search/aggs/buckets/rare_terms.test.ts#:~:text=title)+ 3 more | - | +| | [search_interceptor.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/search_interceptor/search_interceptor.ts#:~:text=toMountPoint), [search_interceptor.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/search_interceptor/search_interceptor.ts#:~:text=toMountPoint), [search_interceptor.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/search_interceptor/search_interceptor.ts#:~:text=toMountPoint), [search_interceptor.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/search_interceptor/search_interceptor.ts#:~:text=toMountPoint), [shard_failure_open_modal_button.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/shard_failure_modal/shard_failure_open_modal_button.tsx#:~:text=toMountPoint), [shard_failure_open_modal_button.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/shard_failure_modal/shard_failure_open_modal_button.tsx#:~:text=toMountPoint), [handle_warnings.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/fetch/handle_warnings.tsx#:~:text=toMountPoint), [handle_warnings.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/fetch/handle_warnings.tsx#:~:text=toMountPoint), [delete_button.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/components/actions/delete_button.tsx#:~:text=toMountPoint), [delete_button.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/components/actions/delete_button.tsx#:~:text=toMountPoint)+ 8 more | - | | | [get_columns.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx#:~:text=RedirectAppLinks), [get_columns.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx#:~:text=RedirectAppLinks), [get_columns.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx#:~:text=RedirectAppLinks), [connected_search_session_indicator.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx#:~:text=RedirectAppLinks), [connected_search_session_indicator.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx#:~:text=RedirectAppLinks), [connected_search_session_indicator.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx#:~:text=RedirectAppLinks) | - | +| | [main.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/components/main.tsx#:~:text=KibanaThemeProvider), [main.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/components/main.tsx#:~:text=KibanaThemeProvider), [main.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/search/session/sessions_mgmt/components/main.tsx#:~:text=KibanaThemeProvider) | - | | | [session_service.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/server/search/session/session_service.ts#:~:text=authc) | - | | | [data_table.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/utils/table_inspector_view/components/data_table.tsx#:~:text=executeTriggerActions), [data_table.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/utils/table_inspector_view/components/data_table.tsx#:~:text=executeTriggerActions) | - | | | [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/filters/persistable_state.ts#:~:text=SavedObjectReference), [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/filters/persistable_state.ts#:~:text=SavedObjectReference), [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/filters/persistable_state.ts#:~:text=SavedObjectReference), [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/persistable_state.ts#:~:text=SavedObjectReference), [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/persistable_state.ts#:~:text=SavedObjectReference), [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/persistable_state.ts#:~:text=SavedObjectReference) | - | @@ -544,6 +591,22 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## dataViewEditor + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_editor/public/shared_imports.ts#:~:text=toMountPoint), [open_editor.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_editor/public/open_editor.tsx#:~:text=toMountPoint), [open_editor.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_editor/public/open_editor.tsx#:~:text=toMountPoint) | - | + + + +## dataViewFieldEditor + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_field_editor/public/shared_imports.ts#:~:text=toMountPoint), [open_delete_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_field_editor/public/open_delete_modal.tsx#:~:text=toMountPoint), [open_delete_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_field_editor/public/open_delete_modal.tsx#:~:text=toMountPoint), [open_editor.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_field_editor/public/open_editor.tsx#:~:text=toMountPoint), [open_editor.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_field_editor/public/open_editor.tsx#:~:text=toMountPoint) | - | + + + ## dataViewManagement | Deprecated API | Reference location(s) | Remove By | @@ -560,6 +623,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [scripted_fields_table.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx#:~:text=removeScriptedField), [field_editor.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_management/public/components/field_editor/field_editor.tsx#:~:text=removeScriptedField) | - | | | [table.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx#:~:text=getNonScriptedFields), [edit_index_pattern.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx#:~:text=getNonScriptedFields), [edit_index_pattern.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx#:~:text=getNonScriptedFields), [edit_index_pattern.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx#:~:text=getNonScriptedFields), [edit_index_pattern.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_management/public/components/edit_index_pattern/edit_index_pattern.tsx#:~:text=getNonScriptedFields) | - | | | [scripted_fields_table.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_management/public/components/edit_index_pattern/scripted_fields_table/scripted_fields_table.tsx#:~:text=getScriptedFields) | - | +| | [table.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx#:~:text=toMountPoint), [table.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx#:~:text=toMountPoint), [remove_data_view.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_management/public/components/edit_index_pattern/remove_data_view.tsx#:~:text=toMountPoint), [remove_data_view.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_management/public/components/edit_index_pattern/remove_data_view.tsx#:~:text=toMountPoint) | - | +| | [mount_management_section.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_management/public/management_app/mount_management_section.tsx#:~:text=KibanaThemeProvider), [mount_management_section.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_management/public/management_app/mount_management_section.tsx#:~:text=KibanaThemeProvider), [mount_management_section.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data_view_management/public/management_app/mount_management_section.tsx#:~:text=KibanaThemeProvider) | - | @@ -586,15 +651,25 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [document_stats.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/components/field_data_row/document_stats.tsx#:~:text=fieldFormats), [top_values.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/common/components/top_values/top_values.tsx#:~:text=fieldFormats), [choropleth_map.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/common/components/stats_table/components/field_data_expanded_row/choropleth_map.tsx#:~:text=fieldFormats) | - | -| | [use_data_visualizer_grid_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts#:~:text=title), [index_data_visualizer_view.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx#:~:text=title), [use_data_visualizer_grid_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts#:~:text=title), [index_data_visualizer_view.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx#:~:text=title) | - | -| | [use_data_visualizer_grid_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts#:~:text=title), [index_data_visualizer_view.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx#:~:text=title), [use_data_visualizer_grid_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts#:~:text=title), [index_data_visualizer_view.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx#:~:text=title) | - | -| | [use_data_visualizer_grid_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts#:~:text=title), [index_data_visualizer_view.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx#:~:text=title) | - | +| | [use_data_visualizer_grid_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts#:~:text=title), [use_data_visualizer_grid_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts#:~:text=title) | - | +| | [use_data_visualizer_grid_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts#:~:text=title), [use_data_visualizer_grid_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts#:~:text=title) | - | +| | [use_data_visualizer_grid_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts#:~:text=title) | - | | | [results_links.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/common/components/results_links/results_links.tsx#:~:text=indexPatternId), [actions_panel.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/actions_panel/actions_panel.tsx#:~:text=indexPatternId) | - | +| | [grid_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/embeddables/grid_embeddable/grid_embeddable.tsx#:~:text=toMountPoint), [grid_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/embeddables/grid_embeddable/grid_embeddable.tsx#:~:text=toMountPoint), [index_data_visualizer.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/index_data_visualizer.tsx#:~:text=toMountPoint), [index_data_visualizer.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/index_data_visualizer.tsx#:~:text=toMountPoint), [data_comparison_app_state.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_app_state.tsx#:~:text=toMountPoint), [data_comparison_app_state.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_app_state.tsx#:~:text=toMountPoint) | - | +| | [file_data_visualizer.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/file_data_visualizer.tsx#:~:text=KibanaThemeProvider), [file_data_visualizer.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/file_data_visualizer.tsx#:~:text=KibanaThemeProvider), [file_data_visualizer.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/file_data_visualizer/file_data_visualizer.tsx#:~:text=KibanaThemeProvider), [grid_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/embeddables/grid_embeddable/grid_embeddable.tsx#:~:text=KibanaThemeProvider), [grid_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/embeddables/grid_embeddable/grid_embeddable.tsx#:~:text=KibanaThemeProvider), [grid_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/embeddables/grid_embeddable/grid_embeddable.tsx#:~:text=KibanaThemeProvider), [index_data_visualizer.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/index_data_visualizer.tsx#:~:text=KibanaThemeProvider), [index_data_visualizer.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/index_data_visualizer.tsx#:~:text=KibanaThemeProvider), [index_data_visualizer.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/index_data_visualizer.tsx#:~:text=KibanaThemeProvider), [data_comparison_app_state.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_app_state.tsx#:~:text=KibanaThemeProvider)+ 2 more | - | | | [index_data_visualizer.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/index_data_visualizer.tsx#:~:text=savedObjects) | - | | | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/common/types/index.ts#:~:text=SimpleSavedObject), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/data_visualizer/common/types/index.ts#:~:text=SimpleSavedObject) | - | +## devTools + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dev_tools/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dev_tools/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dev_tools/public/application.tsx#:~:text=KibanaThemeProvider) | - | + + + ## discover | Deprecated API | Reference location(s) | Remove By | @@ -602,6 +677,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=create), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=create) | - | | | [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=create), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=create) | - | | | [fetch_hits_in_interval.ts](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/context/utils/fetch_hits_in_interval.ts#:~:text=EsQuerySearchAfter), [fetch_hits_in_interval.ts](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/context/utils/fetch_hits_in_interval.ts#:~:text=EsQuerySearchAfter), [get_es_query_search_after.ts](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/context/utils/get_es_query_search_after.ts#:~:text=EsQuerySearchAfter), [get_es_query_search_after.ts](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/context/utils/get_es_query_search_after.ts#:~:text=EsQuerySearchAfter), [get_es_query_search_after.ts](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/context/utils/get_es_query_search_after.ts#:~:text=EsQuerySearchAfter) | - | +| | [use_alert_results_toast.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/main/hooks/use_alert_results_toast.tsx#:~:text=toMountPoint), [use_alert_results_toast.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/main/hooks/use_alert_results_toast.tsx#:~:text=toMountPoint), [use_context_app_fetch.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/context/hooks/use_context_app_fetch.tsx#:~:text=toMountPoint), [use_context_app_fetch.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/context/hooks/use_context_app_fetch.tsx#:~:text=toMountPoint), [use_context_app_fetch.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/context/hooks/use_context_app_fetch.tsx#:~:text=toMountPoint), [use_context_app_fetch.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/context/hooks/use_context_app_fetch.tsx#:~:text=toMountPoint), [not_found_route.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/not_found/not_found_route.tsx#:~:text=toMountPoint), [not_found_route.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/not_found/not_found_route.tsx#:~:text=toMountPoint), [view_alert_utils.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/view_alert/view_alert_utils.tsx#:~:text=toMountPoint), [view_alert_utils.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/view_alert/view_alert_utils.tsx#:~:text=toMountPoint)+ 4 more | - | +| | [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=KibanaThemeProvider), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=KibanaThemeProvider), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=KibanaThemeProvider), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=KibanaThemeProvider), [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=KibanaThemeProvider), [show_open_search_panel.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/main/components/top_nav/show_open_search_panel.tsx#:~:text=KibanaThemeProvider), [show_open_search_panel.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/main/components/top_nav/show_open_search_panel.tsx#:~:text=KibanaThemeProvider), [show_open_search_panel.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/main/components/top_nav/show_open_search_panel.tsx#:~:text=KibanaThemeProvider), [open_alerts_popover.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/main/components/top_nav/open_alerts_popover.tsx#:~:text=KibanaThemeProvider), [open_alerts_popover.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/main/components/top_nav/open_alerts_popover.tsx#:~:text=KibanaThemeProvider)+ 1 more | - | | | [on_save_search.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx#:~:text=SavedObjectSaveModal), [on_save_search.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/main/components/top_nav/on_save_search.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | | | [saved_search_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/embeddable/saved_search_embeddable.tsx#:~:text=executeTriggerActions), [search_embeddable_factory.ts](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/embeddable/search_embeddable_factory.ts#:~:text=executeTriggerActions), [plugin.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/plugin.tsx#:~:text=executeTriggerActions) | - | | | [discover_state.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/discover/public/application/main/services/discover_state.test.ts#:~:text=savedObjects) | - | @@ -622,6 +699,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [customize_panel_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx#:~:text=toMountPoint), [customize_panel_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx#:~:text=toMountPoint), [open_add_panel_flyout.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/add_panel_flyout/open_add_panel_flyout.tsx#:~:text=toMountPoint), [open_add_panel_flyout.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/add_panel_flyout/open_add_panel_flyout.tsx#:~:text=toMountPoint), [send_message_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/test_samples/actions/send_message_action.tsx#:~:text=toMountPoint), [send_message_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/test_samples/actions/send_message_action.tsx#:~:text=toMountPoint), [send_message_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/test_samples/actions/send_message_action.tsx#:~:text=toMountPoint), [contact_card_embeddable_factory.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory.tsx#:~:text=toMountPoint), [contact_card_embeddable_factory.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory.tsx#:~:text=toMountPoint), [contact_card_exportable_embeddable_factory.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable_factory.tsx#:~:text=toMountPoint)+ 1 more | - | | | [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | | | [container.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [container.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [container.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [container.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [explicit_input.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/explicit_input.test.ts#:~:text=executeTriggerActions) | - | | | [default_embeddable_factory_provider.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/embeddables/default_embeddable_factory_provider.ts#:~:text=SavedObjectAttributes), [default_embeddable_factory_provider.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/embeddables/default_embeddable_factory_provider.ts#:~:text=SavedObjectAttributes), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/types.ts#:~:text=SavedObjectAttributes), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/types.ts#:~:text=SavedObjectAttributes) | - | @@ -645,6 +723,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [find_or_create_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/analytics/utils/find_or_create_data_view.ts#:~:text=title), [analytics_collection_explore_table_formulas.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_explore_table_formulas.ts#:~:text=title), [find_or_create_data_view.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/analytics/utils/find_or_create_data_view.test.ts#:~:text=title), [find_or_create_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/analytics/utils/find_or_create_data_view.ts#:~:text=title), [analytics_collection_explore_table_formulas.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_explore_table_formulas.ts#:~:text=title), [find_or_create_data_view.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/analytics/utils/find_or_create_data_view.test.ts#:~:text=title) | - | | | [find_or_create_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/analytics/utils/find_or_create_data_view.ts#:~:text=title), [analytics_collection_explore_table_formulas.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_explore_table_formulas.ts#:~:text=title), [find_or_create_data_view.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/analytics/utils/find_or_create_data_view.test.ts#:~:text=title), [find_or_create_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/analytics/utils/find_or_create_data_view.ts#:~:text=title), [analytics_collection_explore_table_formulas.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_explore_table_formulas.ts#:~:text=title), [find_or_create_data_view.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/analytics/utils/find_or_create_data_view.test.ts#:~:text=title) | - | | | [find_or_create_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/analytics/utils/find_or_create_data_view.ts#:~:text=title), [analytics_collection_explore_table_formulas.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/analytics/components/analytics_collection_view/analytics_collection_explore_table_formulas.ts#:~:text=title), [find_or_create_data_view.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/analytics/utils/find_or_create_data_view.test.ts#:~:text=title) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/index.tsx#:~:text=KibanaThemeProvider) | - | | | [account_settings.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/account_settings/account_settings.tsx#:~:text=uiApi), [account_settings.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/account_settings/account_settings.tsx#:~:text=uiApi), [account_settings.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/account_settings/account_settings.tsx#:~:text=uiApi), [account_settings.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/public/applications/workplace_search/views/account_settings/account_settings.tsx#:~:text=uiApi) | - | | | [check_access.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/lib/check_access.ts#:~:text=authz), [check_access.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/lib/check_access.ts#:~:text=authz), [check_access.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/lib/check_access.ts#:~:text=authz) | - | | | [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes), [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes), [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes), [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes), [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes), [telemetry.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/enterprise_search/server/collectors/lib/telemetry.ts#:~:text=SavedObjectAttributes) | - | @@ -663,6 +742,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [get_table_list.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/get_table_list.tsx#:~:text=toMountPoint), [get_table_list.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/get_table_list.tsx#:~:text=toMountPoint) | - | | | [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=SimpleSavedObject), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=SimpleSavedObject) | - | | | [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=SavedObjectReference), [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=SavedObjectReference), [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=SavedObjectReference) | - | @@ -676,16 +756,115 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [observability_data_views.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.ts#:~:text=title), [report_definition_field.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx#:~:text=title), [use_filter_values.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts#:~:text=title), [filter_value_btn.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx#:~:text=title), [sample_attribute.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts#:~:text=title), [sample_attribute_kpi.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts#:~:text=title), [sample_attribute_with_reference_lines.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts#:~:text=title), [test_formula_metric_attribute.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts#:~:text=title), [single_metric_attributes.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts#:~:text=title), [single_metric_attributes.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts#:~:text=title)+ 14 more | - | | | [observability_data_views.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.ts#:~:text=title), [report_definition_field.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/report_definition_field.tsx#:~:text=title), [use_filter_values.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/use_filter_values.ts#:~:text=title), [filter_value_btn.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/series_editor/columns/filter_value_btn.tsx#:~:text=title), [sample_attribute.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute.ts#:~:text=title), [sample_attribute_kpi.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_kpi.ts#:~:text=title), [sample_attribute_with_reference_lines.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/sample_attribute_with_reference_lines.ts#:~:text=title), [test_formula_metric_attribute.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/test_data/test_formula_metric_attribute.ts#:~:text=title), [single_metric_attributes.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts#:~:text=title), [single_metric_attributes.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/configurations/lens_attributes/single_metric_attributes.test.ts#:~:text=title)+ 2 more | - | | | [use_discover_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/hooks/use_discover_link.tsx#:~:text=indexPatternId) | - | +| | [add_to_case_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.tsx#:~:text=toMountPoint), [add_to_case_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.tsx#:~:text=toMountPoint) | - | | | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/application/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/application/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/application/index.tsx#:~:text=RedirectAppLinks) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/application/index.tsx#:~:text=KibanaThemeProvider) | - | | | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/application/types.ts#:~:text=SavedObjectsStart), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/exploratory_view/public/application/types.ts#:~:text=SavedObjectsStart) | - | +## expressionError + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [error_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_error/public/expression_renderers/error_renderer.tsx#:~:text=KibanaThemeProvider), [error_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_error/public/expression_renderers/error_renderer.tsx#:~:text=KibanaThemeProvider), [error_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_error/public/expression_renderers/error_renderer.tsx#:~:text=KibanaThemeProvider), [debug_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx#:~:text=KibanaThemeProvider), [debug_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx#:~:text=KibanaThemeProvider), [debug_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx#:~:text=KibanaThemeProvider) | - | + + + +## expressionGauge + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [gauge_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_gauge/public/expression_renderers/gauge_renderer.tsx#:~:text=KibanaThemeProvider), [gauge_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_gauge/public/expression_renderers/gauge_renderer.tsx#:~:text=KibanaThemeProvider), [gauge_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_gauge/public/expression_renderers/gauge_renderer.tsx#:~:text=KibanaThemeProvider) | - | + + + +## expressionHeatmap + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [heatmap_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_heatmap/public/expression_renderers/heatmap_renderer.tsx#:~:text=KibanaThemeProvider), [heatmap_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_heatmap/public/expression_renderers/heatmap_renderer.tsx#:~:text=KibanaThemeProvider), [heatmap_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_heatmap/public/expression_renderers/heatmap_renderer.tsx#:~:text=KibanaThemeProvider) | - | + + + +## expressionImage + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [image_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_image/public/expression_renderers/image_renderer.tsx#:~:text=KibanaThemeProvider), [image_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_image/public/expression_renderers/image_renderer.tsx#:~:text=KibanaThemeProvider), [image_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_image/public/expression_renderers/image_renderer.tsx#:~:text=KibanaThemeProvider) | - | + + + +## expressionLegacyMetricVis + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [metric_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_legacy_metric/public/expression_renderers/metric_vis_renderer.tsx#:~:text=KibanaThemeProvider), [metric_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_legacy_metric/public/expression_renderers/metric_vis_renderer.tsx#:~:text=KibanaThemeProvider), [metric_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_legacy_metric/public/expression_renderers/metric_vis_renderer.tsx#:~:text=KibanaThemeProvider) | - | + + + +## expressionMetric + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [metric_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx#:~:text=KibanaThemeProvider), [metric_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx#:~:text=KibanaThemeProvider), [metric_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx#:~:text=KibanaThemeProvider) | - | + + + +## expressionMetricVis + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [metric_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_metric/public/expression_renderers/metric_vis_renderer.tsx#:~:text=KibanaThemeProvider), [metric_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_metric/public/expression_renderers/metric_vis_renderer.tsx#:~:text=KibanaThemeProvider), [metric_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_metric/public/expression_renderers/metric_vis_renderer.tsx#:~:text=KibanaThemeProvider) | - | + + + ## expressionPartitionVis | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [get_color.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.test.ts#:~:text=fieldFormats), [get_color.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.test.ts#:~:text=fieldFormats), [get_color.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.test.ts#:~:text=fieldFormats), [get_color.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.test.ts#:~:text=fieldFormats), [get_color.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.test.ts#:~:text=fieldFormats), [get_color.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.test.ts#:~:text=fieldFormats), [get_color.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.test.ts#:~:text=fieldFormats), [get_color.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_partition_vis/public/utils/layers/get_color.test.ts#:~:text=fieldFormats) | - | +| | [partition_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_partition_vis/public/expression_renderers/partition_vis_renderer.tsx#:~:text=KibanaThemeProvider), [partition_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_partition_vis/public/expression_renderers/partition_vis_renderer.tsx#:~:text=KibanaThemeProvider), [partition_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_partition_vis/public/expression_renderers/partition_vis_renderer.tsx#:~:text=KibanaThemeProvider) | - | + + + +## expressionRepeatImage + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [repeat_image_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx#:~:text=KibanaThemeProvider), [repeat_image_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx#:~:text=KibanaThemeProvider), [repeat_image_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx#:~:text=KibanaThemeProvider) | - | + + + +## expressionRevealImage + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [reveal_image_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx#:~:text=KibanaThemeProvider), [reveal_image_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx#:~:text=KibanaThemeProvider), [reveal_image_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx#:~:text=KibanaThemeProvider) | - | + + + +## expressionShape + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [shape_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx#:~:text=KibanaThemeProvider), [shape_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx#:~:text=KibanaThemeProvider), [shape_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx#:~:text=KibanaThemeProvider), [progress_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx#:~:text=KibanaThemeProvider), [progress_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx#:~:text=KibanaThemeProvider), [progress_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx#:~:text=KibanaThemeProvider) | - | + + + +## expressionTagcloud + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [tagcloud_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_tagcloud/public/expression_renderers/tagcloud_renderer.tsx#:~:text=KibanaThemeProvider), [tagcloud_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_tagcloud/public/expression_renderers/tagcloud_renderer.tsx#:~:text=KibanaThemeProvider), [tagcloud_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_tagcloud/public/expression_renderers/tagcloud_renderer.tsx#:~:text=KibanaThemeProvider) | - | + + + +## expressionXY + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [xy_chart_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx#:~:text=KibanaThemeProvider), [xy_chart_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx#:~:text=KibanaThemeProvider), [xy_chart_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx#:~:text=KibanaThemeProvider) | - | @@ -709,6 +888,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [mount_management_section.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/files_management/public/mount_management_section.tsx#:~:text=toMountPoint), [mount_management_section.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/files_management/public/mount_management_section.tsx#:~:text=toMountPoint) | - | +| | [mount_management_section.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/files_management/public/mount_management_section.tsx#:~:text=KibanaThemeProvider), [mount_management_section.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/files_management/public/mount_management_section.tsx#:~:text=KibanaThemeProvider), [mount_management_section.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/files_management/public/mount_management_section.tsx#:~:text=KibanaThemeProvider) | - | | | [app.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/files_management/public/app.tsx#:~:text=withoutPageTemplateWrapper) | - | @@ -723,7 +904,9 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [query_bar.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=title), [query_bar.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=title) | - | | | [query_bar.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/query_bar.tsx#:~:text=title) | - | | | [use_get_logs_discover_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/multi_page_layout/hooks/use_get_logs_discover_link.tsx#:~:text=indexPatternId) | - | +| | [use_confirm_open_unverified.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_confirm_open_unverified.tsx#:~:text=toMountPoint), [use_confirm_open_unverified.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_confirm_open_unverified.tsx#:~:text=toMountPoint), [use_package_install.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx#:~:text=toMountPoint), [use_package_install.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx#:~:text=toMountPoint), [use_package_install.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx#:~:text=toMountPoint), [use_package_install.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx#:~:text=toMountPoint), [use_package_install.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx#:~:text=toMountPoint), [use_package_install.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx#:~:text=toMountPoint), [use_package_install.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx#:~:text=toMountPoint), [use_package_install.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx#:~:text=toMountPoint)+ 12 more | - | | | [tutorial_directory_header_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx#:~:text=RedirectAppLinks), [tutorial_directory_header_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx#:~:text=RedirectAppLinks), [tutorial_directory_header_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx#:~:text=RedirectAppLinks), [custom_assets_accordion.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx#:~:text=RedirectAppLinks), [custom_assets_accordion.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx#:~:text=RedirectAppLinks), [custom_assets_accordion.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx#:~:text=RedirectAppLinks), [agent_logs.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=RedirectAppLinks), [agent_logs.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=RedirectAppLinks), [agent_logs.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/app.tsx#:~:text=RedirectAppLinks)+ 5 more | - | +| | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/fleet/app.tsx#:~:text=KibanaThemeProvider) | - | | | [agent_policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/common/services/agent_policy_config.test.ts#:~:text=mode), [agent_policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/common/services/agent_policy_config.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode) | 8.8.0 | | | [agent_policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/common/services/agent_policy_config.test.ts#:~:text=mode), [agent_policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/common/services/agent_policy_config.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode) | 8.8.0 | | | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/index.tsx#:~:text=appBasePath) | 8.8.0 | @@ -731,6 +914,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## globalSearchBar + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/global_search_bar/public/plugin.tsx#:~:text=KibanaThemeProvider), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/global_search_bar/public/plugin.tsx#:~:text=KibanaThemeProvider), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/global_search_bar/public/plugin.tsx#:~:text=KibanaThemeProvider) | - | + + + ## globalSearchProviders | Deprecated API | Reference location(s) | Remove By | @@ -752,6 +943,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [deserialize.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.ts#:~:text=getNonScriptedFields), [datasource.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/state_management/datasource.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields), [deserialize.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.ts#:~:text=getNonScriptedFields), [datasource.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/state_management/datasource.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields) | - | | | [datasource.sagas.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/state_management/datasource.sagas.ts#:~:text=title), [persistence.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/state_management/persistence.ts#:~:text=title), [persistence.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/state_management/persistence.ts#:~:text=title), [datasource.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/state_management/datasource.test.ts#:~:text=title) | - | | | [deserialize.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.ts#:~:text=getNonScriptedFields), [datasource.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/state_management/datasource.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields), [deserialize.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/deserialize.test.ts#:~:text=getNonScriptedFields) | - | +| | [confirm_modal_promise.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx#:~:text=toMountPoint), [confirm_modal_promise.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx#:~:text=toMountPoint), [workspace_top_nav_menu.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx#:~:text=toMountPoint), [workspace_top_nav_menu.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx#:~:text=toMountPoint), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=toMountPoint), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=toMountPoint) | - | +| | [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=KibanaThemeProvider) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/server/plugin.ts#:~:text=license%24) | 8.8.0 | | | [save_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | | | [app_state.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/types/app_state.ts#:~:text=SimpleSavedObject), [app_state.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/types/app_state.ts#:~:text=SimpleSavedObject), [find_object_by_title.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/saved_objects_utils/find_object_by_title.test.ts#:~:text=SimpleSavedObject), [find_object_by_title.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/saved_objects_utils/find_object_by_title.test.ts#:~:text=SimpleSavedObject) | - | @@ -763,6 +956,22 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## grokdebugger + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/grokdebugger/public/shared_imports.ts#:~:text=KibanaThemeProvider) | - | + + + +## guidedOnboarding + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/guided_onboarding/public/plugin.tsx#:~:text=KibanaThemeProvider), [plugin.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/guided_onboarding/public/plugin.tsx#:~:text=KibanaThemeProvider), [plugin.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/guided_onboarding/public/plugin.tsx#:~:text=KibanaThemeProvider) | - | + + + ## home | Deprecated API | Reference location(s) | Remove By | @@ -771,6 +980,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [saved_objects.ts](https://github.com/elastic/kibana/tree/main/src/plugins/home/server/services/sample_data/data_sets/logs_tsdb/saved_objects.ts#:~:text=migrationVersion), [saved_objects.ts](https://github.com/elastic/kibana/tree/main/src/plugins/home/server/services/sample_data/data_sets/logs_tsdb/saved_objects.ts#:~:text=migrationVersion), [saved_objects.ts](https://github.com/elastic/kibana/tree/main/src/plugins/home/server/services/sample_data/data_sets/logs_tsdb/saved_objects.ts#:~:text=migrationVersion), [saved_objects.ts](https://github.com/elastic/kibana/tree/main/src/plugins/home/server/services/sample_data/data_sets/logs_tsdb/saved_objects.ts#:~:text=migrationVersion), [saved_objects.ts](https://github.com/elastic/kibana/tree/main/src/plugins/home/server/services/sample_data/data_sets/logs_tsdb/saved_objects.ts#:~:text=migrationVersion), [saved_objects.ts](https://github.com/elastic/kibana/tree/main/src/plugins/home/server/services/sample_data/data_sets/logs_tsdb/saved_objects.ts#:~:text=migrationVersion), [saved_objects.ts](https://github.com/elastic/kibana/tree/main/src/plugins/home/server/services/sample_data/data_sets/logs_tsdb/saved_objects.ts#:~:text=migrationVersion), [saved_objects.ts](https://github.com/elastic/kibana/tree/main/src/plugins/home/server/services/sample_data/data_sets/logs_tsdb/saved_objects.ts#:~:text=migrationVersion), [saved_objects.ts](https://github.com/elastic/kibana/tree/main/src/plugins/home/server/services/sample_data/data_sets/logs_tsdb/saved_objects.ts#:~:text=migrationVersion), [saved_objects.ts](https://github.com/elastic/kibana/tree/main/src/plugins/home/server/services/sample_data/data_sets/logs_tsdb/saved_objects.ts#:~:text=migrationVersion)+ 30 more | - | | | [tutorial_directory.js](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/tutorial_directory.js#:~:text=KibanaPageTemplate), [tutorial_directory.js](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/tutorial_directory.js#:~:text=KibanaPageTemplate), [tutorial_directory.js](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/tutorial_directory.js#:~:text=KibanaPageTemplate), [tutorial.js](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/tutorial/tutorial.js#:~:text=KibanaPageTemplate), [tutorial.js](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/tutorial/tutorial.js#:~:text=KibanaPageTemplate), [tutorial.js](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/tutorial/tutorial.js#:~:text=KibanaPageTemplate), [tutorial.js](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/tutorial/tutorial.js#:~:text=KibanaPageTemplate) | - | | | [add_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/add_data/add_data.tsx#:~:text=RedirectAppLinks), [add_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/add_data/add_data.tsx#:~:text=RedirectAppLinks), [add_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/add_data/add_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/application.tsx#:~:text=RedirectAppLinks), [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/application.tsx#:~:text=RedirectAppLinks)+ 1 more | - | +| | [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/application.tsx#:~:text=KibanaThemeProvider) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/plugin.ts#:~:text=savedObjects) | - | | | [kibana_services.ts](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/kibana_services.ts#:~:text=SavedObjectsClientContract), [kibana_services.ts](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/kibana_services.ts#:~:text=SavedObjectsClientContract) | - | | | [home_app.js](https://github.com/elastic/kibana/tree/main/src/plugins/home/public/application/components/home_app.js#:~:text=bulkCreate) | - | @@ -782,6 +992,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [configure_image.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/image_embeddable/public/image_editor/configure_image.tsx#:~:text=toMountPoint), [configure_image.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/image_embeddable/public/image_editor/configure_image.tsx#:~:text=toMountPoint) | - | | | [image_embeddable_factory.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/image_embeddable/public/image_embeddable/image_embeddable_factory.tsx#:~:text=executeTriggerActions) | - | @@ -791,10 +1002,20 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/index.tsx#:~:text=RedirectAppLinks) | - | +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/shared_imports.ts#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/public/application/index.tsx#:~:text=KibanaThemeProvider) | - | | | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/server/services/license.ts#:~:text=license%24) | 8.8.0 | +## indexManagement + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [component_template_edit.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_edit/component_template_edit.tsx#:~:text=toMountPoint), [component_template_edit.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_edit/component_template_edit.tsx#:~:text=toMountPoint) | - | +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_management/public/shared_imports.ts#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_management/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_management/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_management/public/application/index.tsx#:~:text=KibanaThemeProvider) | - | + + + ## infra | Deprecated API | Reference location(s) | Remove By | @@ -804,10 +1025,19 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/common/dependency_mocks/index_patterns.ts#:~:text=title), [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/common/dependency_mocks/index_patterns.ts#:~:text=title), [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/common/dependency_mocks/index_patterns.ts#:~:text=title), [use_data_view.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_data_view.test.ts#:~:text=title), [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title)+ 6 more | - | | | [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/common/dependency_mocks/index_patterns.ts#:~:text=title), [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/common/dependency_mocks/index_patterns.ts#:~:text=title), [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/common/dependency_mocks/index_patterns.ts#:~:text=title), [use_data_view.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_data_view.test.ts#:~:text=title), [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title)+ 6 more | - | | | [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [validation_errors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/logs/settings/validation_errors.ts#:~:text=title), [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/common/dependency_mocks/index_patterns.ts#:~:text=title), [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/common/dependency_mocks/index_patterns.ts#:~:text=title), [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/common/dependency_mocks/index_patterns.ts#:~:text=title), [use_data_view.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_data_view.test.ts#:~:text=title) | - | +| | [common_providers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/apps/common_providers.tsx#:~:text=KibanaThemeProvider), [common_providers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/apps/common_providers.tsx#:~:text=KibanaThemeProvider), [common_providers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/apps/common_providers.tsx#:~:text=KibanaThemeProvider) | - | | | [log_threshold_references_manager.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/server/lib/alerting/log_threshold/log_threshold_references_manager.ts#:~:text=SavedObjectReference), [log_threshold_references_manager.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/server/lib/alerting/log_threshold/log_threshold_references_manager.ts#:~:text=SavedObjectReference), [log_threshold_references_manager.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/server/lib/alerting/log_threshold/log_threshold_references_manager.ts#:~:text=SavedObjectReference), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/common/visualizations/types.ts#:~:text=SavedObjectReference), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/common/visualizations/types.ts#:~:text=SavedObjectReference), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/common/visualizations/types.ts#:~:text=SavedObjectReference), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/common/visualizations/lens/utils.ts#:~:text=SavedObjectReference), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/common/visualizations/lens/utils.ts#:~:text=SavedObjectReference), [xy_chart.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/common/visualizations/lens/visualization_types/xy_chart.ts#:~:text=SavedObjectReference), [xy_chart.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/common/visualizations/lens/visualization_types/xy_chart.ts#:~:text=SavedObjectReference)+ 10 more | - | +## ingestPipelines + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ingest_pipelines/public/shared_imports.ts#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ingest_pipelines/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ingest_pipelines/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ingest_pipelines/public/application/index.tsx#:~:text=KibanaThemeProvider) | - | + + + ## inputControlVis | Deprecated API | Reference location(s) | Remove By | @@ -821,15 +1051,32 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## inspector + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/inspector/public/plugin.tsx#:~:text=toMountPoint), [plugin.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/inspector/public/plugin.tsx#:~:text=toMountPoint) | - | + + + ## kibanaOverview | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [add_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/components/add_data/add_data.tsx#:~:text=RedirectAppLinks), [add_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/components/add_data/add_data.tsx#:~:text=RedirectAppLinks), [add_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/components/add_data/add_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks), [manage_data.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx#:~:text=RedirectAppLinks) | - | +| | [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/application.tsx#:~:text=KibanaThemeProvider) | - | | | [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_overview/public/application.tsx#:~:text=appBasePath) | 8.8.0 | +## kibanaReact + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [eui_styled_components.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_react/common/eui_styled_components.tsx#:~:text=KibanaStyledComponentsThemeProviderDecorator), [eui_styled_components.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_react/common/eui_styled_components.tsx#:~:text=KibanaStyledComponentsThemeProviderDecorator), [index.ts](https://github.com/elastic/kibana/tree/main/src/plugins/kibana_react/common/index.ts#:~:text=KibanaStyledComponentsThemeProviderDecorator) | - | + + + ## kibanaUtils | Deprecated API | Reference location(s) | Remove By | @@ -845,6 +1092,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [loader.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/data_views_service/loader.ts#:~:text=title), [lens_top_nav.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx#:~:text=title), [loader.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/data_views_service/loader.ts#:~:text=title), [lens_top_nav.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx#:~:text=title) | - | | | [loader.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/data_views_service/loader.ts#:~:text=title), [lens_top_nav.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx#:~:text=title), [loader.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/data_views_service/loader.ts#:~:text=title), [lens_top_nav.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx#:~:text=title) | - | | | [loader.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/data_views_service/loader.ts#:~:text=title), [lens_top_nav.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx#:~:text=title) | - | +| | [confirm_modal_promise.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/persistence/saved_objects_utils/confirm_modal_promise.tsx#:~:text=toMountPoint), [confirm_modal_promise.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/persistence/saved_objects_utils/confirm_modal_promise.tsx#:~:text=toMountPoint), [remove_layer_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_actions/remove_layer_action.tsx#:~:text=toMountPoint), [remove_layer_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_actions/remove_layer_action.tsx#:~:text=toMountPoint), [revert_changes_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/revert_changes_action.tsx#:~:text=toMountPoint), [revert_changes_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/revert_changes_action.tsx#:~:text=toMountPoint), [helpers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/trigger_actions/open_lens_config/helpers.ts#:~:text=toMountPoint), [helpers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/trigger_actions/open_lens_config/helpers.ts#:~:text=toMountPoint) | - | +| | [help_popover.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/datasources/form_based/help_popover.tsx#:~:text=KibanaThemeProvider), [help_popover.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/datasources/form_based/help_popover.tsx#:~:text=KibanaThemeProvider), [help_popover.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/datasources/form_based/help_popover.tsx#:~:text=KibanaThemeProvider), [expression.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/datatable/expression.tsx#:~:text=KibanaThemeProvider), [expression.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/datatable/expression.tsx#:~:text=KibanaThemeProvider), [expression.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/datatable/expression.tsx#:~:text=KibanaThemeProvider), [save_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx#:~:text=KibanaThemeProvider), [save_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx#:~:text=KibanaThemeProvider), [save_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx#:~:text=KibanaThemeProvider), [settings_menu.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/app_plugin/settings_menu.tsx#:~:text=KibanaThemeProvider)+ 12 more | - | | | [save_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx#:~:text=SavedObjectSaveModal), [save_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | | | [find_object_by_title.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/persistence/saved_objects_utils/find_object_by_title.test.ts#:~:text=SavedObjectsClientContract), [find_object_by_title.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/persistence/saved_objects_utils/find_object_by_title.test.ts#:~:text=SavedObjectsClientContract), [find_object_by_title.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/persistence/saved_objects_utils/find_object_by_title.test.ts#:~:text=SavedObjectsClientContract) | - | | | [find_object_by_title.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/persistence/saved_objects_utils/find_object_by_title.test.ts#:~:text=SimpleSavedObject), [find_object_by_title.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/persistence/saved_objects_utils/find_object_by_title.test.ts#:~:text=SimpleSavedObject) | - | @@ -859,10 +1108,19 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/license_management/public/shared_imports.ts#:~:text=KibanaThemeProvider), [app_providers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/license_management/public/application/app_providers.tsx#:~:text=KibanaThemeProvider), [app_providers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/license_management/public/application/app_providers.tsx#:~:text=KibanaThemeProvider), [app_providers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/license_management/public/application/app_providers.tsx#:~:text=KibanaThemeProvider) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/license_management/public/plugin.ts#:~:text=license%24) | 8.8.0 | +## licensing + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [expired_banner.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/licensing/public/expired_banner.tsx#:~:text=toMountPoint), [expired_banner.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/licensing/public/expired_banner.tsx#:~:text=toMountPoint) | - | + + + ## lists | Deprecated API | Reference location(s) | Remove By | @@ -895,6 +1153,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/logstash/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/logstash/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/logstash/public/application/index.tsx#:~:text=KibanaThemeProvider) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/logstash/public/plugin.ts#:~:text=license%24) | 8.8.0 | | | [save.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/logstash/server/routes/pipeline/save.ts#:~:text=authc) | - | @@ -904,6 +1163,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [management_app.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/management/public/components/management_app/management_app.tsx#:~:text=KibanaThemeProvider), [management_app.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/management/public/components/management_app/management_app.tsx#:~:text=KibanaThemeProvider), [management_app.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/management/public/components/management_app/management_app.tsx#:~:text=KibanaThemeProvider) | - | | | [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/management/public/application.tsx#:~:text=appBasePath) | 8.8.0 | @@ -918,6 +1178,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [es_search_source.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=flattenHit), [es_search_source.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=flattenHit), [es_search_source.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=flattenHit), [es_search_source.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=flattenHit) | - | | | [es_tooltip_property.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/classes/tooltips/es_tooltip_property.test.ts#:~:text=title) | - | | | [es_search_source.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=flattenHit), [es_search_source.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/classes/sources/es_search_source/es_search_source.tsx#:~:text=flattenHit) | - | +| | [render_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/render_app.tsx#:~:text=toMountPoint), [render_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/render_app.tsx#:~:text=toMountPoint) | - | +| | [map_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/embeddable/map_embeddable.tsx#:~:text=KibanaThemeProvider), [map_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/embeddable/map_embeddable.tsx#:~:text=KibanaThemeProvider), [map_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/embeddable/map_embeddable.tsx#:~:text=KibanaThemeProvider), [render_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/render_app.tsx#:~:text=KibanaThemeProvider), [render_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/render_app.tsx#:~:text=KibanaThemeProvider), [render_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/render_app.tsx#:~:text=KibanaThemeProvider) | - | | | [map_attribute_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/map_attribute_service.ts#:~:text=ResolvedSimpleSavedObject), [map_attribute_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/map_attribute_service.ts#:~:text=ResolvedSimpleSavedObject), [map_attribute_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/map_attribute_service.ts#:~:text=ResolvedSimpleSavedObject), [map_attribute_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/map_attribute_service.ts#:~:text=ResolvedSimpleSavedObject) | - | | | [references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/common/migrations/references.ts#:~:text=SavedObjectReference), [references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/common/migrations/references.ts#:~:text=SavedObjectReference), [references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/common/migrations/references.ts#:~:text=SavedObjectReference), [references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/common/migrations/references.ts#:~:text=SavedObjectReference), [references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/common/migrations/references.ts#:~:text=SavedObjectReference), [map_attribute_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/map_attribute_service.ts#:~:text=SavedObjectReference), [map_attribute_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/map_attribute_service.ts#:~:text=SavedObjectReference) | - | | | [setup_saved_objects.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/server/saved_objects/setup_saved_objects.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | @@ -942,7 +1204,9 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/data_frame_analytics/index_patterns.ts#:~:text=title), [rollup.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/job_service/new_job_caps/rollup.ts#:~:text=title), [alerting_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/lib/alerts/alerting_service.ts#:~:text=title), [data_recognizer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts#:~:text=title), [configuration_step_details.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_details.tsx#:~:text=title), [data_loader.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/datavisualizer/index_based/data_loader/data_loader.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title)+ 40 more | - | | | [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/data_frame_analytics/index_patterns.ts#:~:text=title), [rollup.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/job_service/new_job_caps/rollup.ts#:~:text=title), [alerting_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/lib/alerts/alerting_service.ts#:~:text=title), [data_recognizer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts#:~:text=title), [configuration_step_details.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_details.tsx#:~:text=title), [data_loader.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/datavisualizer/index_based/data_loader/data_loader.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title)+ 40 more | - | | | [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/data_frame_analytics/index_patterns.ts#:~:text=title), [rollup.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/job_service/new_job_caps/rollup.ts#:~:text=title), [alerting_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/lib/alerts/alerting_service.ts#:~:text=title), [data_recognizer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts#:~:text=title), [configuration_step_details.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_details.tsx#:~:text=title), [data_loader.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/datavisualizer/index_based/data_loader/data_loader.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title)+ 15 more | - | +| | [clone_action_name.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_action_name.tsx#:~:text=toMountPoint), [clone_action_name.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_action_name.tsx#:~:text=toMountPoint), [force_stop_dialog.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/model_management/force_stop_dialog.tsx#:~:text=toMountPoint), [force_stop_dialog.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/model_management/force_stop_dialog.tsx#:~:text=toMountPoint), [deployment_setup.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/model_management/deployment_setup.tsx#:~:text=toMountPoint), [deployment_setup.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/model_management/deployment_setup.tsx#:~:text=toMountPoint), [header_menu_portal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/components/header_menu_portal/header_menu_portal.tsx#:~:text=toMountPoint), [header_menu_portal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/components/header_menu_portal/header_menu_portal.tsx#:~:text=toMountPoint), [create_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/job_creation/common/create_flyout.tsx#:~:text=toMountPoint), [create_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/job_creation/common/create_flyout.tsx#:~:text=toMountPoint)+ 10 more | - | | | [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=RedirectAppLinks), [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=RedirectAppLinks), [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=RedirectAppLinks) | - | +| | [anomaly_charts_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx#:~:text=KibanaThemeProvider), [anomaly_charts_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx#:~:text=KibanaThemeProvider), [anomaly_charts_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx#:~:text=KibanaThemeProvider), [anomaly_swimlane_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx#:~:text=KibanaThemeProvider), [anomaly_swimlane_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx#:~:text=KibanaThemeProvider), [anomaly_swimlane_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/app.tsx#:~:text=KibanaThemeProvider), [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=KibanaThemeProvider)+ 2 more | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/plugin.ts#:~:text=license%24) | 8.8.0 | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/plugin.ts#:~:text=license%24) | 8.8.0 | | | [annotations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/routes/annotations.ts#:~:text=authc) | - | @@ -958,6 +1222,24 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | ---------------|-----------|-----------| | | [base_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/server/alerts/base_rule.ts#:~:text=alertFactory) | - | | | [url_state.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/url_state.ts#:~:text=syncQueryStateWithUrl), [url_state.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/url_state.ts#:~:text=syncQueryStateWithUrl) | - | +| | [use_request_error_handler.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/application/hooks/use_request_error_handler.tsx#:~:text=toMountPoint), [use_request_error_handler.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/application/hooks/use_request_error_handler.tsx#:~:text=toMountPoint), [use_request_error_handler.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/application/hooks/use_request_error_handler.tsx#:~:text=toMountPoint), [alerts_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/alerts/lib/alerts_toast.tsx#:~:text=toMountPoint), [alerts_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/alerts/lib/alerts_toast.tsx#:~:text=toMountPoint), [ingest_pipeline_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/application/pages/elasticsearch/ingest_pipeline_modal.tsx#:~:text=toMountPoint), [ingest_pipeline_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/application/pages/elasticsearch/ingest_pipeline_modal.tsx#:~:text=toMountPoint), [listing.js](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/components/cluster/listing/listing.js#:~:text=toMountPoint), [listing.js](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/components/cluster/listing/listing.js#:~:text=toMountPoint), [listing.js](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/components/cluster/listing/listing.js#:~:text=toMountPoint) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/monitoring/public/application/index.tsx#:~:text=KibanaThemeProvider) | - | + + + +## navigation + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [top_nav_menu.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx#:~:text=MountPointPortal), [top_nav_menu.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx#:~:text=MountPointPortal), [top_nav_menu.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx#:~:text=MountPointPortal) | - | + + + +## newsfeed + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/newsfeed/public/plugin.tsx#:~:text=KibanaThemeProvider), [plugin.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/newsfeed/public/plugin.tsx#:~:text=KibanaThemeProvider), [plugin.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/newsfeed/public/plugin.tsx#:~:text=KibanaThemeProvider) | - | @@ -969,7 +1251,9 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [threshold_rule_expression.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/threshold_rule_expression.tsx#:~:text=title), [alert_details_app_section.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/components/alert_details_app_section.tsx#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title)+ 2 more | - | | | [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [threshold_rule_expression.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/threshold_rule_expression.tsx#:~:text=title), [alert_details_app_section.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/components/alert_details_app_section.tsx#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title)+ 2 more | - | | | [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [use_metrics_explorer_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/hooks/use_metrics_explorer_data.ts#:~:text=title), [threshold_rule_expression.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/threshold_rule_expression.tsx#:~:text=title), [alert_details_app_section.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/threshold/components/alert_details_app_section.tsx#:~:text=title) | - | +| | [header_menu_portal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/pages/overview/components/header_menu/header_menu_portal.tsx#:~:text=toMountPoint), [header_menu_portal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/pages/overview/components/header_menu/header_menu_portal.tsx#:~:text=toMountPoint) | - | | | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/application/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/application/index.tsx#:~:text=RedirectAppLinks), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/application/index.tsx#:~:text=RedirectAppLinks) | - | +| | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/application/index.tsx#:~:text=KibanaThemeProvider) | - | | | [render_cell_value.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/alerts_table/render_cell_value.tsx#:~:text=DeprecatedCellValueElementProps), [render_cell_value.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/components/alerts_table/render_cell_value.tsx#:~:text=DeprecatedCellValueElementProps) | - | @@ -979,10 +1263,19 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_onboarding/public/application/app.tsx#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_onboarding/public/application/app.tsx#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_onboarding/public/application/app.tsx#:~:text=RedirectAppLinks) | - | +| | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_onboarding/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_onboarding/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_onboarding/public/application/app.tsx#:~:text=KibanaThemeProvider) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_onboarding/server/plugin.ts#:~:text=legacy) | - | +## observabilityShared + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [header_menu_portal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_shared/public/components/header_menu/header_menu_portal.tsx#:~:text=toMountPoint), [header_menu_portal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_shared/public/components/header_menu/header_menu_portal.tsx#:~:text=toMountPoint) | - | + + + ## osquery | Deprecated API | Reference location(s) | Remove By | @@ -991,6 +1284,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion), [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion), [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion), [read_pack_route.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/routes/pack/read_pack_route.ts#:~:text=migrationVersion) | - | | | [pack_queries_status_table.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/packs/pack_queries_status_table.tsx#:~:text=indexPatternId), [view_results_in_discover.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/discover/view_results_in_discover.tsx#:~:text=indexPatternId), [use_discover_link.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/common/hooks/use_discover_link.tsx#:~:text=indexPatternId) | - | | | [empty_state.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/components/empty_state.tsx#:~:text=KibanaPageTemplate), [empty_state.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/components/empty_state.tsx#:~:text=KibanaPageTemplate) | - | +| | [osquery_result_wrapper.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result_wrapper.tsx#:~:text=KibanaThemeProvider), [osquery_result_wrapper.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result_wrapper.tsx#:~:text=KibanaThemeProvider), [osquery_result_wrapper.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result_wrapper.tsx#:~:text=KibanaThemeProvider), [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/shared_imports.ts#:~:text=KibanaThemeProvider), [osquery_results.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_results.tsx#:~:text=KibanaThemeProvider), [osquery_results.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_results.tsx#:~:text=KibanaThemeProvider), [osquery_results.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_results.tsx#:~:text=KibanaThemeProvider), [services_wrapper.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/shared_components/services_wrapper.tsx#:~:text=KibanaThemeProvider), [services_wrapper.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/shared_components/services_wrapper.tsx#:~:text=KibanaThemeProvider), [services_wrapper.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/public/shared_components/services_wrapper.tsx#:~:text=KibanaThemeProvider)+ 3 more | - | | | [create_action_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/osquery/server/handlers/action/create_action_service.ts#:~:text=license%24) | 8.8.0 | @@ -999,6 +1293,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/shared_imports.ts#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/application/index.tsx#:~:text=KibanaThemeProvider) | - | | | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24) | 8.8.0 | | | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/server/services/license.ts#:~:text=license%24) | 8.8.0 | @@ -1022,6 +1317,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/profiling/public/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/profiling/public/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/profiling/public/app.tsx#:~:text=KibanaThemeProvider) | - | | | [license_context.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/profiling/public/components/contexts/license/license_context.tsx#:~:text=license%24) | 8.8.0 | @@ -1030,14 +1326,24 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/remote_clusters/public/shared_imports.ts#:~:text=KibanaThemeProvider) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/remote_clusters/server/plugin.ts#:~:text=license%24) | 8.8.0 | +## reporting + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [job_failure.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/reporting/public/notifier/job_failure.tsx#:~:text=toMountPoint), [job_failure.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/reporting/public/notifier/job_failure.tsx#:~:text=toMountPoint), [job_failure.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/reporting/public/notifier/job_failure.tsx#:~:text=toMountPoint), [general_error.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/reporting/public/notifier/general_error.tsx#:~:text=toMountPoint), [general_error.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/reporting/public/notifier/general_error.tsx#:~:text=toMountPoint), [job_success.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/reporting/public/notifier/job_success.tsx#:~:text=toMountPoint), [job_success.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/reporting/public/notifier/job_success.tsx#:~:text=toMountPoint), [job_success.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/reporting/public/notifier/job_success.tsx#:~:text=toMountPoint), [job_warning_formulas.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/reporting/public/notifier/job_warning_formulas.tsx#:~:text=toMountPoint), [job_warning_formulas.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/reporting/public/notifier/job_warning_formulas.tsx#:~:text=toMountPoint)+ 9 more | - | + + + ## rollup | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/rollup/public/shared_imports.ts#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/rollup/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/rollup/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/rollup/public/application.tsx#:~:text=KibanaThemeProvider) | - | | | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/rollup/server/services/license.ts#:~:text=license%24) | 8.8.0 | @@ -1050,11 +1356,21 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## runtimeFields + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/runtime_fields/public/shared_imports.ts#:~:text=toMountPoint), [load_editor.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/runtime_fields/public/load_editor.tsx#:~:text=toMountPoint), [load_editor.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/runtime_fields/public/load_editor.tsx#:~:text=toMountPoint) | - | + + + ## savedObjects | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [saved_object.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/saved_object.test.ts#:~:text=indexPatterns), [saved_object.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/saved_object.test.ts#:~:text=indexPatterns) | - | +| | [confirm_modal_promise.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/helpers/confirm_modal_promise.tsx#:~:text=toMountPoint), [confirm_modal_promise.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/helpers/confirm_modal_promise.tsx#:~:text=toMountPoint) | - | +| | [show_saved_object_save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/save_modal/show_saved_object_save_modal.tsx#:~:text=KibanaThemeProvider), [show_saved_object_save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/save_modal/show_saved_object_save_modal.tsx#:~:text=KibanaThemeProvider), [show_saved_object_save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/save_modal/show_saved_object_save_modal.tsx#:~:text=KibanaThemeProvider) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/plugin.ts#:~:text=savedObjects) | - | | | [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/types.ts#:~:text=SavedObjectsClientContract), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/types.ts#:~:text=SavedObjectsClientContract), [initialize_saved_object.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/helpers/initialize_saved_object.ts#:~:text=SavedObjectsClientContract), [initialize_saved_object.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/helpers/initialize_saved_object.ts#:~:text=SavedObjectsClientContract), [find_object_by_title.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/helpers/find_object_by_title.ts#:~:text=SavedObjectsClientContract), [find_object_by_title.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/helpers/find_object_by_title.ts#:~:text=SavedObjectsClientContract), [find_object_by_title.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/helpers/find_object_by_title.ts#:~:text=SavedObjectsClientContract), [save_with_confirmation.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/helpers/save_with_confirmation.ts#:~:text=SavedObjectsClientContract), [save_with_confirmation.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/helpers/save_with_confirmation.ts#:~:text=SavedObjectsClientContract), [find_object_by_title.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/helpers/find_object_by_title.test.ts#:~:text=SavedObjectsClientContract)+ 5 more | - | | | [create_source.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/helpers/create_source.ts#:~:text=create), [create_source.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/helpers/create_source.ts#:~:text=create), [save_saved_object.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/helpers/save_saved_object.ts#:~:text=create), [save_with_confirmation.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/helpers/save_with_confirmation.ts#:~:text=create), [save_with_confirmation.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/helpers/save_with_confirmation.ts#:~:text=create), [saved_object.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/saved_object.test.ts#:~:text=create), [saved_object.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/saved_object.test.ts#:~:text=create), [saved_object.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/saved_object.test.ts#:~:text=create), [saved_object.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/saved_object.test.ts#:~:text=create), [saved_object.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects/public/saved_object/saved_object.test.ts#:~:text=create)+ 9 more | - | @@ -1090,6 +1406,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [open_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/components/edition_modal/open_modal.tsx#:~:text=toMountPoint), [open_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/components/edition_modal/open_modal.tsx#:~:text=toMountPoint), [open_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/components/edition_modal/open_modal.tsx#:~:text=toMountPoint), [open_assign_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/components/assign_flyout/open_assign_flyout.tsx#:~:text=toMountPoint), [open_assign_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/components/assign_flyout/open_assign_flyout.tsx#:~:text=toMountPoint) | - | +| | [mount_section.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/management/mount_section.tsx#:~:text=KibanaThemeProvider), [mount_section.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/management/mount_section.tsx#:~:text=KibanaThemeProvider), [mount_section.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/management/mount_section.tsx#:~:text=KibanaThemeProvider) | - | | | [request_handler_context.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/server/request_handler_context.ts#:~:text=authz) | - | | | [get_table_column_definition.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/ui_api/get_table_column_definition.tsx#:~:text=SavedObject), [get_table_column_definition.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/ui_api/get_table_column_definition.tsx#:~:text=SavedObject), [get_table_column_definition.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/ui_api/get_table_column_definition.tsx#:~:text=SavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/common/types.ts#:~:text=SavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/common/types.ts#:~:text=SavedObject), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/utils.ts#:~:text=SavedObject), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/utils.ts#:~:text=SavedObject), [utils.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/utils.test.ts#:~:text=SavedObject), [utils.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/utils.test.ts#:~:text=SavedObject), [utils.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/utils.test.ts#:~:text=SavedObject)+ 3 more | - | | | [get_table_column_definition.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/ui_api/get_table_column_definition.tsx#:~:text=SavedObjectReference), [get_table_column_definition.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/ui_api/get_table_column_definition.tsx#:~:text=SavedObjectReference), [references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/common/references.ts#:~:text=SavedObjectReference), [references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/common/references.ts#:~:text=SavedObjectReference), [references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/common/references.ts#:~:text=SavedObjectReference), [references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/common/references.ts#:~:text=SavedObjectReference), [references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/common/references.ts#:~:text=SavedObjectReference), [references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/common/references.ts#:~:text=SavedObjectReference), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/utils.ts#:~:text=SavedObjectReference), [utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/saved_objects_tagging/public/utils.ts#:~:text=SavedObjectReference)+ 11 more | - | @@ -1125,6 +1443,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/shared_imports.ts#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/application/index.tsx#:~:text=KibanaThemeProvider) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24) | 8.8.0 | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/server/plugin.ts#:~:text=license%24) | 8.8.0 | @@ -1144,6 +1463,8 @@ This is relied on by the reporting feature, and should be removed once reporting migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/issues/19914 | | | [app_authorization.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/app_authorization.ts#:~:text=getKibanaFeatures), [privileges.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.ts#:~:text=getKibanaFeatures), [authorization_service.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/authorization_service.tsx#:~:text=getKibanaFeatures), [app_authorization.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/app_authorization.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures)+ 15 more | 8.8.0 | | | [authorization_service.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/authorization_service.tsx#:~:text=getElasticsearchFeatures) | 8.8.0 | +| | [use_update_user_profile.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/account_management/user_profile/use_update_user_profile.tsx#:~:text=toMountPoint), [use_update_user_profile.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/account_management/user_profile/use_update_user_profile.tsx#:~:text=toMountPoint), [session_expiration_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/session/session_expiration_toast.tsx#:~:text=toMountPoint), [session_expiration_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/session/session_expiration_toast.tsx#:~:text=toMountPoint) | - | +| | [access_agreement_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/access_agreement/access_agreement_page.tsx#:~:text=KibanaThemeProvider), [access_agreement_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/access_agreement/access_agreement_page.tsx#:~:text=KibanaThemeProvider), [access_agreement_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/access_agreement/access_agreement_page.tsx#:~:text=KibanaThemeProvider), [logged_out_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/logged_out/logged_out_page.tsx#:~:text=KibanaThemeProvider), [logged_out_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/logged_out/logged_out_page.tsx#:~:text=KibanaThemeProvider), [logged_out_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/logged_out/logged_out_page.tsx#:~:text=KibanaThemeProvider), [login_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/login/login_page.tsx#:~:text=KibanaThemeProvider), [login_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/login/login_page.tsx#:~:text=KibanaThemeProvider), [login_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/login/login_page.tsx#:~:text=KibanaThemeProvider), [overwritten_session_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/overwritten_session/overwritten_session_page.tsx#:~:text=KibanaThemeProvider)+ 20 more | - | | | [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode) | 8.8.0 | | | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/plugin.tsx#:~:text=license%24) | 8.8.0 | | | [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode) | 8.8.0 | @@ -1162,12 +1483,14 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [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=migrationVersion), [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=migrationVersion), [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=migrationVersion), [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=migrationVersion), [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=migrationVersion), [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=migrationVersion), [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=migrationVersion), [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=migrationVersion), [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=migrationVersion), [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=migrationVersion)+ 12 more | - | | | [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) | - | | | [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=migrationVersion), [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=migrationVersion), [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=migrationVersion), [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=migrationVersion), [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=migrationVersion), [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=migrationVersion), [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=migrationVersion), [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=migrationVersion), [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=migrationVersion), [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=migrationVersion)+ 78 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), [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), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/filter_group/index.tsx#:~:text=title), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/components/detection_page_filters/index.tsx#:~: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)+ 22 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), [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), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/filter_group/index.tsx#:~:text=title), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/components/detection_page_filters/index.tsx#:~:text=title), [risk_score_preview_section.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx#:~: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)+ 24 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), [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), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/filter_group/index.tsx#:~:text=title), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/components/detection_page_filters/index.tsx#:~: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)+ 22 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), [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), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/filter_group/index.tsx#:~:text=title), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/components/detection_page_filters/index.tsx#:~: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)+ 6 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), [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), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/filter_group/index.tsx#:~:text=title), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/components/detection_page_filters/index.tsx#:~:text=title), [risk_score_preview_section.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx#:~: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)+ 24 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), [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), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/filter_group/index.tsx#:~:text=title), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/detections/components/detection_page_filters/index.tsx#:~:text=title), [risk_score_preview_section.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/entity_analytics/components/risk_score_preview_section.tsx#:~: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)+ 7 more | - | +| | [use_update_data_view.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/sourcerer/use_update_data_view.tsx#:~:text=toMountPoint), [use_update_data_view.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/sourcerer/use_update_data_view.tsx#:~:text=toMountPoint), [use_update_data_view.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/components/sourcerer/use_update_data_view.tsx#:~:text=toMountPoint), [ingest_pipelines.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/explore/containers/risk_score/onboarding/api/ingest_pipelines.ts#:~:text=toMountPoint), [ingest_pipelines.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/explore/containers/risk_score/onboarding/api/ingest_pipelines.ts#:~:text=toMountPoint), [ingest_pipelines.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/explore/containers/risk_score/onboarding/api/ingest_pipelines.ts#:~:text=toMountPoint), [stored_scripts.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/explore/containers/risk_score/onboarding/api/stored_scripts.ts#:~:text=toMountPoint), [stored_scripts.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/explore/containers/risk_score/onboarding/api/stored_scripts.ts#:~:text=toMountPoint), [stored_scripts.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/explore/containers/risk_score/onboarding/api/stored_scripts.ts#:~:text=toMountPoint), [saved_objects.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/explore/containers/risk_score/onboarding/api/saved_objects.ts#:~:text=toMountPoint)+ 5 more | - | +| | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/app/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/app/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/app/app.tsx#:~:text=KibanaThemeProvider) | - | | | [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 | @@ -1198,10 +1521,35 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ +## serverless + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/serverless/public/plugin.tsx#:~:text=KibanaThemeProvider), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/serverless/public/plugin.tsx#:~:text=KibanaThemeProvider), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/serverless/public/plugin.tsx#:~:text=KibanaThemeProvider) | - | + + + +## serverlessSearch + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [elasticsearch.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/serverless_search/public/application/elasticsearch.tsx#:~:text=KibanaThemeProvider), [elasticsearch.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/serverless_search/public/application/elasticsearch.tsx#:~:text=KibanaThemeProvider), [elasticsearch.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/serverless_search/public/application/elasticsearch.tsx#:~:text=KibanaThemeProvider), [indexing_api.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/serverless_search/public/application/indexing_api.tsx#:~:text=KibanaThemeProvider), [indexing_api.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/serverless_search/public/application/indexing_api.tsx#:~:text=KibanaThemeProvider), [indexing_api.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/serverless_search/public/application/indexing_api.tsx#:~:text=KibanaThemeProvider) | - | + + + +## share + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [share_menu_manager.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/share/public/services/share_menu_manager.tsx#:~:text=KibanaThemeProvider), [share_menu_manager.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/share/public/services/share_menu_manager.tsx#:~:text=KibanaThemeProvider), [share_menu_manager.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/share/public/services/share_menu_manager.tsx#:~:text=KibanaThemeProvider), [page.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/share/public/url_service/redirect/components/page.tsx#:~:text=KibanaThemeProvider), [page.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/share/public/url_service/redirect/components/page.tsx#:~:text=KibanaThemeProvider), [page.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/share/public/url_service/redirect/components/page.tsx#:~:text=KibanaThemeProvider), [page.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/share/public/url_service/redirect/components/page.tsx#:~:text=KibanaThemeProvider), [page.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/share/public/url_service/redirect/components/page.tsx#:~:text=KibanaThemeProvider) | - | + + + ## snapshotRestore | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/snapshot_restore/public/shared_imports.ts#:~:text=KibanaThemeProvider), [app_providers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/snapshot_restore/public/application/app_providers.tsx#:~:text=KibanaThemeProvider), [app_providers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/snapshot_restore/public/application/app_providers.tsx#:~:text=KibanaThemeProvider), [app_providers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/snapshot_restore/public/application/app_providers.tsx#:~:text=KibanaThemeProvider) | - | | | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/snapshot_restore/server/services/license.ts#:~:text=license%24) | 8.8.0 | @@ -1211,6 +1559,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [on_post_auth_interceptor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.ts#:~:text=getKibanaFeatures), [spaces_usage_collector.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.ts#:~:text=getKibanaFeatures), [on_post_auth_interceptor.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/lib/request_interceptors/on_post_auth_interceptor.test.ts#:~:text=getKibanaFeatures) | 8.8.0 | +| | [spaces_management_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/management/spaces_management_app.tsx#:~:text=KibanaThemeProvider), [spaces_management_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/management/spaces_management_app.tsx#:~:text=KibanaThemeProvider), [spaces_management_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/management/spaces_management_app.tsx#:~:text=KibanaThemeProvider), [nav_control.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/nav_control/nav_control.tsx#:~:text=KibanaThemeProvider), [nav_control.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/nav_control/nav_control.tsx#:~:text=KibanaThemeProvider), [nav_control.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/nav_control/nav_control.tsx#:~:text=KibanaThemeProvider), [space_selector.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/space_selector/space_selector.tsx#:~:text=KibanaThemeProvider), [space_selector.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/space_selector/space_selector.tsx#:~:text=KibanaThemeProvider), [space_selector.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/space_selector/space_selector.tsx#:~:text=KibanaThemeProvider) | - | | | [spaces_usage_collector.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/plugin.ts#:~:text=license%24), [spaces_usage_collector.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.test.ts#:~:text=license%24) | 8.8.0 | | | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/legacy_urls/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/legacy_urls/types.ts#:~:text=ResolvedSimpleSavedObject) | - | | | [copy_to_space_flyout_internal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.tsx#:~:text=createNewCopy) | - | @@ -1239,8 +1588,9 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | ---------------|-----------|-----------| | | [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/common.ts#:~:text=alertFactory), [message_utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/tls_rule/message_utils.ts#:~:text=alertFactory), [tls_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/tls_rule/tls_rule.ts#:~:text=alertFactory), [monitor_status_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/alert_rules/status_rule/monitor_status_rule.ts#:~:text=alertFactory) | - | | | [stderr_logs.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx#:~:text=indexPatternId) | - | +| | [toast_title.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/toast_title.tsx#:~:text=toMountPoint), [toast_title.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/toast_title.tsx#:~:text=toMountPoint), [delete_monitor.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx#:~:text=toMountPoint), [delete_monitor.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx#:~:text=toMountPoint), [delete_monitor.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx#:~:text=toMountPoint), [browser_test_results.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/browser_test_results.tsx#:~:text=toMountPoint), [browser_test_results.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/browser_test_results.tsx#:~:text=toMountPoint), [delete_param.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx#:~:text=toMountPoint), [delete_param.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx#:~:text=toMountPoint), [delete_param.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx#:~:text=toMountPoint)+ 6 more | - | | | [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=RedirectAppLinks), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=RedirectAppLinks), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=RedirectAppLinks) | - | -| | [api.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts#:~:text=SavedObject), [api.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts#:~:text=SavedObject), [effects.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/effects.ts#:~:text=SavedObject), [effects.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/effects.ts#:~:text=SavedObject) | - | +| | [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=KibanaThemeProvider), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=KibanaThemeProvider), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=KibanaThemeProvider) | - | @@ -1252,6 +1602,14 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ +## telemetry + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [render_opt_in_status_notice_banner.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/telemetry/public/services/telemetry_notifications/render_opt_in_status_notice_banner.tsx#:~:text=toMountPoint), [render_opt_in_status_notice_banner.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/telemetry/public/services/telemetry_notifications/render_opt_in_status_notice_banner.tsx#:~:text=toMountPoint) | - | + + + ## threatIntelligence | Deprecated API | Reference location(s) | Remove By | @@ -1269,6 +1627,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [index_pattern.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/timelines/public/mock/index_pattern.ts#:~:text=title), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts#:~:text=title), [index_pattern.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/timelines/public/mock/index_pattern.ts#:~:text=title), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts#:~:text=title) | - | | | [index_pattern.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/timelines/public/mock/index_pattern.ts#:~:text=title), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts#:~:text=title), [index_pattern.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/timelines/public/mock/index_pattern.ts#:~:text=title), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts#:~:text=title) | - | | | [index_pattern.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/timelines/public/mock/index_pattern.ts#:~:text=title), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/timelines/server/search_strategy/index_fields/index.ts#:~:text=title) | - | +| | [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx#:~:text=toMountPoint), [add_to_timeline.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx#:~:text=toMountPoint) | - | @@ -1280,6 +1639,8 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [filter_term_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx#:~:text=title), [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/hooks/use_search_items/common.ts#:~:text=title), [es_index_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/services/es_index_service.ts#:~:text=title), [transforms.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/server/routes/api/transforms.ts#:~:text=title), [common.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/common.test.ts#:~:text=title), [filter_term_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx#:~:text=title), [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/hooks/use_search_items/common.ts#:~:text=title), [es_index_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/services/es_index_service.ts#:~:text=title), [transforms.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/server/routes/api/transforms.ts#:~:text=title), [common.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/common.test.ts#:~:text=title) | - | | | [filter_term_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx#:~:text=title), [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/hooks/use_search_items/common.ts#:~:text=title), [es_index_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/services/es_index_service.ts#:~:text=title), [transforms.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/server/routes/api/transforms.ts#:~:text=title), [common.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/common.test.ts#:~:text=title), [filter_term_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx#:~:text=title), [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/hooks/use_search_items/common.ts#:~:text=title), [es_index_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/services/es_index_service.ts#:~:text=title), [transforms.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/server/routes/api/transforms.ts#:~:text=title), [common.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/common.test.ts#:~:text=title) | - | | | [filter_term_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/filter_agg/components/filter_term_form.tsx#:~:text=title), [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/hooks/use_search_items/common.ts#:~:text=title), [es_index_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/services/es_index_service.ts#:~:text=title), [transforms.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/server/routes/api/transforms.ts#:~:text=title), [common.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_define/common/common.test.ts#:~:text=title) | - | +| | [toast_notification_text.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/components/toast_notification_text.tsx#:~:text=toMountPoint), [toast_notification_text.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/components/toast_notification_text.tsx#:~:text=toMountPoint), [step_create_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx#:~:text=toMountPoint), [step_create_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx#:~:text=toMountPoint), [step_create_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx#:~:text=toMountPoint), [step_create_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx#:~:text=toMountPoint), [step_create_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx#:~:text=toMountPoint), [step_details_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_details/step_details_form.tsx#:~:text=toMountPoint), [step_details_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_details/step_details_form.tsx#:~:text=toMountPoint), [step_details_form.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/sections/create_transform/components/step_details/step_details_form.tsx#:~:text=toMountPoint)+ 21 more | - | +| | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/app.tsx#:~:text=KibanaThemeProvider) | - | | | [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/server/services/license.ts#:~:text=license%24) | 8.8.0 | | | [mount_management_section.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/mount_management_section.ts#:~:text=savedObjects) | - | | | [app_dependencies.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/app_dependencies.tsx#:~:text=SavedObjectsStart), [app_dependencies.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/public/app/app_dependencies.tsx#:~:text=SavedObjectsStart) | - | @@ -1293,10 +1654,21 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [data_apis.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts#:~:text=title), [data_apis.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts#:~:text=title) | - | | | [data_apis.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts#:~:text=title), [data_apis.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts#:~:text=title) | - | | | [data_apis.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts#:~:text=title) | - | +| | [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [rule_details.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx#:~:text=toMountPoint), [rule_details.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx#:~:text=toMountPoint) | - | +| | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/app.tsx#:~:text=KibanaThemeProvider), [connectors_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx#:~:text=KibanaThemeProvider), [connectors_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx#:~:text=KibanaThemeProvider), [connectors_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx#:~:text=KibanaThemeProvider), [test_utils.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx#:~:text=KibanaThemeProvider), [test_utils.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx#:~:text=KibanaThemeProvider), [test_utils.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx#:~:text=KibanaThemeProvider) | - | | | [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute), [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute), [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute), [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute) | - | +## uiActions + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [hello_world_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/ui_actions/public/tests/test_samples/hello_world_action.tsx#:~:text=toMountPoint), [hello_world_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/ui_actions/public/tests/test_samples/hello_world_action.tsx#:~:text=toMountPoint) | - | +| | [open_context_menu.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/ui_actions/public/context_menu/open_context_menu.tsx#:~:text=KibanaThemeProvider), [open_context_menu.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/ui_actions/public/context_menu/open_context_menu.tsx#:~:text=KibanaThemeProvider), [open_context_menu.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/ui_actions/public/context_menu/open_context_menu.tsx#:~:text=KibanaThemeProvider) | - | + + + ## uiActionsEnhanced | Deprecated API | Reference location(s) | Remove By | @@ -1314,6 +1686,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [value_suggestion_provider.ts](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/public/autocomplete/providers/value_suggestion_provider.ts#:~:text=title), [fetch_index_patterns.ts](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/public/query_string_input/fetch_index_patterns.ts#:~:text=title), [change_dataview.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/public/dataview_picker/change_dataview.tsx#:~:text=title) | - | | | [terms_enum.ts](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/server/autocomplete/terms_enum.ts#:~:text=getFieldByName), [terms_enum.ts](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/server/autocomplete/terms_enum.ts#:~:text=getFieldByName), [terms_agg.ts](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/server/autocomplete/terms_agg.ts#:~:text=getFieldByName), [terms_agg.ts](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/server/autocomplete/terms_agg.ts#:~:text=getFieldByName) | - | | | [terms_enum.ts](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/server/autocomplete/terms_enum.ts#:~:text=findIndexPatternById), [terms_enum.ts](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/server/autocomplete/terms_enum.ts#:~:text=findIndexPatternById), [terms_agg.ts](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/server/autocomplete/terms_agg.ts#:~:text=findIndexPatternById), [terms_agg.ts](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/server/autocomplete/terms_agg.ts#:~:text=findIndexPatternById) | - | +| | [query_string_input.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/public/query_string_input/query_string_input.tsx#:~:text=toMountPoint), [query_string_input.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/public/query_string_input/query_string_input.tsx#:~:text=toMountPoint), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=toMountPoint), [apply_filter_action.ts](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/public/actions/apply_filter_action.ts#:~:text=toMountPoint) | - | | | [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/public/types.ts#:~:text=savedObjects), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/unified_search/public/types.ts#:~:text=savedObjects) | - | @@ -1326,6 +1699,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [external_links.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx#:~:text=title), [external_links.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx#:~:text=title) | - | | | [external_links.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/application/components/es_deprecation_logs/fix_deprecation_logs/external_links.tsx#:~:text=title) | - | | | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/shared_imports.ts#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/application/app.tsx#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/application/app.tsx#:~:text=RedirectAppLinks), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/application/app.tsx#:~:text=RedirectAppLinks) | - | +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/shared_imports.ts#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/public/application/app.tsx#:~:text=KibanaThemeProvider) | - | | | [reindex_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24) | 8.8.0 | | | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/common/types.ts#:~:text=SavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/common/types.ts#:~:text=SavedObject) | - | @@ -1339,7 +1713,9 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title), [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title) | - | | | [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title), [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title) | - | | | [filter_group.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/filter_group/filter_group.tsx#:~:text=title), [filters_expression_select.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/overview/alerts/monitor_expressions/filters_expression_select.tsx#:~:text=title) | - | +| | [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=toMountPoint), [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=toMountPoint), [ml_flyout_container.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx#:~:text=toMountPoint), [ml_flyout_container.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx#:~:text=toMountPoint), [ml_flyout_container.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx#:~:text=toMountPoint) | - | | | [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=RedirectAppLinks), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=RedirectAppLinks) | - | +| | [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=KibanaThemeProvider), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=KibanaThemeProvider), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=KibanaThemeProvider) | - | | | [synthetics_monitor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/common/types/synthetics_monitor.ts#:~:text=SimpleSavedObject), [synthetics_monitor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/common/types/synthetics_monitor.ts#:~:text=SimpleSavedObject) | - | @@ -1352,6 +1728,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [use_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts#:~:text=title), [use_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts#:~:text=title) | - | | | [use_data_view.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ux/public/components/app/rum_dashboard/local_uifilters/use_data_view.ts#:~:text=title) | - | | | [ux_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ux/public/application/ux_app.tsx#:~:text=RedirectAppLinks), [ux_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ux/public/application/ux_app.tsx#:~:text=RedirectAppLinks), [ux_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ux/public/application/ux_app.tsx#:~:text=RedirectAppLinks) | - | +| | [ux_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ux/public/application/ux_app.tsx#:~:text=KibanaThemeProvider), [ux_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ux/public/application/ux_app.tsx#:~:text=KibanaThemeProvider), [ux_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ux/public/application/ux_app.tsx#:~:text=KibanaThemeProvider) | - | @@ -1362,6 +1739,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [field.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/components/controls/field.tsx#:~:text=title), [field.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/components/controls/field.tsx#:~:text=title), [agg_select.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/components/agg_select.tsx#:~:text=title), [field.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/components/controls/field.tsx#:~:text=title), [field.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/components/controls/field.tsx#:~:text=title), [agg_select.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/components/agg_select.tsx#:~:text=title) | - | | | [field.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/components/controls/field.tsx#:~:text=title), [field.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/components/controls/field.tsx#:~:text=title), [agg_select.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/components/agg_select.tsx#:~:text=title), [field.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/components/controls/field.tsx#:~:text=title), [field.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/components/controls/field.tsx#:~:text=title), [agg_select.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/components/agg_select.tsx#:~:text=title) | - | | | [field.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/components/controls/field.tsx#:~:text=title), [field.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/components/controls/field.tsx#:~:text=title), [agg_select.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/components/agg_select.tsx#:~:text=title) | - | +| | [default_editor_controller.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/default_editor_controller.tsx#:~:text=KibanaThemeProvider), [default_editor_controller.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/default_editor_controller.tsx#:~:text=KibanaThemeProvider), [default_editor_controller.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_default_editor/public/default_editor_controller.tsx#:~:text=KibanaThemeProvider) | - | @@ -1382,6 +1760,14 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ +## visTypeTable + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [table_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/table/public/table_vis_renderer.tsx#:~:text=KibanaThemeProvider), [table_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/table/public/table_vis_renderer.tsx#:~:text=KibanaThemeProvider), [table_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/table/public/table_vis_renderer.tsx#:~:text=KibanaThemeProvider) | - | + + + ## visTypeTimelion | Deprecated API | Reference location(s) | Remove By | @@ -1389,6 +1775,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [arg_value_suggestions.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timelion/public/helpers/arg_value_suggestions.ts#:~:text=title), [arg_value_suggestions.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timelion/public/helpers/arg_value_suggestions.ts#:~:text=title), [arg_value_suggestions.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timelion/public/helpers/arg_value_suggestions.ts#:~:text=title), [arg_value_suggestions.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timelion/public/helpers/arg_value_suggestions.ts#:~:text=title) | - | | | [arg_value_suggestions.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timelion/public/helpers/arg_value_suggestions.ts#:~:text=title), [arg_value_suggestions.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timelion/public/helpers/arg_value_suggestions.ts#:~:text=title), [arg_value_suggestions.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timelion/public/helpers/arg_value_suggestions.ts#:~:text=title), [arg_value_suggestions.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timelion/public/helpers/arg_value_suggestions.ts#:~:text=title) | - | | | [arg_value_suggestions.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timelion/public/helpers/arg_value_suggestions.ts#:~:text=title), [arg_value_suggestions.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timelion/public/helpers/arg_value_suggestions.ts#:~:text=title) | - | +| | [timelion_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timelion/public/timelion_vis_renderer.tsx#:~:text=KibanaThemeProvider), [timelion_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timelion/public/timelion_vis_renderer.tsx#:~:text=KibanaThemeProvider), [timelion_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timelion/public/timelion_vis_renderer.tsx#:~:text=KibanaThemeProvider) | - | @@ -1402,6 +1789,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [abstract_search_strategy.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts#:~:text=getNonScriptedFields), [fetch_fields.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/public/application/lib/fetch_fields.ts#:~:text=getNonScriptedFields), [abstract_search_strategy.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts#:~:text=getNonScriptedFields), [fetch_fields.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/public/application/lib/fetch_fields.ts#:~:text=getNonScriptedFields) | - | | | [index_patterns_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/common/index_patterns_utils.ts#:~:text=title), [index_patterns_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/common/index_patterns_utils.ts#:~:text=title), [get_fields.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/server/lib/get_fields.ts#:~:text=title), [index_patterns_utils.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/common/index_patterns_utils.test.ts#:~:text=title), [index_patterns_utils.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/common/index_patterns_utils.test.ts#:~:text=title), [convert_series_to_datatable.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/public/application/components/lib/convert_series_to_datatable.ts#:~:text=title), [convert_series_to_datatable.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/public/application/components/lib/convert_series_to_datatable.test.ts#:~:text=title), [datasource_info.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/public/convert_to_lens/lib/datasource/datasource_info.test.ts#:~:text=title), [datasource_info.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/public/convert_to_lens/lib/datasource/datasource_info.test.ts#:~:text=title), [datasource_info.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/public/convert_to_lens/lib/datasource/datasource_info.test.ts#:~:text=title)+ 2 more | - | | | [abstract_search_strategy.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/server/lib/search_strategies/strategies/abstract_search_strategy.ts#:~:text=getNonScriptedFields), [fetch_fields.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/public/application/lib/fetch_fields.ts#:~:text=getNonScriptedFields) | - | +| | [editor_controller.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/public/application/editor_controller.tsx#:~:text=KibanaThemeProvider), [editor_controller.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/public/application/editor_controller.tsx#:~:text=KibanaThemeProvider), [editor_controller.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/public/application/editor_controller.tsx#:~:text=KibanaThemeProvider), [timeseries_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/public/timeseries_vis_renderer.tsx#:~:text=KibanaThemeProvider), [timeseries_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/public/timeseries_vis_renderer.tsx#:~:text=KibanaThemeProvider), [timeseries_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/public/timeseries_vis_renderer.tsx#:~:text=KibanaThemeProvider) | - | | | [query_input_bar_context.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/public/application/contexts/query_input_bar_context.ts#:~:text=SavedObjectsClientContract), [query_input_bar_context.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/timeseries/public/application/contexts/query_input_bar_context.ts#:~:text=SavedObjectsClientContract) | - | @@ -1413,6 +1801,16 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [search_api.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/vega/public/data_model/search_api.ts#:~:text=title), [search_api.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/vega/public/data_model/search_api.ts#:~:text=title) | - | | | [search_api.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/vega/public/data_model/search_api.ts#:~:text=title), [search_api.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/vega/public/data_model/search_api.ts#:~:text=title) | - | | | [search_api.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/vega/public/data_model/search_api.ts#:~:text=title) | - | +| | [vega_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/vega/public/vega_vis_renderer.tsx#:~:text=KibanaThemeProvider), [vega_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/vega/public/vega_vis_renderer.tsx#:~:text=KibanaThemeProvider), [vega_vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/vega/public/vega_vis_renderer.tsx#:~:text=KibanaThemeProvider) | - | + + + +## visTypeVislib + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [vis_controller.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/vislib/public/vis_controller.tsx#:~:text=toMountPoint), [vis_controller.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/vislib/public/vis_controller.tsx#:~:text=toMountPoint) | - | +| | [touchdown_template.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/vislib/public/vislib/partials/touchdown_template.tsx#:~:text=KibanaThemeProvider), [touchdown_template.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/vislib/public/vislib/partials/touchdown_template.tsx#:~:text=KibanaThemeProvider), [touchdown_template.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/vislib/public/vislib/partials/touchdown_template.tsx#:~:text=KibanaThemeProvider), [vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/vislib/public/vis_renderer.tsx#:~:text=KibanaThemeProvider), [vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/vislib/public/vis_renderer.tsx#:~:text=KibanaThemeProvider), [vis_renderer.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/vislib/public/vis_renderer.tsx#:~:text=KibanaThemeProvider) | - | @@ -1420,6 +1818,8 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [confirm_modal_promise.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_objects_utils/confirm_modal_promise.tsx#:~:text=toMountPoint), [confirm_modal_promise.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_objects_utils/confirm_modal_promise.tsx#:~:text=toMountPoint), [use_visualize_app_state.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/utils/use/use_visualize_app_state.tsx#:~:text=toMountPoint), [use_visualize_app_state.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/utils/use/use_visualize_app_state.tsx#:~:text=toMountPoint), [visualize_no_match.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/components/visualize_no_match.tsx#:~:text=toMountPoint), [visualize_no_match.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/components/visualize_no_match.tsx#:~:text=toMountPoint), [index.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/index.tsx#:~:text=toMountPoint), [index.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/index.tsx#:~:text=toMountPoint) | - | +| | [use_visualize_app_state.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/utils/use/use_visualize_app_state.tsx#:~:text=KibanaThemeProvider), [use_visualize_app_state.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/utils/use/use_visualize_app_state.tsx#:~:text=KibanaThemeProvider), [use_visualize_app_state.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/utils/use/use_visualize_app_state.tsx#:~:text=KibanaThemeProvider), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=KibanaThemeProvider), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=KibanaThemeProvider), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=KibanaThemeProvider), [show_new_vis.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/wizard/show_new_vis.tsx#:~:text=KibanaThemeProvider), [show_new_vis.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/wizard/show_new_vis.tsx#:~:text=KibanaThemeProvider), [show_new_vis.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/wizard/show_new_vis.tsx#:~:text=KibanaThemeProvider), [visualize_no_match.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/components/visualize_no_match.tsx#:~:text=KibanaThemeProvider)+ 5 more | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/plugin.ts#:~:text=savedObjects), [visualize_listing.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx#:~:text=savedObjects) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/plugin.ts#:~:text=SavedObjectsClientContract), [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/plugin.ts#:~:text=SavedObjectsClientContract) | - | | | [visualize_listing.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx#:~:text=delete) | - | @@ -1438,4 +1838,5 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [shared_imports.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/application/shared_imports.ts#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/application/index.tsx#:~:text=KibanaThemeProvider), [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/application/index.tsx#:~:text=KibanaThemeProvider) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24) | 8.8.0 | \ No newline at end of file diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index ed0f64dce5615e..e67baea6d08ed6 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -129,9 +129,9 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| upgradeAssistant | | [reindex_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/server/services/license.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/server/services/license.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/server/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/remote_clusters/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/rollup/server/services/license.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/snapshot_restore/server/services/license.ts#:~:text=license%24) | 8.8.0 | -| licenseManagement | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/license_management/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cross_cluster_replication/public/plugin.ts#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24) | 8.8.0 | +| upgradeAssistant | | [reindex_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [reindex_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/upgrade_assistant/server/lib/reindexing/reindex_service.test.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/index_lifecycle_management/server/services/license.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/server/services/license.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/remote_clusters/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/rollup/server/services/license.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/snapshot_restore/server/services/license.ts#:~:text=license%24) | 8.8.0 | | management | | [application.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/management/public/application.tsx#:~:text=appBasePath) | 8.8.0 | +| licenseManagement | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/license_management/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cross_cluster_replication/public/plugin.ts#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/painless_lab/public/plugin.tsx#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/searchprofiler/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/watcher/public/plugin.ts#:~:text=license%24) | 8.8.0 | diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 7df812a6f9d638..9ef460c274cc73 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-07-28 +date: 2023-08-01 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 c05e1abbddd4a3..06882fc0dff22a 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-07-28 +date: 2023-08-01 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 46f90bc15bf00f..09b845680f897f 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-07-28 +date: 2023-08-01 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 8825f6db291bce..d9816433e93333 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/embeddable.devdocs.json b/api_docs/embeddable.devdocs.json index a3efb8ed05233f..cbb78b0f3defe2 100644 --- a/api_docs/embeddable.devdocs.json +++ b/api_docs/embeddable.devdocs.json @@ -5714,7 +5714,7 @@ "label": "openAddPanelFlyout", "description": [], "signature": [ - "({ container, onAddPanel, }: { container: ", + "({ container, onAddPanel, onClose, }: { container: ", { "pluginId": "embeddable", "scope": "public", @@ -5738,7 +5738,7 @@ "section": "def-public.ContainerOutput", "text": "ContainerOutput" }, - ">; onAddPanel?: ((id: string) => void) | undefined; }) => ", + ">; onAddPanel?: ((id: string) => void) | undefined; onClose?: (() => void) | undefined; }) => ", { "pluginId": "@kbn/core-mount-utils-browser", "scope": "common", @@ -5756,7 +5756,7 @@ "id": "def-public.openAddPanelFlyout.$1", "type": "Object", "tags": [], - "label": "{\n container,\n onAddPanel,\n}", + "label": "{\n container,\n onAddPanel,\n onClose,\n}", "description": [], "path": "src/plugins/embeddable/public/add_panel_flyout/open_add_panel_flyout.tsx", "deprecated": false, @@ -5830,6 +5830,22 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "embeddable", + "id": "def-public.openAddPanelFlyout.$1.onClose", + "type": "Function", + "tags": [], + "label": "onClose", + "description": [], + "signature": [ + "(() => void) | undefined" + ], + "path": "src/plugins/embeddable/public/add_panel_flyout/open_add_panel_flyout.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] } ] } @@ -5890,6 +5906,39 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "embeddable", + "id": "def-public.tracksOverlays", + "type": "Function", + "tags": [], + "label": "tracksOverlays", + "description": [], + "signature": [ + "(root: unknown) => root is TracksOverlays" + ], + "path": "src/plugins/embeddable/public/embeddable_panel/panel_actions/track_overlays.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "embeddable", + "id": "def-public.tracksOverlays.$1", + "type": "Unknown", + "tags": [], + "label": "root", + "description": [], + "signature": [ + "unknown" + ], + "path": "src/plugins/embeddable/public/embeddable_panel/panel_actions/track_overlays.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "embeddable", "id": "def-public.useEmbeddableFactory", diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 2d7796323fdeba..85491210709753 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 532 | 11 | 434 | 7 | +| 535 | 11 | 437 | 7 | ## Client diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 782fe2de454d4f..2090a4f944457e 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-07-28 +date: 2023-08-01 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 1630ed004dd7b8..fc35d212e77b00 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-07-28 +date: 2023-08-01 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 40a9601a5166a3..39cf888b72b39d 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-07-28 +date: 2023-08-01 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 bed73dd531aa1a..0ff24bbb87f90e 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-07-28 +date: 2023-08-01 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 9bd938cad38c9f..c812efe202bf8f 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_log.devdocs.json b/api_docs/event_log.devdocs.json index 7442d3398b0096..6c4dd5d9e564ed 100644 --- a/api_docs/event_log.devdocs.json +++ b/api_docs/event_log.devdocs.json @@ -1514,7 +1514,7 @@ "label": "data", "description": [], "signature": [ - "(Readonly<{ log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; message?: string | undefined; tags?: string[] | undefined; rule?: Readonly<{ id?: string | undefined; name?: string | undefined; license?: string | undefined; description?: string | undefined; category?: string | undefined; uuid?: string | undefined; version?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ action?: Readonly<{ id?: string | undefined; name?: string | undefined; execution?: Readonly<{ source?: string | undefined; uuid?: string | undefined; gen_ai?: Readonly<{ usage?: Readonly<{ prompt_tokens?: string | number | undefined; completion_tokens?: string | number | undefined; total_tokens?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; alerting?: Readonly<{ outcome?: string | undefined; status?: string | undefined; summary?: Readonly<{ recovered?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; new?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; ongoing?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; revision?: string | number | undefined; rule_type_id?: string | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ total_search_duration_ms?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_searches?: string | number | undefined; es_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; persist_alerts_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; total_enrichment_duration_ms?: string | number | undefined; } & {}> | undefined; status_order?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; uuid?: string | undefined; flapping?: boolean | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; version?: string | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; } & {}> | undefined; event?: Readonly<{ type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; id?: string | undefined; start?: string | undefined; end?: string | undefined; category?: string[] | undefined; outcome?: string | undefined; kind?: string | undefined; duration?: string | number | undefined; url?: string | undefined; timezone?: string | undefined; risk_score?: number | undefined; severity?: string | number | undefined; code?: string | undefined; provider?: string | undefined; created?: string | undefined; dataset?: string | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; original?: string | undefined; reference?: string | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; user?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}> | undefined)[]" + "(Readonly<{ log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; message?: string | undefined; tags?: string[] | undefined; rule?: Readonly<{ id?: string | undefined; name?: string | undefined; license?: string | undefined; description?: string | undefined; category?: string | undefined; uuid?: string | undefined; version?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ action?: Readonly<{ id?: string | undefined; name?: string | undefined; execution?: Readonly<{ source?: string | undefined; uuid?: string | undefined; gen_ai?: Readonly<{ usage?: Readonly<{ prompt_tokens?: string | number | undefined; completion_tokens?: string | number | undefined; total_tokens?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; alerting?: Readonly<{ outcome?: string | undefined; status?: string | undefined; summary?: Readonly<{ recovered?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; new?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; ongoing?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; revision?: string | number | undefined; rule_type_id?: string | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ total_search_duration_ms?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_searches?: string | number | undefined; es_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; persist_alerts_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; total_enrichment_duration_ms?: string | number | undefined; } & {}> | undefined; status_order?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; uuid?: string | undefined; flapping?: boolean | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; version?: string | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; } & {}> | undefined; event?: Readonly<{ type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; id?: string | undefined; start?: string | undefined; end?: string | undefined; category?: string[] | undefined; outcome?: string | undefined; kind?: string | undefined; duration?: string | number | undefined; url?: string | undefined; timezone?: string | undefined; risk_score?: number | undefined; severity?: string | number | undefined; code?: string | undefined; created?: string | undefined; dataset?: string | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; original?: string | undefined; provider?: string | undefined; reference?: string | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; user?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}> | undefined)[]" ], "path": "x-pack/plugins/event_log/server/es/cluster_client_adapter.ts", "deprecated": false, @@ -1534,7 +1534,7 @@ "label": "IEvent", "description": [], "signature": [ - "DeepPartial | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; message?: string | undefined; tags?: string[] | undefined; rule?: Readonly<{ id?: string | undefined; name?: string | undefined; license?: string | undefined; description?: string | undefined; category?: string | undefined; uuid?: string | undefined; version?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ action?: Readonly<{ id?: string | undefined; name?: string | undefined; execution?: Readonly<{ source?: string | undefined; uuid?: string | undefined; gen_ai?: Readonly<{ usage?: Readonly<{ prompt_tokens?: string | number | undefined; completion_tokens?: string | number | undefined; total_tokens?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; alerting?: Readonly<{ outcome?: string | undefined; status?: string | undefined; summary?: Readonly<{ recovered?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; new?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; ongoing?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; revision?: string | number | undefined; rule_type_id?: string | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ total_search_duration_ms?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_searches?: string | number | undefined; es_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; persist_alerts_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; total_enrichment_duration_ms?: string | number | undefined; } & {}> | undefined; status_order?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; uuid?: string | undefined; flapping?: boolean | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; version?: string | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; } & {}> | undefined; event?: Readonly<{ type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; id?: string | undefined; start?: string | undefined; end?: string | undefined; category?: string[] | undefined; outcome?: string | undefined; kind?: string | undefined; duration?: string | number | undefined; url?: string | undefined; timezone?: string | undefined; risk_score?: number | undefined; severity?: string | number | undefined; code?: string | undefined; provider?: string | undefined; created?: string | undefined; dataset?: string | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; original?: string | undefined; reference?: string | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; user?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}>>> | undefined" + "DeepPartial | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; message?: string | undefined; tags?: string[] | undefined; rule?: Readonly<{ id?: string | undefined; name?: string | undefined; license?: string | undefined; description?: string | undefined; category?: string | undefined; uuid?: string | undefined; version?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ action?: Readonly<{ id?: string | undefined; name?: string | undefined; execution?: Readonly<{ source?: string | undefined; uuid?: string | undefined; gen_ai?: Readonly<{ usage?: Readonly<{ prompt_tokens?: string | number | undefined; completion_tokens?: string | number | undefined; total_tokens?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; alerting?: Readonly<{ outcome?: string | undefined; status?: string | undefined; summary?: Readonly<{ recovered?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; new?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; ongoing?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; revision?: string | number | undefined; rule_type_id?: string | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ total_search_duration_ms?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_searches?: string | number | undefined; es_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; persist_alerts_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; total_enrichment_duration_ms?: string | number | undefined; } & {}> | undefined; status_order?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; uuid?: string | undefined; flapping?: boolean | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; version?: string | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; } & {}> | undefined; event?: Readonly<{ type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; id?: string | undefined; start?: string | undefined; end?: string | undefined; category?: string[] | undefined; outcome?: string | undefined; kind?: string | undefined; duration?: string | number | undefined; url?: string | undefined; timezone?: string | undefined; risk_score?: number | undefined; severity?: string | number | undefined; code?: string | undefined; created?: string | undefined; dataset?: string | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; original?: string | undefined; provider?: string | undefined; reference?: string | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; user?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}>>> | undefined" ], "path": "x-pack/plugins/event_log/generated/schemas.ts", "deprecated": false, @@ -1549,7 +1549,7 @@ "label": "IValidatedEvent", "description": [], "signature": [ - "Readonly<{ log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; message?: string | undefined; tags?: string[] | undefined; rule?: Readonly<{ id?: string | undefined; name?: string | undefined; license?: string | undefined; description?: string | undefined; category?: string | undefined; uuid?: string | undefined; version?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ action?: Readonly<{ id?: string | undefined; name?: string | undefined; execution?: Readonly<{ source?: string | undefined; uuid?: string | undefined; gen_ai?: Readonly<{ usage?: Readonly<{ prompt_tokens?: string | number | undefined; completion_tokens?: string | number | undefined; total_tokens?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; alerting?: Readonly<{ outcome?: string | undefined; status?: string | undefined; summary?: Readonly<{ recovered?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; new?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; ongoing?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; revision?: string | number | undefined; rule_type_id?: string | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ total_search_duration_ms?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_searches?: string | number | undefined; es_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; persist_alerts_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; total_enrichment_duration_ms?: string | number | undefined; } & {}> | undefined; status_order?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; uuid?: string | undefined; flapping?: boolean | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; version?: string | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; } & {}> | undefined; event?: Readonly<{ type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; id?: string | undefined; start?: string | undefined; end?: string | undefined; category?: string[] | undefined; outcome?: string | undefined; kind?: string | undefined; duration?: string | number | undefined; url?: string | undefined; timezone?: string | undefined; risk_score?: number | undefined; severity?: string | number | undefined; code?: string | undefined; provider?: string | undefined; created?: string | undefined; dataset?: string | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; original?: string | undefined; reference?: string | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; user?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}> | undefined" + "Readonly<{ log?: Readonly<{ logger?: string | undefined; level?: string | undefined; } & {}> | undefined; error?: Readonly<{ type?: string | undefined; id?: string | undefined; message?: string | undefined; code?: string | undefined; stack_trace?: string | undefined; } & {}> | undefined; '@timestamp'?: string | undefined; message?: string | undefined; tags?: string[] | undefined; rule?: Readonly<{ id?: string | undefined; name?: string | undefined; license?: string | undefined; description?: string | undefined; category?: string | undefined; uuid?: string | undefined; version?: string | undefined; reference?: string | undefined; author?: string[] | undefined; ruleset?: string | undefined; } & {}> | undefined; kibana?: Readonly<{ action?: Readonly<{ id?: string | undefined; name?: string | undefined; execution?: Readonly<{ source?: string | undefined; uuid?: string | undefined; gen_ai?: Readonly<{ usage?: Readonly<{ prompt_tokens?: string | number | undefined; completion_tokens?: string | number | undefined; total_tokens?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; } & {}> | undefined; alerting?: Readonly<{ outcome?: string | undefined; status?: string | undefined; summary?: Readonly<{ recovered?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; new?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; ongoing?: Readonly<{ count?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; instance_id?: string | undefined; action_group_id?: string | undefined; action_subgroup?: string | undefined; } & {}> | undefined; alert?: Readonly<{ rule?: Readonly<{ consumer?: string | undefined; revision?: string | number | undefined; rule_type_id?: string | undefined; execution?: Readonly<{ uuid?: string | undefined; status?: string | undefined; metrics?: Readonly<{ total_search_duration_ms?: string | number | undefined; total_indexing_duration_ms?: string | number | undefined; number_of_triggered_actions?: string | number | undefined; number_of_generated_actions?: string | number | undefined; alert_counts?: Readonly<{ recovered?: string | number | undefined; active?: string | number | undefined; new?: string | number | undefined; } & {}> | undefined; number_of_searches?: string | number | undefined; es_search_duration_ms?: string | number | undefined; execution_gap_duration_s?: string | number | undefined; rule_type_run_duration_ms?: string | number | undefined; process_alerts_duration_ms?: string | number | undefined; trigger_actions_duration_ms?: string | number | undefined; process_rule_duration_ms?: string | number | undefined; claim_to_start_duration_ms?: string | number | undefined; persist_alerts_duration_ms?: string | number | undefined; prepare_rule_duration_ms?: string | number | undefined; total_run_duration_ms?: string | number | undefined; total_enrichment_duration_ms?: string | number | undefined; } & {}> | undefined; status_order?: string | number | undefined; } & {}> | undefined; } & {}> | undefined; uuid?: string | undefined; flapping?: boolean | undefined; maintenance_window_ids?: string[] | undefined; } & {}> | undefined; version?: string | undefined; space_ids?: string[] | undefined; server_uuid?: string | undefined; task?: Readonly<{ id?: string | undefined; schedule_delay?: string | number | undefined; scheduled?: string | undefined; } & {}> | undefined; saved_objects?: Readonly<{ type?: string | undefined; id?: string | undefined; namespace?: string | undefined; rel?: string | undefined; type_id?: string | undefined; space_agnostic?: boolean | undefined; } & {}>[] | undefined; } & {}> | undefined; event?: Readonly<{ type?: string[] | undefined; reason?: string | undefined; action?: string | undefined; id?: string | undefined; start?: string | undefined; end?: string | undefined; category?: string[] | undefined; outcome?: string | undefined; kind?: string | undefined; duration?: string | number | undefined; url?: string | undefined; timezone?: string | undefined; risk_score?: number | undefined; severity?: string | number | undefined; code?: string | undefined; created?: string | undefined; dataset?: string | undefined; hash?: string | undefined; ingested?: string | undefined; module?: string | undefined; original?: string | undefined; provider?: string | undefined; reference?: string | undefined; risk_score_norm?: number | undefined; sequence?: string | number | undefined; } & {}> | undefined; ecs?: Readonly<{ version?: string | undefined; } & {}> | undefined; user?: Readonly<{ id?: string | undefined; name?: string | undefined; } & {}> | undefined; } & {}> | undefined" ], "path": "x-pack/plugins/event_log/generated/schemas.ts", "deprecated": false, diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 5c24fe386b75c5..7573b7da905f27 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index df213095ba7fed..54dc94548ed802 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView'] --- import exploratoryViewObj from './exploratory_view.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index e1385e44e7d43c..93eecbe2f0209c 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-07-28 +date: 2023-08-01 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 692b1ad534e05d..da5d6d4570230b 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-07-28 +date: 2023-08-01 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 e2910e740dede2..f133ea9cf9a300 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-07-28 +date: 2023-08-01 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 9870cae3cf2195..94b3ae09b880b6 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-07-28 +date: 2023-08-01 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 5c362a397da779..c6af5129c7e363 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-07-28 +date: 2023-08-01 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 549684c7f11b91..9fa8e12f67945c 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-07-28 +date: 2023-08-01 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 f4b2199fa9a247..382591ffe525b0 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-07-28 +date: 2023-08-01 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 afa6ff23f772f4..5c2dccf7773826 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-07-28 +date: 2023-08-01 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 d4b6b9617e361e..925c49bf68256b 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-07-28 +date: 2023-08-01 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 0841418986ae9c..527d92f29cf21a 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-07-28 +date: 2023-08-01 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 767904dfcda1b2..aca65060fc5aba 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-07-28 +date: 2023-08-01 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 08f698104edf76..ab851054c19e16 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.devdocs.json b/api_docs/expression_x_y.devdocs.json index dea5fb9e26e9dd..b1c3a96233ce93 100644 --- a/api_docs/expression_x_y.devdocs.json +++ b/api_docs/expression_x_y.devdocs.json @@ -1904,7 +1904,9 @@ }, " | undefined>; ticks?: number | undefined; domain?: ", + "> | undefined>; position?: ", + "Position", + " | undefined; ticks?: number | undefined; domain?: ", { "pluginId": "@kbn/chart-expressions-common", "scope": "common", @@ -1914,9 +1916,7 @@ }, "<", "YDomainRange", - " | undefined>; position?: ", - "Position", - " | undefined; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; }>> & Partial; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; }>> & Partial | undefined>; ticks?: number | undefined; domain?: ", + "> | undefined>; position?: ", + "Position", + " | undefined; ticks?: number | undefined; domain?: ", { "pluginId": "@kbn/chart-expressions-common", "scope": "common", @@ -2151,9 +2153,7 @@ }, "<", "YDomainRange", - " | undefined>; position?: ", - "Position", - " | undefined; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; } | undefined; axisLeft?: { children?: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | undefined; style?: ", + " | undefined>; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; } | undefined; axisLeft?: { children?: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | undefined; style?: ", { "pluginId": "@kbn/chart-expressions-common", "scope": "common", @@ -2175,7 +2175,9 @@ }, " | undefined>; ticks?: number | undefined; domain?: ", + "> | undefined>; position?: ", + "Position", + " | undefined; ticks?: number | undefined; domain?: ", { "pluginId": "@kbn/chart-expressions-common", "scope": "common", @@ -2185,9 +2187,7 @@ }, "<", "YDomainRange", - " | undefined>; position?: ", - "Position", - " | undefined; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; } | undefined; axisRight?: { children?: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | undefined; style?: ", + " | undefined>; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; } | undefined; axisRight?: { children?: boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | undefined; style?: ", { "pluginId": "@kbn/chart-expressions-common", "scope": "common", @@ -2209,7 +2209,9 @@ }, " | undefined>; ticks?: number | undefined; domain?: ", + "> | undefined>; position?: ", + "Position", + " | undefined; ticks?: number | undefined; domain?: ", { "pluginId": "@kbn/chart-expressions-common", "scope": "common", @@ -2219,9 +2221,7 @@ }, "<", "YDomainRange", - " | undefined>; position?: ", - "Position", - " | undefined; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; } | undefined; }" + " | undefined>; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; } | undefined; }" ], "path": "src/plugins/chart_expressions/expression_xy/common/types/expression_functions.ts", "deprecated": false, diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index 9c65e8510473c8..523ce38d12637d 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-07-28 +date: 2023-08-01 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 8653dd049dbc22..33dca51da2d6fb 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-07-28 +date: 2023-08-01 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 812fa58d6b9b6a..34c2118ea9fc64 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-07-28 +date: 2023-08-01 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 e96da014677e10..22e30f19433beb 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-07-28 +date: 2023-08-01 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 a1d1f59b9ae53b..185e197147914f 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-07-28 +date: 2023-08-01 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 40f738a455dc1f..c6085d88884ac3 100644 --- a/api_docs/files.devdocs.json +++ b/api_docs/files.devdocs.json @@ -969,7 +969,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -1931,6 +1931,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 5e050f7f791a1d..a18bd563312819 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-07-28 +date: 2023-08-01 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 134031c4e1d8b5..ab4fea6aed86fc 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.devdocs.json b/api_docs/fleet.devdocs.json index 325cf806cd2788..936741569b2276 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -10221,7 +10221,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -11183,6 +11183,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", @@ -11584,7 +11586,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -12546,6 +12548,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", @@ -12960,7 +12964,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -13922,6 +13926,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", @@ -14333,7 +14339,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -15295,6 +15301,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", @@ -15709,7 +15717,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -16671,6 +16679,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index ad14003518a4c0..22b9b587ae7be7 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-07-28 +date: 2023-08-01 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 a3bcb8f6848b62..e2e007d1dfe359 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-07-28 +date: 2023-08-01 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 e318039bfa4d7e..1fc8ddbda1f469 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-07-28 +date: 2023-08-01 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 2e7ec0eb34d857..3bb63217c8cb3f 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-07-28 +date: 2023-08-01 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 0269db8cd4d9aa..9da0f3e1974ef3 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-07-28 +date: 2023-08-01 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 36e0197ff58fb4..0c8149054aceed 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-07-28 +date: 2023-08-01 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 6e1d3598202bcb..839e3415ce0bff 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-07-28 +date: 2023-08-01 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 f0b4bfd6029fd8..a7b69b64fa5bb2 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-07-28 +date: 2023-08-01 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 f9f1c603334879..f3b3c0c2e641f0 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-07-28 +date: 2023-08-01 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 80b65501d90163..31790a46133030 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-07-28 +date: 2023-08-01 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 8841f676891933..f58056ab398dd5 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.devdocs.json b/api_docs/kbn_aiops_components.devdocs.json index 35b37e8f523f5a..1b99ef4188fb60 100644 --- a/api_docs/kbn_aiops_components.devdocs.json +++ b/api_docs/kbn_aiops_components.devdocs.json @@ -19,15 +19,72 @@ "common": { "classes": [], "functions": [ + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChart", + "type": "Function", + "tags": [ + "constructor" + ], + "label": "DocumentCountChart", + "description": [ + "\nDocument count chart with draggable brushes to select time ranges\nby default use `Baseline` and `Deviation` for the badge names" + ], + "signature": [ + "({ dependencies, brushSelectionUpdateHandler, width, chartPoints, chartPointsSplit, timeRangeEarliest, timeRangeLatest, interval, chartPointsSplitLabel, isBrushCleared, autoAnalysisStart, barColorOverride, barStyleAccessor, barHighlightColorOverride, deviationBrush, baselineBrush, }: React.PropsWithChildren<", + { + "pluginId": "@kbn/aiops-components", + "scope": "common", + "docId": "kibKbnAiopsComponentsPluginApi", + "section": "def-common.DocumentCountChartProps", + "text": "DocumentCountChartProps" + }, + ">) => JSX.Element" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChart.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n dependencies,\n brushSelectionUpdateHandler,\n width,\n chartPoints,\n chartPointsSplit,\n timeRangeEarliest,\n timeRangeLatest,\n interval,\n chartPointsSplitLabel,\n isBrushCleared,\n autoAnalysisStart,\n barColorOverride,\n barStyleAccessor,\n barHighlightColorOverride,\n deviationBrush = {},\n baselineBrush = {},\n}", + "description": [], + "signature": [ + "React.PropsWithChildren<", + { + "pluginId": "@kbn/aiops-components", + "scope": "common", + "docId": "kibKbnAiopsComponentsPluginApi", + "section": "def-common.DocumentCountChartProps", + "text": "DocumentCountChartProps" + }, + ">" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/aiops-components", "id": "def-common.DualBrush", "type": "Function", - "tags": [], + "tags": [ + "type" + ], "label": "DualBrush", - "description": [], + "description": [ + "\nDualBrush React Component\nDual brush component that overlays the document count chart" + ], "signature": [ - "({\n windowParameters,\n min,\n max,\n onChange,\n marginLeft,\n snapTimestamps,\n width,\n}: DualBrushProps) => JSX.Element" + "({\n /**\n * Min and max numeric timestamps for the two brushes\n */\n windowParameters,\n /**\n * Min timestamp for x domain\n */\n min,\n /**\n * Max timestamp for x domain\n */\n max,\n /**\n * Callback function whenever the brush changes\n */\n onChange,\n /**\n * Margin left\n */\n marginLeft,\n /**\n * Nearest timestamps to snap to the brushes to\n */\n snapTimestamps,\n /**\n * Width\n */\n width,\n}: DualBrushProps) => JSX.Element" ], "path": "x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush.tsx", "deprecated": false, @@ -38,7 +95,7 @@ "id": "def-common.DualBrush.$1", "type": "Object", "tags": [], - "label": "{\n windowParameters,\n min,\n max,\n onChange,\n marginLeft,\n snapTimestamps,\n width,\n}", + "label": "{\n /**\n * Min and max numeric timestamps for the two brushes\n */\n windowParameters,\n /**\n * Min timestamp for x domain\n */\n min,\n /**\n * Max timestamp for x domain\n */\n max,\n /**\n * Callback function whenever the brush changes\n */\n onChange,\n /**\n * Margin left\n */\n marginLeft,\n /**\n * Nearest timestamps to snap to the brushes to\n */\n snapTimestamps,\n /**\n * Width\n */\n width,\n}", "description": [], "signature": [ "DualBrushProps" @@ -49,18 +106,24 @@ "isRequired": true } ], - "returnComment": [], + "returnComment": [ + "The DualBrush component." + ], "initialIsOpen": false }, { "parentPluginId": "@kbn/aiops-components", "id": "def-common.DualBrushAnnotation", "type": "Function", - "tags": [], + "tags": [ + "type" + ], "label": "DualBrushAnnotation", - "description": [], + "description": [ + "\nDualBrushAnnotation React Component\nDual brush annotation component that overlays the document count chart" + ], "signature": [ - "({ id, min, max }: React.PropsWithChildren) => JSX.Element" + "({ id, min, max, style }: React.PropsWithChildren) => JSX.Element" ], "path": "x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush_annotation.tsx", "deprecated": false, @@ -71,7 +134,7 @@ "id": "def-common.DualBrushAnnotation.$1", "type": "CompoundType", "tags": [], - "label": "{ id, min, max }", + "label": "{ id, min, max, style }", "description": [], "signature": [ "React.PropsWithChildren" @@ -82,18 +145,24 @@ "isRequired": true } ], - "returnComment": [], + "returnComment": [ + "The DualBrushAnnotation component." + ], "initialIsOpen": false }, { "parentPluginId": "@kbn/aiops-components", "id": "def-common.ProgressControls", "type": "Function", - "tags": [], + "tags": [ + "type" + ], "label": "ProgressControls", - "description": [], + "description": [ + "\nProgressControls React Component\nComponent with ability to Run & cancel analysis\nby default use `Baseline` and `Deviation` for the badge name" + ], "signature": [ - "({ children, isBrushCleared, progress, progressMessage, onRefresh, onCancel, onReset, isRunning, shouldRerunAnalysis, }: React.PropsWithChildren) => JSX.Element" + "({ children, isBrushCleared, progress, progressMessage, onRefresh, onCancel, onReset, isRunning, shouldRerunAnalysis, runAnalysisDisabled, }: React.PropsWithChildren) => JSX.Element" ], "path": "x-pack/packages/ml/aiops_components/src/progress_controls/progress_controls.tsx", "deprecated": false, @@ -104,7 +173,7 @@ "id": "def-common.ProgressControls.$1", "type": "CompoundType", "tags": [], - "label": "{\n children,\n isBrushCleared,\n progress,\n progressMessage,\n onRefresh,\n onCancel,\n onReset,\n isRunning,\n shouldRerunAnalysis,\n}", + "label": "{\n children,\n isBrushCleared,\n progress,\n progressMessage,\n onRefresh,\n onCancel,\n onReset,\n isRunning,\n shouldRerunAnalysis,\n runAnalysisDisabled = false,\n}", "description": [], "signature": [ "React.PropsWithChildren" @@ -115,11 +184,420 @@ "isRequired": true } ], - "returnComment": [], + "returnComment": [ + "The ProgressControls component." + ], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartPoint", + "type": "Interface", + "tags": [], + "label": "DocumentCountChartPoint", + "description": [ + "\nDatum for the bar chart" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartPoint.time", + "type": "CompoundType", + "tags": [], + "label": "time", + "description": [ + "\nTime of bucket" + ], + "signature": [ + "string | number" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartPoint.value", + "type": "number", + "tags": [], + "label": "value", + "description": [ + "\nNumber of doc count for that time bucket" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps", + "type": "Interface", + "tags": [], + "label": "DocumentCountChartProps", + "description": [ + "\nProps for document count chart" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.dependencies", + "type": "Object", + "tags": [], + "label": "dependencies", + "description": [ + "List of Kibana services that are required as dependencies" + ], + "signature": [ + "{ data: ", + { + "pluginId": "data", + "scope": "public", + "docId": "kibDataPluginApi", + "section": "def-public.DataPublicPluginStart", + "text": "DataPublicPluginStart" + }, + "; charts: ", + { + "pluginId": "charts", + "scope": "public", + "docId": "kibChartsPluginApi", + "section": "def-public.ChartsPluginStart", + "text": "ChartsPluginStart" + }, + "; fieldFormats: ", + { + "pluginId": "fieldFormats", + "scope": "public", + "docId": "kibFieldFormatsPluginApi", + "section": "def-public.FieldFormatsStart", + "text": "FieldFormatsStart" + }, + "; uiSettings: ", + { + "pluginId": "@kbn/core-ui-settings-browser", + "scope": "common", + "docId": "kibKbnCoreUiSettingsBrowserPluginApi", + "section": "def-common.IUiSettingsClient", + "text": "IUiSettingsClient" + }, + "; }" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.brushSelectionUpdateHandler", + "type": "Function", + "tags": [], + "label": "brushSelectionUpdateHandler", + "description": [ + "Optional callback function which gets called the brush selection has changed" + ], + "signature": [ + "((windowParameters: ", + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.WindowParameters", + "text": "WindowParameters" + }, + ", force: boolean) => void) | undefined" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.brushSelectionUpdateHandler.$1", + "type": "Object", + "tags": [], + "label": "windowParameters", + "description": [], + "signature": [ + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.WindowParameters", + "text": "WindowParameters" + } + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.brushSelectionUpdateHandler.$2", + "type": "boolean", + "tags": [], + "label": "force", + "description": [], + "signature": [ + "boolean" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.width", + "type": "number", + "tags": [], + "label": "width", + "description": [ + "Optional width" + ], + "signature": [ + "number | undefined" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.chartPoints", + "type": "Array", + "tags": [], + "label": "chartPoints", + "description": [ + "Data chart points" + ], + "signature": [ + { + "pluginId": "@kbn/aiops-components", + "scope": "common", + "docId": "kibKbnAiopsComponentsPluginApi", + "section": "def-common.DocumentCountChartPoint", + "text": "DocumentCountChartPoint" + }, + "[]" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.chartPointsSplit", + "type": "Array", + "tags": [], + "label": "chartPointsSplit", + "description": [ + "Data chart points split" + ], + "signature": [ + { + "pluginId": "@kbn/aiops-components", + "scope": "common", + "docId": "kibKbnAiopsComponentsPluginApi", + "section": "def-common.DocumentCountChartPoint", + "text": "DocumentCountChartPoint" + }, + "[] | undefined" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.timeRangeEarliest", + "type": "number", + "tags": [], + "label": "timeRangeEarliest", + "description": [ + "Start time range for the chart" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.timeRangeLatest", + "type": "number", + "tags": [], + "label": "timeRangeLatest", + "description": [ + "Ending time range for the chart" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.interval", + "type": "number", + "tags": [], + "label": "interval", + "description": [ + "Time interval for the document count buckets" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.chartPointsSplitLabel", + "type": "string", + "tags": [], + "label": "chartPointsSplitLabel", + "description": [ + "Label to name the adjustedChartPointsSplit histogram" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.isBrushCleared", + "type": "boolean", + "tags": [], + "label": "isBrushCleared", + "description": [ + "Whether or not brush has been reset" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.autoAnalysisStart", + "type": "CompoundType", + "tags": [], + "label": "autoAnalysisStart", + "description": [ + "Timestamp for start of initial analysis" + ], + "signature": [ + "number | ", + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.WindowParameters", + "text": "WindowParameters" + }, + " | undefined" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.barStyleAccessor", + "type": "Function", + "tags": [], + "label": "barStyleAccessor", + "description": [ + "Optional style to override bar chart" + ], + "signature": [ + "BarStyleAccessor", + " | undefined" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.barColorOverride", + "type": "string", + "tags": [], + "label": "barColorOverride", + "description": [ + "Optional color override for the default bar color for charts" + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.barHighlightColorOverride", + "type": "string", + "tags": [], + "label": "barHighlightColorOverride", + "description": [ + "Optional color override for the highlighted bar color for charts" + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.deviationBrush", + "type": "Object", + "tags": [], + "label": "deviationBrush", + "description": [ + "Optional settings override for the 'deviation' brush" + ], + "signature": [ + "BrushSettings", + " | undefined" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.baselineBrush", + "type": "Object", + "tags": [], + "label": "baselineBrush", + "description": [ + "Optional settings override for the 'baseline' brush" + ], + "signature": [ + "BrushSettings", + " | undefined" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + } + ], "initialIsOpen": false } ], - "interfaces": [], "enums": [], "misc": [], "objects": [] diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 5564a5ad40b321..7fb1c95c2625ec 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; @@ -21,10 +21,13 @@ Contact [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) for questi | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 6 | 0 | 6 | 0 | +| 30 | 0 | 6 | 1 | ## Common ### Functions +### Interfaces + + diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 43da1b74baba2e..7cdb14f3f44b1c 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 2ac8828f378cf5..32df999b18edda 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 35ff5d9d29a0e9..784ca0e5926eab 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-07-28 +date: 2023-08-01 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 2db8a0dadc5bcc..87a452fd12158c 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-07-28 +date: 2023-08-01 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 7fa235031aa155..8dd16023ecd926 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-07-28 +date: 2023-08-01 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 3e5ec7cc8a1535..f5f947a007e10d 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-07-28 +date: 2023-08-01 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 c174d0812b1f0c..cf54cd5540a791 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-07-28 +date: 2023-08-01 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 6ad5d57ecbcede..c4f9b9e2890053 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-07-28 +date: 2023-08-01 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 31788f6d7363df..233541f5b3bfb3 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-07-28 +date: 2023-08-01 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 624d144d51eecc..94aaf9be7b631a 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-07-28 +date: 2023-08-01 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 05aab29762d43d..22584b46bc905c 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-07-28 +date: 2023-08-01 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 eac96eeb22beac..e412905f9eb155 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-07-28 +date: 2023-08-01 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 9e947aa62a7a94..1495cf269cc8e5 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 0ff9af9478f9ab..df0ae4b99440b5 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index b105f7e2846d3a..64f0eef3e43398 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-07-28 +date: 2023-08-01 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 d8f9fcadfd3bdc..ea21a623ede977 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-07-28 +date: 2023-08-01 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 102d192dc08310..38bd6446803003 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-07-28 +date: 2023-08-01 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 4a1b59518cad15..eb29b42ed034c6 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-07-28 +date: 2023-08-01 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 88724236f24f3e..61689ffc6ccad7 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-07-28 +date: 2023-08-01 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 6ede84419fe797..9b77fed4d15ad0 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-07-28 +date: 2023-08-01 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 139e8261908972..5541aafaab1a9e 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-07-28 +date: 2023-08-01 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 dc37c54f79e7f8..1655f70c94e1df 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-07-28 +date: 2023-08-01 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 80dbe0883c6623..30d3859df5837b 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-07-28 +date: 2023-08-01 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 986522a95ba209..d351e57e0af96f 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-07-28 +date: 2023-08-01 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.devdocs.json b/api_docs/kbn_code_editor.devdocs.json index 0bd40c08dd6c44..97a003dc517d06 100644 --- a/api_docs/kbn_code_editor.devdocs.json +++ b/api_docs/kbn_code_editor.devdocs.json @@ -27,7 +27,7 @@ "label": "CodeEditor", "description": [], "signature": [ - "({ languageId, value, onChange, width, options, overrideEditorWillMount, editorDidMount, editorWillMount, useDarkTheme, transparentBackground, suggestionProvider, signatureProvider, hoverProvider, placeholder, languageConfiguration, \"aria-label\": ariaLabel, isCopyable, allowFullScreen, }: React.PropsWithChildren<", + "({ languageId, value, onChange, width, options, overrideEditorWillMount, editorDidMount, editorWillMount, useDarkTheme: useDarkThemeProp, transparentBackground, suggestionProvider, signatureProvider, hoverProvider, placeholder, languageConfiguration, \"aria-label\": ariaLabel, isCopyable, allowFullScreen, }: React.PropsWithChildren<", "Props", ">) => JSX.Element" ], @@ -40,7 +40,7 @@ "id": "def-common.CodeEditor.$1", "type": "CompoundType", "tags": [], - "label": "{\n languageId,\n value,\n onChange,\n width,\n options,\n overrideEditorWillMount,\n editorDidMount,\n editorWillMount,\n useDarkTheme,\n transparentBackground,\n suggestionProvider,\n signatureProvider,\n hoverProvider,\n placeholder,\n languageConfiguration,\n 'aria-label': ariaLabel = i18n.translate('sharedUXPackages.codeEditor.ariaLabel', {\n defaultMessage: 'Code Editor',\n }),\n isCopyable = false,\n allowFullScreen = false,\n}", + "label": "{\n languageId,\n value,\n onChange,\n width,\n options,\n overrideEditorWillMount,\n editorDidMount,\n editorWillMount,\n useDarkTheme: useDarkThemeProp,\n transparentBackground,\n suggestionProvider,\n signatureProvider,\n hoverProvider,\n placeholder,\n languageConfiguration,\n 'aria-label': ariaLabel = i18n.translate('sharedUXPackages.codeEditor.ariaLabel', {\n defaultMessage: 'Code Editor',\n }),\n isCopyable = false,\n allowFullScreen = false,\n}", "description": [], "signature": [ "React.PropsWithChildren<", diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index b9ae56ec75650f..5586ac962c6699 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-07-28 +date: 2023-08-01 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.devdocs.json b/api_docs/kbn_code_editor_mocks.devdocs.json index 1c39d497c16d1d..2884aefd25afc1 100644 --- a/api_docs/kbn_code_editor_mocks.devdocs.json +++ b/api_docs/kbn_code_editor_mocks.devdocs.json @@ -268,54 +268,6 @@ } ] }, - { - "parentPluginId": "@kbn/code-editor-mocks", - "id": "def-common.CodeEditorStorybookMock.propArguments.useDarkTheme", - "type": "Object", - "tags": [], - "label": "useDarkTheme", - "description": [], - "path": "packages/shared-ux/code_editor/mocks/storybook.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/code-editor-mocks", - "id": "def-common.CodeEditorStorybookMock.propArguments.useDarkTheme.control", - "type": "Object", - "tags": [], - "label": "control", - "description": [], - "path": "packages/shared-ux/code_editor/mocks/storybook.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/code-editor-mocks", - "id": "def-common.CodeEditorStorybookMock.propArguments.useDarkTheme.control.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "path": "packages/shared-ux/code_editor/mocks/storybook.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/code-editor-mocks", - "id": "def-common.CodeEditorStorybookMock.propArguments.useDarkTheme.defaultValue", - "type": "boolean", - "tags": [], - "label": "defaultValue", - "description": [], - "path": "packages/shared-ux/code_editor/mocks/storybook.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, { "parentPluginId": "@kbn/code-editor-mocks", "id": "def-common.CodeEditorStorybookMock.propArguments.transparentBackground", @@ -534,7 +486,7 @@ "label": "Params", "description": [], "signature": [ - "{ value: any; placeholder: any; \"aria-label\": any; allowFullScreen: any; languageId: any; useDarkTheme: any; transparentBackground: any; }" + "{ value: any; placeholder: any; \"aria-label\": any; allowFullScreen: any; languageId: any; transparentBackground: any; }" ], "path": "packages/shared-ux/code_editor/mocks/storybook.ts", "deprecated": false, diff --git a/api_docs/kbn_code_editor_mocks.mdx b/api_docs/kbn_code_editor_mocks.mdx index 47d62dc69b56a6..1abe5f2cefa378 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mocks'] --- import kbnCodeEditorMocksObj from './kbn_code_editor_mocks.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 37 | 0 | 36 | 0 | +| 33 | 0 | 32 | 0 | ## Common diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 5f9a6926ae4a7e..b4b8caeb28086f 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-07-28 +date: 2023-08-01 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 de95c4a55a832d..ba1fbf77e2e715 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-07-28 +date: 2023-08-01 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 78b23d46316f3b..10e8dbfc620329 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-07-28 +date: 2023-08-01 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 40500a81263dac..afdc01b95d0800 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-07-28 +date: 2023-08-01 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 5a549ab7b8bf9d..2711db178cf692 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-07-28 +date: 2023-08-01 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_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index e20d10c4f77154..26e5a3cff6e288 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view'] --- import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx index cbf561329f0e35..b10964ef789f44 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 662b4ed7ed5d11..1188b0ed0be1d6 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index 45091460be895c..3116e2ea978ab7 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index ac119ee2c7315d..d431267ac93e59 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-07-28 +date: 2023-08-01 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 411a5a37baef92..66ff751d5d5707 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-07-28 +date: 2023-08-01 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 77533dbef6f22e..0ad915544352df 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-07-28 +date: 2023-08-01 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 7f2a6661b4b218..6167db0652f3b4 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-07-28 +date: 2023-08-01 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 58abca865d1577..2508b5547c0b7f 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-07-28 +date: 2023-08-01 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 dfacb70888c919..6045bfe75f3e27 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-07-28 +date: 2023-08-01 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 d0bfe1f40e8667..ffa390ba98e177 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-07-28 +date: 2023-08-01 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 d51b576b86014a..10d32b00cf4beb 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-07-28 +date: 2023-08-01 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 74097769ec376f..69df5262aacd4d 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-07-28 +date: 2023-08-01 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 6a57af65054eae..b96b7052001b8b 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-07-28 +date: 2023-08-01 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 b21548da262a8e..a0bacce8d0749e 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-07-28 +date: 2023-08-01 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 cea6fbe4958950..b0de7379d1f1d2 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-07-28 +date: 2023-08-01 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 be6c79247bb698..40f23404db32c2 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-07-28 +date: 2023-08-01 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 9c9b13ccce8c14..d829ab229ed9eb 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-07-28 +date: 2023-08-01 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 5b7442fb2b9d0b..73727de37af8f7 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-07-28 +date: 2023-08-01 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 3f025813407418..70c9c33c92aed5 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-07-28 +date: 2023-08-01 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 a8e55ffd65de56..d370a2a6403216 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-07-28 +date: 2023-08-01 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 d949b86ccdb9d5..cd4d0e287d032f 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-07-28 +date: 2023-08-01 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 dd04a90ed717ff..fa02f66af617d5 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-07-28 +date: 2023-08-01 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 228174335f8c8c..4b2595bac2b2b1 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-07-28 +date: 2023-08-01 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 8683ace78a5c55..b45b432fa6163b 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-07-28 +date: 2023-08-01 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 16c38ae12149d7..65ce85e083ad12 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-07-28 +date: 2023-08-01 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 0d3ddb5d5e73d0..f9698c32a3fec0 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-07-28 +date: 2023-08-01 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 c9d1ee7f1c4e33..0ce15f5332ae92 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-07-28 +date: 2023-08-01 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 d52bdd112dc546..d87f645e19af88 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-07-28 +date: 2023-08-01 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 0cfeffbf8a1d48..63a38cd876065f 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-07-28 +date: 2023-08-01 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 618ce50c6139ac..f26c58a5f44392 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-07-28 +date: 2023-08-01 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 935e055f760d01..8de945f10b914f 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-07-28 +date: 2023-08-01 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 b49cefba67a255..7bb06193099063 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-07-28 +date: 2023-08-01 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 50afa8cf4e2f20..dd257cd7fbd6db 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-07-28 +date: 2023-08-01 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 0823c078f139ed..451aaac3ace89c 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-07-28 +date: 2023-08-01 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 921fc34bc9e675..aec0e4ae917822 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-07-28 +date: 2023-08-01 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 a5d1330dfd68da..9685429be121a9 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-07-28 +date: 2023-08-01 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 538fe2264179b2..725c3917a00175 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-07-28 +date: 2023-08-01 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 5e9cd9dff3d5e5..1e75ecb8bd28c0 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-07-28 +date: 2023-08-01 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 3978240dca5da3..3fcb889c2a4b71 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-07-28 +date: 2023-08-01 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 7bbfa297c250db..bc3a8dcc81d438 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-07-28 +date: 2023-08-01 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 ac1171488bfec6..d0de83e167f2c7 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-07-28 +date: 2023-08-01 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 8fe7475527dc42..712f71278d619b 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-07-28 +date: 2023-08-01 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 7f586b9d0a4e38..95e19045c46374 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-07-28 +date: 2023-08-01 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 7365a3732e515b..d0b88e4a79b3a6 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-07-28 +date: 2023-08-01 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 c455e25980d170..a65b3b2fa9c6bd 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-07-28 +date: 2023-08-01 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 2d2a2fbd1fc409..21cb2a377a3ed7 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-07-28 +date: 2023-08-01 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.devdocs.json b/api_docs/kbn_core_elasticsearch_client_server_mocks.devdocs.json index 7ad9ebdcc1c7fd..fe84b5cc7ba333 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.devdocs.json +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.devdocs.json @@ -361,7 +361,7 @@ }, "<", "default", - ">; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + ">; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "common", @@ -1223,6 +1223,16 @@ }, "<", "default", + ">; synonyms: ", + { + "pluginId": "@kbn/core-elasticsearch-client-server-mocks", + "scope": "common", + "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", + "section": "def-common.DeeplyMockedApi", + "text": "DeeplyMockedApi" + }, + "<", + "default", ">; tasks: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", @@ -1494,7 +1504,7 @@ }, "<", "default", - ">; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + ">; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "common", @@ -2356,6 +2366,16 @@ }, "<", "default", + ">; synonyms: ", + { + "pluginId": "@kbn/core-elasticsearch-client-server-mocks", + "scope": "common", + "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", + "section": "def-common.DeeplyMockedApi", + "text": "DeeplyMockedApi" + }, + "<", + "default", ">; tasks: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", @@ -2581,7 +2601,7 @@ }, "<", "default", - ">; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + ">; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "common", @@ -3443,6 +3463,16 @@ }, "<", "default", + ">; synonyms: ", + { + "pluginId": "@kbn/core-elasticsearch-client-server-mocks", + "scope": "common", + "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", + "section": "def-common.DeeplyMockedApi", + "text": "DeeplyMockedApi" + }, + "<", + "default", ">; tasks: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", @@ -3759,7 +3789,7 @@ }, "<", "default", - ">; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + ">; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", "scope": "common", @@ -4621,6 +4651,16 @@ }, "<", "default", + ">; synonyms: ", + { + "pluginId": "@kbn/core-elasticsearch-client-server-mocks", + "scope": "common", + "docId": "kibKbnCoreElasticsearchClientServerMocksPluginApi", + "section": "def-common.DeeplyMockedApi", + "text": "DeeplyMockedApi" + }, + "<", + "default", ">; tasks: ", { "pluginId": "@kbn/core-elasticsearch-client-server-mocks", diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index 932b21c20efa11..e4ffafa83c922d 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-07-28 +date: 2023-08-01 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.devdocs.json b/api_docs/kbn_core_elasticsearch_server.devdocs.json index c17ecc226e4c18..2583a7e0a96756 100644 --- a/api_docs/kbn_core_elasticsearch_server.devdocs.json +++ b/api_docs/kbn_core_elasticsearch_server.devdocs.json @@ -1148,7 +1148,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -2110,6 +2110,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", @@ -2842,7 +2844,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -3804,6 +3806,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", @@ -4072,7 +4076,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -5034,6 +5038,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", @@ -5555,7 +5561,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -6517,6 +6523,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index a4ffdafa981139..720f484a59326c 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-07-28 +date: 2023-08-01 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.devdocs.json b/api_docs/kbn_core_elasticsearch_server_internal.devdocs.json index 567cc8cfd6da4e..7067e1ad7fe944 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.devdocs.json +++ b/api_docs/kbn_core_elasticsearch_server_internal.devdocs.json @@ -198,7 +198,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -1160,6 +1160,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", @@ -1856,7 +1858,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -2818,6 +2820,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index e548255575803a..80d60837eab335 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-07-28 +date: 2023-08-01 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 a94122a822c743..0f5c870c19bb4b 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-07-28 +date: 2023-08-01 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 666f8c823025c0..133ac449b02018 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-07-28 +date: 2023-08-01 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 09d80ba913b602..a92b20c24fe6d8 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-07-28 +date: 2023-08-01 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 5cfb3837a33753..423196bdcf0585 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-07-28 +date: 2023-08-01 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 99f980a75386a7..eb485599cd889f 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-07-28 +date: 2023-08-01 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 f44b7041f727d1..4e37ab99281d4c 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-07-28 +date: 2023-08-01 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 572d901c73e080..0d1218c76c968f 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-07-28 +date: 2023-08-01 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 1cbb5f3829e0f7..4a378d4c3fac96 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-07-28 +date: 2023-08-01 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 15340e08cac256..5e99423d58a10e 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-07-28 +date: 2023-08-01 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 a133b4ec96cf3a..079680db0586ae 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-07-28 +date: 2023-08-01 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 cec1a425c04c11..f418705cc1e7db 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-07-28 +date: 2023-08-01 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 8d1375d6441ae8..b0e1d9567653ca 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-07-28 +date: 2023-08-01 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 504caa6ad5c97f..b6d0ebdf362231 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-07-28 +date: 2023-08-01 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 8a5b998bcbfc1e..ef9ccd8b45b976 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-07-28 +date: 2023-08-01 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 c10e72d7cb9b15..7e0a1f30728ced 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-07-28 +date: 2023-08-01 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 911855786c246f..9a41cf162e7029 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-07-28 +date: 2023-08-01 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 7693e88b65df34..e688b1eadb6c91 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-07-28 +date: 2023-08-01 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 f09ee571311d7d..a217a5b40941ba 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-07-28 +date: 2023-08-01 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 591b922f6648dc..10433751b93896 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-07-28 +date: 2023-08-01 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 33ecc5437dfebc..668a6fbb47babf 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-07-28 +date: 2023-08-01 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 46174d4dd1debf..6d7c5acae0769d 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-07-28 +date: 2023-08-01 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 12d1e4663fd34d..e5f93aaa404e4c 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-07-28 +date: 2023-08-01 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 94f8530bb82d3a..72afc71b4551f3 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-07-28 +date: 2023-08-01 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 3eb9040499a8ca..e99d76aae91847 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -3603,6 +3603,18 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/maintenance_window/active_maintenance_windows.ts" }, + { + "plugin": "guidedOnboarding", + "path": "src/plugins/guided_onboarding/server/routes/guide_state_routes.ts" + }, + { + "plugin": "guidedOnboarding", + "path": "src/plugins/guided_onboarding/server/routes/plugin_state_routes.ts" + }, + { + "plugin": "guidedOnboarding", + "path": "src/plugins/guided_onboarding/server/routes/config_routes.ts" + }, { "plugin": "ruleRegistry", "path": "x-pack/plugins/rule_registry/server/routes/get_alert_by_id.ts" @@ -3623,18 +3635,6 @@ "plugin": "ruleRegistry", "path": "x-pack/plugins/rule_registry/server/routes/get_aad_fields_by_rule_type.ts" }, - { - "plugin": "guidedOnboarding", - "path": "src/plugins/guided_onboarding/server/routes/guide_state_routes.ts" - }, - { - "plugin": "guidedOnboarding", - "path": "src/plugins/guided_onboarding/server/routes/plugin_state_routes.ts" - }, - { - "plugin": "guidedOnboarding", - "path": "src/plugins/guided_onboarding/server/routes/config_routes.ts" - }, { "plugin": "observability", "path": "x-pack/plugins/observability/server/lib/annotations/register_annotation_apis.ts" @@ -7253,6 +7253,10 @@ "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_preview_route.ts" }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/risk_engine/routes/risk_score_calculation_route.ts" + }, { "plugin": "serverless", "path": "x-pack/plugins/serverless/server/plugin.ts" @@ -14762,6 +14766,10 @@ "plugin": "aiops", "path": "x-pack/plugins/aiops/server/routes/log_rate_analysis.ts" }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/server/routes/log_categorization.ts" + }, { "plugin": "unifiedSearch", "path": "src/plugins/unified_search/server/autocomplete/value_suggestions_route.ts" diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index acc52d657029e0..6b4ba1f5788050 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index 10726c1ee7a170..92b1c6ea783f14 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-07-28 +date: 2023-08-01 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 fe88489e960b81..ee2cfe71a5c0ee 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-07-28 +date: 2023-08-01 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 3f4d2e7fccc987..761b1e010e7d45 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-07-28 +date: 2023-08-01 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 74734b04451f24..6334965dccecc2 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-07-28 +date: 2023-08-01 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 0226c56b277aac..0a68532edab776 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-07-28 +date: 2023-08-01 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 acb502c7ab8045..a867f538720a63 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-07-28 +date: 2023-08-01 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 35a1bdac014f0b..f16da29ed6ee11 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-07-28 +date: 2023-08-01 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 d03504aa05a440..cbe8bfe7c3dc4b 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-07-28 +date: 2023-08-01 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 105695f25bea93..46e39642cb5ab2 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-07-28 +date: 2023-08-01 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 5a021e05e520c6..4638a9317b6e25 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-07-28 +date: 2023-08-01 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 8ef4e7a496c3b8..c2aa561cbb9e9c 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-07-28 +date: 2023-08-01 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 4c3da0899e3b28..53e0b4af9886d1 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-07-28 +date: 2023-08-01 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 fea60b88e43bcb..c55f6d031f32b0 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-07-28 +date: 2023-08-01 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 2302bbae6fde91..2cb79c54502217 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-07-28 +date: 2023-08-01 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 1b4651edf85b8a..e94fe6fad9b639 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-07-28 +date: 2023-08-01 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 4f163a1faec126..7cc54a9ab2c978 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-07-28 +date: 2023-08-01 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 0980115d6811e9..ecd2e8b545e29a 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-07-28 +date: 2023-08-01 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 9d99e08190c0ba..771c9a2bfc69b8 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-07-28 +date: 2023-08-01 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 06b9cd3888d543..17067d0128f45b 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-07-28 +date: 2023-08-01 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 0429056cf2d335..fcb078ec3d645c 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-07-28 +date: 2023-08-01 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 9a7694aa69fbe2..83afad4bd7070d 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-07-28 +date: 2023-08-01 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 31e808d01dcb93..71b63feeedd8d2 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-07-28 +date: 2023-08-01 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 278bb65ebcce1e..e6cadf503ce72c 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-07-28 +date: 2023-08-01 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 512b300ccb811e..3b340a54c45ce1 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-07-28 +date: 2023-08-01 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 1d78e0e9369e1c..ef40500fafcd48 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-07-28 +date: 2023-08-01 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 aa9e305b4aa6e5..9ebfc089386bea 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-07-28 +date: 2023-08-01 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 7515bee48bf9cf..780b811cb78788 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-07-28 +date: 2023-08-01 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 4eaed2ab2b22af..4379647659f21f 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-07-28 +date: 2023-08-01 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 a25522a121d0f9..d7d398c3af52d4 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-07-28 +date: 2023-08-01 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 f9c766e52f90b9..c85d94e72c4802 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-07-28 +date: 2023-08-01 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 dccd35f962a5d6..dc6ff63133d95a 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-07-28 +date: 2023-08-01 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 11e55a087107ba..cfaad7f2aba6ee 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-07-28 +date: 2023-08-01 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 2cba83561a6f32..cdf44326f701f5 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-07-28 +date: 2023-08-01 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 4d83184b7da91f..81050a5000b416 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-07-28 +date: 2023-08-01 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 a232749953e2ad..a991fd46b3c1d0 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-07-28 +date: 2023-08-01 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 c49852410bff60..6ba354b294bcdd 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-07-28 +date: 2023-08-01 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 0a079253e1c38a..3ecb534a09b92f 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-07-28 +date: 2023-08-01 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 b10c85eaff9f65..c4d54067858587 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-07-28 +date: 2023-08-01 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 54ff4d2c683256..947c0ea5d5e11b 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-07-28 +date: 2023-08-01 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 4d39c803c096da..4e8c27ab8ad0ec 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-07-28 +date: 2023-08-01 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 e9ebbc1e2fe10d..b8770621a70bb7 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-07-28 +date: 2023-08-01 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 66a5d33d1fbd06..89e0f71ff5117d 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-07-28 +date: 2023-08-01 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 eb11b08ee6e6c8..bd27df699ad34d 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-07-28 +date: 2023-08-01 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 a32656b8efd5ec..2498348d89019d 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-07-28 +date: 2023-08-01 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 3ea6b82b1b82cc..9070867cc78bd7 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-07-28 +date: 2023-08-01 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 98e87ec5b33eea..de3f7bd2f78e3b 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index 342d8dd9e2d225..4a498bb36493ac 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-07-28 +date: 2023-08-01 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 191c9766262cb4..4c7bc96a567ee4 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-07-28 +date: 2023-08-01 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 9e122368707119..9230b8e5ae8b92 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-07-28 +date: 2023-08-01 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 3f0577125e4aac..ea349da7929618 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-07-28 +date: 2023-08-01 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 72124135e7008c..de3e5b61f5f4a9 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-07-28 +date: 2023-08-01 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 df3823e3f4e499..229f1391a41fb7 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-07-28 +date: 2023-08-01 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.devdocs.json b/api_docs/kbn_core_saved_objects_common.devdocs.json index 47c190e62d2ae6..02d966877b8975 100644 --- a/api_docs/kbn_core_saved_objects_common.devdocs.json +++ b/api_docs/kbn_core_saved_objects_common.devdocs.json @@ -1441,22 +1441,6 @@ "plugin": "savedObjectsManagement", "path": "src/plugins/saved_objects_management/server/lib/find_relationships.test.ts" }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts" - }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts" - }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/effects.ts" - }, - { - "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/effects.ts" - }, { "plugin": "@kbn/core-saved-objects-browser-internal", "path": "packages/core/saved-objects/core-saved-objects-browser-internal/src/simple_saved_object.test.ts" diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index 57d3af7bd76ad7..2d1d4cde1d97f3 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-07-28 +date: 2023-08-01 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 15f95d3d0c78cc..62096e0e5061dd 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-07-28 +date: 2023-08-01 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 75b75b0b2fb9b0..382777b40c135d 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-07-28 +date: 2023-08-01 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.devdocs.json b/api_docs/kbn_core_saved_objects_migration_server_internal.devdocs.json index 3a6495d4c50785..cbd8b5774457df 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.devdocs.json +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.devdocs.json @@ -2408,7 +2408,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -3370,6 +3370,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", 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 b8595279dda4b7..a92e495a35fb4d 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-07-28 +date: 2023-08-01 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 ae19342750ce9a..bc0bf2c01a4d68 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-07-28 +date: 2023-08-01 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 ef7a27591c5a47..3f2466bbac0ac4 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-07-28 +date: 2023-08-01 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 c0794c7a9dd348..b73f5954ab03bd 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-07-28 +date: 2023-08-01 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 ca6af5e73fe769..8f345ca70c3ffc 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-07-28 +date: 2023-08-01 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 64f6b41476c546..242b15e15b0c3e 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-07-28 +date: 2023-08-01 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 b985202eb0d663..74d7f47e7adc31 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-07-28 +date: 2023-08-01 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 670657b2edd44a..ec4e4f1f86655b 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-07-28 +date: 2023-08-01 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 615017d0a82ad4..b6a3131b5ed503 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-07-28 +date: 2023-08-01 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 122ab88195a549..b46980ed75502b 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-07-28 +date: 2023-08-01 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 e07720eb126103..82a2faf677e895 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-07-28 +date: 2023-08-01 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 41c71491f8f604..181011148dd0b9 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-07-28 +date: 2023-08-01 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 8da65cc20aca66..d8a3bda6f57f73 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-07-28 +date: 2023-08-01 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 eb91954f814db1..b7d426640f1050 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-07-28 +date: 2023-08-01 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 e2d6e2ea4774b0..39db6ec721ef28 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-07-28 +date: 2023-08-01 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 9f13c92e100c49..e297c56bcfc425 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-07-28 +date: 2023-08-01 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 8f9bb787dfa699..ab39b69ef2e4f0 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-07-28 +date: 2023-08-01 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.devdocs.json b/api_docs/kbn_core_theme_browser_internal.devdocs.json deleted file mode 100644 index b3002e49c80b34..00000000000000 --- a/api_docs/kbn_core_theme_browser_internal.devdocs.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "id": "@kbn/core-theme-browser-internal", - "client": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "server": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "common": { - "classes": [], - "functions": [ - { - "parentPluginId": "@kbn/core-theme-browser-internal", - "id": "def-common.CoreContextProvider", - "type": "Function", - "tags": [], - "label": "CoreContextProvider", - "description": [ - "\nutility component exposing all the context providers required by core when integrating with react" - ], - "signature": [ - "({ i18n, theme, children, globalStyles, }: React.PropsWithChildren) => JSX.Element" - ], - "path": "packages/core/theme/core-theme-browser-internal/src/core_context_provider.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/core-theme-browser-internal", - "id": "def-common.CoreContextProvider.$1", - "type": "CompoundType", - "tags": [], - "label": "{\n i18n,\n theme,\n children,\n globalStyles = false,\n}", - "description": [], - "signature": [ - "React.PropsWithChildren" - ], - "path": "packages/core/theme/core-theme-browser-internal/src/core_context_provider.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - } - ], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - } -} \ No newline at end of file diff --git a/api_docs/kbn_core_theme_browser_internal.mdx b/api_docs/kbn_core_theme_browser_internal.mdx deleted file mode 100644 index bf93fd23748e08..00000000000000 --- a/api_docs/kbn_core_theme_browser_internal.mdx +++ /dev/null @@ -1,30 +0,0 @@ ---- -#### -#### This 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: kibKbnCoreThemeBrowserInternalPluginApi -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-07-28 -tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-internal'] ---- -import kbnCoreThemeBrowserInternalObj from './kbn_core_theme_browser_internal.devdocs.json'; - - - -Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) for questions regarding this plugin. - -**Code health stats** - -| Public API count | Any count | Items lacking comments | Missing exports | -|-------------------|-----------|------------------------|-----------------| -| 2 | 0 | 1 | 0 | - -## Common - -### Functions - - diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 9b0542717b25b9..a8e87820824b1c 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-07-28 +date: 2023-08-01 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 5372c31a609bd3..19e7fa14164766 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-07-28 +date: 2023-08-01 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 bcd9355823b93c..b6eab205168c9c 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-07-28 +date: 2023-08-01 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 8b8cef6cc9bbe8..f582348a9ed828 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-07-28 +date: 2023-08-01 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 ec9eb74ff6698a..cf7688b8ae9d93 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-07-28 +date: 2023-08-01 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 1d335532d9c872..ed9abf61585016 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-07-28 +date: 2023-08-01 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 45fbe15f9f3924..0199542125c0aa 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-07-28 +date: 2023-08-01 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 e8eac4fb806824..4e64783cf16e72 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-07-28 +date: 2023-08-01 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 97c72ce25e89f3..8a68a42cbfc112 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-07-28 +date: 2023-08-01 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 66ababc2a1dee0..c63d85d9b7e5a9 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-07-28 +date: 2023-08-01 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 98dcb7a4a3c581..0f62f8a2e345b0 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index 34196b8f752a4c..1fda05a290f4d6 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx index 4226d811718f96..9f4dda24172410 100644 --- a/api_docs/kbn_core_user_settings_server_internal.mdx +++ b/api_docs/kbn_core_user_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal title: "@kbn/core-user-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-internal plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal'] --- import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index 7e566b7d840c8e..a17fb4ae82196b 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks'] --- import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index f6c789827ca4ae..e9ea5a01e457ee 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-07-28 +date: 2023-08-01 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 5070cfb55ff71e..c9c5764b7ae9aa 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-07-28 +date: 2023-08-01 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 7f30231ef4e63c..428eef29e3c6e2 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index 51f70ffb39747f..99524774cb7b05 100644 --- a/api_docs/kbn_data_service.mdx +++ b/api_docs/kbn_data_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service title: "@kbn/data-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-service plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index ff5601b4c501b1..e42bd14aac3232 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx index 2637d88283d3f3..005a5cc27f06b5 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics'] --- import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx index b8cec8b9abdce8..98f082a846d594 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index 344e9e533bbc3f..278ff467c344b3 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.devdocs.json b/api_docs/kbn_deeplinks_ml.devdocs.json index f18294ad8a5bed..a1d4f7262f54a1 100644 --- a/api_docs/kbn_deeplinks_ml.devdocs.json +++ b/api_docs/kbn_deeplinks_ml.devdocs.json @@ -45,7 +45,7 @@ "label": "DeepLinkId", "description": [], "signature": [ - "\"ml\" | \"ml:nodes\" | \"ml:notifications\" | \"ml:overview\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:singleMetricViewer\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:logRateAnalysis\" | \"ml:logPatternAnalysis\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:memoryUsage\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\"" + "\"ml\" | \"ml:nodes\" | \"ml:notifications\" | \"ml:overview\" | \"ml:settings\" | \"ml:dataVisualizer\" | \"ml:anomalyDetection\" | \"ml:anomalyExplorer\" | \"ml:singleMetricViewer\" | \"ml:dataComparison\" | \"ml:dataFrameAnalytics\" | \"ml:resultExplorer\" | \"ml:analyticsMap\" | \"ml:aiOps\" | \"ml:logRateAnalysis\" | \"ml:logPatternAnalysis\" | \"ml:changePointDetections\" | \"ml:modelManagement\" | \"ml:nodesOverview\" | \"ml:memoryUsage\" | \"ml:fileUpload\" | \"ml:indexDataVisualizer\" | \"ml:calendarSettings\" | \"ml:filterListsSettings\"" ], "path": "packages/deeplinks/ml/deep_links.ts", "deprecated": false, @@ -60,7 +60,7 @@ "label": "LinkId", "description": [], "signature": [ - "\"nodes\" | \"notifications\" | \"overview\" | \"settings\" | \"dataVisualizer\" | \"anomalyDetection\" | \"anomalyExplorer\" | \"singleMetricViewer\" | \"dataFrameAnalytics\" | \"resultExplorer\" | \"analyticsMap\" | \"aiOps\" | \"logRateAnalysis\" | \"logPatternAnalysis\" | \"changePointDetections\" | \"modelManagement\" | \"nodesOverview\" | \"memoryUsage\" | \"fileUpload\" | \"indexDataVisualizer\" | \"calendarSettings\" | \"filterListsSettings\"" + "\"nodes\" | \"notifications\" | \"overview\" | \"settings\" | \"dataVisualizer\" | \"anomalyDetection\" | \"anomalyExplorer\" | \"singleMetricViewer\" | \"dataComparison\" | \"dataFrameAnalytics\" | \"resultExplorer\" | \"analyticsMap\" | \"aiOps\" | \"logRateAnalysis\" | \"logPatternAnalysis\" | \"changePointDetections\" | \"modelManagement\" | \"nodesOverview\" | \"memoryUsage\" | \"fileUpload\" | \"indexDataVisualizer\" | \"calendarSettings\" | \"filterListsSettings\"" ], "path": "packages/deeplinks/ml/deep_links.ts", "deprecated": false, diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index 5a4b2b000bab71..1674b98321c891 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index cea5414a9f0d42..896b2b6516362e 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index 56333c8f8399de..9288a042442864 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index be4527f2446942..2b6b6085aa1b2f 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics'] --- import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx index 0427537148c10d..3b582d9999d3a5 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools'] --- import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json'; diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index 2c5b10b8fba5cb..17ee3f122ac32f 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index 87e46a8980b754..92883cff938dbe 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml'] --- import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 22ddcb5984e830..0962b4c638671a 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-07-28 +date: 2023-08-01 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 86e5d6e9a4b6eb..e870025b75ce6b 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-07-28 +date: 2023-08-01 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 baffe13bbac896..994acd4adb437f 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-07-28 +date: 2023-08-01 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 edbdae9f278780..1533c4e9b4f2c0 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index 88b9107b55eb1a..6a8ddabb3a9955 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 94e4b25bdf30ac..78457c82a664e2 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-07-28 +date: 2023-08-01 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 8cd15c6a3a14e5..41f63294b180c0 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx index 78515305b418b9..268846d7a342b1 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop'] --- import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index 0361552872570c..2eab72d4c6f9c1 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-07-28 +date: 2023-08-01 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 d1167342d6fc8c..9d21226ddb8756 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-07-28 +date: 2023-08-01 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 0358804d8ed8c2..f97272da172e35 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index ecb435bb7a7f44..da93a42b2dae19 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index d38967007cfe0a..5c7b20217d161e 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-07-28 +date: 2023-08-01 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 de4e0a0318f80e..0668d140e1a4c7 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-07-28 +date: 2023-08-01 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 889707ac938fd1..be908605f28eb6 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-07-28 +date: 2023-08-01 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 951faa365f94db..3f6842c35b030f 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-07-28 +date: 2023-08-01 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 7a5a761f424d8f..06a5bbe57c5aa4 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-07-28 +date: 2023-08-01 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 b848896403fade..448641114935e5 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index b1562194a6fedd..7f2af70961e8c8 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index 124fbd9dafcea2..3216189a2d061b 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index ef9cbad51e5e3d..eb25a6c38a65eb 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-07-28 +date: 2023-08-01 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 2fc4160691152b..66eb49b4218c60 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-07-28 +date: 2023-08-01 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 3e5924bbdf1e2e..cd5b1e24b6d35f 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-07-28 +date: 2023-08-01 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 f491bb1a358b57..3db303a84f9e12 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-07-28 +date: 2023-08-01 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 ed7f8abd50bf47..c9b21f38e950cf 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx index a438f04622e901..30e12b739a4aae 100644 --- a/api_docs/kbn_generate_console_definitions.mdx +++ b/api_docs/kbn_generate_console_definitions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions title: "@kbn/generate-console-definitions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-console-definitions plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions'] --- import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index ca96dbf1ceaf12..33cdf65d3dac33 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_generate_csv_types.mdx b/api_docs/kbn_generate_csv_types.mdx index f68886ee0c3b8c..347fc28539af00 100644 --- a/api_docs/kbn_generate_csv_types.mdx +++ b/api_docs/kbn_generate_csv_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv-types title: "@kbn/generate-csv-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv-types plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv-types'] --- import kbnGenerateCsvTypesObj from './kbn_generate_csv_types.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index 237ab00d568d31..8596f148851dd9 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-07-28 +date: 2023-08-01 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 97171988027085..7b2658ebc8e157 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-07-28 +date: 2023-08-01 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 5797d009f2dd87..3386cef166c5ae 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-07-28 +date: 2023-08-01 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 14b829fdf73459..1f8d2bcb6b72a7 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-07-28 +date: 2023-08-01 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 0919f981f0212b..f0c4f1631ae0b4 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-07-28 +date: 2023-08-01 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 7208a59daa9ea5..d58ec14c5630e6 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-07-28 +date: 2023-08-01 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 10c300cf0322a4..7d36a0abd22a72 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-07-28 +date: 2023-08-01 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 0b279ee79308bd..8a78ed6340dbaf 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-07-28 +date: 2023-08-01 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 726c13554ffa45..4d80da348d1b41 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index b91c6e63eaf2bd..ee495030bed4ba 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge'] --- import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index c2eafe909234bf..134d43fa19638b 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-07-28 +date: 2023-08-01 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 bdf3351a4c4ce4..e91f1c02753be1 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-07-28 +date: 2023-08-01 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 6261ef066b6e41..67146bb9ff8a1e 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-07-28 +date: 2023-08-01 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 426b091aaa764f..f7609518c7ef02 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-07-28 +date: 2023-08-01 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 26dbe8fa3da514..ac345ded39e10c 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-07-28 +date: 2023-08-01 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 2f12b5b3e87a5d..7446a0eda8ec2a 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-07-28 +date: 2023-08-01 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 db4c49952e44b4..2971e9f5028f95 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-07-28 +date: 2023-08-01 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 ae74d00bfe3bcf..34cf4cb57ef384 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-07-28 +date: 2023-08-01 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 a3b6f98d3a4605..632e764397d61f 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-07-28 +date: 2023-08-01 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 d3bb59ad186273..b7ea95ac6e015b 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index cc33fcd0337886..92a545f6b34353 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 10397a425e1265..3ba5db3a2370a1 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index ed292c39645d86..0eeba1091ad1cb 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx index c47891133f5be3..559f51a52e8426 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index 3de6773b4c92ea..595e8ee26f6b7c 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index 03e8034a8fa2bb..dd40f1f8709dd4 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.devdocs.json b/api_docs/kbn_ml_category_validator.devdocs.json index 45db461ceab38c..85ecf12a715765 100644 --- a/api_docs/kbn_ml_category_validator.devdocs.json +++ b/api_docs/kbn_ml_category_validator.devdocs.json @@ -53,7 +53,23 @@ "MappingRuntimeFields", " | undefined, indicesOptions: ", "IndicesOptions", - " | undefined) => Promise<{ overallValidStatus: ", + " | undefined, includeExamples?: boolean) => Promise<{ overallValidStatus: ", + { + "pluginId": "@kbn/ml-category-validator", + "scope": "common", + "docId": "kibKbnMlCategoryValidatorPluginApi", + "section": "def-common.CATEGORY_EXAMPLES_VALIDATION_STATUS", + "text": "CATEGORY_EXAMPLES_VALIDATION_STATUS" + }, + "; validationChecks: ", + { + "pluginId": "@kbn/ml-category-validator", + "scope": "common", + "docId": "kibKbnMlCategoryValidatorPluginApi", + "section": "def-common.FieldExampleCheck", + "text": "FieldExampleCheck" + }, + "[]; sampleSize: number; examples?: undefined; } | { overallValidStatus: ", { "pluginId": "@kbn/ml-category-validator", "scope": "common", @@ -237,6 +253,111 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/ml-category-validator", + "id": "def-common.FieldValidationResults", + "type": "Interface", + "tags": [], + "label": "FieldValidationResults", + "description": [ + "\nValidation results for a specific field." + ], + "path": "x-pack/packages/ml/category_validator/common/types/categories.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ml-category-validator", + "id": "def-common.FieldValidationResults.examples", + "type": "Array", + "tags": [ + "type" + ], + "label": "examples", + "description": [ + "\nAn array of example objects representing category field examples." + ], + "signature": [ + { + "pluginId": "@kbn/ml-category-validator", + "scope": "common", + "docId": "kibKbnMlCategoryValidatorPluginApi", + "section": "def-common.CategoryFieldExample", + "text": "CategoryFieldExample" + }, + "[] | undefined" + ], + "path": "x-pack/packages/ml/category_validator/common/types/categories.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ml-category-validator", + "id": "def-common.FieldValidationResults.sampleSize", + "type": "number", + "tags": [ + "type" + ], + "label": "sampleSize", + "description": [ + "\nThe total number of examples used for validation." + ], + "path": "x-pack/packages/ml/category_validator/common/types/categories.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ml-category-validator", + "id": "def-common.FieldValidationResults.overallValidStatus", + "type": "Enum", + "tags": [ + "type" + ], + "label": "overallValidStatus", + "description": [ + "\nThe overall validation status of the category examples." + ], + "signature": [ + { + "pluginId": "@kbn/ml-category-validator", + "scope": "common", + "docId": "kibKbnMlCategoryValidatorPluginApi", + "section": "def-common.CATEGORY_EXAMPLES_VALIDATION_STATUS", + "text": "CATEGORY_EXAMPLES_VALIDATION_STATUS" + } + ], + "path": "x-pack/packages/ml/category_validator/common/types/categories.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ml-category-validator", + "id": "def-common.FieldValidationResults.validationChecks", + "type": "Array", + "tags": [ + "type" + ], + "label": "validationChecks", + "description": [ + "\nAn array of validation checks performed on each example." + ], + "signature": [ + { + "pluginId": "@kbn/ml-category-validator", + "scope": "common", + "docId": "kibKbnMlCategoryValidatorPluginApi", + "section": "def-common.FieldExampleCheck", + "text": "FieldExampleCheck" + }, + "[]" + ], + "path": "x-pack/packages/ml/category_validator/common/types/categories.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/ml-category-validator", "id": "def-common.Token", diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index bbae9751993365..6d867f2269a021 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.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 | |-------------------|-----------|------------------------|-----------------| -| 32 | 0 | 0 | 0 | +| 37 | 0 | 0 | 0 | ## Common diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.devdocs.json b/api_docs/kbn_ml_data_frame_analytics_utils.devdocs.json index 8c6a7440e1e09a..c306defc55a5c0 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.devdocs.json +++ b/api_docs/kbn_ml_data_frame_analytics_utils.devdocs.json @@ -758,7 +758,7 @@ "\nInner data of the node element" ], "signature": [ - "{ id: string; label: string; type: string; analysisType?: string | undefined; }" + "{ id: string; label: string; type: string; analysisType?: string | undefined; isRoot?: boolean | undefined; }" ], "path": "x-pack/packages/ml/data_frame_analytics_utils/src/types.ts", "deprecated": false, @@ -2417,7 +2417,7 @@ "\nUnion type of JOB_MAP_NODE_TYPES" ], "signature": [ - "\"index\" | \"transform\" | \"analytics\" | \"trainedModel\"" + "\"index\" | \"transform\" | \"analytics\" | \"trainedModel\" | \"ingestPipeline\"" ], "path": "x-pack/packages/ml/data_frame_analytics_utils/src/constants.ts", "deprecated": false, @@ -2742,7 +2742,7 @@ "\nCustom enum for job map node types for the DFA map view" ], "signature": [ - "{ readonly ANALYTICS: \"analytics\"; readonly TRANSFORM: \"transform\"; readonly INDEX: \"index\"; readonly TRAINED_MODEL: \"trainedModel\"; }" + "{ readonly ANALYTICS: \"analytics\"; readonly TRANSFORM: \"transform\"; readonly INDEX: \"index\"; readonly TRAINED_MODEL: \"trainedModel\"; readonly INGEST_PIPELINE: \"ingestPipeline\"; }" ], "path": "x-pack/packages/ml/data_frame_analytics_utils/src/constants.ts", "deprecated": false, diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index a4b66ac9626ac6..55e67ae1d05c35 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils'] --- import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx index eb70a1f4ab9c8e..149325659ee8e6 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid'] --- import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.devdocs.json b/api_docs/kbn_ml_date_picker.devdocs.json index 31d967f9e7585e..37b14af61fb1bb 100644 --- a/api_docs/kbn_ml_date_picker.devdocs.json +++ b/api_docs/kbn_ml_date_picker.devdocs.json @@ -536,13 +536,13 @@ "Observable", "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/react-kibana-context-common", "scope": "common", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-common.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnReactKibanaContextCommonPluginApi", + "section": "def-common.KibanaTheme", + "text": "KibanaTheme" }, - ">) => React.ReactElement>" + ">) => JSX.Element" ], "path": "x-pack/packages/ml/date_picker/src/hooks/use_date_picker_context.tsx", "deprecated": false, @@ -559,7 +559,7 @@ "signature": [ "boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | null | undefined" ], - "path": "src/plugins/kibana_react/public/theme/wrap_with_theme.tsx", + "path": "src/plugins/kibana_react/public/theme.tsx", "deprecated": false, "trackAdoption": false }, @@ -574,15 +574,15 @@ "Observable", "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/react-kibana-context-common", "scope": "common", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-common.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnReactKibanaContextCommonPluginApi", + "section": "def-common.KibanaTheme", + "text": "KibanaTheme" }, ">" ], - "path": "src/plugins/kibana_react/public/theme/wrap_with_theme.tsx", + "path": "src/plugins/kibana_react/public/theme.tsx", "deprecated": false, "trackAdoption": false } @@ -631,7 +631,7 @@ "signature": [ "boolean | React.ReactChild | React.ReactFragment | React.ReactPortal | null | undefined" ], - "path": "src/plugins/kibana_react/public/util/to_mount_point.tsx", + "path": "src/plugins/kibana_react/public/util/index.tsx", "deprecated": false, "trackAdoption": false }, @@ -651,7 +651,7 @@ "text": "ToMountPointOptions" } ], - "path": "src/plugins/kibana_react/public/util/to_mount_point.tsx", + "path": "src/plugins/kibana_react/public/util/index.tsx", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index 4f7873f3456b3c..d7f07b44c90b41 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx index 4a22c61416cd00..1df84dc84d30ee 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils'] --- import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx index 65b97c9889568b..b9e9962b536526 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.devdocs.json b/api_docs/kbn_ml_in_memory_table.devdocs.json new file mode 100644 index 00000000000000..4f21249865b518 --- /dev/null +++ b/api_docs/kbn_ml_in_memory_table.devdocs.json @@ -0,0 +1,235 @@ +{ + "id": "@kbn/ml-in-memory-table", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/ml-in-memory-table", + "id": "def-common.useTableState", + "type": "Function", + "tags": [], + "label": "useTableState", + "description": [ + "\nHook to help with managing the pagination and sorting for EuiInMemoryTable" + ], + "signature": [ + "(items: T[], initialSortField: string, initialSortDirection: \"asc\" | \"desc\") => { onTableChange: ({ page, sort }: ", + "Criteria", + ") => void; pagination: ", + "Pagination", + "; sorting: { sort: { field: string; direction: ", + "Direction", + "; }; }; setPageIndex: React.Dispatch>; }" + ], + "path": "x-pack/packages/ml/in_memory_table/hooks/use_table_state.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ml-in-memory-table", + "id": "def-common.useTableState.$1", + "type": "Array", + "tags": [], + "label": "items", + "description": [ + "- data to show in the table" + ], + "signature": [ + "T[]" + ], + "path": "x-pack/packages/ml/in_memory_table/hooks/use_table_state.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ml-in-memory-table", + "id": "def-common.useTableState.$2", + "type": "string", + "tags": [], + "label": "initialSortField", + "description": [ + "- field name to sort by default" + ], + "signature": [ + "string" + ], + "path": "x-pack/packages/ml/in_memory_table/hooks/use_table_state.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ml-in-memory-table", + "id": "def-common.useTableState.$3", + "type": "CompoundType", + "tags": [], + "label": "initialSortDirection", + "description": [ + "- default to 'asc'" + ], + "signature": [ + "\"asc\" | \"desc\"" + ], + "path": "x-pack/packages/ml/in_memory_table/hooks/use_table_state.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/ml-in-memory-table", + "id": "def-common.UseTableState", + "type": "Interface", + "tags": [], + "label": "UseTableState", + "description": [ + "\nReturned type for useTableState hook" + ], + "signature": [ + { + "pluginId": "@kbn/ml-in-memory-table", + "scope": "common", + "docId": "kibKbnMlInMemoryTablePluginApi", + "section": "def-common.UseTableState", + "text": "UseTableState" + }, + "" + ], + "path": "x-pack/packages/ml/in_memory_table/hooks/use_table_state.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ml-in-memory-table", + "id": "def-common.UseTableState.onTableChange", + "type": "Function", + "tags": [], + "label": "onTableChange", + "description": [ + "\nCallback function which gets called whenever the pagination or sorting state of the table changed" + ], + "signature": [ + "({ page, sort }: ", + "Criteria", + ") => void" + ], + "path": "x-pack/packages/ml/in_memory_table/hooks/use_table_state.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/ml-in-memory-table", + "id": "def-common.UseTableState.onTableChange.$1", + "type": "Object", + "tags": [], + "label": "__0", + "description": [], + "signature": [ + "Criteria", + "" + ], + "path": "node_modules/@elastic/eui/eui.d.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/ml-in-memory-table", + "id": "def-common.UseTableState.pagination", + "type": "Object", + "tags": [], + "label": "pagination", + "description": [ + "\nPagination object which contains pageIndex, pageSize" + ], + "signature": [ + "Pagination" + ], + "path": "x-pack/packages/ml/in_memory_table/hooks/use_table_state.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ml-in-memory-table", + "id": "def-common.UseTableState.sorting", + "type": "Object", + "tags": [], + "label": "sorting", + "description": [ + "\nSort field and sort direction" + ], + "signature": [ + "{ sort: { field: string; direction: ", + "Direction", + "; }; }" + ], + "path": "x-pack/packages/ml/in_memory_table/hooks/use_table_state.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ml-in-memory-table", + "id": "def-common.UseTableState.setPageIndex", + "type": "Function", + "tags": [], + "label": "setPageIndex", + "description": [ + "\nsetPageIndex setter function which updates page index" + ], + "signature": [ + "(value: React.SetStateAction) => void" + ], + "path": "x-pack/packages/ml/in_memory_table/hooks/use_table_state.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/ml-in-memory-table", + "id": "def-common.UseTableState.setPageIndex.$1", + "type": "Uncategorized", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "A" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx new file mode 100644 index 00000000000000..78a39a2f638fd0 --- /dev/null +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -0,0 +1,33 @@ +--- +#### +#### This 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: kibKbnMlInMemoryTablePluginApi +slug: /kibana-dev-docs/api/kbn-ml-in-memory-table +title: "@kbn/ml-in-memory-table" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/ml-in-memory-table plugin +date: 2023-08-01 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] +--- +import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; + + + +Contact [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 11 | 0 | 0 | 0 | + +## Common + +### Functions + + +### Interfaces + + diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index b3e1c6f4e12867..f600bc26a7e0d4 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-07-28 +date: 2023-08-01 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 836de16d1d0a45..3044186a58380c 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-07-28 +date: 2023-08-01 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_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx index 3ec34a6f10cee9..061d27ad153d3a 100644 --- a/api_docs/kbn_ml_kibana_theme.mdx +++ b/api_docs/kbn_ml_kibana_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme title: "@kbn/ml-kibana-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-kibana-theme plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme'] --- import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index 4b7f05a79d6df6..cdfd27af14c121 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-07-28 +date: 2023-08-01 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 ca7625f918134a..ba26035c94c5bb 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property'] --- import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json'; diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx index f1c87c04c5fc53..41be59479c7237 100644 --- a/api_docs/kbn_ml_number_utils.mdx +++ b/api_docs/kbn_ml_number_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils title: "@kbn/ml-number-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-number-utils plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.devdocs.json b/api_docs/kbn_ml_query_utils.devdocs.json index 15a6380de170a4..b536c0d1739748 100644 --- a/api_docs/kbn_ml_query_utils.devdocs.json +++ b/api_docs/kbn_ml_query_utils.devdocs.json @@ -155,6 +155,26 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/ml-query-utils", + "id": "def-common.getDefaultDSLQuery", + "type": "Function", + "tags": [], + "label": "getDefaultDSLQuery", + "description": [ + "\nDefault DSL query which matches all the results" + ], + "signature": [ + "() => ", + "QueryDslQueryContainer" + ], + "path": "x-pack/packages/ml/query_utils/src/get_default_query.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/ml-query-utils", "id": "def-common.getSafeAggregationName", @@ -214,7 +234,25 @@ ], "interfaces": [], "enums": [], - "misc": [], + "misc": [ + { + "parentPluginId": "@kbn/ml-query-utils", + "id": "def-common.SearchQueryLanguage", + "type": "Type", + "tags": [], + "label": "SearchQueryLanguage", + "description": [ + "\nType for SearchQueryLanguage" + ], + "signature": [ + "\"kuery\" | \"lucene\"" + ], + "path": "x-pack/packages/ml/query_utils/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], "objects": [ { "parentPluginId": "@kbn/ml-query-utils", @@ -236,6 +274,23 @@ "deprecated": false, "trackAdoption": false, "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ml-query-utils", + "id": "def-common.SEARCH_QUERY_LANGUAGE", + "type": "Object", + "tags": [], + "label": "SEARCH_QUERY_LANGUAGE", + "description": [ + "\nConstant for kuery and lucene string" + ], + "signature": [ + "{ readonly KUERY: \"kuery\"; readonly LUCENE: \"lucene\"; }" + ], + "path": "x-pack/packages/ml/query_utils/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false } ] } diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index 293326c84b3e15..e36f7848497981 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils'] --- import kbnMlQueryUtilsObj from './kbn_ml_query_utils.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 | |-------------------|-----------|------------------------|-----------------| -| 11 | 0 | 0 | 0 | +| 14 | 0 | 0 | 0 | ## Common @@ -31,3 +31,6 @@ Contact [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) for questi ### Functions +### Consts, variables and types + + diff --git a/api_docs/kbn_ml_random_sampler_utils.devdocs.json b/api_docs/kbn_ml_random_sampler_utils.devdocs.json index d34965780d9b03..857500e0b30e7e 100644 --- a/api_docs/kbn_ml_random_sampler_utils.devdocs.json +++ b/api_docs/kbn_ml_random_sampler_utils.devdocs.json @@ -17,7 +17,423 @@ "objects": [] }, "common": { - "classes": [], + "classes": [ + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler", + "type": "Class", + "tags": [], + "label": "RandomSampler", + "description": [ + "\nClass that helps manage random sampling settings\nAutomatically calculates the probability if only total doc count is provided\nElse, use the probability that was explicitly set" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.Unnamed", + "type": "Function", + "tags": [], + "label": "Constructor", + "description": [ + "\nInitial values" + ], + "signature": [ + "any" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.Unnamed.$1", + "type": "CompoundType", + "tags": [], + "label": "randomSamplerMode", + "description": [ + "- random sampler mode" + ], + "signature": [ + { + "pluginId": "@kbn/ml-random-sampler-utils", + "scope": "common", + "docId": "kibKbnMlRandomSamplerUtilsPluginApi", + "section": "def-common.RandomSamplerOption", + "text": "RandomSamplerOption" + } + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.Unnamed.$2", + "type": "Function", + "tags": [], + "label": "setRandomSamplerMode", + "description": [ + "- callback to be called when random sampler mode is set" + ], + "signature": [ + "(mode: ", + { + "pluginId": "@kbn/ml-random-sampler-utils", + "scope": "common", + "docId": "kibKbnMlRandomSamplerUtilsPluginApi", + "section": "def-common.RandomSamplerOption", + "text": "RandomSamplerOption" + }, + ") => void" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.Unnamed.$3", + "type": "CompoundType", + "tags": [], + "label": "randomSamplerProbability", + "description": [ + "- initial value for random sampler probability" + ], + "signature": [ + { + "pluginId": "@kbn/ml-random-sampler-utils", + "scope": "common", + "docId": "kibKbnMlRandomSamplerUtilsPluginApi", + "section": "def-common.RandomSamplerProbability", + "text": "RandomSamplerProbability" + } + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.Unnamed.$4", + "type": "Function", + "tags": [], + "label": "setRandomSamplerProbability", + "description": [ + "- initial setter for random sampler probability" + ], + "signature": [ + "(prob: ", + { + "pluginId": "@kbn/ml-random-sampler-utils", + "scope": "common", + "docId": "kibKbnMlRandomSamplerUtilsPluginApi", + "section": "def-common.RandomSamplerProbability", + "text": "RandomSamplerProbability" + }, + ") => void" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.setDocCount", + "type": "Function", + "tags": [], + "label": "setDocCount", + "description": [ + "\nSet total doc count\nIf probability is not explicitly set, this doc count is used for calculating the suggested probability for sampling" + ], + "signature": [ + "(docCount: number) => void" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.setDocCount.$1", + "type": "number", + "tags": [], + "label": "docCount", + "description": [ + "- total document count" + ], + "signature": [ + "number" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.getDocCount", + "type": "Function", + "tags": [], + "label": "getDocCount", + "description": [ + "\nGet doc count" + ], + "signature": [ + "() => number" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.setMode", + "type": "Function", + "tags": [], + "label": "setMode", + "description": [ + "\nSet and save in storage what mode of random sampling to use" + ], + "signature": [ + "(mode: ", + { + "pluginId": "@kbn/ml-random-sampler-utils", + "scope": "common", + "docId": "kibKbnMlRandomSamplerUtilsPluginApi", + "section": "def-common.RandomSamplerOption", + "text": "RandomSamplerOption" + }, + ") => void" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.setMode.$1", + "type": "CompoundType", + "tags": [], + "label": "mode", + "description": [ + "- mode to use when wrapping/unwrapping random sampling aggs" + ], + "signature": [ + { + "pluginId": "@kbn/ml-random-sampler-utils", + "scope": "common", + "docId": "kibKbnMlRandomSamplerUtilsPluginApi", + "section": "def-common.RandomSamplerOption", + "text": "RandomSamplerOption" + } + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.getMode$", + "type": "Function", + "tags": [], + "label": "getMode$", + "description": [ + "\nObservable to get currently set mode of random sampling" + ], + "signature": [ + "() => ", + "Observable", + "<", + { + "pluginId": "@kbn/ml-random-sampler-utils", + "scope": "common", + "docId": "kibKbnMlRandomSamplerUtilsPluginApi", + "section": "def-common.RandomSamplerOption", + "text": "RandomSamplerOption" + }, + ">" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.getMode", + "type": "Function", + "tags": [], + "label": "getMode", + "description": [ + "\nHelper to get currently set mode of random sampling" + ], + "signature": [ + "() => ", + { + "pluginId": "@kbn/ml-random-sampler-utils", + "scope": "common", + "docId": "kibKbnMlRandomSamplerUtilsPluginApi", + "section": "def-common.RandomSamplerOption", + "text": "RandomSamplerOption" + } + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.setProbability", + "type": "Function", + "tags": [], + "label": "setProbability", + "description": [ + "\nHelper to set the probability to use for random sampling requests" + ], + "signature": [ + "(probability: ", + { + "pluginId": "@kbn/ml-random-sampler-utils", + "scope": "common", + "docId": "kibKbnMlRandomSamplerUtilsPluginApi", + "section": "def-common.RandomSamplerProbability", + "text": "RandomSamplerProbability" + }, + ") => void" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.setProbability.$1", + "type": "CompoundType", + "tags": [], + "label": "probability", + "description": [ + "- numeric value 0 < probability < 1 to use for random sampling" + ], + "signature": [ + { + "pluginId": "@kbn/ml-random-sampler-utils", + "scope": "common", + "docId": "kibKbnMlRandomSamplerUtilsPluginApi", + "section": "def-common.RandomSamplerProbability", + "text": "RandomSamplerProbability" + } + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.getProbability$", + "type": "Function", + "tags": [], + "label": "getProbability$", + "description": [ + "\nObservability to get the probability to use for random sampling requests" + ], + "signature": [ + "() => ", + "Observable", + "<", + { + "pluginId": "@kbn/ml-random-sampler-utils", + "scope": "common", + "docId": "kibKbnMlRandomSamplerUtilsPluginApi", + "section": "def-common.RandomSamplerProbability", + "text": "RandomSamplerProbability" + }, + ">" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.getProbability", + "type": "Function", + "tags": [], + "label": "getProbability", + "description": [ + "\nObservability to get the probability to use for random sampling requests" + ], + "signature": [ + "() => ", + { + "pluginId": "@kbn/ml-random-sampler-utils", + "scope": "common", + "docId": "kibKbnMlRandomSamplerUtilsPluginApi", + "section": "def-common.RandomSamplerProbability", + "text": "RandomSamplerProbability" + } + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSampler.createRandomSamplerWrapper", + "type": "Function", + "tags": [], + "label": "createRandomSamplerWrapper", + "description": [ + "\nHelper to return factory to extend any ES aggregations with the random sampling probability\nReturns wrapper = {wrap, unwrap}\nWhere {wrap} extends the ES aggregations with the random sampling probability\nAnd {unwrap} accesses the original ES aggregations directly" + ], + "signature": [ + "() => { wrap: >(aggs: T) => Record | T; unwrap: >(responseAggs: T) => T | T[string]; probability: number; }" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], "functions": [ { "parentPluginId": "@kbn/ml-random-sampler-utils", @@ -107,6 +523,105 @@ "interfaces": [], "enums": [], "misc": [ + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.DEFAULT_PROBABILITY", + "type": "number", + "tags": [], + "label": "DEFAULT_PROBABILITY", + "description": [ + "\nDefault probability to use" + ], + "signature": [ + "0.001" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.MIN_SAMPLER_PROBABILITY", + "type": "number", + "tags": [], + "label": "MIN_SAMPLER_PROBABILITY", + "description": [ + "\nDefault recommended minimum probability for default sampling" + ], + "signature": [ + "0.00001" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RANDOM_SAMPLER_PROBABILITIES", + "type": "Array", + "tags": [], + "label": "RANDOM_SAMPLER_PROBABILITIES", + "description": [ + "\nList of default probabilities to use for random sampler" + ], + "signature": [ + "number[]" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RANDOM_SAMPLER_STEP", + "type": "number", + "tags": [], + "label": "RANDOM_SAMPLER_STEP", + "description": [ + "\nDefault step minimum probability for default sampling" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSamplerOption", + "type": "Type", + "tags": [], + "label": "RandomSamplerOption", + "description": [ + "\nDefault option for random sampler type" + ], + "signature": [ + "\"off\" | \"on_automatic\" | \"on_manual\"" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RandomSamplerProbability", + "type": "Type", + "tags": [], + "label": "RandomSamplerProbability", + "description": [ + "\nType for the random sampler probability" + ], + "signature": [ + "number | null" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/ml-random-sampler-utils", "id": "def-common.RandomSamplerWrapper", @@ -131,6 +646,24 @@ "initialIsOpen": false } ], - "objects": [] + "objects": [ + { + "parentPluginId": "@kbn/ml-random-sampler-utils", + "id": "def-common.RANDOM_SAMPLER_OPTION", + "type": "Object", + "tags": [], + "label": "RANDOM_SAMPLER_OPTION", + "description": [ + "\nDefault options for random sampler" + ], + "signature": [ + "{ readonly ON_AUTOMATIC: \"on_automatic\"; readonly ON_MANUAL: \"on_manual\"; readonly OFF: \"off\"; }" + ], + "path": "x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ] } } \ No newline at end of file diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx index e444a1295c5f5e..dea46ff7fbb2b8 100644 --- a/api_docs/kbn_ml_random_sampler_utils.mdx +++ b/api_docs/kbn_ml_random_sampler_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils title: "@kbn/ml-random-sampler-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-random-sampler-utils plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils'] --- import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json'; @@ -21,13 +21,19 @@ Contact [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) for questi | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 5 | 0 | 0 | 0 | +| 30 | 0 | 0 | 0 | ## Common +### Objects + + ### Functions +### Classes + + ### Consts, variables and types diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx index 08a7789ddaa55e..d9564b2369e8b2 100644 --- a/api_docs/kbn_ml_route_utils.mdx +++ b/api_docs/kbn_ml_route_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils title: "@kbn/ml-route-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-route-utils plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils'] --- import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx index e4bd338fd238cd..1d2494f3b8fd0c 100644 --- a/api_docs/kbn_ml_runtime_field_utils.mdx +++ b/api_docs/kbn_ml_runtime_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils title: "@kbn/ml-runtime-field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-runtime-field-utils plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils'] --- import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index 6ba5b732e98e34..46ce5f1f9b1a47 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-07-28 +date: 2023-08-01 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_trained_models_utils.devdocs.json b/api_docs/kbn_ml_trained_models_utils.devdocs.json index a03e97875dd630..78b0f58eaba25e 100644 --- a/api_docs/kbn_ml_trained_models_utils.devdocs.json +++ b/api_docs/kbn_ml_trained_models_utils.devdocs.json @@ -75,7 +75,7 @@ "label": "SupportedPytorchTasksType", "description": [], "signature": [ - "\"ner\" | \"question_answering\" | \"zero_shot_classification\" | \"text_classification\" | \"text_embedding\" | \"fill_mask\" | \"text_expansion\"" + "\"text_expansion\" | \"ner\" | \"question_answering\" | \"zero_shot_classification\" | \"text_classification\" | \"text_embedding\" | \"fill_mask\"" ], "path": "x-pack/packages/ml/trained_models_utils/src/constants/trained_models.ts", "deprecated": false, diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index 9e7ec38a73307e..c4bba785ebf740 100644 --- a/api_docs/kbn_ml_trained_models_utils.mdx +++ b/api_docs/kbn_ml_trained_models_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils title: "@kbn/ml-trained-models-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-trained-models-utils plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 240b871194bb65..e7f0a38cddd20c 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-07-28 +date: 2023-08-01 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 e14b6487e49984..61d9e8b1244c76 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index f962e8bdedf531..cfccee21a682b9 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index be1614e26bc146..70237f41638665 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index b8abc2ef53d7b4..17f00ccafb6a22 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-07-28 +date: 2023-08-01 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 8fec31aae9c09b..75be19e40ffcb3 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-07-28 +date: 2023-08-01 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 25cc639f533412..e61f2bd8739968 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-07-28 +date: 2023-08-01 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 90250aa1b2422b..238bd44615b072 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-07-28 +date: 2023-08-01 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 c017e90884e73f..c97bcd83bb3f06 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-07-28 +date: 2023-08-01 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 5cfa188d78fd18..5985c3621765bb 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 1ca80a827b645b..863068b76c1971 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling'] --- import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 69e7fcddf89396..dcbbab5dc6c956 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.devdocs.json b/api_docs/kbn_react_kibana_context_common.devdocs.json new file mode 100644 index 00000000000000..615ce58f262f47 --- /dev/null +++ b/api_docs/kbn_react_kibana_context_common.devdocs.json @@ -0,0 +1,182 @@ +{ + "id": "@kbn/react-kibana-context-common", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/react-kibana-context-common", + "id": "def-common.getColorMode", + "type": "Function", + "tags": [], + "label": "getColorMode", + "description": [ + "\nGiven a `KibanaTheme`, provide a color mode for use with EUI." + ], + "signature": [ + "(theme: ", + { + "pluginId": "@kbn/react-kibana-context-common", + "scope": "common", + "docId": "kibKbnReactKibanaContextCommonPluginApi", + "section": "def-common.KibanaTheme", + "text": "KibanaTheme" + }, + ") => ", + "EuiThemeColorModeStandard" + ], + "path": "packages/react/kibana_context/common/color_mode.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-common", + "id": "def-common.getColorMode.$1", + "type": "Object", + "tags": [], + "label": "theme", + "description": [ + "KibanaTheme" + ], + "signature": [ + { + "pluginId": "@kbn/react-kibana-context-common", + "scope": "common", + "docId": "kibKbnReactKibanaContextCommonPluginApi", + "section": "def-common.KibanaTheme", + "text": "KibanaTheme" + } + ], + "path": "packages/react/kibana_context/common/color_mode.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [ + "EuiThemeColorModeStandard" + ], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/react-kibana-context-common", + "id": "def-common.KibanaTheme", + "type": "Interface", + "tags": [], + "label": "KibanaTheme", + "description": [ + "\nThe representation of the Kibana theme, (not to be confused with the EUI theme)." + ], + "path": "packages/react/kibana_context/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-common", + "id": "def-common.KibanaTheme.darkMode", + "type": "boolean", + "tags": [], + "label": "darkMode", + "description": [ + "is dark mode enabled or not" + ], + "path": "packages/react/kibana_context/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/react-kibana-context-common", + "id": "def-common.ThemeServiceStart", + "type": "Interface", + "tags": [], + "label": "ThemeServiceStart", + "description": [ + "\nThe `ThemeService` start contract, provided to plugins during the `start` lifecycle." + ], + "path": "packages/react/kibana_context/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-common", + "id": "def-common.ThemeServiceStart.theme$", + "type": "Object", + "tags": [], + "label": "theme$", + "description": [], + "signature": [ + "Observable", + "<", + { + "pluginId": "@kbn/react-kibana-context-common", + "scope": "common", + "docId": "kibKbnReactKibanaContextCommonPluginApi", + "section": "def-common.KibanaTheme", + "text": "KibanaTheme" + }, + ">" + ], + "path": "packages/react/kibana_context/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [], + "objects": [ + { + "parentPluginId": "@kbn/react-kibana-context-common", + "id": "def-common.defaultTheme", + "type": "Object", + "tags": [], + "label": "defaultTheme", + "description": [ + "\nThe default `KibanaTheme` for use in Storybook, Jest, or initialization. At\nruntime, the theme should always be provided by the `ThemeService`." + ], + "path": "packages/react/kibana_context/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-common", + "id": "def-common.defaultTheme.darkMode", + "type": "boolean", + "tags": [], + "label": "darkMode", + "description": [], + "signature": [ + "false" + ], + "path": "packages/react/kibana_context/common/index.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ] + } +} \ No newline at end of file diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx new file mode 100644 index 00000000000000..d0e661c3e4d668 --- /dev/null +++ b/api_docs/kbn_react_kibana_context_common.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: kibKbnReactKibanaContextCommonPluginApi +slug: /kibana-dev-docs/api/kbn-react-kibana-context-common +title: "@kbn/react-kibana-context-common" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/react-kibana-context-common plugin +date: 2023-08-01 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] +--- +import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; + + + +Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 8 | 0 | 2 | 0 | + +## Common + +### Objects + + +### Functions + + +### Interfaces + + diff --git a/api_docs/kbn_react_kibana_context_render.devdocs.json b/api_docs/kbn_react_kibana_context_render.devdocs.json new file mode 100644 index 00000000000000..f65fefbc6890bd --- /dev/null +++ b/api_docs/kbn_react_kibana_context_render.devdocs.json @@ -0,0 +1,135 @@ +{ + "id": "@kbn/react-kibana-context-render", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/react-kibana-context-render", + "id": "def-common.KibanaRenderContextProvider", + "type": "Function", + "tags": [], + "label": "KibanaRenderContextProvider", + "description": [ + "\nThe `KibanaRenderContextProvider` provides the necessary context for an out-of-current\nReact render, such as using `ReactDOM.render()`." + ], + "signature": [ + "({ children, i18n, ...props }: React.PropsWithChildren<", + { + "pluginId": "@kbn/react-kibana-context-render", + "scope": "common", + "docId": "kibKbnReactKibanaContextRenderPluginApi", + "section": "def-common.KibanaRenderContextProviderProps", + "text": "KibanaRenderContextProviderProps" + }, + ">) => JSX.Element" + ], + "path": "packages/react/kibana_context/render/render_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-render", + "id": "def-common.KibanaRenderContextProvider.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n children,\n i18n,\n ...props\n}", + "description": [], + "signature": [ + "React.PropsWithChildren<", + { + "pluginId": "@kbn/react-kibana-context-render", + "scope": "common", + "docId": "kibKbnReactKibanaContextRenderPluginApi", + "section": "def-common.KibanaRenderContextProviderProps", + "text": "KibanaRenderContextProviderProps" + }, + ">" + ], + "path": "packages/react/kibana_context/render/render_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/react-kibana-context-render", + "id": "def-common.KibanaRenderContextProviderProps", + "type": "Interface", + "tags": [], + "label": "KibanaRenderContextProviderProps", + "description": [ + "Props for the KibanaContextProvider" + ], + "signature": [ + { + "pluginId": "@kbn/react-kibana-context-render", + "scope": "common", + "docId": "kibKbnReactKibanaContextRenderPluginApi", + "section": "def-common.KibanaRenderContextProviderProps", + "text": "KibanaRenderContextProviderProps" + }, + " extends ", + { + "pluginId": "@kbn/react-kibana-context-theme", + "scope": "common", + "docId": "kibKbnReactKibanaContextThemePluginApi", + "section": "def-common.KibanaThemeProviderProps", + "text": "KibanaThemeProviderProps" + } + ], + "path": "packages/react/kibana_context/render/render_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-render", + "id": "def-common.KibanaRenderContextProviderProps.i18n", + "type": "Object", + "tags": [], + "label": "i18n", + "description": [ + "The `I18nStart` API from `CoreStart`." + ], + "signature": [ + { + "pluginId": "@kbn/core-i18n-browser", + "scope": "common", + "docId": "kibKbnCoreI18nBrowserPluginApi", + "section": "def-common.I18nStart", + "text": "I18nStart" + } + ], + "path": "packages/react/kibana_context/render/render_provider.tsx", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx new file mode 100644 index 00000000000000..c744f484f0d7ca --- /dev/null +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -0,0 +1,33 @@ +--- +#### +#### This 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: kibKbnReactKibanaContextRenderPluginApi +slug: /kibana-dev-docs/api/kbn-react-kibana-context-render +title: "@kbn/react-kibana-context-render" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/react-kibana-context-render plugin +date: 2023-08-01 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] +--- +import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; + + + +Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 4 | 0 | 1 | 0 | + +## Common + +### Functions + + +### Interfaces + + diff --git a/api_docs/kbn_react_kibana_context_root.devdocs.json b/api_docs/kbn_react_kibana_context_root.devdocs.json new file mode 100644 index 00000000000000..bd76f695fb5a76 --- /dev/null +++ b/api_docs/kbn_react_kibana_context_root.devdocs.json @@ -0,0 +1,129 @@ +{ + "id": "@kbn/react-kibana-context-root", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/react-kibana-context-root", + "id": "def-common.KibanaRootContextProvider", + "type": "Function", + "tags": [], + "label": "KibanaRootContextProvider", + "description": [ + "\nThe `KibanaRootContextProvider` provides the necessary context at the root of Kibana, including\ninitialization and the theme and i18n contexts. This context should only be used _once_, and\nat the _very top_ of the application root, rendered by the `RenderingService`.\n\nWhile this context is exposed for edge cases and tooling, (e.g. Storybook, Jest, etc.), it should\n_not_ be used in applications. Instead, applications should choose the context that makes the\nmost sense for the problem they are trying to solve:\n\n- Consider `KibanaRenderContextProvider` for rendering components outside the current tree, (e.g.\nwith `ReactDOM.render`).\n- Consider `KibanaThemeContextProvider` for altering the theme of a component or tree of components.\n" + ], + "signature": [ + "({ children, i18n, ...props }: React.PropsWithChildren<", + { + "pluginId": "@kbn/react-kibana-context-root", + "scope": "common", + "docId": "kibKbnReactKibanaContextRootPluginApi", + "section": "def-common.KibanaRootContextProviderProps", + "text": "KibanaRootContextProviderProps" + }, + ">) => JSX.Element" + ], + "path": "packages/react/kibana_context/root/root_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-root", + "id": "def-common.KibanaRootContextProvider.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n children,\n i18n,\n ...props\n}", + "description": [], + "signature": [ + "React.PropsWithChildren<", + { + "pluginId": "@kbn/react-kibana-context-root", + "scope": "common", + "docId": "kibKbnReactKibanaContextRootPluginApi", + "section": "def-common.KibanaRootContextProviderProps", + "text": "KibanaRootContextProviderProps" + }, + ">" + ], + "path": "packages/react/kibana_context/root/root_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/react-kibana-context-root", + "id": "def-common.KibanaRootContextProviderProps", + "type": "Interface", + "tags": [], + "label": "KibanaRootContextProviderProps", + "description": [ + "Props for the KibanaRootContextProvider" + ], + "signature": [ + { + "pluginId": "@kbn/react-kibana-context-root", + "scope": "common", + "docId": "kibKbnReactKibanaContextRootPluginApi", + "section": "def-common.KibanaRootContextProviderProps", + "text": "KibanaRootContextProviderProps" + }, + " extends ", + "KibanaEuiProviderProps" + ], + "path": "packages/react/kibana_context/root/root_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-root", + "id": "def-common.KibanaRootContextProviderProps.i18n", + "type": "Object", + "tags": [], + "label": "i18n", + "description": [ + "The `I18nStart` API from `CoreStart`." + ], + "signature": [ + { + "pluginId": "@kbn/core-i18n-browser", + "scope": "common", + "docId": "kibKbnCoreI18nBrowserPluginApi", + "section": "def-common.I18nStart", + "text": "I18nStart" + } + ], + "path": "packages/react/kibana_context/root/root_provider.tsx", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx new file mode 100644 index 00000000000000..bbb5c201f29307 --- /dev/null +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -0,0 +1,33 @@ +--- +#### +#### This 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: kibKbnReactKibanaContextRootPluginApi +slug: /kibana-dev-docs/api/kbn-react-kibana-context-root +title: "@kbn/react-kibana-context-root" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/react-kibana-context-root plugin +date: 2023-08-01 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] +--- +import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; + + + +Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 4 | 0 | 1 | 1 | + +## Common + +### Functions + + +### Interfaces + + diff --git a/api_docs/kbn_react_kibana_context_styled.devdocs.json b/api_docs/kbn_react_kibana_context_styled.devdocs.json new file mode 100644 index 00000000000000..8ec9d6a84fb7c9 --- /dev/null +++ b/api_docs/kbn_react_kibana_context_styled.devdocs.json @@ -0,0 +1,471 @@ +{ + "id": "@kbn/react-kibana-context-styled", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.createGlobalStyle", + "type": "Function", + "tags": [], + "label": "createGlobalStyle", + "description": [ + "/** see https://styled-components.com/docs/api#createglobalstyle */" + ], + "signature": [ + "

(first: TemplateStringsArray | ", + "CSSObject", + " | ", + "InterpolationFunction", + "<", + "ThemedStyledProps", + ">, ...interpolations: ", + "Interpolation", + "<", + "ThemedStyledProps", + ">[]) => ", + "GlobalStyleComponent", + "" + ], + "path": "packages/react/kibana_context/styled/styled_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.createGlobalStyle.$1", + "type": "CompoundType", + "tags": [], + "label": "first", + "description": [], + "signature": [ + "TemplateStringsArray | ", + "CSSObject", + " | ", + "InterpolationFunction", + "<", + "ThemedStyledProps", + ">" + ], + "path": "node_modules/@types/styled-components/ts3.7/index.d.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.createGlobalStyle.$2", + "type": "Array", + "tags": [], + "label": "interpolations", + "description": [], + "signature": [ + "Interpolation", + "<", + "ThemedStyledProps", + ">[]" + ], + "path": "node_modules/@types/styled-components/ts3.7/index.d.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.css", + "type": "Function", + "tags": [], + "label": "css", + "description": [ + "/** see https://styled-components.com/docs/api#css-prop */" + ], + "signature": [ + "BaseThemedCssFunction", + "<", + { + "pluginId": "@kbn/react-kibana-context-styled", + "scope": "common", + "docId": "kibKbnReactKibanaContextStyledPluginApi", + "section": "def-common.EuiTheme", + "text": "EuiTheme" + }, + ">" + ], + "path": "packages/react/kibana_context/styled/styled_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.euiStyled", + "type": "Function", + "tags": [], + "label": "euiStyled", + "description": [ + "/** see https://styled-components.com/docs/api#styled */" + ], + "signature": [ + "ThemedBaseStyledInterface", + "<", + { + "pluginId": "@kbn/react-kibana-context-styled", + "scope": "common", + "docId": "kibKbnReactKibanaContextStyledPluginApi", + "section": "def-common.EuiTheme", + "text": "EuiTheme" + }, + ">" + ], + "path": "packages/react/kibana_context/styled/styled_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.keyframes", + "type": "Function", + "tags": [], + "label": "keyframes", + "description": [ + "/** see https://styled-components.com/docs/api#keyframes */" + ], + "signature": [ + "(strings: TemplateStringsArray | ", + "CSSKeyframes", + ", ...interpolations: ", + "SimpleInterpolation", + "[]) => ", + "Keyframes" + ], + "path": "packages/react/kibana_context/styled/styled_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.keyframes.$1", + "type": "CompoundType", + "tags": [], + "label": "strings", + "description": [], + "signature": [ + "TemplateStringsArray | ", + "CSSKeyframes" + ], + "path": "node_modules/@types/styled-components/ts3.7/index.d.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.keyframes.$2", + "type": "Array", + "tags": [], + "label": "interpolations", + "description": [], + "signature": [ + "SimpleInterpolation", + "[]" + ], + "path": "node_modules/@types/styled-components/ts3.7/index.d.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.KibanaStyledComponentsThemeProvider", + "type": "Function", + "tags": [], + "label": "KibanaStyledComponentsThemeProvider", + "description": [ + "\nA `styled-components` `ThemeProvider` that incorporates EUI dark mode." + ], + "signature": [ + "({ darkMode, ...otherProps }: Omit<", + "ThemeProviderProps", + ", \"theme\"> & { darkMode?: boolean | undefined; }) => JSX.Element" + ], + "path": "packages/react/kibana_context/styled/styled_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.KibanaStyledComponentsThemeProvider.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n darkMode = false,\n ...otherProps\n}", + "description": [], + "signature": [ + "Omit<", + "ThemeProviderProps", + ", \"theme\"> & { darkMode?: boolean | undefined; }" + ], + "path": "packages/react/kibana_context/styled/styled_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.KibanaStyledComponentsThemeProviderDecorator", + "type": "Function", + "tags": [ + "deprecated" + ], + "label": "KibanaStyledComponentsThemeProviderDecorator", + "description": [ + "\nStorybook decorator using the EUI theme provider. Uses the value from\n`globals` provided by the Storybook theme switcher.\n" + ], + "signature": [ + "(storyFn: ", + "PartialStoryFn", + ", ", + "Args", + ">, { globals }: ", + "StoryContext", + ", ", + "Args", + ">) => JSX.Element" + ], + "path": "packages/react/kibana_context/styled/styled_provider.tsx", + "deprecated": true, + "trackAdoption": false, + "references": [ + { + "plugin": "kibanaReact", + "path": "src/plugins/kibana_react/common/eui_styled_components.tsx" + }, + { + "plugin": "kibanaReact", + "path": "src/plugins/kibana_react/common/eui_styled_components.tsx" + }, + { + "plugin": "kibanaReact", + "path": "src/plugins/kibana_react/common/index.ts" + } + ], + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.KibanaStyledComponentsThemeProviderDecorator.$1", + "type": "Function", + "tags": [], + "label": "storyFn", + "description": [], + "signature": [ + "PartialStoryFn", + ", ", + "Args", + ">" + ], + "path": "packages/react/kibana_context/styled/styled_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.KibanaStyledComponentsThemeProviderDecorator.$2", + "type": "CompoundType", + "tags": [], + "label": "{ globals }", + "description": [], + "signature": [ + "StoryContext", + ", ", + "Args", + ">" + ], + "path": "packages/react/kibana_context/styled/styled_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.withTheme", + "type": "Function", + "tags": [], + "label": "withTheme", + "description": [ + "/** see https://styled-components.com/docs/api#withtheme */" + ], + "signature": [ + ">(component: React.ComponentProps extends { theme?: ", + { + "pluginId": "@kbn/react-kibana-context-styled", + "scope": "common", + "docId": "kibKbnReactKibanaContextStyledPluginApi", + "section": "def-common.EuiTheme", + "text": "EuiTheme" + }, + " | undefined; } ? C : never) => React.ForwardRefExoticComponent, ", + { + "pluginId": "@kbn/react-kibana-context-styled", + "scope": "common", + "docId": "kibKbnReactKibanaContextStyledPluginApi", + "section": "def-common.EuiTheme", + "text": "EuiTheme" + }, + ">>" + ], + "path": "packages/react/kibana_context/styled/styled_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.withTheme.$1", + "type": "Uncategorized", + "tags": [], + "label": "component", + "description": [], + "signature": [ + "React.ComponentProps extends { theme?: T | undefined; } ? C : never" + ], + "path": "node_modules/@types/styled-components/ts3.7/index.d.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.EuiTheme", + "type": "Interface", + "tags": [], + "label": "EuiTheme", + "description": [ + "\nA `deprecated` structure representing a Kibana theme containing variables from the current EUI theme." + ], + "path": "packages/react/kibana_context/styled/styled_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.EuiTheme.eui", + "type": "Object", + "tags": [], + "label": "eui", + "description": [ + "EUI theme vars that automaticall adjust to light and dark mode." + ], + "signature": [ + "{ euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiTableHoverColor: string; euiTableSelectedColor: string; euiTableHoverSelectedColor: string; euiTableActionsBorderColor: string; euiTableHoverClickableColor: string; euiTableFocusClickableColor: string; euiContrastRatioText: number; euiContrastRatioGraphic: number; euiContrastRatioDisabled: number; euiAnimSlightBounce: string; euiAnimSlightResistance: string; euiAnimSpeedExtraFast: string; euiAnimSpeedFast: string; euiAnimSpeedNormal: string; euiAnimSpeedSlow: string; euiAnimSpeedExtraSlow: string; euiBorderWidthThin: string; euiBorderWidthThick: string; euiBorderColor: string; euiBorderRadius: string; euiBorderRadiusSmall: string; euiBorderThick: string; euiBorderThin: string; euiBorderEditable: string; euiButtonHeight: string; euiButtonHeightSmall: string; euiButtonHeightXSmall: string; euiButtonColorDisabled: string; euiButtonColorDisabledText: string; euiButtonColorGhostDisabled: string; euiButtonTypes: { primary: string; accent: string; success: string; warning: string; danger: string; ghost: string; text: string; }; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; euiFormControlIconSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiFormControlLayoutGroupInputHeight: string; euiFormControlLayoutGroupInputCompressedHeight: string; euiFormControlLayoutGroupInputCompressedBorderRadius: string; euiHeaderBackgroundColor: string; euiHeaderDarkBackgroundColor: string; euiHeaderBorderColor: string; euiHeaderBreadcrumbColor: string; euiHeaderHeight: string; euiHeaderChildSize: string; euiHeaderHeightCompensation: string; euiPageDefaultMaxWidth: string; euiPageSidebarMinWidth: string; euiPanelPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiPanelBorderRadiusModifiers: { borderRadiusNone: number; borderRadiusMedium: string; }; euiPanelBackgroundColorModifiers: { transparent: string; plain: string; subdued: string; accent: string; primary: string; success: string; warning: string; danger: string; }; euiBreakpoints: { xs: number; s: string; m: string; l: string; xl: string; }; euiBreakpointKeys: string; euiShadowColor: string; euiSize: string; euiSizeXS: string; euiSizeS: string; euiSizeM: string; euiSizeL: string; euiSizeXL: string; euiSizeXXL: string; euiScrollBar: string; euiScrollBarCorner: string; euiScrollBarCornerThin: string; euiFocusRingColor: string; euiFocusRingAnimStartColor: string; euiFocusRingAnimStartSize: string; euiFocusRingAnimStartSizeLarge: string; euiFocusRingSizeLarge: string; euiFocusRingSize: string; euiFocusTransparency: number; euiFocusTransparencyPercent: string; euiFocusBackgroundColor: string; euiFontFamily: string; euiCodeFontFamily: string; euiFontFeatureSettings: string; euiTextScale: string; euiFontSize: string; euiFontSizeXS: string; euiFontSizeS: string; euiFontSizeM: string; euiFontSizeL: string; euiFontSizeXL: string; euiFontSizeXXL: string; euiLineHeight: number; euiBodyLineHeight: number; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; }" + ], + "path": "packages/react/kibana_context/styled/styled_provider.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/react-kibana-context-styled", + "id": "def-common.EuiTheme.darkMode", + "type": "boolean", + "tags": [], + "label": "darkMode", + "description": [ + "True if the theme is in \"dark\" mode, false otherwise." + ], + "path": "packages/react/kibana_context/styled/styled_provider.tsx", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx new file mode 100644 index 00000000000000..df404854d44832 --- /dev/null +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -0,0 +1,33 @@ +--- +#### +#### This 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: kibKbnReactKibanaContextStyledPluginApi +slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled +title: "@kbn/react-kibana-context-styled" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/react-kibana-context-styled plugin +date: 2023-08-01 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] +--- +import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; + + + +Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 18 | 0 | 3 | 0 | + +## Common + +### Functions + + +### Interfaces + + diff --git a/api_docs/kbn_react_kibana_context_theme.devdocs.json b/api_docs/kbn_react_kibana_context_theme.devdocs.json new file mode 100644 index 00000000000000..d5f7f70055021b --- /dev/null +++ b/api_docs/kbn_react_kibana_context_theme.devdocs.json @@ -0,0 +1,254 @@ +{ + "id": "@kbn/react-kibana-context-theme", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/react-kibana-context-theme", + "id": "def-common.KibanaThemeProvider", + "type": "Function", + "tags": [], + "label": "KibanaThemeProvider", + "description": [ + "\nA Kibana-specific theme provider that uses the Kibana theme service to customize the EUI theme." + ], + "signature": [ + "({ theme: { theme$ }, euiTheme: theme, children, ...props }: ", + { + "pluginId": "@kbn/react-kibana-context-theme", + "scope": "common", + "docId": "kibKbnReactKibanaContextThemePluginApi", + "section": "def-common.KibanaThemeProviderProps", + "text": "KibanaThemeProviderProps" + }, + ") => JSX.Element" + ], + "path": "packages/react/kibana_context/theme/theme_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-theme", + "id": "def-common.KibanaThemeProvider.$1", + "type": "Object", + "tags": [], + "label": "{\n theme: { theme$ },\n euiTheme: theme,\n children,\n ...props\n}", + "description": [], + "signature": [ + { + "pluginId": "@kbn/react-kibana-context-theme", + "scope": "common", + "docId": "kibKbnReactKibanaContextThemePluginApi", + "section": "def-common.KibanaThemeProviderProps", + "text": "KibanaThemeProviderProps" + } + ], + "path": "packages/react/kibana_context/theme/theme_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/react-kibana-context-theme", + "id": "def-common.wrapWithTheme", + "type": "Function", + "tags": [], + "label": "wrapWithTheme", + "description": [ + "\nA React HOC that wraps a component with the `KibanaThemeProvider`." + ], + "signature": [ + "(node: React.ReactNode, theme: ", + { + "pluginId": "@kbn/react-kibana-context-common", + "scope": "common", + "docId": "kibKbnReactKibanaContextCommonPluginApi", + "section": "def-common.ThemeServiceStart", + "text": "ThemeServiceStart" + }, + ") => JSX.Element" + ], + "path": "packages/react/kibana_context/theme/with_theme.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-theme", + "id": "def-common.wrapWithTheme.$1", + "type": "CompoundType", + "tags": [], + "label": "node", + "description": [ + "The node to wrap." + ], + "signature": [ + "React.ReactNode" + ], + "path": "packages/react/kibana_context/theme/with_theme.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/react-kibana-context-theme", + "id": "def-common.wrapWithTheme.$2", + "type": "Object", + "tags": [], + "label": "theme", + "description": [ + "The `ThemeServiceStart` API." + ], + "signature": [ + { + "pluginId": "@kbn/react-kibana-context-common", + "scope": "common", + "docId": "kibKbnReactKibanaContextCommonPluginApi", + "section": "def-common.ThemeServiceStart", + "text": "ThemeServiceStart" + } + ], + "path": "packages/react/kibana_context/theme/with_theme.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/react-kibana-context-theme", + "id": "def-common.KibanaTheme", + "type": "Interface", + "tags": [], + "label": "KibanaTheme", + "description": [ + "\nThe representation of the Kibana theme, (not to be confused with the EUI theme)." + ], + "path": "packages/react/kibana_context/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-theme", + "id": "def-common.KibanaTheme.darkMode", + "type": "boolean", + "tags": [], + "label": "darkMode", + "description": [ + "is dark mode enabled or not" + ], + "path": "packages/react/kibana_context/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/react-kibana-context-theme", + "id": "def-common.KibanaThemeProviderProps", + "type": "Interface", + "tags": [], + "label": "KibanaThemeProviderProps", + "description": [ + "\nProps for the `KibanaThemeProvider`." + ], + "signature": [ + { + "pluginId": "@kbn/react-kibana-context-theme", + "scope": "common", + "docId": "kibKbnReactKibanaContextThemePluginApi", + "section": "def-common.KibanaThemeProviderProps", + "text": "KibanaThemeProviderProps" + }, + " extends EuiProps<{}>" + ], + "path": "packages/react/kibana_context/theme/theme_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-theme", + "id": "def-common.KibanaThemeProviderProps.theme", + "type": "Object", + "tags": [], + "label": "theme", + "description": [ + "The `ThemeServiceStart` API." + ], + "signature": [ + { + "pluginId": "@kbn/react-kibana-context-common", + "scope": "common", + "docId": "kibKbnReactKibanaContextCommonPluginApi", + "section": "def-common.ThemeServiceStart", + "text": "ThemeServiceStart" + } + ], + "path": "packages/react/kibana_context/theme/theme_provider.tsx", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [], + "objects": [ + { + "parentPluginId": "@kbn/react-kibana-context-theme", + "id": "def-common.defaultTheme", + "type": "Object", + "tags": [], + "label": "defaultTheme", + "description": [ + "\nThe default `KibanaTheme` for use in Storybook, Jest, or initialization. At\nruntime, the theme should always be provided by the `ThemeService`." + ], + "path": "packages/react/kibana_context/common/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-context-theme", + "id": "def-common.defaultTheme.darkMode", + "type": "boolean", + "tags": [], + "label": "darkMode", + "description": [], + "signature": [ + "false" + ], + "path": "packages/react/kibana_context/common/index.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ] + } +} \ No newline at end of file diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx new file mode 100644 index 00000000000000..2a91188a6c8929 --- /dev/null +++ b/api_docs/kbn_react_kibana_context_theme.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: kibKbnReactKibanaContextThemePluginApi +slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme +title: "@kbn/react-kibana-context-theme" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/react-kibana-context-theme plugin +date: 2023-08-01 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] +--- +import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; + + + +Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 11 | 0 | 2 | 0 | + +## Common + +### Objects + + +### Functions + + +### Interfaces + + diff --git a/api_docs/kbn_react_kibana_mount.devdocs.json b/api_docs/kbn_react_kibana_mount.devdocs.json new file mode 100644 index 00000000000000..243b8bd440a2c3 --- /dev/null +++ b/api_docs/kbn_react_kibana_mount.devdocs.json @@ -0,0 +1,264 @@ +{ + "id": "@kbn/react-kibana-mount", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/react-kibana-mount", + "id": "def-common.MountPointPortal", + "type": "Function", + "tags": [], + "label": "MountPointPortal", + "description": [ + "\nUtility component to portal a part of a react application into the provided `MountPoint`." + ], + "signature": [ + "({ children, setMountPoint }: React.PropsWithChildren<", + { + "pluginId": "@kbn/react-kibana-mount", + "scope": "common", + "docId": "kibKbnReactKibanaMountPluginApi", + "section": "def-common.MountPointPortalProps", + "text": "MountPointPortalProps" + }, + ">) => React.ReactPortal | null" + ], + "path": "packages/react/kibana_mount/mount_point_portal.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-mount", + "id": "def-common.MountPointPortal.$1", + "type": "CompoundType", + "tags": [], + "label": "{ children, setMountPoint }", + "description": [], + "signature": [ + "React.PropsWithChildren<", + { + "pluginId": "@kbn/react-kibana-mount", + "scope": "common", + "docId": "kibKbnReactKibanaMountPluginApi", + "section": "def-common.MountPointPortalProps", + "text": "MountPointPortalProps" + }, + ">" + ], + "path": "packages/react/kibana_mount/mount_point_portal.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/react-kibana-mount", + "id": "def-common.toMountPoint", + "type": "Function", + "tags": [], + "label": "toMountPoint", + "description": [ + "\nMountPoint converter for react nodes.\n" + ], + "signature": [ + "(node: React.ReactNode, params: ", + { + "pluginId": "@kbn/react-kibana-mount", + "scope": "common", + "docId": "kibKbnReactKibanaMountPluginApi", + "section": "def-common.ToMountPointParams", + "text": "ToMountPointParams" + }, + ") => ", + { + "pluginId": "@kbn/core-mount-utils-browser", + "scope": "common", + "docId": "kibKbnCoreMountUtilsBrowserPluginApi", + "section": "def-common.MountPoint", + "text": "MountPoint" + }, + "" + ], + "path": "packages/react/kibana_mount/to_mount_point.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-mount", + "id": "def-common.toMountPoint.$1", + "type": "CompoundType", + "tags": [], + "label": "node", + "description": [ + "to get a mount point for" + ], + "signature": [ + "React.ReactNode" + ], + "path": "packages/react/kibana_mount/to_mount_point.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/react-kibana-mount", + "id": "def-common.toMountPoint.$2", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + { + "pluginId": "@kbn/react-kibana-mount", + "scope": "common", + "docId": "kibKbnReactKibanaMountPluginApi", + "section": "def-common.ToMountPointParams", + "text": "ToMountPointParams" + } + ], + "path": "packages/react/kibana_mount/to_mount_point.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/react-kibana-mount", + "id": "def-common.useIfMounted", + "type": "Function", + "tags": [], + "label": "useIfMounted", + "description": [], + "signature": [ + "() => (func: any) => void" + ], + "path": "packages/react/kibana_mount/utils.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/react-kibana-mount", + "id": "def-common.MountPointPortalProps", + "type": "Interface", + "tags": [], + "label": "MountPointPortalProps", + "description": [], + "path": "packages/react/kibana_mount/mount_point_portal.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-mount", + "id": "def-common.MountPointPortalProps.setMountPoint", + "type": "Function", + "tags": [], + "label": "setMountPoint", + "description": [], + "signature": [ + "(mountPoint: ", + { + "pluginId": "@kbn/core-mount-utils-browser", + "scope": "common", + "docId": "kibKbnCoreMountUtilsBrowserPluginApi", + "section": "def-common.MountPoint", + "text": "MountPoint" + }, + ") => void" + ], + "path": "packages/react/kibana_mount/mount_point_portal.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/react-kibana-mount", + "id": "def-common.MountPointPortalProps.setMountPoint.$1", + "type": "Function", + "tags": [], + "label": "mountPoint", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-mount-utils-browser", + "scope": "common", + "docId": "kibKbnCoreMountUtilsBrowserPluginApi", + "section": "def-common.MountPoint", + "text": "MountPoint" + }, + "" + ], + "path": "packages/react/kibana_mount/mount_point_portal.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/react-kibana-mount", + "id": "def-common.ToMountPointParams", + "type": "Type", + "tags": [], + "label": "ToMountPointParams", + "description": [], + "signature": [ + "{ i18n: ", + { + "pluginId": "@kbn/core-i18n-browser", + "scope": "common", + "docId": "kibKbnCoreI18nBrowserPluginApi", + "section": "def-common.I18nStart", + "text": "I18nStart" + }, + "; theme: ", + { + "pluginId": "@kbn/react-kibana-context-common", + "scope": "common", + "docId": "kibKbnReactKibanaContextCommonPluginApi", + "section": "def-common.ThemeServiceStart", + "text": "ThemeServiceStart" + }, + "; }" + ], + "path": "packages/react/kibana_mount/to_mount_point.tsx", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx new file mode 100644 index 00000000000000..6b587ae20b2284 --- /dev/null +++ b/api_docs/kbn_react_kibana_mount.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: kibKbnReactKibanaMountPluginApi +slug: /kibana-dev-docs/api/kbn-react-kibana-mount +title: "@kbn/react-kibana-mount" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/react-kibana-mount plugin +date: 2023-08-01 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] +--- +import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; + + + +Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 10 | 0 | 7 | 0 | + +## Common + +### Functions + + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index c6ca095bfcf98c..93d01b7bd390ff 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-07-28 +date: 2023-08-01 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 2f26c19581470f..0847556ffdf587 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-07-28 +date: 2023-08-01 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 748199d2941f78..256cbbd42a99f2 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-07-28 +date: 2023-08-01 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 0c499fb2e2d21d..f436cf4d5f7d17 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx index eb9a6b4e5d2b3f..8b659d5c020c48 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index bf79d647d36f13..41e2d8b7f785c7 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index 9459ca4bd3c966..2fb72b2456e7e2 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 4c8597996cb97b..284b0e82745963 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx index 1074b3f742b87e..acd625c745dd40 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 6ab6c36c666743..651222d2d41e0e 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index 948d5d97d504b9..64d9850b5748fd 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index 043e78bbbafdfd..bd39c117fe131d 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 40aa0c3a55f626..e46933d965f99a 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_data_table.devdocs.json b/api_docs/kbn_securitysolution_data_table.devdocs.json index 0a9919605b82ef..b553b3a40277a6 100644 --- a/api_docs/kbn_securitysolution_data_table.devdocs.json +++ b/api_docs/kbn_securitysolution_data_table.devdocs.json @@ -37,9 +37,9 @@ }, ", theme: ", { - "pluginId": "kibanaReact", + "pluginId": "@kbn/react-kibana-context-styled", "scope": "common", - "docId": "kibKibanaReactPluginApi", + "docId": "kibKbnReactKibanaContextStyledPluginApi", "section": "def-common.EuiTheme", "text": "EuiTheme" }, @@ -81,9 +81,9 @@ "description": [], "signature": [ { - "pluginId": "kibanaReact", + "pluginId": "@kbn/react-kibana-context-styled", "scope": "common", - "docId": "kibKibanaReactPluginApi", + "docId": "kibKbnReactKibanaContextStyledPluginApi", "section": "def-common.EuiTheme", "text": "EuiTheme" } diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx index ba6833a30c2ca8..872b5497a1e262 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 357b060b334714..5f33800111004a 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-07-28 +date: 2023-08-01 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.devdocs.json b/api_docs/kbn_securitysolution_es_utils.devdocs.json index 680d3d4baf7bff..4119a04abaa4da 100644 --- a/api_docs/kbn_securitysolution_es_utils.devdocs.json +++ b/api_docs/kbn_securitysolution_es_utils.devdocs.json @@ -622,7 +622,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; asyncSearch: ", "default", @@ -1580,6 +1580,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", @@ -1894,7 +1896,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; asyncSearch: ", "default", @@ -2852,6 +2854,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index d83e474b52fcf5..0e6bcc2f81a8a9 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-07-28 +date: 2023-08-01 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 44073d15c6297f..a6852f808fa129 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-07-28 +date: 2023-08-01 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.mdx b/api_docs/kbn_securitysolution_grouping.mdx index d2faec2f39ca57..d80c384b9a27f6 100644 --- a/api_docs/kbn_securitysolution_grouping.mdx +++ b/api_docs/kbn_securitysolution_grouping.mdx @@ -8,7 +8,7 @@ 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping'] --- import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 8c1df95400634f..2f80b3ad07e2f2 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-07-28 +date: 2023-08-01 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 3dcd327453a208..960725fc2f2a94 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 2294c1015f578b..ca1ecb56656f74 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-07-28 +date: 2023-08-01 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 47d1d041ce0b06..efe6f9f109df1c 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-07-28 +date: 2023-08-01 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 2759f422804c3e..0c72cecb294d22 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-07-28 +date: 2023-08-01 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 cfb9bd3a3fc4b9..dce971ab28dd07 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-07-28 +date: 2023-08-01 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 b5a6ea01581f2a..cd3c89e4816aef 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-07-28 +date: 2023-08-01 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 28fcc5af3c9a8c..6e7c48a4a58fa4 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-07-28 +date: 2023-08-01 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 ce2e10ca1c37ac..4891e60a47ed01 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-07-28 +date: 2023-08-01 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 5bc93cb50153e2..aa98a91b1b4766 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-07-28 +date: 2023-08-01 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 936193ca17d402..1523bb8b4d49e7 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-07-28 +date: 2023-08-01 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 5788eaabaa4b8d..b8ff60261f8ccb 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-07-28 +date: 2023-08-01 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 cad55e09bedb82..7f494685692812 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-07-28 +date: 2023-08-01 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.devdocs.json b/api_docs/kbn_server_route_repository.devdocs.json index f8edeb098ba850..57af4696ddfaac 100644 --- a/api_docs/kbn_server_route_repository.devdocs.json +++ b/api_docs/kbn_server_route_repository.devdocs.json @@ -190,6 +190,126 @@ ], "returnComment": [], "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/server-route-repository", + "id": "def-common.registerRoutes", + "type": "Function", + "tags": [], + "label": "registerRoutes", + "description": [], + "signature": [ + "({\n core,\n repository,\n logger,\n dependencies,\n}: { core: ", + { + "pluginId": "@kbn/core-lifecycle-server", + "scope": "common", + "docId": "kibKbnCoreLifecycleServerPluginApi", + "section": "def-common.CoreSetup", + "text": "CoreSetup" + }, + "; repository: Record Promise; } & ", + "ServerRouteCreateOptions", + ">; logger: ", + { + "pluginId": "@kbn/logging", + "scope": "common", + "docId": "kibKbnLoggingPluginApi", + "section": "def-common.Logger", + "text": "Logger" + }, + "; dependencies: Record; }) => void" + ], + "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/server-route-repository", + "id": "def-common.registerRoutes.$1", + "type": "Object", + "tags": [], + "label": "{\n core,\n repository,\n logger,\n dependencies,\n}", + "description": [], + "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/server-route-repository", + "id": "def-common.registerRoutes.$1.core", + "type": "Object", + "tags": [], + "label": "core", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-lifecycle-server", + "scope": "common", + "docId": "kibKbnCoreLifecycleServerPluginApi", + "section": "def-common.CoreSetup", + "text": "CoreSetup" + }, + "" + ], + "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/server-route-repository", + "id": "def-common.registerRoutes.$1.repository", + "type": "Object", + "tags": [], + "label": "repository", + "description": [], + "signature": [ + "{ [x: string]: { endpoint: string; params?: any; handler: ({}: any) => Promise; } & ", + "ServerRouteCreateOptions", + "; }" + ], + "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/server-route-repository", + "id": "def-common.registerRoutes.$1.logger", + "type": "Object", + "tags": [], + "label": "logger", + "description": [], + "signature": [ + { + "pluginId": "@kbn/logging", + "scope": "common", + "docId": "kibKbnLoggingPluginApi", + "section": "def-common.Logger", + "text": "Logger" + } + ], + "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/server-route-repository", + "id": "def-common.registerRoutes.$1.dependencies", + "type": "Object", + "tags": [], + "label": "dependencies", + "description": [], + "signature": [ + "{ [x: string]: any; }" + ], + "path": "packages/kbn-server-route-repository/src/register_routes.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [ diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index f2bd0f6d94a7a4..51cc1704f33673 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.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 | |-------------------|-----------|------------------------|-----------------| -| 25 | 0 | 24 | 1 | +| 31 | 0 | 30 | 1 | ## Common diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index c1b241bd579c9f..c675c3e4a49bee 100644 --- a/api_docs/kbn_serverless_project_switcher.mdx +++ b/api_docs/kbn_serverless_project_switcher.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher title: "@kbn/serverless-project-switcher" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-project-switcher plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index b946b2080e8da9..17ba993d76227b 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config'] --- import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index 5f5177a122e591..232a3a8ec28301 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-07-28 +date: 2023-08-01 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 a439ebae317872..867e11fcf1c2d8 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-07-28 +date: 2023-08-01 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 16d3bf353e247b..df39484138e019 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-07-28 +date: 2023-08-01 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 a867942195cde6..701de757959d87 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-07-28 +date: 2023-08-01 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 95615956f2c722..fef5817cf615cd 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-07-28 +date: 2023-08-01 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 80beabd3166b15..4f66fe21511e5b 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-07-28 +date: 2023-08-01 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 5099f781c4a40d..eecee15d0314c1 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-07-28 +date: 2023-08-01 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 593ba51e85836b..9ac475572fc8a3 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx index ddd19e88cc84ea..897d5e9496a4e1 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index 5e36a842577ac0..6b0dedb12dd83d 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-07-28 +date: 2023-08-01 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 a96994315d614b..0920a5fdcaebb6 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-07-28 +date: 2023-08-01 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 0883ed4e10fb51..25a7cd6f593613 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-07-28 +date: 2023-08-01 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 498cb34f9800b3..e735fe049f9685 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-07-28 +date: 2023-08-01 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 4d9fc84d5c49c5..fd99b9980a3dcd 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-07-28 +date: 2023-08-01 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 02183a8f9dce93..eb9b514374c387 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-07-28 +date: 2023-08-01 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 28894dbfae785f..9a805637e45a32 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-07-28 +date: 2023-08-01 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 cc15a6c6b904c9..fa2195aff73f37 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-07-28 +date: 2023-08-01 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 a3fc346430d5a4..fafdc7a3cbb77c 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-07-28 +date: 2023-08-01 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 926e1d4d02ac81..508a1eab4dcdfe 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-07-28 +date: 2023-08-01 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 b252dffb61932b..66657549c5f333 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-07-28 +date: 2023-08-01 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 153a53eb2b3a9c..f49981d1e726be 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-07-28 +date: 2023-08-01 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 5bb8a1315690f8..84bc4fda8dbb2e 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-07-28 +date: 2023-08-01 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 a6890ebd5c4784..2a5f2366af3c8a 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-07-28 +date: 2023-08-01 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 f94e46cccaff0e..a52ef2ad555c5a 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-07-28 +date: 2023-08-01 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 c20fea3a4911bc..c8058bb7da5a6c 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-07-28 +date: 2023-08-01 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 ad42409c309d3c..85e4881b632439 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-07-28 +date: 2023-08-01 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 dfbeb1f7f54716..05dc5af20a735c 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-07-28 +date: 2023-08-01 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 debbd0c03baf5f..6bf54b20c73814 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-07-28 +date: 2023-08-01 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 a073020b89eb37..3d465f110707d8 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-07-28 +date: 2023-08-01 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 4916e85965167a..7b04876de2e523 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-07-28 +date: 2023-08-01 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 2b8e8940c1ed36..cd5eb40739b239 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-07-28 +date: 2023-08-01 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 d4a76e4099b06c..eac9eadc26432e 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-07-28 +date: 2023-08-01 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 0629d50cda2120..48e8cabc6d067a 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-07-28 +date: 2023-08-01 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 60b9aa23c4575c..128cad80159ad7 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-07-28 +date: 2023-08-01 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 be8ef362885a73..9c70fa17ed1cc6 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-07-28 +date: 2023-08-01 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 426b7a42265ea1..76680738ecfe26 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-07-28 +date: 2023-08-01 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 7bc2c0642e2011..07182757b78540 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-07-28 +date: 2023-08-01 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 b7b5c0052c3bbf..c501c8ee56dd49 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-07-28 +date: 2023-08-01 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 3264aee6878cae..81b2d6b56575d9 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-07-28 +date: 2023-08-01 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 967f11c2f1c385..736461f8ab9f3e 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-07-28 +date: 2023-08-01 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.devdocs.json b/api_docs/kbn_slo_schema.devdocs.json index d7a3e97fed4525..82ed114de663ee 100644 --- a/api_docs/kbn_slo_schema.devdocs.json +++ b/api_docs/kbn_slo_schema.devdocs.json @@ -288,6 +288,22 @@ "trackAdoption": false, "children": [], "returnComment": [] + }, + { + "parentPluginId": "@kbn/slo-schema", + "id": "def-common.Duration.asSeconds", + "type": "Function", + "tags": [], + "label": "asSeconds", + "description": [], + "signature": [ + "() => number" + ], + "path": "x-pack/packages/kbn-slo-schema/src/models/duration.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false @@ -680,7 +696,7 @@ "label": "FindSLOParams", "description": [], "signature": [ - "{ name?: string | undefined; indicatorTypes?: string[] | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"creationTime\" | \"indicatorType\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; }" + "{ kqlQuery?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"status\" | \"error_budget_consumed\" | \"error_budget_remaining\" | \"sli_value\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; }" ], "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts", "deprecated": false, @@ -912,21 +928,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "@kbn/slo-schema", - "id": "def-common.SummarySchema", - "type": "Type", - "tags": [], - "label": "SummarySchema", - "description": [], - "signature": [ - "{ status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }" - ], - "path": "x-pack/packages/kbn-slo-schema/src/schema/common.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.TimeWindow", @@ -2328,11 +2329,9 @@ "PartialC", "<{ query: ", "PartialC", - "<{ name: ", + "<{ kqlQuery: ", "StringC", - "; indicatorTypes: ", - "Type", - "; page: ", + "; page: ", "StringC", "; perPage: ", "StringC", @@ -2340,9 +2339,13 @@ "UnionC", "<[", "LiteralC", - "<\"creationTime\">, ", + "<\"error_budget_consumed\">, ", + "LiteralC", + "<\"error_budget_remaining\">, ", + "LiteralC", + "<\"sli_value\">, ", "LiteralC", - "<\"indicatorType\">]>; sortDirection: ", + "<\"status\">]>; sortDirection: ", "UnionC", "<[", "LiteralC", diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index a9d0025ba5818b..c6f5a1b0d7513b 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-07-28 +date: 2023-08-01 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 049407704addcf..b4f2cbacb6af43 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-07-28 +date: 2023-08-01 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 3d958f77addce7..db7e2bda0cb6e9 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-07-28 +date: 2023-08-01 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 6bb4e74e2e85ed..8fde26812681d5 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-07-28 +date: 2023-08-01 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 8273af766bcc59..048e1b8d50010f 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-07-28 +date: 2023-08-01 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 34d7b02686737b..53f293a9e16eaf 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-07-28 +date: 2023-08-01 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 510338f3f3abd9..751d7f9d7abd93 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-07-28 +date: 2023-08-01 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 590c163a761b35..3da3a18b6904e2 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-07-28 +date: 2023-08-01 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 dae1b732406c55..884de6b45b913c 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx index 4f42be6a2c6350..04cd48891b7cf6 100644 --- a/api_docs/kbn_text_based_editor.mdx +++ b/api_docs/kbn_text_based_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor title: "@kbn/text-based-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/text-based-editor plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index d65686ef1a5ab5..c9b2bce83bbc8d 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-07-28 +date: 2023-08-01 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 c00d56133758bb..e440d2a1400805 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-07-28 +date: 2023-08-01 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 60287858354adf..2098bc6214d34a 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-07-28 +date: 2023-08-01 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 a6907928a11781..b4119c3e295303 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-07-28 +date: 2023-08-01 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 029c35d739cd95..d0b869a3a8312a 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-07-28 +date: 2023-08-01 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 6670f4f41f56d8..85dc76108ae137 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index 79fd0393c6eca4..3b4b36a4ead2f3 100644 --- a/api_docs/kbn_unified_field_list.mdx +++ b/api_docs/kbn_unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list title: "@kbn/unified-field-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-field-list plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index d6410d9b4a088d..a4f256ead694c4 100644 --- a/api_docs/kbn_url_state.mdx +++ b/api_docs/kbn_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-url-state title: "@kbn/url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/url-state plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 7fb7796a2c0e49..5dc1588bc2b29d 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-07-28 +date: 2023-08-01 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 513dafd67025c9..84d7b3e10f3df7 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-07-28 +date: 2023-08-01 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 319ae37182f9d9..45879828720ad4 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-07-28 +date: 2023-08-01 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 36672eae9b8db2..a05d30abff92e1 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index 6addf0069d63ff..bafd58b747ec6a 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 5c9ada61c3561e..2bd83d4d1db52f 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-07-28 +date: 2023-08-01 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 07888fa3d72b12..a88194890c053f 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.devdocs.json b/api_docs/kibana_react.devdocs.json index bdd6084a32efc9..74e3c85ae0c15c 100644 --- a/api_docs/kibana_react.devdocs.json +++ b/api_docs/kibana_react.devdocs.json @@ -672,866 +672,3929 @@ "parentPluginId": "kibanaReact", "id": "def-public.KibanaThemeProvider", "type": "Function", - "tags": [], + "tags": [ + "deprecated" + ], "label": "KibanaThemeProvider", "description": [], "signature": [ - "({ theme$, modify, children }: React.PropsWithChildren) => JSX.Element" - ], - "path": "src/plugins/kibana_react/public/theme/kibana_theme_provider.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ + "({ children, theme$, modify }: ", { - "parentPluginId": "kibanaReact", - "id": "def-public.KibanaThemeProvider.$1", - "type": "CompoundType", - "tags": [], - "label": "{ theme$, modify, children }", - "description": [], - "signature": [ - "React.PropsWithChildren" - ], - "path": "src/plugins/kibana_react/public/theme/kibana_theme_provider.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "kibanaReact", - "id": "def-public.Markdown", - "type": "Function", - "tags": [], - "label": "Markdown", - "description": [], - "signature": [ - "(props: ", - "MarkdownProps", + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.KibanaThemeProviderProps", + "text": "KibanaThemeProviderProps" + }, ") => JSX.Element" ], - "path": "src/plugins/kibana_react/public/markdown/index.tsx", - "deprecated": false, + "path": "src/plugins/kibana_react/public/theme.tsx", + "deprecated": true, "trackAdoption": false, - "children": [ + "references": [ { - "parentPluginId": "kibanaReact", - "id": "def-public.Markdown.$1", - "type": "Object", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "MarkdownProps" - ], - "path": "src/plugins/kibana_react/public/markdown/index.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "kibanaReact", - "id": "def-public.MarkdownSimple", - "type": "Function", - "tags": [], - "label": "MarkdownSimple", - "description": [], - "signature": [ - "(props: ", - "MarkdownSimpleProps", - ") => JSX.Element" - ], - "path": "src/plugins/kibana_react/public/markdown/index.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ + "plugin": "share", + "path": "src/plugins/share/public/services/share_menu_manager.tsx" + }, { - "parentPluginId": "kibanaReact", - "id": "def-public.MarkdownSimple.$1", - "type": "Object", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "MarkdownSimpleProps" - ], - "path": "src/plugins/kibana_react/public/markdown/index.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "kibanaReact", - "id": "def-public.MountPointPortal", - "type": "Function", - "tags": [], - "label": "MountPointPortal", - "description": [ - "\nUtility component to portal a part of a react application into the provided `MountPoint`." - ], - "signature": [ - "({ children, setMountPoint }: React.PropsWithChildren) => React.ReactPortal | null" - ], - "path": "src/plugins/kibana_react/public/util/mount_point_portal.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ + "plugin": "share", + "path": "src/plugins/share/public/services/share_menu_manager.tsx" + }, { - "parentPluginId": "kibanaReact", - "id": "def-public.MountPointPortal.$1", - "type": "CompoundType", - "tags": [], - "label": "{ children, setMountPoint }", - "description": [], - "signature": [ - "React.PropsWithChildren" - ], - "path": "src/plugins/kibana_react/public/util/mount_point_portal.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "kibanaReact", - "id": "def-public.NoDataCard", - "type": "Function", - "tags": [], - "label": "NoDataCard", - "description": [], - "signature": [ - "({ recommended, title, button, layout, ...cardRest }: React.PropsWithChildren<", + "plugin": "share", + "path": "src/plugins/share/public/services/share_menu_manager.tsx" + }, { - "pluginId": "kibanaReact", - "scope": "public", - "docId": "kibKibanaReactPluginApi", - "section": "def-public.NoDataPageActions", - "text": "NoDataPageActions" + "plugin": "share", + "path": "src/plugins/share/public/url_service/redirect/components/page.tsx" }, - ">) => JSX.Element" - ], - "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/no_data_card.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ { - "parentPluginId": "kibanaReact", - "id": "def-public.NoDataCard.$1", - "type": "CompoundType", - "tags": [], - "label": "{\n recommended,\n title,\n button,\n layout,\n ...cardRest\n}", - "description": [], - "signature": [ - "React.PropsWithChildren<", - { - "pluginId": "kibanaReact", - "scope": "public", - "docId": "kibKibanaReactPluginApi", - "section": "def-public.NoDataPageActions", - "text": "NoDataPageActions" - }, - ">" - ], - "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/no_data_card.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "kibanaReact", - "id": "def-public.NoDataPage", - "type": "Function", - "tags": [], - "label": "NoDataPage", - "description": [], - "signature": [ - "({ solution, logo, actions, docsLink, pageTitle, ...rest }: React.PropsWithChildren<", + "plugin": "share", + "path": "src/plugins/share/public/url_service/redirect/components/page.tsx" + }, { - "pluginId": "kibanaReact", - "scope": "public", - "docId": "kibKibanaReactPluginApi", - "section": "def-public.NoDataPageProps", - "text": "NoDataPageProps" + "plugin": "share", + "path": "src/plugins/share/public/url_service/redirect/components/page.tsx" }, - ">) => JSX.Element" - ], - "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ { - "parentPluginId": "kibanaReact", - "id": "def-public.NoDataPage.$1", - "type": "CompoundType", - "tags": [], - "label": "{\n solution,\n logo,\n actions,\n docsLink,\n pageTitle,\n ...rest\n}", - "description": [], - "signature": [ - "React.PropsWithChildren<", - { - "pluginId": "kibanaReact", - "scope": "public", - "docId": "kibKibanaReactPluginApi", - "section": "def-public.NoDataPageProps", - "text": "NoDataPageProps" - }, - ">" - ], - "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "kibanaReact", - "id": "def-public.overviewPageActions", - "type": "Function", - "tags": [], - "label": "overviewPageActions", - "description": [], - "signature": [ - "({ addDataHref, application, devToolsHref, hidden, managementHref, showDevToolsLink, showManagementLink, }: Props) => (JSX.Element | null)[]" - ], - "path": "src/plugins/kibana_react/public/overview_page/overview_page_actions/overview_page_actions.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ + "plugin": "share", + "path": "src/plugins/share/public/url_service/redirect/components/page.tsx" + }, { - "parentPluginId": "kibanaReact", - "id": "def-public.overviewPageActions.$1", - "type": "Object", - "tags": [], - "label": "{\n addDataHref,\n application,\n devToolsHref,\n hidden,\n managementHref,\n showDevToolsLink,\n showManagementLink,\n}", - "description": [], - "signature": [ - "Props" - ], - "path": "src/plugins/kibana_react/public/overview_page/overview_page_actions/overview_page_actions.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "kibanaReact", - "id": "def-public.OverviewPageFooter", - "type": "Function", - "tags": [], + "plugin": "share", + "path": "src/plugins/share/public/url_service/redirect/components/page.tsx" + }, + { + "plugin": "uiActions", + "path": "src/plugins/ui_actions/public/context_menu/open_context_menu.tsx" + }, + { + "plugin": "uiActions", + "path": "src/plugins/ui_actions/public/context_menu/open_context_menu.tsx" + }, + { + "plugin": "uiActions", + "path": "src/plugins/ui_actions/public/context_menu/open_context_menu.tsx" + }, + { + "plugin": "guidedOnboarding", + "path": "src/plugins/guided_onboarding/public/plugin.tsx" + }, + { + "plugin": "guidedOnboarding", + "path": "src/plugins/guided_onboarding/public/plugin.tsx" + }, + { + "plugin": "guidedOnboarding", + "path": "src/plugins/guided_onboarding/public/plugin.tsx" + }, + { + "plugin": "home", + "path": "src/plugins/home/public/application/application.tsx" + }, + { + "plugin": "home", + "path": "src/plugins/home/public/application/application.tsx" + }, + { + "plugin": "home", + "path": "src/plugins/home/public/application/application.tsx" + }, + { + "plugin": "management", + "path": "src/plugins/management/public/components/management_app/management_app.tsx" + }, + { + "plugin": "management", + "path": "src/plugins/management/public/components/management_app/management_app.tsx" + }, + { + "plugin": "management", + "path": "src/plugins/management/public/components/management_app/management_app.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/sessions_mgmt/components/main.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/sessions_mgmt/components/main.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/sessions_mgmt/components/main.tsx" + }, + { + "plugin": "advancedSettings", + "path": "src/plugins/advanced_settings/public/management_app/components/form/form.tsx" + }, + { + "plugin": "advancedSettings", + "path": "src/plugins/advanced_settings/public/management_app/components/form/form.tsx" + }, + { + "plugin": "advancedSettings", + "path": "src/plugins/advanced_settings/public/management_app/components/form/form.tsx" + }, + { + "plugin": "advancedSettings", + "path": "src/plugins/advanced_settings/public/management_app/mount_management_section.tsx" + }, + { + "plugin": "advancedSettings", + "path": "src/plugins/advanced_settings/public/management_app/mount_management_section.tsx" + }, + { + "plugin": "advancedSettings", + "path": "src/plugins/advanced_settings/public/management_app/mount_management_section.tsx" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/public/management/spaces_management_app.tsx" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/public/management/spaces_management_app.tsx" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/public/management/spaces_management_app.tsx" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/public/nav_control/nav_control.tsx" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/public/nav_control/nav_control.tsx" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/public/nav_control/nav_control.tsx" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/public/space_selector/space_selector.tsx" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/public/space_selector/space_selector.tsx" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/public/space_selector/space_selector.tsx" + }, + { + "plugin": "savedObjects", + "path": "src/plugins/saved_objects/public/save_modal/show_saved_object_save_modal.tsx" + }, + { + "plugin": "savedObjects", + "path": "src/plugins/saved_objects/public/save_modal/show_saved_object_save_modal.tsx" + }, + { + "plugin": "savedObjects", + "path": "src/plugins/saved_objects/public/save_modal/show_saved_object_save_modal.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/visualize_app/utils/use/use_visualize_app_state.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/visualize_app/utils/use/use_visualize_app_state.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/visualize_app/utils/use/use_visualize_app_state.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/wizard/show_new_vis.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/wizard/show_new_vis.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/wizard/show_new_vis.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/visualize_app/components/visualize_no_match.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/visualize_app/components/visualize_no_match.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/visualize_app/components/visualize_no_match.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/visualize_app/index.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/visualize_app/index.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/visualize_app/index.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/options_list/embeddable/options_list_embeddable.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/options_list/embeddable/options_list_embeddable.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/options_list/embeddable/options_list_embeddable.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/range_slider/embeddable/range_slider_embeddable.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/range_slider/embeddable/range_slider_embeddable.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/range_slider/embeddable/range_slider_embeddable.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/control_group/embeddable/control_group_container.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/control_group/embeddable/control_group_container.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/control_group/embeddable/control_group_container.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/time_slider/embeddable/time_slider_embeddable.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/time_slider/embeddable/time_slider_embeddable.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/time_slider/embeddable/time_slider_embeddable.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/placeholder_embeddable/placeholder_embeddable.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/placeholder_embeddable/placeholder_embeddable.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/placeholder_embeddable/placeholder_embeddable.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_app/dashboard_router.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_app/dashboard_router.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_app/dashboard_router.tsx" + }, + { + "plugin": "savedObjectsTagging", + "path": "x-pack/plugins/saved_objects_tagging/public/management/mount_section.tsx" + }, + { + "plugin": "savedObjectsTagging", + "path": "x-pack/plugins/saved_objects_tagging/public/management/mount_section.tsx" + }, + { + "plugin": "savedObjectsTagging", + "path": "x-pack/plugins/saved_objects_tagging/public/management/mount_section.tsx" + }, + { + "plugin": "expressionXY", + "path": "src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx" + }, + { + "plugin": "expressionXY", + "path": "src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx" + }, + { + "plugin": "expressionXY", + "path": "src/plugins/chart_expressions/expression_xy/public/expression_renderers/xy_chart_renderer.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/datasources/form_based/help_popover.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/datasources/form_based/help_popover.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/datasources/form_based/help_popover.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/visualizations/datatable/expression.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/visualizations/datatable/expression.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/visualizations/datatable/expression.tsx" + }, + { + "plugin": "expressionMetricVis", + "path": "src/plugins/chart_expressions/expression_metric/public/expression_renderers/metric_vis_renderer.tsx" + }, + { + "plugin": "expressionMetricVis", + "path": "src/plugins/chart_expressions/expression_metric/public/expression_renderers/metric_vis_renderer.tsx" + }, + { + "plugin": "expressionMetricVis", + "path": "src/plugins/chart_expressions/expression_metric/public/expression_renderers/metric_vis_renderer.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx" + }, + { + "plugin": "expressionGauge", + "path": "src/plugins/chart_expressions/expression_gauge/public/expression_renderers/gauge_renderer.tsx" + }, + { + "plugin": "expressionGauge", + "path": "src/plugins/chart_expressions/expression_gauge/public/expression_renderers/gauge_renderer.tsx" + }, + { + "plugin": "expressionGauge", + "path": "src/plugins/chart_expressions/expression_gauge/public/expression_renderers/gauge_renderer.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/app_plugin/settings_menu.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/app_plugin/settings_menu.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/app_plugin/settings_menu.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/app_plugin/mounter.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/app_plugin/mounter.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/app_plugin/mounter.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" + }, + { + "plugin": "alerting", + "path": "x-pack/plugins/alerting/public/application/maintenance_windows.tsx" + }, + { + "plugin": "alerting", + "path": "x-pack/plugins/alerting/public/application/maintenance_windows.tsx" + }, + { + "plugin": "alerting", + "path": "x-pack/plugins/alerting/public/application/maintenance_windows.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/authentication/access_agreement/access_agreement_page.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/authentication/access_agreement/access_agreement_page.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/authentication/access_agreement/access_agreement_page.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/authentication/logged_out/logged_out_page.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/authentication/logged_out/logged_out_page.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/authentication/logged_out/logged_out_page.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/authentication/login/login_page.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/authentication/login/login_page.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/authentication/login/login_page.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/authentication/overwritten_session/overwritten_session_page.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/authentication/overwritten_session/overwritten_session_page.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/authentication/overwritten_session/overwritten_session_page.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/management/api_keys/api_keys_management_app.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/management/api_keys/api_keys_management_app.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/management/api_keys/api_keys_management_app.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/management/users/users_management_app.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/management/users/users_management_app.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/management/users/users_management_app.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/management/roles/roles_management_app.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/management/roles/roles_management_app.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/management/roles/roles_management_app.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/management/role_mappings/role_mappings_management_app.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/management/role_mappings/role_mappings_management_app.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/management/role_mappings/role_mappings_management_app.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/account_management/account_management_app.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/account_management/account_management_app.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/account_management/account_management_app.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/nav_control/nav_control_service.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/nav_control/nav_control_service.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/nav_control/nav_control_service.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/app.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/app.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/app.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx" + }, + { + "plugin": "serverless", + "path": "x-pack/plugins/serverless/public/plugin.tsx" + }, + { + "plugin": "serverless", + "path": "x-pack/plugins/serverless/public/plugin.tsx" + }, + { + "plugin": "serverless", + "path": "x-pack/plugins/serverless/public/plugin.tsx" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/public/application.tsx" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/public/application.tsx" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/public/application.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/embeddable/saved_search_embeddable.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/embeddable/saved_search_embeddable.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/embeddable/saved_search_embeddable.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/embeddable/saved_search_embeddable.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/embeddable/saved_search_embeddable.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/main/components/top_nav/show_open_search_panel.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/main/components/top_nav/show_open_search_panel.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/main/components/top_nav/show_open_search_panel.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/main/components/top_nav/open_alerts_popover.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/main/components/top_nav/open_alerts_popover.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/main/components/top_nav/open_alerts_popover.tsx" + }, + { + "plugin": "exploratoryView", + "path": "x-pack/plugins/exploratory_view/public/application/index.tsx" + }, + { + "plugin": "exploratoryView", + "path": "x-pack/plugins/exploratory_view/public/application/index.tsx" + }, + { + "plugin": "exploratoryView", + "path": "x-pack/plugins/exploratory_view/public/application/index.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/app.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/app.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/app.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/fleet/app.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/fleet/app.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/fleet/app.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/render_app.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/render_app.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/render_app.tsx" + }, + { + "plugin": "licenseManagement", + "path": "x-pack/plugins/license_management/public/shared_imports.ts" + }, + { + "plugin": "licenseManagement", + "path": "x-pack/plugins/license_management/public/application/app_providers.tsx" + }, + { + "plugin": "licenseManagement", + "path": "x-pack/plugins/license_management/public/application/app_providers.tsx" + }, + { + "plugin": "licenseManagement", + "path": "x-pack/plugins/license_management/public/application/app_providers.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/file_data_visualizer/file_data_visualizer.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/file_data_visualizer/file_data_visualizer.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/file_data_visualizer/file_data_visualizer.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/embeddables/grid_embeddable/grid_embeddable.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/embeddables/grid_embeddable/grid_embeddable.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/embeddables/grid_embeddable/grid_embeddable.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/index_data_visualizer.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/index_data_visualizer.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/index_data_visualizer.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_app_state.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_app_state.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_app_state.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/app.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/app.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/app.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx" + }, + { + "plugin": "observability", + "path": "x-pack/plugins/observability/public/application/index.tsx" + }, + { + "plugin": "observability", + "path": "x-pack/plugins/observability/public/application/index.tsx" + }, + { + "plugin": "observability", + "path": "x-pack/plugins/observability/public/application/index.tsx" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/infra/public/apps/common_providers.tsx" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/infra/public/apps/common_providers.tsx" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/infra/public/apps/common_providers.tsx" + }, + { + "plugin": "profiling", + "path": "x-pack/plugins/profiling/public/app.tsx" + }, + { + "plugin": "profiling", + "path": "x-pack/plugins/profiling/public/app.tsx" + }, + { + "plugin": "profiling", + "path": "x-pack/plugins/profiling/public/app.tsx" + }, + { + "plugin": "apm", + "path": "x-pack/plugins/apm/public/application/index.tsx" + }, + { + "plugin": "apm", + "path": "x-pack/plugins/apm/public/application/index.tsx" + }, + { + "plugin": "apm", + "path": "x-pack/plugins/apm/public/application/index.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/embeddable/embeddable.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/advanced_filter/index.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/advanced_filter/index.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/advanced_filter/index.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/dropdown_filter/index.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/dropdown_filter/index.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/dropdown_filter/index.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/time_filter/index.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/time_filter/index.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/filters/time_filter/index.tsx" + }, + { + "plugin": "expressionImage", + "path": "src/plugins/expression_image/public/expression_renderers/image_renderer.tsx" + }, + { + "plugin": "expressionImage", + "path": "src/plugins/expression_image/public/expression_renderers/image_renderer.tsx" + }, + { + "plugin": "expressionImage", + "path": "src/plugins/expression_image/public/expression_renderers/image_renderer.tsx" + }, + { + "plugin": "expressionMetric", + "path": "src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx" + }, + { + "plugin": "expressionMetric", + "path": "src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx" + }, + { + "plugin": "expressionMetric", + "path": "src/plugins/expression_metric/public/expression_renderers/metric_renderer.tsx" + }, + { + "plugin": "expressionError", + "path": "src/plugins/expression_error/public/expression_renderers/error_renderer.tsx" + }, + { + "plugin": "expressionError", + "path": "src/plugins/expression_error/public/expression_renderers/error_renderer.tsx" + }, + { + "plugin": "expressionError", + "path": "src/plugins/expression_error/public/expression_renderers/error_renderer.tsx" + }, + { + "plugin": "expressionError", + "path": "src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx" + }, + { + "plugin": "expressionError", + "path": "src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx" + }, + { + "plugin": "expressionError", + "path": "src/plugins/expression_error/public/expression_renderers/debug_renderer.tsx" + }, + { + "plugin": "expressionRevealImage", + "path": "src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx" + }, + { + "plugin": "expressionRevealImage", + "path": "src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx" + }, + { + "plugin": "expressionRevealImage", + "path": "src/plugins/expression_reveal_image/public/expression_renderers/reveal_image_renderer.tsx" + }, + { + "plugin": "expressionRepeatImage", + "path": "src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx" + }, + { + "plugin": "expressionRepeatImage", + "path": "src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx" + }, + { + "plugin": "expressionRepeatImage", + "path": "src/plugins/expression_repeat_image/public/expression_renderers/repeat_image_renderer.tsx" + }, + { + "plugin": "expressionShape", + "path": "src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx" + }, + { + "plugin": "expressionShape", + "path": "src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx" + }, + { + "plugin": "expressionShape", + "path": "src/plugins/expression_shape/public/expression_renderers/shape_renderer.tsx" + }, + { + "plugin": "expressionShape", + "path": "src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx" + }, + { + "plugin": "expressionShape", + "path": "src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx" + }, + { + "plugin": "expressionShape", + "path": "src/plugins/expression_shape/public/expression_renderers/progress_renderer.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/markdown/index.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/markdown/index.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/markdown/index.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/text.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/text.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/text.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/table.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/table.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/canvas_plugin_src/renderers/table.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/public/application.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/public/application.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/public/application.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/public/application.tsx" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/public/application.tsx" + }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/public/shared_imports.ts" + }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/public/application/index.tsx" + }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/public/application/index.tsx" + }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/public/application/index.tsx" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/plugins/cross_cluster_replication/public/shared_imports.ts" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/plugins/cross_cluster_replication/public/app/index.tsx" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/plugins/cross_cluster_replication/public/app/index.tsx" + }, + { + "plugin": "crossClusterReplication", + "path": "x-pack/plugins/cross_cluster_replication/public/app/index.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/index.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/index.tsx" + }, + { + "plugin": "enterpriseSearch", + "path": "x-pack/plugins/enterprise_search/public/applications/index.tsx" + }, + { + "plugin": "globalSearchBar", + "path": "x-pack/plugins/global_search_bar/public/plugin.tsx" + }, + { + "plugin": "globalSearchBar", + "path": "x-pack/plugins/global_search_bar/public/plugin.tsx" + }, + { + "plugin": "globalSearchBar", + "path": "x-pack/plugins/global_search_bar/public/plugin.tsx" + }, + { + "plugin": "graph", + "path": "x-pack/plugins/graph/public/application.tsx" + }, + { + "plugin": "graph", + "path": "x-pack/plugins/graph/public/application.tsx" + }, + { + "plugin": "graph", + "path": "x-pack/plugins/graph/public/application.tsx" + }, + { + "plugin": "grokdebugger", + "path": "x-pack/plugins/grokdebugger/public/shared_imports.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/plugins/index_lifecycle_management/public/shared_imports.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/plugins/index_lifecycle_management/public/application/index.tsx" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/plugins/index_lifecycle_management/public/application/index.tsx" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/plugins/index_lifecycle_management/public/application/index.tsx" + }, + { + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/public/shared_imports.ts" + }, + { + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/public/application/index.tsx" + }, + { + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/public/application/index.tsx" + }, + { + "plugin": "ingestPipelines", + "path": "x-pack/plugins/ingest_pipelines/public/application/index.tsx" + }, + { + "plugin": "logstash", + "path": "x-pack/plugins/logstash/public/application/index.tsx" + }, + { + "plugin": "logstash", + "path": "x-pack/plugins/logstash/public/application/index.tsx" + }, + { + "plugin": "logstash", + "path": "x-pack/plugins/logstash/public/application/index.tsx" + }, + { + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/application/index.tsx" + }, + { + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/application/index.tsx" + }, + { + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/application/index.tsx" + }, + { + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_onboarding/public/application/app.tsx" + }, + { + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_onboarding/public/application/app.tsx" + }, + { + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_onboarding/public/application/app.tsx" + }, + { + "plugin": "osquery", + "path": "x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result_wrapper.tsx" + }, + { + "plugin": "osquery", + "path": "x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result_wrapper.tsx" + }, + { + "plugin": "osquery", + "path": "x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_result_wrapper.tsx" + }, + { + "plugin": "osquery", + "path": "x-pack/plugins/osquery/public/shared_imports.ts" + }, + { + "plugin": "osquery", + "path": "x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_results.tsx" + }, + { + "plugin": "osquery", + "path": "x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_results.tsx" + }, + { + "plugin": "osquery", + "path": "x-pack/plugins/osquery/public/shared_components/osquery_results/osquery_results.tsx" + }, + { + "plugin": "osquery", + "path": "x-pack/plugins/osquery/public/shared_components/services_wrapper.tsx" + }, + { + "plugin": "osquery", + "path": "x-pack/plugins/osquery/public/shared_components/services_wrapper.tsx" + }, + { + "plugin": "osquery", + "path": "x-pack/plugins/osquery/public/shared_components/services_wrapper.tsx" + }, + { + "plugin": "osquery", + "path": "x-pack/plugins/osquery/public/application.tsx" + }, + { + "plugin": "osquery", + "path": "x-pack/plugins/osquery/public/application.tsx" + }, + { + "plugin": "osquery", + "path": "x-pack/plugins/osquery/public/application.tsx" + }, + { + "plugin": "devTools", + "path": "src/plugins/dev_tools/public/application.tsx" + }, + { + "plugin": "devTools", + "path": "src/plugins/dev_tools/public/application.tsx" + }, + { + "plugin": "devTools", + "path": "src/plugins/dev_tools/public/application.tsx" + }, + { + "plugin": "painlessLab", + "path": "x-pack/plugins/painless_lab/public/shared_imports.ts" + }, + { + "plugin": "painlessLab", + "path": "x-pack/plugins/painless_lab/public/application/index.tsx" + }, + { + "plugin": "painlessLab", + "path": "x-pack/plugins/painless_lab/public/application/index.tsx" + }, + { + "plugin": "painlessLab", + "path": "x-pack/plugins/painless_lab/public/application/index.tsx" + }, + { + "plugin": "remoteClusters", + "path": "x-pack/plugins/remote_clusters/public/shared_imports.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/plugins/rollup/public/shared_imports.ts" + }, + { + "plugin": "rollup", + "path": "x-pack/plugins/rollup/public/application.tsx" + }, + { + "plugin": "rollup", + "path": "x-pack/plugins/rollup/public/application.tsx" + }, + { + "plugin": "rollup", + "path": "x-pack/plugins/rollup/public/application.tsx" + }, + { + "plugin": "searchprofiler", + "path": "x-pack/plugins/searchprofiler/public/shared_imports.ts" + }, + { + "plugin": "searchprofiler", + "path": "x-pack/plugins/searchprofiler/public/application/index.tsx" + }, + { + "plugin": "searchprofiler", + "path": "x-pack/plugins/searchprofiler/public/application/index.tsx" + }, + { + "plugin": "searchprofiler", + "path": "x-pack/plugins/searchprofiler/public/application/index.tsx" + }, + { + "plugin": "newsfeed", + "path": "src/plugins/newsfeed/public/plugin.tsx" + }, + { + "plugin": "newsfeed", + "path": "src/plugins/newsfeed/public/plugin.tsx" + }, + { + "plugin": "newsfeed", + "path": "src/plugins/newsfeed/public/plugin.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/app/app.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/app/app.tsx" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/app/app.tsx" + }, + { + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/public/application/elasticsearch.tsx" + }, + { + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/public/application/elasticsearch.tsx" + }, + { + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/public/application/elasticsearch.tsx" + }, + { + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/public/application/indexing_api.tsx" + }, + { + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/public/application/indexing_api.tsx" + }, + { + "plugin": "serverlessSearch", + "path": "x-pack/plugins/serverless_search/public/application/indexing_api.tsx" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/plugins/snapshot_restore/public/shared_imports.ts" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/plugins/snapshot_restore/public/application/app_providers.tsx" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/plugins/snapshot_restore/public/application/app_providers.tsx" + }, + { + "plugin": "snapshotRestore", + "path": "x-pack/plugins/snapshot_restore/public/application/app_providers.tsx" + }, + { + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx" + }, + { + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx" + }, + { + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx" + }, + { + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/app.tsx" + }, + { + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/app.tsx" + }, + { + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/app.tsx" + }, + { + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/shared_imports.ts" + }, + { + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" + }, + { + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" + }, + { + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx" + }, + { + "plugin": "ux", + "path": "x-pack/plugins/ux/public/application/ux_app.tsx" + }, + { + "plugin": "ux", + "path": "x-pack/plugins/ux/public/application/ux_app.tsx" + }, + { + "plugin": "ux", + "path": "x-pack/plugins/ux/public/application/ux_app.tsx" + }, + { + "plugin": "watcher", + "path": "x-pack/plugins/watcher/public/application/shared_imports.ts" + }, + { + "plugin": "watcher", + "path": "x-pack/plugins/watcher/public/application/index.tsx" + }, + { + "plugin": "watcher", + "path": "x-pack/plugins/watcher/public/application/index.tsx" + }, + { + "plugin": "watcher", + "path": "x-pack/plugins/watcher/public/application/index.tsx" + }, + { + "plugin": "cloudDataMigration", + "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/index.tsx" + }, + { + "plugin": "cloudDataMigration", + "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/index.tsx" + }, + { + "plugin": "cloudDataMigration", + "path": "x-pack/plugins/cloud_integrations/cloud_data_migration/public/application/index.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx" + }, + { + "plugin": "console", + "path": "src/plugins/console/public/shared_imports.ts" + }, + { + "plugin": "console", + "path": "src/plugins/console/public/application/index.tsx" + }, + { + "plugin": "console", + "path": "src/plugins/console/public/application/index.tsx" + }, + { + "plugin": "console", + "path": "src/plugins/console/public/application/index.tsx" + }, + { + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/management_app/mount_management_section.tsx" + }, + { + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/management_app/mount_management_section.tsx" + }, + { + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/management_app/mount_management_section.tsx" + }, + { + "plugin": "filesManagement", + "path": "src/plugins/files_management/public/mount_management_section.tsx" + }, + { + "plugin": "filesManagement", + "path": "src/plugins/files_management/public/mount_management_section.tsx" + }, + { + "plugin": "filesManagement", + "path": "src/plugins/files_management/public/mount_management_section.tsx" + }, + { + "plugin": "kibanaOverview", + "path": "src/plugins/kibana_overview/public/application.tsx" + }, + { + "plugin": "kibanaOverview", + "path": "src/plugins/kibana_overview/public/application.tsx" + }, + { + "plugin": "kibanaOverview", + "path": "src/plugins/kibana_overview/public/application.tsx" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/public/default_editor_controller.tsx" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/public/default_editor_controller.tsx" + }, + { + "plugin": "visDefaultEditor", + "path": "src/plugins/vis_default_editor/public/default_editor_controller.tsx" + }, + { + "plugin": "expressionHeatmap", + "path": "src/plugins/chart_expressions/expression_heatmap/public/expression_renderers/heatmap_renderer.tsx" + }, + { + "plugin": "expressionHeatmap", + "path": "src/plugins/chart_expressions/expression_heatmap/public/expression_renderers/heatmap_renderer.tsx" + }, + { + "plugin": "expressionHeatmap", + "path": "src/plugins/chart_expressions/expression_heatmap/public/expression_renderers/heatmap_renderer.tsx" + }, + { + "plugin": "expressionLegacyMetricVis", + "path": "src/plugins/chart_expressions/expression_legacy_metric/public/expression_renderers/metric_vis_renderer.tsx" + }, + { + "plugin": "expressionLegacyMetricVis", + "path": "src/plugins/chart_expressions/expression_legacy_metric/public/expression_renderers/metric_vis_renderer.tsx" + }, + { + "plugin": "expressionLegacyMetricVis", + "path": "src/plugins/chart_expressions/expression_legacy_metric/public/expression_renderers/metric_vis_renderer.tsx" + }, + { + "plugin": "expressionPartitionVis", + "path": "src/plugins/chart_expressions/expression_partition_vis/public/expression_renderers/partition_vis_renderer.tsx" + }, + { + "plugin": "expressionPartitionVis", + "path": "src/plugins/chart_expressions/expression_partition_vis/public/expression_renderers/partition_vis_renderer.tsx" + }, + { + "plugin": "expressionPartitionVis", + "path": "src/plugins/chart_expressions/expression_partition_vis/public/expression_renderers/partition_vis_renderer.tsx" + }, + { + "plugin": "expressionTagcloud", + "path": "src/plugins/chart_expressions/expression_tagcloud/public/expression_renderers/tagcloud_renderer.tsx" + }, + { + "plugin": "expressionTagcloud", + "path": "src/plugins/chart_expressions/expression_tagcloud/public/expression_renderers/tagcloud_renderer.tsx" + }, + { + "plugin": "expressionTagcloud", + "path": "src/plugins/chart_expressions/expression_tagcloud/public/expression_renderers/tagcloud_renderer.tsx" + }, + { + "plugin": "visTypeTable", + "path": "src/plugins/vis_types/table/public/table_vis_renderer.tsx" + }, + { + "plugin": "visTypeTable", + "path": "src/plugins/vis_types/table/public/table_vis_renderer.tsx" + }, + { + "plugin": "visTypeTable", + "path": "src/plugins/vis_types/table/public/table_vis_renderer.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_types/timelion/public/timelion_vis_renderer.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_types/timelion/public/timelion_vis_renderer.tsx" + }, + { + "plugin": "visTypeTimelion", + "path": "src/plugins/vis_types/timelion/public/timelion_vis_renderer.tsx" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/public/application/editor_controller.tsx" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/public/application/editor_controller.tsx" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/public/application/editor_controller.tsx" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/public/timeseries_vis_renderer.tsx" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/public/timeseries_vis_renderer.tsx" + }, + { + "plugin": "visTypeTimeseries", + "path": "src/plugins/vis_types/timeseries/public/timeseries_vis_renderer.tsx" + }, + { + "plugin": "visTypeVega", + "path": "src/plugins/vis_types/vega/public/vega_vis_renderer.tsx" + }, + { + "plugin": "visTypeVega", + "path": "src/plugins/vis_types/vega/public/vega_vis_renderer.tsx" + }, + { + "plugin": "visTypeVega", + "path": "src/plugins/vis_types/vega/public/vega_vis_renderer.tsx" + }, + { + "plugin": "visTypeVislib", + "path": "src/plugins/vis_types/vislib/public/vislib/partials/touchdown_template.tsx" + }, + { + "plugin": "visTypeVislib", + "path": "src/plugins/vis_types/vislib/public/vislib/partials/touchdown_template.tsx" + }, + { + "plugin": "visTypeVislib", + "path": "src/plugins/vis_types/vislib/public/vislib/partials/touchdown_template.tsx" + }, + { + "plugin": "visTypeVislib", + "path": "src/plugins/vis_types/vislib/public/vis_renderer.tsx" + }, + { + "plugin": "visTypeVislib", + "path": "src/plugins/vis_types/vislib/public/vis_renderer.tsx" + }, + { + "plugin": "visTypeVislib", + "path": "src/plugins/vis_types/vislib/public/vis_renderer.tsx" + } + ], + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.KibanaThemeProvider.$1", + "type": "CompoundType", + "tags": [], + "label": "{ children, theme$, modify }", + "description": [], + "signature": [ + { + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.KibanaThemeProviderProps", + "text": "KibanaThemeProviderProps" + } + ], + "path": "src/plugins/kibana_react/public/theme.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.Markdown", + "type": "Function", + "tags": [], + "label": "Markdown", + "description": [], + "signature": [ + "(props: ", + "MarkdownProps", + ") => JSX.Element" + ], + "path": "src/plugins/kibana_react/public/markdown/index.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.Markdown.$1", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "MarkdownProps" + ], + "path": "src/plugins/kibana_react/public/markdown/index.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.MarkdownSimple", + "type": "Function", + "tags": [], + "label": "MarkdownSimple", + "description": [], + "signature": [ + "(props: ", + "MarkdownSimpleProps", + ") => JSX.Element" + ], + "path": "src/plugins/kibana_react/public/markdown/index.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.MarkdownSimple.$1", + "type": "Object", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "MarkdownSimpleProps" + ], + "path": "src/plugins/kibana_react/public/markdown/index.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.MountPointPortal", + "type": "Function", + "tags": [ + "deprecated" + ], + "label": "MountPointPortal", + "description": [], + "signature": [ + "React.FunctionComponent<", + { + "pluginId": "@kbn/react-kibana-mount", + "scope": "common", + "docId": "kibKbnReactKibanaMountPluginApi", + "section": "def-common.MountPointPortalProps", + "text": "MountPointPortalProps" + }, + ">" + ], + "path": "src/plugins/kibana_react/public/util/index.tsx", + "deprecated": true, + "trackAdoption": false, + "references": [ + { + "plugin": "navigation", + "path": "src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx" + }, + { + "plugin": "navigation", + "path": "src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx" + }, + { + "plugin": "navigation", + "path": "src/plugins/navigation/public/top_nav_menu/top_nav_menu.tsx" + } + ], + "returnComment": [], + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.MountPointPortal.$1", + "type": "CompoundType", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P & { children?: React.ReactNode; }" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.MountPointPortal.$2", + "type": "Any", + "tags": [], + "label": "context", + "description": [], + "signature": [ + "any" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.NoDataCard", + "type": "Function", + "tags": [], + "label": "NoDataCard", + "description": [], + "signature": [ + "({ recommended, title, button, layout, ...cardRest }: React.PropsWithChildren<", + { + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.NoDataPageActions", + "text": "NoDataPageActions" + }, + ">) => JSX.Element" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/no_data_card.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.NoDataCard.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n recommended,\n title,\n button,\n layout,\n ...cardRest\n}", + "description": [], + "signature": [ + "React.PropsWithChildren<", + { + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.NoDataPageActions", + "text": "NoDataPageActions" + }, + ">" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_card/no_data_card.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.NoDataPage", + "type": "Function", + "tags": [], + "label": "NoDataPage", + "description": [], + "signature": [ + "({ solution, logo, actions, docsLink, pageTitle, ...rest }: React.PropsWithChildren<", + { + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.NoDataPageProps", + "text": "NoDataPageProps" + }, + ">) => JSX.Element" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.NoDataPage.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n solution,\n logo,\n actions,\n docsLink,\n pageTitle,\n ...rest\n}", + "description": [], + "signature": [ + "React.PropsWithChildren<", + { + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.NoDataPageProps", + "text": "NoDataPageProps" + }, + ">" + ], + "path": "src/plugins/kibana_react/public/page_template/no_data_page/no_data_page.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.overviewPageActions", + "type": "Function", + "tags": [], + "label": "overviewPageActions", + "description": [], + "signature": [ + "({ addDataHref, application, devToolsHref, hidden, managementHref, showDevToolsLink, showManagementLink, }: Props) => (JSX.Element | null)[]" + ], + "path": "src/plugins/kibana_react/public/overview_page/overview_page_actions/overview_page_actions.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.overviewPageActions.$1", + "type": "Object", + "tags": [], + "label": "{\n addDataHref,\n application,\n devToolsHref,\n hidden,\n managementHref,\n showDevToolsLink,\n showManagementLink,\n}", + "description": [], + "signature": [ + "Props" + ], + "path": "src/plugins/kibana_react/public/overview_page/overview_page_actions/overview_page_actions.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.OverviewPageFooter", + "type": "Function", + "tags": [], "label": "OverviewPageFooter", "description": [], "signature": [ - "({ addBasePath, path, onSetDefaultRoute, onChangeDefaultRoute, }: React.PropsWithChildren) => JSX.Element" + "({ addBasePath, path, onSetDefaultRoute, onChangeDefaultRoute, }: React.PropsWithChildren) => JSX.Element" + ], + "path": "src/plugins/kibana_react/public/overview_page/overview_page_footer/overview_page_footer.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.OverviewPageFooter.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n addBasePath,\n path,\n onSetDefaultRoute,\n onChangeDefaultRoute,\n}", + "description": [], + "signature": [ + "React.PropsWithChildren" + ], + "path": "src/plugins/kibana_react/public/overview_page/overview_page_footer/overview_page_footer.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.reactRouterNavigate", + "type": "Function", + "tags": [], + "label": "reactRouterNavigate", + "description": [], + "signature": [ + "(history: ", + { + "pluginId": "@kbn/core-application-browser", + "scope": "common", + "docId": "kibKbnCoreApplicationBrowserPluginApi", + "section": "def-common.ScopedHistory", + "text": "ScopedHistory" + }, + " | ", + "History", + ", to: string | LocationObject, onClickCallback?: Function | undefined) => { href: string; onClick: (event: React.MouseEvent) => void; }" + ], + "path": "src/plugins/kibana_react/public/react_router_navigate/react_router_navigate.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.reactRouterNavigate.$1", + "type": "CompoundType", + "tags": [], + "label": "history", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-application-browser", + "scope": "common", + "docId": "kibKbnCoreApplicationBrowserPluginApi", + "section": "def-common.ScopedHistory", + "text": "ScopedHistory" + }, + " | ", + "History", + "" + ], + "path": "src/plugins/kibana_react/public/react_router_navigate/react_router_navigate.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.reactRouterNavigate.$2", + "type": "CompoundType", + "tags": [], + "label": "to", + "description": [], + "signature": [ + "string | LocationObject" + ], + "path": "src/plugins/kibana_react/public/react_router_navigate/react_router_navigate.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.reactRouterNavigate.$3", + "type": "Object", + "tags": [], + "label": "onClickCallback", + "description": [], + "signature": [ + "Function | undefined" + ], + "path": "src/plugins/kibana_react/public/react_router_navigate/react_router_navigate.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.reactRouterOnClickHandler", + "type": "Function", + "tags": [], + "label": "reactRouterOnClickHandler", + "description": [], + "signature": [ + "(history: ", + { + "pluginId": "@kbn/core-application-browser", + "scope": "common", + "docId": "kibKbnCoreApplicationBrowserPluginApi", + "section": "def-common.ScopedHistory", + "text": "ScopedHistory" + }, + " | ", + "History", + ", to: string | LocationObject, onClickCallback?: Function | undefined) => (event: React.MouseEvent) => void" + ], + "path": "src/plugins/kibana_react/public/react_router_navigate/react_router_navigate.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.reactRouterOnClickHandler.$1", + "type": "CompoundType", + "tags": [], + "label": "history", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-application-browser", + "scope": "common", + "docId": "kibKbnCoreApplicationBrowserPluginApi", + "section": "def-common.ScopedHistory", + "text": "ScopedHistory" + }, + " | ", + "History", + "" + ], + "path": "src/plugins/kibana_react/public/react_router_navigate/react_router_navigate.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.reactRouterOnClickHandler.$2", + "type": "CompoundType", + "tags": [], + "label": "to", + "description": [], + "signature": [ + "string | LocationObject" + ], + "path": "src/plugins/kibana_react/public/react_router_navigate/react_router_navigate.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.reactRouterOnClickHandler.$3", + "type": "Object", + "tags": [], + "label": "onClickCallback", + "description": [], + "signature": [ + "Function | undefined" + ], + "path": "src/plugins/kibana_react/public/react_router_navigate/react_router_navigate.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.RedirectAppLinks", + "type": "Function", + "tags": [ + "deprecated" + ], + "label": "RedirectAppLinks", + "description": [ + "\nUtility component that will intercept click events on children anchor (``) elements to call\n`application.navigateToUrl` with the link's href. This will trigger SPA friendly navigation\nwhen the link points to a valid Kibana app.\n" + ], + "signature": [ + "({ application, children, className, ...otherProps }: React.PropsWithChildren) => JSX.Element" + ], + "path": "src/plugins/kibana_react/public/app_links/redirect_app_link.tsx", + "deprecated": true, + "trackAdoption": false, + "references": [ + { + "plugin": "home", + "path": "src/plugins/home/public/application/components/add_data/add_data.tsx" + }, + { + "plugin": "home", + "path": "src/plugins/home/public/application/components/add_data/add_data.tsx" + }, + { + "plugin": "home", + "path": "src/plugins/home/public/application/components/add_data/add_data.tsx" + }, + { + "plugin": "home", + "path": "src/plugins/home/public/application/components/manage_data/manage_data.tsx" + }, + { + "plugin": "home", + "path": "src/plugins/home/public/application/components/manage_data/manage_data.tsx" + }, + { + "plugin": "home", + "path": "src/plugins/home/public/application/components/manage_data/manage_data.tsx" + }, + { + "plugin": "home", + "path": "src/plugins/home/public/application/components/manage_data/manage_data.tsx" + }, + { + "plugin": "home", + "path": "src/plugins/home/public/application/components/manage_data/manage_data.tsx" + }, + { + "plugin": "home", + "path": "src/plugins/home/public/application/application.tsx" + }, + { + "plugin": "home", + "path": "src/plugins/home/public/application/application.tsx" + }, + { + "plugin": "home", + "path": "src/plugins/home/public/application/application.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx" + }, + { + "plugin": "esUiShared", + "path": "src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx" + }, + { + "plugin": "esUiShared", + "path": "src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx" + }, + { + "plugin": "esUiShared", + "path": "src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/management_section/saved_objects_edition_page.tsx" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/management_section/saved_objects_edition_page.tsx" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/management_section/saved_objects_edition_page.tsx" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx" + }, + { + "plugin": "exploratoryView", + "path": "x-pack/plugins/exploratory_view/public/application/index.tsx" + }, + { + "plugin": "exploratoryView", + "path": "x-pack/plugins/exploratory_view/public/application/index.tsx" + }, + { + "plugin": "exploratoryView", + "path": "x-pack/plugins/exploratory_view/public/application/index.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/app.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/app.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/app.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/fleet/app.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/fleet/app.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/fleet/app.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx" + }, + { + "plugin": "observability", + "path": "x-pack/plugins/observability/public/application/index.tsx" + }, + { + "plugin": "observability", + "path": "x-pack/plugins/observability/public/application/index.tsx" + }, + { + "plugin": "observability", + "path": "x-pack/plugins/observability/public/application/index.tsx" + }, + { + "plugin": "apm", + "path": "x-pack/plugins/apm/public/components/routing/app_root/index.tsx" + }, + { + "plugin": "apm", + "path": "x-pack/plugins/apm/public/components/routing/app_root/index.tsx" + }, + { + "plugin": "apm", + "path": "x-pack/plugins/apm/public/components/routing/app_root/index.tsx" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/plugins/index_lifecycle_management/public/shared_imports.ts" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/plugins/index_lifecycle_management/public/application/index.tsx" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/plugins/index_lifecycle_management/public/application/index.tsx" + }, + { + "plugin": "indexLifecycleManagement", + "path": "x-pack/plugins/index_lifecycle_management/public/application/index.tsx" + }, + { + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_onboarding/public/application/app.tsx" + }, + { + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_onboarding/public/application/app.tsx" + }, + { + "plugin": "observabilityOnboarding", + "path": "x-pack/plugins/observability_onboarding/public/application/app.tsx" + }, + { + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx" + }, + { + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx" + }, + { + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx" + }, + { + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/shared_imports.ts" + }, + { + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" + }, + { + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" + }, + { + "plugin": "upgradeAssistant", + "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx" + }, + { + "plugin": "ux", + "path": "x-pack/plugins/ux/public/application/ux_app.tsx" + }, + { + "plugin": "ux", + "path": "x-pack/plugins/ux/public/application/ux_app.tsx" + }, + { + "plugin": "ux", + "path": "x-pack/plugins/ux/public/application/ux_app.tsx" + }, + { + "plugin": "kibanaOverview", + "path": "src/plugins/kibana_overview/public/components/add_data/add_data.tsx" + }, + { + "plugin": "kibanaOverview", + "path": "src/plugins/kibana_overview/public/components/add_data/add_data.tsx" + }, + { + "plugin": "kibanaOverview", + "path": "src/plugins/kibana_overview/public/components/add_data/add_data.tsx" + }, + { + "plugin": "kibanaOverview", + "path": "src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx" + }, + { + "plugin": "kibanaOverview", + "path": "src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx" + }, + { + "plugin": "kibanaOverview", + "path": "src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx" + } + ], + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-public.RedirectAppLinks.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n application,\n children,\n className,\n ...otherProps\n}", + "description": [], + "signature": [ + "React.PropsWithChildren" + ], + "path": "src/plugins/kibana_react/public/app_links/redirect_app_link.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.toMountPoint", + "type": "Function", + "tags": [ + "deprecated" + ], + "label": "toMountPoint", + "description": [], + "signature": [ + "(node: React.ReactNode, { theme$ }?: ", + { + "pluginId": "kibanaReact", + "scope": "public", + "docId": "kibKibanaReactPluginApi", + "section": "def-public.ToMountPointOptions", + "text": "ToMountPointOptions" + }, + ") => ", + { + "pluginId": "@kbn/core-mount-utils-browser", + "scope": "common", + "docId": "kibKbnCoreMountUtilsBrowserPluginApi", + "section": "def-common.MountPoint", + "text": "MountPoint" + }, + "" ], - "path": "src/plugins/kibana_react/public/overview_page/overview_page_footer/overview_page_footer.tsx", - "deprecated": false, + "path": "src/plugins/kibana_react/public/util/index.tsx", + "deprecated": true, "trackAdoption": false, - "children": [ + "references": [ + { + "plugin": "inspector", + "path": "src/plugins/inspector/public/plugin.tsx" + }, + { + "plugin": "inspector", + "path": "src/plugins/inspector/public/plugin.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/search_interceptor/search_interceptor.ts" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/shard_failure_modal/shard_failure_open_modal_button.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/shard_failure_modal/shard_failure_open_modal_button.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/fetch/handle_warnings.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/fetch/handle_warnings.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/sessions_mgmt/components/actions/delete_button.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/sessions_mgmt/components/actions/delete_button.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/sessions_mgmt/components/actions/extend_button.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/sessions_mgmt/components/actions/extend_button.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/sessions_mgmt/components/actions/inspect_button.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/sessions_mgmt/components/actions/inspect_button.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/sessions_mgmt/components/actions/rename_button.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/session/sessions_mgmt/components/actions/rename_button.tsx" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/search_service.ts" + }, + { + "plugin": "data", + "path": "src/plugins/data/public/search/search_service.ts" + }, + { + "plugin": "advancedSettings", + "path": "src/plugins/advanced_settings/public/management_app/components/form/form.tsx" + }, + { + "plugin": "advancedSettings", + "path": "src/plugins/advanced_settings/public/management_app/components/form/form.tsx" + }, + { + "plugin": "savedObjects", + "path": "src/plugins/saved_objects/public/saved_object/helpers/confirm_modal_promise.tsx" + }, + { + "plugin": "savedObjects", + "path": "src/plugins/saved_objects/public/saved_object/helpers/confirm_modal_promise.tsx" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/add_panel_flyout/open_add_panel_flyout.tsx" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/add_panel_flyout/open_add_panel_flyout.tsx" + }, + { + "plugin": "dataViewEditor", + "path": "src/plugins/data_view_editor/public/shared_imports.ts" + }, + { + "plugin": "dataViewEditor", + "path": "src/plugins/data_view_editor/public/open_editor.tsx" + }, + { + "plugin": "dataViewEditor", + "path": "src/plugins/data_view_editor/public/open_editor.tsx" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/query_string_input/query_string_input.tsx" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/actions/apply_filter_action.ts" + }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/public/actions/apply_filter_action.ts" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/utils/saved_objects_utils/confirm_modal_promise.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/utils/saved_objects_utils/confirm_modal_promise.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/visualize_app/utils/use/use_visualize_app_state.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/visualize_app/utils/use/use_visualize_app_state.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/visualize_app/components/visualize_no_match.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/visualize_app/components/visualize_no_match.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/visualize_app/index.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/visualize_app/index.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/control_group/editor/open_add_data_control_flyout.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/control_group/editor/open_add_data_control_flyout.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/control_group/editor/open_edit_control_group_flyout.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/control_group/editor/open_edit_control_group_flyout.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/control_group/actions/edit_control_action.tsx" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/public/control_group/actions/edit_control_action.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_container/embeddable/api/show_settings.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_container/embeddable/api/show_settings.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_listing/dashboard_listing.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_listing/dashboard_listing.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_actions/open_replace_panel_flyout.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_actions/open_replace_panel_flyout.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_action.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_actions/copy_to_dashboard_action.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_listing/dashboard_listing_table.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_listing/dashboard_listing_table.tsx" + }, + { + "plugin": "licensing", + "path": "x-pack/plugins/licensing/public/expired_banner.tsx" + }, + { + "plugin": "licensing", + "path": "x-pack/plugins/licensing/public/expired_banner.tsx" + }, + { + "plugin": "savedObjectsTagging", + "path": "x-pack/plugins/saved_objects_tagging/public/components/edition_modal/open_modal.tsx" + }, + { + "plugin": "savedObjectsTagging", + "path": "x-pack/plugins/saved_objects_tagging/public/components/edition_modal/open_modal.tsx" + }, + { + "plugin": "savedObjectsTagging", + "path": "x-pack/plugins/saved_objects_tagging/public/components/edition_modal/open_modal.tsx" + }, + { + "plugin": "savedObjectsTagging", + "path": "x-pack/plugins/saved_objects_tagging/public/components/assign_flyout/open_assign_flyout.tsx" + }, + { + "plugin": "savedObjectsTagging", + "path": "x-pack/plugins/saved_objects_tagging/public/components/assign_flyout/open_assign_flyout.tsx" + }, + { + "plugin": "eventAnnotation", + "path": "src/plugins/event_annotation/public/get_table_list.tsx" + }, + { + "plugin": "eventAnnotation", + "path": "src/plugins/event_annotation/public/get_table_list.tsx" + }, + { + "plugin": "dataViewFieldEditor", + "path": "src/plugins/data_view_field_editor/public/shared_imports.ts" + }, + { + "plugin": "dataViewFieldEditor", + "path": "src/plugins/data_view_field_editor/public/open_delete_modal.tsx" + }, + { + "plugin": "dataViewFieldEditor", + "path": "src/plugins/data_view_field_editor/public/open_delete_modal.tsx" + }, + { + "plugin": "dataViewFieldEditor", + "path": "src/plugins/data_view_field_editor/public/open_editor.tsx" + }, + { + "plugin": "dataViewFieldEditor", + "path": "src/plugins/data_view_field_editor/public/open_editor.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/persistence/saved_objects_utils/confirm_modal_promise.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/persistence/saved_objects_utils/confirm_modal_promise.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_actions/remove_layer_action.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/editor_frame_service/editor_frame/config_panel/layer_actions/remove_layer_action.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/visualizations/xy/annotations/actions/revert_changes_action.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/visualizations/xy/annotations/actions/revert_changes_action.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/trigger_actions/open_lens_config/helpers.ts" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/trigger_actions/open_lens_config/helpers.ts" + }, + { + "plugin": "@kbn/ml-date-picker", + "path": "x-pack/packages/ml/date_picker/src/hooks/use_date_picker_context.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_categorization/log_categorization_app_state.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_categorization/log_categorization_app_state.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_app_state.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_app_state.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/change_point_detection/change_point_detection_root.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/change_point_detection/change_point_detection_root.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content_wrapper.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content_wrapper.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/account_management/user_profile/use_update_user_profile.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/account_management/user_profile/use_update_user_profile.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/session/session_expiration_toast.tsx" + }, + { + "plugin": "security", + "path": "x-pack/plugins/security/public/session/session_expiration_toast.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx" + }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/public/common/use_cases_toast.tsx" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/public/common/use_cases_toast.tsx" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/public/common/use_cases_toast.tsx" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/public/components/visualizations/actions/add_to_new_case.tsx" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/public/components/visualizations/actions/add_to_new_case.tsx" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.tsx" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.tsx" + }, + { + "plugin": "observabilityShared", + "path": "x-pack/plugins/observability_shared/public/components/header_menu/header_menu_portal.tsx" + }, + { + "plugin": "observabilityShared", + "path": "x-pack/plugins/observability_shared/public/components/header_menu/header_menu_portal.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/main/hooks/use_alert_results_toast.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/main/hooks/use_alert_results_toast.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/context/hooks/use_context_app_fetch.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/context/hooks/use_context_app_fetch.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/context/hooks/use_context_app_fetch.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/context/hooks/use_context_app_fetch.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/not_found/not_found_route.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/not_found/not_found_route.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/view_alert/view_alert_utils.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/view_alert/view_alert_utils.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/view_alert/view_alert_utils.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/view_alert/view_alert_utils.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/index.tsx" + }, + { + "plugin": "discover", + "path": "src/plugins/discover/public/application/index.tsx" + }, + { + "plugin": "exploratoryView", + "path": "x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.tsx" + }, + { + "plugin": "exploratoryView", + "path": "x-pack/plugins/exploratory_view/public/components/shared/exploratory_view/header/add_to_case_action.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/hooks/use_confirm_open_unverified.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/hooks/use_confirm_open_unverified.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/hooks/use_package_install.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/hooks/use_confirm_force_install.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/hooks/use_confirm_force_install.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/components/devtools_request_flyout/devtools_request_flyout.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/components/devtools_request_flyout/devtools_request_flyout.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/settings/update_button.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/settings/update_button.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/sections/epm/screens/detail/settings/update_button.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/components/header/header_portal.tsx" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/public/applications/integrations/components/header/header_portal.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/render_app.tsx" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/render_app.tsx" + }, + { + "plugin": "telemetry", + "path": "src/plugins/telemetry/public/services/telemetry_notifications/render_opt_in_status_notice_banner.tsx" + }, + { + "plugin": "telemetry", + "path": "src/plugins/telemetry/public/services/telemetry_notifications/render_opt_in_status_notice_banner.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/embeddables/grid_embeddable/grid_embeddable.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/embeddables/grid_embeddable/grid_embeddable.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/index_data_visualizer.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/index_data_visualizer/index_data_visualizer.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_app_state.tsx" + }, + { + "plugin": "dataVisualizer", + "path": "x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_app_state.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_action_name.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_action_name.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/model_management/force_stop_dialog.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/model_management/force_stop_dialog.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/model_management/deployment_setup.tsx" + }, { - "parentPluginId": "kibanaReact", - "id": "def-public.OverviewPageFooter.$1", - "type": "CompoundType", - "tags": [], - "label": "{\n addBasePath,\n path,\n onSetDefaultRoute,\n onChangeDefaultRoute,\n}", - "description": [], - "signature": [ - "React.PropsWithChildren" - ], - "path": "src/plugins/kibana_react/public/overview_page/overview_page_footer/overview_page_footer.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "kibanaReact", - "id": "def-public.reactRouterNavigate", - "type": "Function", - "tags": [], - "label": "reactRouterNavigate", - "description": [], - "signature": [ - "(history: ", + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/model_management/deployment_setup.tsx" + }, { - "pluginId": "@kbn/core-application-browser", - "scope": "common", - "docId": "kibKbnCoreApplicationBrowserPluginApi", - "section": "def-common.ScopedHistory", - "text": "ScopedHistory" + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/components/header_menu_portal/header_menu_portal.tsx" }, - " | ", - "History", - ", to: string | LocationObject, onClickCallback?: Function | undefined) => { href: string; onClick: (event: React.MouseEvent) => void; }" - ], - "path": "src/plugins/kibana_react/public/react_router_navigate/react_router_navigate.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ { - "parentPluginId": "kibanaReact", - "id": "def-public.reactRouterNavigate.$1", - "type": "CompoundType", - "tags": [], - "label": "history", - "description": [], - "signature": [ - { - "pluginId": "@kbn/core-application-browser", - "scope": "common", - "docId": "kibKbnCoreApplicationBrowserPluginApi", - "section": "def-common.ScopedHistory", - "text": "ScopedHistory" - }, - " | ", - "History", - "" - ], - "path": "src/plugins/kibana_react/public/react_router_navigate/react_router_navigate.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/components/header_menu_portal/header_menu_portal.tsx" }, { - "parentPluginId": "kibanaReact", - "id": "def-public.reactRouterNavigate.$2", - "type": "CompoundType", - "tags": [], - "label": "to", - "description": [], - "signature": [ - "string | LocationObject" - ], - "path": "src/plugins/kibana_react/public/react_router_navigate/react_router_navigate.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true + "plugin": "ml", + "path": "x-pack/plugins/ml/public/embeddables/job_creation/common/create_flyout.tsx" }, { - "parentPluginId": "kibanaReact", - "id": "def-public.reactRouterNavigate.$3", - "type": "Object", - "tags": [], - "label": "onClickCallback", - "description": [], - "signature": [ - "Function | undefined" - ], - "path": "src/plugins/kibana_react/public/react_router_navigate/react_router_navigate.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "kibanaReact", - "id": "def-public.reactRouterOnClickHandler", - "type": "Function", - "tags": [], - "label": "reactRouterOnClickHandler", - "description": [], - "signature": [ - "(history: ", + "plugin": "ml", + "path": "x-pack/plugins/ml/public/embeddables/job_creation/common/create_flyout.tsx" + }, { - "pluginId": "@kbn/core-application-browser", - "scope": "common", - "docId": "kibKbnCoreApplicationBrowserPluginApi", - "section": "def-common.ScopedHistory", - "text": "ScopedHistory" + "plugin": "ml", + "path": "x-pack/plugins/ml/public/embeddables/common/resolve_job_selection.tsx" }, - " | ", - "History", - ", to: string | LocationObject, onClickCallback?: Function | undefined) => (event: React.MouseEvent) => void" - ], - "path": "src/plugins/kibana_react/public/react_router_navigate/react_router_navigate.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ { - "parentPluginId": "kibanaReact", - "id": "def-public.reactRouterOnClickHandler.$1", - "type": "CompoundType", - "tags": [], - "label": "history", - "description": [], - "signature": [ - { - "pluginId": "@kbn/core-application-browser", - "scope": "common", - "docId": "kibKbnCoreApplicationBrowserPluginApi", - "section": "def-common.ScopedHistory", - "text": "ScopedHistory" - }, - " | ", - "History", - "" - ], - "path": "src/plugins/kibana_react/public/react_router_navigate/react_router_navigate.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true + "plugin": "ml", + "path": "x-pack/plugins/ml/public/embeddables/common/resolve_job_selection.tsx" }, { - "parentPluginId": "kibanaReact", - "id": "def-public.reactRouterOnClickHandler.$2", - "type": "CompoundType", - "tags": [], - "label": "to", - "description": [], - "signature": [ - "string | LocationObject" - ], - "path": "src/plugins/kibana_react/public/react_router_navigate/react_router_navigate.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true + "plugin": "ml", + "path": "x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_setup_flyout.tsx" }, { - "parentPluginId": "kibanaReact", - "id": "def-public.reactRouterOnClickHandler.$3", - "type": "Object", - "tags": [], - "label": "onClickCallback", - "description": [], - "signature": [ - "Function | undefined" - ], - "path": "src/plugins/kibana_react/public/react_router_navigate/react_router_navigate.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "kibanaReact", - "id": "def-public.RedirectAppLinks", - "type": "Function", - "tags": [ - "deprecated" - ], - "label": "RedirectAppLinks", - "description": [ - "\nUtility component that will intercept click events on children anchor (``) elements to call\n`application.navigateToUrl` with the link's href. This will trigger SPA friendly navigation\nwhen the link points to a valid Kibana app.\n" - ], - "signature": [ - "({ application, children, className, ...otherProps }: React.PropsWithChildren) => JSX.Element" - ], - "path": "src/plugins/kibana_react/public/app_links/redirect_app_link.tsx", - "deprecated": true, - "trackAdoption": false, - "references": [ + "plugin": "ml", + "path": "x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_setup_flyout.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_setup_flyout.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_setup_flyout.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/routing/use_active_route.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/routing/use_active_route.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/app.tsx" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/public/application/app.tsx" + }, + { + "plugin": "observability", + "path": "x-pack/plugins/observability/public/pages/overview/components/header_menu/header_menu_portal.tsx" + }, + { + "plugin": "observability", + "path": "x-pack/plugins/observability/public/pages/overview/components/header_menu/header_menu_portal.tsx" + }, + { + "plugin": "banners", + "path": "x-pack/plugins/banners/public/plugin.tsx" + }, + { + "plugin": "banners", + "path": "x-pack/plugins/banners/public/plugin.tsx" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/job_failure.tsx" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/job_failure.tsx" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/job_failure.tsx" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/general_error.tsx" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/general_error.tsx" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/job_success.tsx" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/job_success.tsx" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/job_success.tsx" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/job_warning_formulas.tsx" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/job_warning_formulas.tsx" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/job_warning_formulas.tsx" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/job_warning_max_size.tsx" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/job_warning_max_size.tsx" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/job_warning_max_size.tsx" + }, + { + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/job_warning.tsx" + }, { - "plugin": "home", - "path": "src/plugins/home/public/application/components/add_data/add_data.tsx" + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/job_warning.tsx" }, { - "plugin": "home", - "path": "src/plugins/home/public/application/components/add_data/add_data.tsx" + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/notifier/job_warning.tsx" }, { - "plugin": "home", - "path": "src/plugins/home/public/application/components/add_data/add_data.tsx" + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/share_context_menu/reporting_panel_content/reporting_panel_content.tsx" }, { - "plugin": "home", - "path": "src/plugins/home/public/application/components/manage_data/manage_data.tsx" + "plugin": "reporting", + "path": "x-pack/plugins/reporting/public/share_context_menu/reporting_panel_content/reporting_panel_content.tsx" }, { - "plugin": "home", - "path": "src/plugins/home/public/application/components/manage_data/manage_data.tsx" + "plugin": "timelines", + "path": "x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx" }, { - "plugin": "home", - "path": "src/plugins/home/public/application/components/manage_data/manage_data.tsx" + "plugin": "timelines", + "path": "x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx" }, { - "plugin": "home", - "path": "src/plugins/home/public/application/components/manage_data/manage_data.tsx" + "plugin": "runtimeFields", + "path": "x-pack/plugins/runtime_fields/public/shared_imports.ts" }, { - "plugin": "home", - "path": "src/plugins/home/public/application/components/manage_data/manage_data.tsx" + "plugin": "runtimeFields", + "path": "x-pack/plugins/runtime_fields/public/load_editor.tsx" }, { - "plugin": "home", - "path": "src/plugins/home/public/application/application.tsx" + "plugin": "runtimeFields", + "path": "x-pack/plugins/runtime_fields/public/load_editor.tsx" }, { - "plugin": "home", - "path": "src/plugins/home/public/application/application.tsx" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_edit/component_template_edit.tsx" }, { - "plugin": "home", - "path": "src/plugins/home/public/application/application.tsx" + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/public/application/components/component_templates/component_template_wizard/component_template_edit/component_template_edit.tsx" }, { - "plugin": "data", - "path": "src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx" + "plugin": "dashboardEnhanced", + "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_create_drilldown/flyout_create_drilldown.tsx" }, { - "plugin": "data", - "path": "src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx" + "plugin": "dashboardEnhanced", + "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_create_drilldown/flyout_create_drilldown.tsx" }, { - "plugin": "data", - "path": "src/plugins/data/public/search/session/sessions_mgmt/lib/get_columns.tsx" + "plugin": "dashboardEnhanced", + "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/flyout_edit_drilldown.tsx" }, { - "plugin": "data", - "path": "src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx" + "plugin": "dashboardEnhanced", + "path": "x-pack/plugins/dashboard_enhanced/public/services/drilldowns/actions/flyout_edit_drilldown/flyout_edit_drilldown.tsx" }, { - "plugin": "data", - "path": "src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx" + "plugin": "imageEmbeddable", + "path": "src/plugins/image_embeddable/public/image_editor/configure_image.tsx" }, { - "plugin": "data", - "path": "src/plugins/data/public/search/session/session_indicator/connected_search_session_indicator/connected_search_session_indicator.tsx" + "plugin": "imageEmbeddable", + "path": "src/plugins/image_embeddable/public/image_editor/configure_image.tsx" }, { - "plugin": "esUiShared", - "path": "src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx" + "plugin": "graph", + "path": "x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx" }, { - "plugin": "esUiShared", - "path": "src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx" + "plugin": "graph", + "path": "x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx" }, { - "plugin": "esUiShared", - "path": "src/plugins/es_ui_shared/public/components/view_api_request_flyout/view_api_request_flyout.tsx" + "plugin": "graph", + "path": "x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx" }, { - "plugin": "savedObjectsManagement", - "path": "src/plugins/saved_objects_management/public/management_section/saved_objects_edition_page.tsx" + "plugin": "graph", + "path": "x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx" }, { - "plugin": "savedObjectsManagement", - "path": "src/plugins/saved_objects_management/public/management_section/saved_objects_edition_page.tsx" + "plugin": "graph", + "path": "x-pack/plugins/graph/public/application.tsx" }, { - "plugin": "savedObjectsManagement", - "path": "src/plugins/saved_objects_management/public/management_section/saved_objects_edition_page.tsx" + "plugin": "graph", + "path": "x-pack/plugins/graph/public/application.tsx" }, { - "plugin": "savedObjectsManagement", - "path": "src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/application/hooks/use_request_error_handler.tsx" }, { - "plugin": "savedObjectsManagement", - "path": "src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/application/hooks/use_request_error_handler.tsx" }, { - "plugin": "savedObjectsManagement", - "path": "src/plugins/saved_objects_management/public/management_section/objects_table/saved_objects_table.tsx" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/application/hooks/use_request_error_handler.tsx" }, { - "plugin": "exploratoryView", - "path": "x-pack/plugins/exploratory_view/public/application/index.tsx" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/alerts/lib/alerts_toast.tsx" }, { - "plugin": "exploratoryView", - "path": "x-pack/plugins/exploratory_view/public/application/index.tsx" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/alerts/lib/alerts_toast.tsx" }, { - "plugin": "exploratoryView", - "path": "x-pack/plugins/exploratory_view/public/application/index.tsx" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/application/pages/elasticsearch/ingest_pipeline_modal.tsx" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/application/pages/elasticsearch/ingest_pipeline_modal.tsx" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/components/cluster/listing/listing.js" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/components/home_integration/tutorial_directory_header_link.tsx" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/components/cluster/listing/listing.js" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx" + "plugin": "monitoring", + "path": "x-pack/plugins/monitoring/public/components/cluster/listing/listing.js" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/common/components/sourcerer/use_update_data_view.tsx" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/components/custom_assets_accordion.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/common/components/sourcerer/use_update_data_view.tsx" }, { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/application/index.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/common/components/sourcerer/use_update_data_view.tsx" }, { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/application/index.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/explore/containers/risk_score/onboarding/api/ingest_pipelines.ts" }, { - "plugin": "observability", - "path": "x-pack/plugins/observability/public/application/index.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/explore/containers/risk_score/onboarding/api/ingest_pipelines.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/explore/containers/risk_score/onboarding/api/ingest_pipelines.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/explore/containers/risk_score/onboarding/api/stored_scripts.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_logs/agent_logs.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/explore/containers/risk_score/onboarding/api/stored_scripts.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/integrations/app.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/explore/containers/risk_score/onboarding/api/stored_scripts.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/integrations/app.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/explore/containers/risk_score/onboarding/api/saved_objects.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/integrations/app.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/explore/containers/risk_score/onboarding/api/saved_objects.ts" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/app.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions.tsx" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/app.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/bulk_actions/use_bulk_actions.tsx" }, { - "plugin": "fleet", - "path": "x-pack/plugins/fleet/public/applications/fleet/app.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/app/home/global_header/index.tsx" }, { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx" + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/public/app/home/global_header/index.tsx" }, { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/toast_title.tsx" }, { - "plugin": "ml", - "path": "x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/toast_title.tsx" }, { - "plugin": "apm", - "path": "x-pack/plugins/apm/public/components/routing/app_root/index.tsx" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx" }, { - "plugin": "apm", - "path": "x-pack/plugins/apm/public/components/routing/app_root/index.tsx" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx" }, { - "plugin": "apm", - "path": "x-pack/plugins/apm/public/components/routing/app_root/index.tsx" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/shared_imports.ts" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/browser_test_results.tsx" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/index.tsx" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/browser_test_results.tsx" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/index.tsx" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx" }, { - "plugin": "indexLifecycleManagement", - "path": "x-pack/plugins/index_lifecycle_management/public/application/index.tsx" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_onboarding/public/application/app.tsx" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_onboarding/public/application/app.tsx" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx" }, { - "plugin": "observabilityOnboarding", - "path": "x-pack/plugins/observability_onboarding/public/application/app.tsx" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/hooks/use_monitor_save.tsx" }, { "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx" + "path": "x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/show_sync_errors.tsx" }, { "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx" + "path": "x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/show_sync_errors.tsx" }, { "plugin": "synthetics", - "path": "x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx" + "path": "x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/simple_test_results.tsx" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/public/shared_imports.ts" + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/simple_test_results.tsx" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/components/toast_notification_text.tsx" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/components/toast_notification_text.tsx" }, { - "plugin": "upgradeAssistant", - "path": "x-pack/plugins/upgrade_assistant/public/application/app.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx" }, { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx" }, { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx" }, { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx" }, { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_create/step_create_form.tsx" }, { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_details/step_details_form.tsx" }, { - "plugin": "uptime", - "path": "x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_details/step_details_form.tsx" }, { - "plugin": "ux", - "path": "x-pack/plugins/ux/public/application/ux_app.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_details/step_details_form.tsx" }, { - "plugin": "ux", - "path": "x-pack/plugins/ux/public/application/ux_app.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_details/step_details_form.tsx" }, { - "plugin": "ux", - "path": "x-pack/plugins/ux/public/application/ux_app.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_details/step_details_form.tsx" }, { - "plugin": "kibanaOverview", - "path": "src/plugins/kibana_overview/public/components/add_data/add_data.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/step_details/step_details_form.tsx" }, { - "plugin": "kibanaOverview", - "path": "src/plugins/kibana_overview/public/components/add_data/add_data.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/wizard/wizard.tsx" }, { - "plugin": "kibanaOverview", - "path": "src/plugins/kibana_overview/public/components/add_data/add_data.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/sections/create_transform/components/wizard/wizard.tsx" }, { - "plugin": "kibanaOverview", - "path": "src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/hooks/use_delete_transform.tsx" }, { - "plugin": "kibanaOverview", - "path": "src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx" + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/hooks/use_delete_transform.tsx" }, { - "plugin": "kibanaOverview", - "path": "src/plugins/kibana_overview/public/components/manage_data/manage_data.tsx" - } - ], - "children": [ + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/hooks/use_delete_transform.tsx" + }, { - "parentPluginId": "kibanaReact", - "id": "def-public.RedirectAppLinks.$1", - "type": "CompoundType", - "tags": [], - "label": "{\n application,\n children,\n className,\n ...otherProps\n}", - "description": [], - "signature": [ - "React.PropsWithChildren" - ], - "path": "src/plugins/kibana_react/public/app_links/redirect_app_link.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "kibanaReact", - "id": "def-public.toMountPoint", - "type": "Function", - "tags": [], - "label": "toMountPoint", - "description": [ - "\nMountPoint converter for react nodes.\n" - ], - "signature": [ - "(node: React.ReactNode, { theme$ }?: ", + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/hooks/use_delete_transform.tsx" + }, + { + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/hooks/use_delete_transform.tsx" + }, + { + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/hooks/use_reset_transform.tsx" + }, + { + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/hooks/use_reset_transform.tsx" + }, + { + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/hooks/use_reset_transform.tsx" + }, + { + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/hooks/use_schedule_now_transform.tsx" + }, + { + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/hooks/use_schedule_now_transform.tsx" + }, + { + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/hooks/use_start_transform.tsx" + }, + { + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/hooks/use_start_transform.tsx" + }, + { + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/hooks/use_stop_transform.tsx" + }, + { + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/hooks/use_stop_transform.tsx" + }, + { + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/hooks/use_reauthorize_transform.tsx" + }, + { + "plugin": "transform", + "path": "x-pack/plugins/transform/public/app/hooks/use_reauthorize_transform.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx" + }, + { + "plugin": "console", + "path": "src/plugins/console/public/shared_imports.ts" + }, + { + "plugin": "console", + "path": "src/plugins/console/public/application/hooks/use_send_current_request/use_send_current_request.ts" + }, + { + "plugin": "console", + "path": "src/plugins/console/public/application/hooks/use_send_current_request/use_send_current_request.ts" + }, + { + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx" + }, { - "pluginId": "kibanaReact", - "scope": "public", - "docId": "kibKibanaReactPluginApi", - "section": "def-public.ToMountPointOptions", - "text": "ToMountPointOptions" + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx" }, - ") => ", { - "pluginId": "@kbn/core-mount-utils-browser", - "scope": "common", - "docId": "kibKbnCoreMountUtilsBrowserPluginApi", - "section": "def-common.MountPoint", - "text": "MountPoint" + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/edit_index_pattern/remove_data_view.tsx" }, - "" + { + "plugin": "dataViewManagement", + "path": "src/plugins/data_view_management/public/components/edit_index_pattern/remove_data_view.tsx" + }, + { + "plugin": "filesManagement", + "path": "src/plugins/files_management/public/mount_management_section.tsx" + }, + { + "plugin": "filesManagement", + "path": "src/plugins/files_management/public/mount_management_section.tsx" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/lib/test_samples/actions/send_message_action.tsx" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/lib/test_samples/actions/send_message_action.tsx" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/lib/test_samples/actions/send_message_action.tsx" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory.tsx" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_embeddable_factory.tsx" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable_factory.tsx" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/lib/test_samples/embeddables/contact_card/contact_card_exportable_embeddable_factory.tsx" + }, + { + "plugin": "uiActions", + "path": "src/plugins/ui_actions/public/tests/test_samples/hello_world_action.tsx" + }, + { + "plugin": "uiActions", + "path": "src/plugins/ui_actions/public/tests/test_samples/hello_world_action.tsx" + }, + { + "plugin": "visTypeVislib", + "path": "src/plugins/vis_types/vislib/public/vis_controller.tsx" + }, + { + "plugin": "visTypeVislib", + "path": "src/plugins/vis_types/vislib/public/vis_controller.tsx" + } ], - "path": "src/plugins/kibana_react/public/util/to_mount_point.tsx", - "deprecated": false, - "trackAdoption": false, "children": [ { "parentPluginId": "kibanaReact", @@ -1539,13 +4602,11 @@ "type": "CompoundType", "tags": [], "label": "node", - "description": [ - "to get a mount point for" - ], + "description": [], "signature": [ "React.ReactNode" ], - "path": "src/plugins/kibana_react/public/util/to_mount_point.tsx", + "path": "src/plugins/kibana_react/public/util/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -1566,7 +4627,7 @@ "text": "ToMountPointOptions" } ], - "path": "src/plugins/kibana_react/public/util/to_mount_point.tsx", + "path": "src/plugins/kibana_react/public/util/index.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -1885,30 +4946,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "kibanaReact", - "id": "def-public.useKibanaTheme", - "type": "Function", - "tags": [], - "label": "useKibanaTheme", - "description": [], - "signature": [ - "() => ", - { - "pluginId": "@kbn/core-theme-browser", - "scope": "common", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-common.CoreTheme", - "text": "CoreTheme" - } - ], - "path": "src/plugins/kibana_react/public/theme/use_theme.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "kibanaReact", "id": "def-public.useUiSetting", @@ -2062,15 +5099,15 @@ "Observable", "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/react-kibana-context-common", "scope": "common", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-common.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnReactKibanaContextCommonPluginApi", + "section": "def-common.KibanaTheme", + "text": "KibanaTheme" }, - ">) => React.ReactElement>" + ">) => JSX.Element" ], - "path": "src/plugins/kibana_react/public/theme/wrap_with_theme.tsx", + "path": "src/plugins/kibana_react/public/theme.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -2084,7 +5121,7 @@ "signature": [ "React.ReactNode" ], - "path": "src/plugins/kibana_react/public/theme/wrap_with_theme.tsx", + "path": "src/plugins/kibana_react/public/theme.tsx", "deprecated": false, "trackAdoption": false, "isRequired": false @@ -2100,15 +5137,15 @@ "Observable", "<", { - "pluginId": "@kbn/core-theme-browser", + "pluginId": "@kbn/react-kibana-context-common", "scope": "common", - "docId": "kibKbnCoreThemeBrowserPluginApi", - "section": "def-common.CoreTheme", - "text": "CoreTheme" + "docId": "kibKbnReactKibanaContextCommonPluginApi", + "section": "def-common.KibanaTheme", + "text": "KibanaTheme" }, ">" ], - "path": "src/plugins/kibana_react/public/theme/wrap_with_theme.tsx", + "path": "src/plugins/kibana_react/public/theme.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -2817,12 +5854,15 @@ "parentPluginId": "kibanaReact", "id": "def-public.ToMountPointOptions", "type": "Interface", - "tags": [], + "tags": [ + "deprecated" + ], "label": "ToMountPointOptions", "description": [], - "path": "src/plugins/kibana_react/public/util/to_mount_point.tsx", - "deprecated": false, + "path": "src/plugins/kibana_react/public/util/index.tsx", + "deprecated": true, "trackAdoption": false, + "references": [], "children": [ { "parentPluginId": "kibanaReact", @@ -2843,7 +5883,7 @@ }, "> | undefined" ], - "path": "src/plugins/kibana_react/public/util/to_mount_point.tsx", + "path": "src/plugins/kibana_react/public/util/index.tsx", "deprecated": false, "trackAdoption": false } @@ -3302,6 +6342,39 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "kibanaReact", + "id": "def-public.KibanaThemeProviderProps", + "type": "Type", + "tags": [ + "deprecated" + ], + "label": "KibanaThemeProviderProps", + "description": [], + "signature": [ + "Pick<", + { + "pluginId": "@kbn/react-kibana-context-theme", + "scope": "common", + "docId": "kibKbnReactKibanaContextThemePluginApi", + "section": "def-common.KibanaThemeProviderProps", + "text": "KibanaThemeProviderProps" + }, + ", \"children\" | \"modify\"> & ", + { + "pluginId": "@kbn/react-kibana-context-common", + "scope": "common", + "docId": "kibKbnReactKibanaContextCommonPluginApi", + "section": "def-common.ThemeServiceStart", + "text": "ThemeServiceStart" + } + ], + "path": "src/plugins/kibana_react/public/theme.tsx", + "deprecated": true, + "trackAdoption": false, + "references": [], + "initialIsOpen": false + }, { "parentPluginId": "kibanaReact", "id": "def-public.LANG", @@ -3703,7 +6776,9 @@ "type": "Function", "tags": [], "label": "createGlobalStyle", - "description": [], + "description": [ + "/** see https://styled-components.com/docs/api#createglobalstyle */" + ], "signature": [ "

(first: TemplateStringsArray | ", "CSSObject", @@ -3713,9 +6788,9 @@ "ThemedStyledProps", "" ], - "path": "src/plugins/kibana_react/common/eui_styled_components.tsx", + "path": "packages/react/kibana_context/styled/styled_provider.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -3794,20 +6869,22 @@ "type": "Function", "tags": [], "label": "css", - "description": [], + "description": [ + "/** see https://styled-components.com/docs/api#css-prop */" + ], "signature": [ "BaseThemedCssFunction", "<", { - "pluginId": "kibanaReact", + "pluginId": "@kbn/react-kibana-context-styled", "scope": "common", - "docId": "kibKibanaReactPluginApi", + "docId": "kibKbnReactKibanaContextStyledPluginApi", "section": "def-common.EuiTheme", "text": "EuiTheme" }, ">" ], - "path": "src/plugins/kibana_react/common/eui_styled_components.tsx", + "path": "packages/react/kibana_context/styled/styled_provider.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -3818,31 +6895,90 @@ "type": "Function", "tags": [], "label": "euiStyled", - "description": [], + "description": [ + "/** see https://styled-components.com/docs/api#styled */" + ], "signature": [ "ThemedBaseStyledInterface", "<", { - "pluginId": "kibanaReact", + "pluginId": "@kbn/react-kibana-context-styled", "scope": "common", - "docId": "kibKibanaReactPluginApi", + "docId": "kibKbnReactKibanaContextStyledPluginApi", "section": "def-common.EuiTheme", "text": "EuiTheme" }, ">" ], - "path": "src/plugins/kibana_react/common/eui_styled_components.tsx", + "path": "packages/react/kibana_context/styled/styled_provider.tsx", "deprecated": false, "trackAdoption": false, "initialIsOpen": false }, { "parentPluginId": "kibanaReact", - "id": "def-common.EuiThemeProvider", + "id": "def-common.keyframes", "type": "Function", "tags": [], - "label": "EuiThemeProvider", - "description": [], + "label": "keyframes", + "description": [ + "/** see https://styled-components.com/docs/api#keyframes */" + ], + "signature": [ + "(strings: TemplateStringsArray | ", + "CSSKeyframes", + ", ...interpolations: ", + "SimpleInterpolation", + "[]) => ", + "Keyframes" + ], + "path": "packages/react/kibana_context/styled/styled_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "kibanaReact", + "id": "def-common.keyframes.$1", + "type": "CompoundType", + "tags": [], + "label": "strings", + "description": [], + "signature": [ + "TemplateStringsArray | ", + "CSSKeyframes" + ], + "path": "node_modules/@types/styled-components/ts3.7/index.d.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-common.keyframes.$2", + "type": "Array", + "tags": [], + "label": "interpolations", + "description": [], + "signature": [ + "SimpleInterpolation", + "[]" + ], + "path": "node_modules/@types/styled-components/ts3.7/index.d.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "kibanaReact", + "id": "def-common.KibanaStyledComponentsThemeProvider", + "type": "Function", + "tags": [], + "label": "KibanaStyledComponentsThemeProvider", + "description": [ + "\nA `styled-components` `ThemeProvider` that incorporates EUI dark mode." + ], "signature": [ ", \"theme\"> & { darkMode?: boolean | undefined; }) => JSX.Element" ], - "path": "src/plugins/kibana_react/common/eui_styled_components.tsx", + "path": "packages/react/kibana_context/styled/styled_provider.tsx", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "kibanaReact", - "id": "def-common.EuiThemeProvider.$1", + "id": "def-common.KibanaStyledComponentsThemeProvider.$1", "type": "CompoundType", "tags": [], "label": "{\n darkMode = false,\n ...otherProps\n}", @@ -3876,15 +7012,15 @@ "ThemeProviderProps", ", \"theme\"> & { darkMode?: boolean | undefined; }" ], - "path": "src/plugins/kibana_react/common/eui_styled_components.tsx", + "path": "packages/react/kibana_context/styled/styled_provider.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -3895,12 +7031,14 @@ }, { "parentPluginId": "kibanaReact", - "id": "def-common.EuiThemeProviderDecorator", + "id": "def-common.KibanaStyledComponentsThemeProviderDecorator", "type": "Function", - "tags": [], - "label": "EuiThemeProviderDecorator", + "tags": [ + "deprecated" + ], + "label": "KibanaStyledComponentsThemeProviderDecorator", "description": [ - "\nStorybook decorator using the EUI theme provider. Uses the value from\n`globals` provided by the Storybook theme switcher." + "\nStorybook decorator using the EUI theme provider. Uses the value from\n`globals` provided by the Storybook theme switcher.\n" ], "signature": [ "(storyFn: ", @@ -3917,13 +7055,19 @@ "Args", ">) => JSX.Element" ], - "path": "src/plugins/kibana_react/common/eui_styled_components.tsx", - "deprecated": false, + "path": "packages/react/kibana_context/styled/styled_provider.tsx", + "deprecated": true, "trackAdoption": false, + "references": [ + { + "plugin": "@kbn/react-kibana-context-styled", + "path": "packages/react/kibana_context/styled/index.ts" + } + ], "children": [ { "parentPluginId": "kibanaReact", - "id": "def-common.EuiThemeProviderDecorator.$1", + "id": "def-common.KibanaStyledComponentsThemeProviderDecorator.$1", "type": "Function", "tags": [], "label": "storyFn", @@ -3936,14 +7080,14 @@ "Args", ">" ], - "path": "src/plugins/kibana_react/common/eui_styled_components.tsx", + "path": "packages/react/kibana_context/styled/styled_provider.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true }, { "parentPluginId": "kibanaReact", - "id": "def-common.EuiThemeProviderDecorator.$2", + "id": "def-common.KibanaStyledComponentsThemeProviderDecorator.$2", "type": "CompoundType", "tags": [], "label": "{ globals }", @@ -3956,7 +7100,7 @@ "Args", ">" ], - "path": "src/plugins/kibana_react/common/eui_styled_components.tsx", + "path": "packages/react/kibana_context/styled/styled_provider.tsx", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -3965,86 +7109,35 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "kibanaReact", - "id": "def-common.keyframes", - "type": "Function", - "tags": [], - "label": "keyframes", - "description": [], - "signature": [ - "(strings: TemplateStringsArray | ", - "CSSKeyframes", - ", ...interpolations: ", - "SimpleInterpolation", - "[]) => ", - "Keyframes" - ], - "path": "src/plugins/kibana_react/common/eui_styled_components.tsx", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "kibanaReact", - "id": "def-common.keyframes.$1", - "type": "CompoundType", - "tags": [], - "label": "strings", - "description": [], - "signature": [ - "TemplateStringsArray | ", - "CSSKeyframes" - ], - "path": "node_modules/@types/styled-components/ts3.7/index.d.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "kibanaReact", - "id": "def-common.keyframes.$2", - "type": "Array", - "tags": [], - "label": "interpolations", - "description": [], - "signature": [ - "SimpleInterpolation", - "[]" - ], - "path": "node_modules/@types/styled-components/ts3.7/index.d.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "kibanaReact", "id": "def-common.withTheme", "type": "Function", "tags": [], "label": "withTheme", - "description": [], + "description": [ + "/** see https://styled-components.com/docs/api#withtheme */" + ], "signature": [ ">(component: React.ComponentProps extends { theme?: ", { - "pluginId": "kibanaReact", + "pluginId": "@kbn/react-kibana-context-styled", "scope": "common", - "docId": "kibKibanaReactPluginApi", + "docId": "kibKbnReactKibanaContextStyledPluginApi", "section": "def-common.EuiTheme", "text": "EuiTheme" }, " | undefined; } ? C : never) => React.ForwardRefExoticComponent, ", { - "pluginId": "kibanaReact", + "pluginId": "@kbn/react-kibana-context-styled", "scope": "common", - "docId": "kibKibanaReactPluginApi", + "docId": "kibKbnReactKibanaContextStyledPluginApi", "section": "def-common.EuiTheme", "text": "EuiTheme" }, ">>" ], - "path": "src/plugins/kibana_react/common/eui_styled_components.tsx", + "path": "packages/react/kibana_context/styled/styled_provider.tsx", "deprecated": false, "trackAdoption": false, "returnComment": [], @@ -4074,8 +7167,10 @@ "type": "Interface", "tags": [], "label": "EuiTheme", - "description": [], - "path": "src/plugins/kibana_react/common/eui_styled_components.tsx", + "description": [ + "\nA `deprecated` structure representing a Kibana theme containing variables from the current EUI theme." + ], + "path": "packages/react/kibana_context/styled/styled_provider.tsx", "deprecated": false, "trackAdoption": false, "children": [ @@ -4085,11 +7180,13 @@ "type": "Object", "tags": [], "label": "eui", - "description": [], + "description": [ + "EUI theme vars that automaticall adjust to light and dark mode." + ], "signature": [ "{ euiZDataGrid: number; euiZHeaderBelowDataGrid: number; euiZDataGridCellPopover: number; euiDataGridCellPaddingS: string; euiDataGridCellPaddingM: string; euiDataGridCellPaddingL: string; euiTableHoverColor: string; euiTableSelectedColor: string; euiTableHoverSelectedColor: string; euiTableActionsBorderColor: string; euiTableHoverClickableColor: string; euiTableFocusClickableColor: string; euiContrastRatioText: number; euiContrastRatioGraphic: number; euiContrastRatioDisabled: number; euiAnimSlightBounce: string; euiAnimSlightResistance: string; euiAnimSpeedExtraFast: string; euiAnimSpeedFast: string; euiAnimSpeedNormal: string; euiAnimSpeedSlow: string; euiAnimSpeedExtraSlow: string; euiBorderWidthThin: string; euiBorderWidthThick: string; euiBorderColor: string; euiBorderRadius: string; euiBorderRadiusSmall: string; euiBorderThick: string; euiBorderThin: string; euiBorderEditable: string; euiButtonHeight: string; euiButtonHeightSmall: string; euiButtonHeightXSmall: string; euiButtonColorDisabled: string; euiButtonColorDisabledText: string; euiButtonColorGhostDisabled: string; euiButtonTypes: { primary: string; accent: string; success: string; warning: string; danger: string; ghost: string; text: string; }; euiPaletteColorBlind: { euiColorVis0: { graphic: string; behindText: string; }; euiColorVis1: { graphic: string; behindText: string; }; euiColorVis2: { graphic: string; behindText: string; }; euiColorVis3: { graphic: string; behindText: string; }; euiColorVis4: { graphic: string; behindText: string; }; euiColorVis5: { graphic: string; behindText: string; }; euiColorVis6: { graphic: string; behindText: string; }; euiColorVis7: { graphic: string; behindText: string; }; euiColorVis8: { graphic: string; behindText: string; }; euiColorVis9: { graphic: string; behindText: string; }; }; euiPaletteColorBlindKeys: string; euiColorVis0: string; euiColorVis1: string; euiColorVis2: string; euiColorVis3: string; euiColorVis4: string; euiColorVis5: string; euiColorVis6: string; euiColorVis7: string; euiColorVis8: string; euiColorVis9: string; euiColorVis0_behindText: string; euiColorVis1_behindText: string; euiColorVis2_behindText: string; euiColorVis3_behindText: string; euiColorVis4_behindText: string; euiColorVis5_behindText: string; euiColorVis6_behindText: string; euiColorVis7_behindText: string; euiColorVis8_behindText: string; euiColorVis9_behindText: string; euiFontWeightLight: number; euiFontWeightRegular: number; euiFontWeightMedium: number; euiFontWeightSemiBold: number; euiFontWeightBold: number; euiCodeFontWeightRegular: number; euiCodeFontWeightBold: number; euiFormMaxWidth: string; euiFormControlHeight: string; euiFormControlCompressedHeight: string; euiFormControlPadding: string; euiFormControlCompressedPadding: string; euiFormControlBorderRadius: string; euiFormControlCompressedBorderRadius: string; euiRadioSize: string; euiCheckBoxSize: string; euiCheckboxBorderRadius: string; euiSwitchHeight: string; euiSwitchWidth: string; euiSwitchThumbSize: string; euiSwitchIconHeight: string; euiSwitchHeightCompressed: string; euiSwitchWidthCompressed: string; euiSwitchThumbSizeCompressed: string; euiSwitchHeightMini: string; euiSwitchWidthMini: string; euiSwitchThumbSizeMini: string; euiFormBackgroundColor: string; euiFormBackgroundDisabledColor: string; euiFormBackgroundReadOnlyColor: string; euiFormBorderOpaqueColor: string; euiFormBorderColor: string; euiFormBorderDisabledColor: string; euiFormCustomControlDisabledIconColor: string; euiFormCustomControlBorderColor: string; euiFormControlDisabledColor: string; euiFormControlBoxShadow: string; euiFormControlPlaceholderText: string; euiFormInputGroupLabelBackground: string; euiFormInputGroupBorder: string; euiSwitchOffColor: string; euiFormControlIconSizes: { small: string; medium: string; large: string; xLarge: string; xxLarge: string; }; euiFormControlLayoutGroupInputHeight: string; euiFormControlLayoutGroupInputCompressedHeight: string; euiFormControlLayoutGroupInputCompressedBorderRadius: string; euiHeaderBackgroundColor: string; euiHeaderDarkBackgroundColor: string; euiHeaderBorderColor: string; euiHeaderBreadcrumbColor: string; euiHeaderHeight: string; euiHeaderChildSize: string; euiHeaderHeightCompensation: string; euiPageDefaultMaxWidth: string; euiPageSidebarMinWidth: string; euiPanelPaddingModifiers: { paddingSmall: string; paddingMedium: string; paddingLarge: string; }; euiPanelBorderRadiusModifiers: { borderRadiusNone: number; borderRadiusMedium: string; }; euiPanelBackgroundColorModifiers: { transparent: string; plain: string; subdued: string; accent: string; primary: string; success: string; warning: string; danger: string; }; euiBreakpoints: { xs: number; s: string; m: string; l: string; xl: string; }; euiBreakpointKeys: string; euiShadowColor: string; euiSize: string; euiSizeXS: string; euiSizeS: string; euiSizeM: string; euiSizeL: string; euiSizeXL: string; euiSizeXXL: string; euiScrollBar: string; euiScrollBarCorner: string; euiScrollBarCornerThin: string; euiFocusRingColor: string; euiFocusRingAnimStartColor: string; euiFocusRingAnimStartSize: string; euiFocusRingAnimStartSizeLarge: string; euiFocusRingSizeLarge: string; euiFocusRingSize: string; euiFocusTransparency: number; euiFocusTransparencyPercent: string; euiFocusBackgroundColor: string; euiFontFamily: string; euiCodeFontFamily: string; euiFontFeatureSettings: string; euiTextScale: string; euiFontSize: string; euiFontSizeXS: string; euiFontSizeS: string; euiFontSizeM: string; euiFontSizeL: string; euiFontSizeXL: string; euiFontSizeXXL: string; euiLineHeight: number; euiBodyLineHeight: number; euiTitles: { xxxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xxs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; xs: { 'font-size': string; 'line-height': string; 'font-weight': number; }; s: { 'font-size': string; 'line-height': string; 'font-weight': number; }; m: { 'font-size': string; 'line-height': string; 'font-weight': number; }; l: { 'font-size': string; 'line-height': string; 'font-weight': number; }; }; euiZLevel0: number; euiZLevel1: number; euiZLevel2: number; euiZLevel3: number; euiZLevel4: number; euiZLevel5: number; euiZLevel6: number; euiZLevel7: number; euiZLevel8: number; euiZLevel9: number; euiZToastList: number; euiZModal: number; euiZMask: number; euiZNavigation: number; euiZContentMenu: number; euiZHeader: number; euiZFlyout: number; euiZMaskBelowHeader: number; euiZContent: number; euiColorGhost: string; euiColorInk: string; euiColorPrimary: string; euiColorAccent: string; euiColorSuccess: string; euiColorWarning: string; euiColorDanger: string; euiColorEmptyShade: string; euiColorLightestShade: string; euiColorLightShade: string; euiColorMediumShade: string; euiColorDarkShade: string; euiColorDarkestShade: string; euiColorFullShade: string; euiPageBackgroundColor: string; euiColorHighlight: string; euiTextColor: string; euiTitleColor: string; euiTextSubduedColor: string; euiColorDisabled: string; euiColorPrimaryText: string; euiColorSuccessText: string; euiColorAccentText: string; euiColorWarningText: string; euiColorDangerText: string; euiColorDisabledText: string; euiLinkColor: string; euiColorChartLines: string; euiColorChartBand: string; }" ], - "path": "src/plugins/kibana_react/common/eui_styled_components.tsx", + "path": "packages/react/kibana_context/styled/styled_provider.tsx", "deprecated": false, "trackAdoption": false }, @@ -4099,8 +7196,10 @@ "type": "boolean", "tags": [], "label": "darkMode", - "description": [], - "path": "src/plugins/kibana_react/common/eui_styled_components.tsx", + "description": [ + "True if the theme is in \"dark\" mode, false otherwise." + ], + "path": "packages/react/kibana_context/styled/styled_provider.tsx", "deprecated": false, "trackAdoption": false } diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 2ab108d8552066..209dbe56f6b78d 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 185 | 1 | 154 | 5 | +| 186 | 1 | 147 | 5 | ## Client diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index eecba8cff7db98..ee83e64d4d7736 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-07-28 +date: 2023-08-01 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 01e175ed431573..cf0cd7ad70baa8 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.devdocs.json b/api_docs/lens.devdocs.json index c2f213c20e5165..67bdb8986ce482 100644 --- a/api_docs/lens.devdocs.json +++ b/api_docs/lens.devdocs.json @@ -8447,7 +8447,9 @@ }, " | undefined>; ticks?: number | undefined; domain?: ", + "> | undefined>; position?: ", + "Position", + " | undefined; ticks?: number | undefined; domain?: ", { "pluginId": "@kbn/chart-expressions-common", "scope": "common", @@ -8457,9 +8459,7 @@ }, "<", "YDomainRange", - " | undefined>; position?: ", - "Position", - " | undefined; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; }>> & Partial; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; }>> & Partial | undefined>; ticks?: number | undefined; domain?: ", + "> | undefined>; position?: ", + "Position", + " | undefined; ticks?: number | undefined; domain?: ", { "pluginId": "@kbn/chart-expressions-common", "scope": "common", @@ -10514,9 +10516,7 @@ }, "<", "YDomainRange", - " | undefined>; position?: ", - "Position", - " | undefined; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; }>> | undefined; }" + " | undefined>; hide?: boolean | undefined; showOverlappingTicks?: boolean | undefined; showOverlappingLabels?: boolean | undefined; timeAxisLayerCount?: number | undefined; integersOnly?: boolean | undefined; tickFormat?: \"ignore\" | undefined; labelFormat?: \"ignore\" | undefined; showDuplicatedTicks?: boolean | undefined; }>> | undefined; }" ], "path": "x-pack/plugins/lens/public/embeddable/embeddable_component.tsx", "deprecated": false, diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 5ef5bc01edb126..9ef5b1747813be 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-07-28 +date: 2023-08-01 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 fd36556365f08a..828ca6a72bfd33 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-07-28 +date: 2023-08-01 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 6a947c27fff4f6..5678210902ee48 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-07-28 +date: 2023-08-01 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 ee88cfe36ff5f7..3f711591bcf5ce 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-07-28 +date: 2023-08-01 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 30c5fce02d391a..d509b3a91d7409 100644 --- a/api_docs/lists.devdocs.json +++ b/api_docs/lists.devdocs.json @@ -4223,7 +4223,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -5185,6 +5185,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 46d083b4d82d1b..18c92881fe3ade 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index d029cf9c5aec82..964d943388d9b3 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 43856152acb1ab..1b763644608a60 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-07-28 +date: 2023-08-01 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 8b4731bd1d0379..661d5d62bf6868 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-07-28 +date: 2023-08-01 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 2fd19cb16b5d05..e992418fd37e8b 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.devdocs.json b/api_docs/ml.devdocs.json index f3f69dffc05562..cced2333d264f3 100644 --- a/api_docs/ml.devdocs.json +++ b/api_docs/ml.devdocs.json @@ -1025,7 +1025,7 @@ "label": "ML_PAGES", "description": [], "signature": [ - "{ readonly ANOMALY_DETECTION_JOBS_MANAGE: \"jobs\"; readonly ANOMALY_EXPLORER: \"explorer\"; readonly SINGLE_METRIC_VIEWER: \"timeseriesexplorer\"; readonly DATA_FRAME_ANALYTICS_JOBS_MANAGE: \"data_frame_analytics\"; readonly DATA_FRAME_ANALYTICS_SOURCE_SELECTION: \"data_frame_analytics/source_selection\"; readonly DATA_FRAME_ANALYTICS_CREATE_JOB: \"data_frame_analytics/new_job\"; readonly TRAINED_MODELS_MANAGE: \"trained_models\"; readonly NODES: \"nodes\"; readonly MEMORY_USAGE: \"memory_usage\"; readonly DATA_FRAME_ANALYTICS_EXPLORATION: \"data_frame_analytics/exploration\"; readonly DATA_FRAME_ANALYTICS_MAP: \"data_frame_analytics/map\"; readonly DATA_VISUALIZER: \"datavisualizer\"; readonly DATA_VISUALIZER_INDEX_SELECT: \"datavisualizer_index_select\"; readonly DATA_VISUALIZER_FILE: \"filedatavisualizer\"; readonly DATA_VISUALIZER_INDEX_VIEWER: \"jobs/new_job/datavisualizer\"; readonly ANOMALY_DETECTION_CREATE_JOB: \"jobs/new_job\"; readonly ANOMALY_DETECTION_CREATE_JOB_RECOGNIZER: \"jobs/new_job/recognize\"; readonly ANOMALY_DETECTION_CREATE_JOB_SINGLE_METRIC: \"jobs/new_job/single_metric\"; readonly ANOMALY_DETECTION_CREATE_JOB_MULTI_METRIC: \"jobs/new_job/multi_metric\"; readonly ANOMALY_DETECTION_CREATE_JOB_CONVERT_TO_MULTI_METRIC: \"jobs/new_job/convert_to_multi_metric\"; readonly ANOMALY_DETECTION_CREATE_JOB_ADVANCED: \"jobs/new_job/advanced\"; readonly ANOMALY_DETECTION_CREATE_JOB_POPULATION: \"jobs/new_job/population\"; readonly ANOMALY_DETECTION_CREATE_JOB_CATEGORIZATION: \"jobs/new_job/categorization\"; readonly ANOMALY_DETECTION_CREATE_JOB_RARE: \"jobs/new_job/rare\"; readonly ANOMALY_DETECTION_CREATE_JOB_GEO: \"jobs/new_job/geo\"; readonly ANOMALY_DETECTION_CREATE_JOB_CONVERT_TO_ADVANCED: \"jobs/new_job/convert_to_advanced\"; readonly ANOMALY_DETECTION_CREATE_JOB_SELECT_TYPE: \"jobs/new_job/step/job_type\"; readonly ANOMALY_DETECTION_CREATE_JOB_SELECT_INDEX: \"jobs/new_job/step/index_or_search\"; readonly ANOMALY_DETECTION_CREATE_JOB_FROM_LENS: \"jobs/new_job/from_lens\"; readonly ANOMALY_DETECTION_CREATE_JOB_FROM_MAP: \"jobs/new_job/from_map\"; readonly ANOMALY_DETECTION_MODULES_VIEW_OR_CREATE: \"modules/check_view_or_create\"; readonly SETTINGS: \"settings\"; readonly CALENDARS_MANAGE: \"settings/calendars_list\"; readonly CALENDARS_NEW: \"settings/calendars_list/new_calendar\"; readonly CALENDARS_EDIT: \"settings/calendars_list/edit_calendar\"; readonly FILTER_LISTS_MANAGE: \"settings/filter_lists\"; readonly FILTER_LISTS_NEW: \"settings/filter_lists/new_filter_list\"; readonly FILTER_LISTS_EDIT: \"settings/filter_lists/edit_filter_list\"; readonly OVERVIEW: \"overview\"; readonly NOTIFICATIONS: \"notifications\"; readonly AIOPS: \"aiops\"; readonly AIOPS_EXPLAIN_LOG_RATE_SPIKES: \"aiops/explain_log_rate_spikes\"; readonly AIOPS_EXPLAIN_LOG_RATE_SPIKES_INDEX_SELECT: \"aiops/explain_log_rate_spikes_index_select\"; readonly AIOPS_LOG_RATE_ANALYSIS: \"aiops/log_rate_analysis\"; readonly AIOPS_LOG_RATE_ANALYSIS_INDEX_SELECT: \"aiops/log_rate_analysis_index_select\"; readonly AIOPS_LOG_CATEGORIZATION: \"aiops/log_categorization\"; readonly AIOPS_LOG_CATEGORIZATION_INDEX_SELECT: \"aiops/log_categorization_index_select\"; readonly AIOPS_CHANGE_POINT_DETECTION: \"aiops/change_point_detection\"; readonly AIOPS_CHANGE_POINT_DETECTION_INDEX_SELECT: \"aiops/change_point_detection_index_select\"; }" + "{ readonly ANOMALY_DETECTION_JOBS_MANAGE: \"jobs\"; readonly ANOMALY_EXPLORER: \"explorer\"; readonly SINGLE_METRIC_VIEWER: \"timeseriesexplorer\"; readonly DATA_FRAME_ANALYTICS_JOBS_MANAGE: \"data_frame_analytics\"; readonly DATA_FRAME_ANALYTICS_SOURCE_SELECTION: \"data_frame_analytics/source_selection\"; readonly DATA_FRAME_ANALYTICS_CREATE_JOB: \"data_frame_analytics/new_job\"; readonly TRAINED_MODELS_MANAGE: \"trained_models\"; readonly DATA_COMPARISON_INDEX_SELECT: \"data_comparison_index_select\"; readonly DATA_COMPARISON: \"data_comparison\"; readonly NODES: \"nodes\"; readonly MEMORY_USAGE: \"memory_usage\"; readonly DATA_FRAME_ANALYTICS_EXPLORATION: \"data_frame_analytics/exploration\"; readonly DATA_FRAME_ANALYTICS_MAP: \"data_frame_analytics/map\"; readonly DATA_VISUALIZER: \"datavisualizer\"; readonly DATA_VISUALIZER_INDEX_SELECT: \"datavisualizer_index_select\"; readonly DATA_VISUALIZER_FILE: \"filedatavisualizer\"; readonly DATA_VISUALIZER_INDEX_VIEWER: \"jobs/new_job/datavisualizer\"; readonly ANOMALY_DETECTION_CREATE_JOB: \"jobs/new_job\"; readonly ANOMALY_DETECTION_CREATE_JOB_RECOGNIZER: \"jobs/new_job/recognize\"; readonly ANOMALY_DETECTION_CREATE_JOB_SINGLE_METRIC: \"jobs/new_job/single_metric\"; readonly ANOMALY_DETECTION_CREATE_JOB_MULTI_METRIC: \"jobs/new_job/multi_metric\"; readonly ANOMALY_DETECTION_CREATE_JOB_CONVERT_TO_MULTI_METRIC: \"jobs/new_job/convert_to_multi_metric\"; readonly ANOMALY_DETECTION_CREATE_JOB_ADVANCED: \"jobs/new_job/advanced\"; readonly ANOMALY_DETECTION_CREATE_JOB_POPULATION: \"jobs/new_job/population\"; readonly ANOMALY_DETECTION_CREATE_JOB_CATEGORIZATION: \"jobs/new_job/categorization\"; readonly ANOMALY_DETECTION_CREATE_JOB_RARE: \"jobs/new_job/rare\"; readonly ANOMALY_DETECTION_CREATE_JOB_GEO: \"jobs/new_job/geo\"; readonly ANOMALY_DETECTION_CREATE_JOB_CONVERT_TO_ADVANCED: \"jobs/new_job/convert_to_advanced\"; readonly ANOMALY_DETECTION_CREATE_JOB_SELECT_TYPE: \"jobs/new_job/step/job_type\"; readonly ANOMALY_DETECTION_CREATE_JOB_SELECT_INDEX: \"jobs/new_job/step/index_or_search\"; readonly ANOMALY_DETECTION_CREATE_JOB_FROM_LENS: \"jobs/new_job/from_lens\"; readonly ANOMALY_DETECTION_CREATE_JOB_FROM_MAP: \"jobs/new_job/from_map\"; readonly ANOMALY_DETECTION_MODULES_VIEW_OR_CREATE: \"modules/check_view_or_create\"; readonly SETTINGS: \"settings\"; readonly CALENDARS_MANAGE: \"settings/calendars_list\"; readonly CALENDARS_NEW: \"settings/calendars_list/new_calendar\"; readonly CALENDARS_EDIT: \"settings/calendars_list/edit_calendar\"; readonly FILTER_LISTS_MANAGE: \"settings/filter_lists\"; readonly FILTER_LISTS_NEW: \"settings/filter_lists/new_filter_list\"; readonly FILTER_LISTS_EDIT: \"settings/filter_lists/edit_filter_list\"; readonly OVERVIEW: \"overview\"; readonly NOTIFICATIONS: \"notifications\"; readonly AIOPS: \"aiops\"; readonly AIOPS_EXPLAIN_LOG_RATE_SPIKES: \"aiops/explain_log_rate_spikes\"; readonly AIOPS_EXPLAIN_LOG_RATE_SPIKES_INDEX_SELECT: \"aiops/explain_log_rate_spikes_index_select\"; readonly AIOPS_LOG_RATE_ANALYSIS: \"aiops/log_rate_analysis\"; readonly AIOPS_LOG_RATE_ANALYSIS_INDEX_SELECT: \"aiops/log_rate_analysis_index_select\"; readonly AIOPS_LOG_CATEGORIZATION: \"aiops/log_categorization\"; readonly AIOPS_LOG_CATEGORIZATION_INDEX_SELECT: \"aiops/log_categorization_index_select\"; readonly AIOPS_CHANGE_POINT_DETECTION: \"aiops/change_point_detection\"; readonly AIOPS_CHANGE_POINT_DETECTION_INDEX_SELECT: \"aiops/change_point_detection_index_select\"; }" ], "path": "x-pack/plugins/ml/common/constants/locator.ts", "deprecated": false, diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 4eb15e7afd93f2..d9ca904c28a679 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-07-28 +date: 2023-08-01 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 cc4585340a2ff4..d4f2f63e355a0b 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-07-28 +date: 2023-08-01 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 2a865919213c25..ef6425dc00eb23 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-07-28 +date: 2023-08-01 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 67c595bdc77b77..d31170da5ae0f9 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-07-28 +date: 2023-08-01 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 c3b93cd151af2f..6c7518f5236044 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-07-28 +date: 2023-08-01 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 ae6144160e29b2..01255a8b1a5b0b 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-07-28 +date: 2023-08-01 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 3cdccc91c0adc8..5c1400d460fff5 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -207,92 +207,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "observability", - "id": "def-public.CoPilotContextProvider", - "type": "Function", - "tags": [], - "label": "CoPilotContextProvider", - "description": [], - "signature": [ - "React.ProviderExoticComponent>" - ], - "path": "x-pack/plugins/observability/public/context/co_pilot_context/index.tsx", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "observability", - "id": "def-public.CoPilotContextProvider.$1", - "type": "Uncategorized", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "P" - ], - "path": "node_modules/@types/react/index.d.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "observability", - "id": "def-public.CoPilotPrompt", - "type": "Function", - "tags": [], - "label": "CoPilotPrompt", - "description": [], - "signature": [ - "(props: ", - "CoPilotPromptProps", - "<", - { - "pluginId": "observability", - "scope": "common", - "docId": "kibObservabilityPluginApi", - "section": "def-common.CoPilotPromptId", - "text": "CoPilotPromptId" - }, - ">) => JSX.Element" - ], - "path": "x-pack/plugins/observability/public/components/co_pilot_prompt/index.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "observability", - "id": "def-public.CoPilotPrompt.$1", - "type": "Object", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "CoPilotPromptProps", - "<", - { - "pluginId": "observability", - "scope": "common", - "docId": "kibObservabilityPluginApi", - "section": "def-common.CoPilotPromptId", - "text": "CoPilotPromptId" - }, - ">" - ], - "path": "x-pack/plugins/observability/public/components/co_pilot_prompt/index.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "observability", "id": "def-public.createObservabilityRuleTypeRegistryMock", @@ -824,25 +738,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "observability", - "id": "def-public.useCoPilot", - "type": "Function", - "tags": [], - "label": "useCoPilot", - "description": [], - "signature": [ - "() => ", - "CoPilotService", - " | undefined" - ], - "path": "x-pack/plugins/observability/public/hooks/use_co_pilot.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "observability", "id": "def-public.useSummaryTimeRange", @@ -1389,7 +1284,7 @@ "label": "unit", "description": [], "signature": [ - "\"m\" | \"M\" | \"w\" | \"d\" | \"h\" | \"Y\"" + "\"m\" | \"M\" | \"w\" | \"d\" | \"h\"" ], "path": "x-pack/plugins/observability/public/typings/slo/index.ts", "deprecated": false, @@ -3807,7 +3702,7 @@ "label": "DurationUnit", "description": [], "signature": [ - "\"m\" | \"M\" | \"w\" | \"d\" | \"h\" | \"Y\"" + "\"m\" | \"M\" | \"w\" | \"d\" | \"h\"" ], "path": "x-pack/plugins/observability/public/typings/slo/index.ts", "deprecated": false, @@ -4349,9 +4244,7 @@ "section": "def-public.SloEditLocatorParams", "text": "SloEditLocatorParams" }, - ">; getCoPilotService: () => ", - "CoPilotService", - "; }" + ">; }" ], "path": "x-pack/plugins/observability/public/plugin.ts", "deprecated": false, @@ -4393,8 +4286,6 @@ }, ") => ", "LinkProps", - "; getCoPilotService: () => ", - "CoPilotService", "; }" ], "path": "x-pack/plugins/observability/public/plugin.ts", @@ -4740,7 +4631,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -5702,6 +5593,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", @@ -6053,7 +5946,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -7015,6 +6908,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", @@ -7722,7 +7617,7 @@ "label": "config", "description": [], "signature": [ - "{ readonly aiAssistant?: Readonly<{} & { enabled: boolean; feedback: Readonly<{ url?: string | undefined; } & { enabled: boolean; }>; provider: Readonly<{} & { openAI: Readonly<{} & { apiKey: string; model: string; }>; }> | Readonly<{} & { azureOpenAI: Readonly<{} & { apiKey: string; resourceName: string; deploymentId: string; }>; }>; }> | undefined; readonly enabled: boolean; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly thresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly compositeSlo: Readonly<{} & { enabled: boolean; }>; }" + "{ readonly enabled: boolean; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly thresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly compositeSlo: Readonly<{} & { enabled: boolean; }>; }" ], "path": "x-pack/plugins/observability/server/routes/types.ts", "deprecated": false, @@ -7799,49 +7694,25 @@ "label": "ObservabilityAPIReturnType", "description": [], "signature": [ - "{ \"POST /internal/observability/copilot/prompts/{promptId}/track\": { endpoint: \"POST /internal/observability/copilot/prompts/{promptId}/track\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ promptId: ", - "StringC", - "; }>; body: ", - "IntersectionC", - "<[", - "TypeC", - "<{ responseTime: ", - "NumberC", - "; messages: ", - "ArrayC", - "<", - "IntersectionC", - "<[", - "TypeC", - "<{ role: ", - "UnionC", - "<[", - "LiteralC", - "<\"system\">, ", - "LiteralC", - "<\"user\">, ", - "LiteralC", - "<\"assistant\">]>; content: ", - "StringC", - "; }>, ", + "{ \"GET /api/observability/composite_slos 2023-05-24\"?: ({ endpoint: \"GET /api/observability/composite_slos 2023-05-24\"; params?: ", + "PartialC", + "<{ query: ", "PartialC", "<{ name: ", "StringC", - "; }>]>>; response: ", + "; page: ", "StringC", - "; }>, ", - "PartialC", - "<{ feedbackAction: ", + "; perPage: ", + "StringC", + "; sortBy: ", + "LiteralC", + "<\"creationTime\">; sortDirection: ", "UnionC", "<[", "LiteralC", - "<\"thumbsup\">, ", + "<\"asc\">, ", "LiteralC", - "<\"thumbsdown\">]>; }>]>; }> | undefined; handler: ({}: ", + "<\"desc\">]>; }>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -7849,7 +7720,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { path: { promptId: string; }; body: { responseTime: number; messages: ({ role: \"user\" | \"system\" | \"assistant\"; content: string; } & { name?: string | undefined; })[]; response: string; } & { feedbackAction?: \"thumbsup\" | \"thumbsdown\" | undefined; }; }; }) => Promise; } & ", + " & { params?: { query?: { name?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"creationTime\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -7857,13 +7728,11 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"POST /internal/observability/copilot/prompts/profilingOptimizeFunction\": { endpoint: \"POST /internal/observability/copilot/prompts/profilingOptimizeFunction\"; params?: ", + ") | undefined; \"GET /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"GET /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", "TypeC", - "<{ body: ", + "<{ path: ", "TypeC", - "<{ library: ", - "StringC", - "; functionName: ", + "<{ id: ", "StringC", "; }>; }> | undefined; handler: ({}: ", { @@ -7873,7 +7742,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { body: { library: string; functionName: string; }; }; }) => Promise; } & ", + " & { params: { path: { id: string; }; }; }) => Promise<{ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -7881,31 +7750,13 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"POST /internal/observability/copilot/prompts/apmExplainError\": { endpoint: \"POST /internal/observability/copilot/prompts/apmExplainError\"; params?: ", + ") | undefined; \"DELETE /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"DELETE /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", "TypeC", - "<{ body: ", - "IntersectionC", - "<[", + "<{ path: ", "TypeC", - "<{ serviceName: ", - "StringC", - "; languageName: ", - "StringC", - "; runtimeName: ", - "StringC", - "; runtimeVersion: ", - "StringC", - "; transactionName: ", - "StringC", - "; logStacktrace: ", - "StringC", - "; exceptionStacktrace: ", - "StringC", - "; }>, ", - "PartialC", - "<{ spanName: ", + "<{ id: ", "StringC", - "; }>]>; }> | undefined; handler: ({}: ", + "; }>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -7913,7 +7764,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { body: { serviceName: string; languageName: string; runtimeName: string; runtimeVersion: string; transactionName: string; logStacktrace: string; exceptionStacktrace: string; } & { spanName?: string | undefined; }; }; }) => Promise; } & ", + " & { params: { path: { id: string; }; }; }) => Promise; } & ", { "pluginId": "observability", "scope": "server", @@ -7921,55 +7772,89 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"POST /internal/observability/copilot/prompts/logsExplainMessage\": { endpoint: \"POST /internal/observability/copilot/prompts/logsExplainMessage\"; params?: ", - "TypeC", - "<{ body: ", + ") | undefined; \"PUT /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"PUT /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", "TypeC", - "<{ logEntry: ", + "<{ path: ", "TypeC", - "<{ fields: ", + "<{ id: ", + "StringC", + "; }>; body: ", + "PartialC", + "<{ name: ", + "StringC", + "; compositeMethod: ", + "LiteralC", + "<\"weightedAverage\">; sources: ", "ArrayC", "<", "TypeC", - "<{ field: ", + "<{ id: ", "StringC", - "; value: ", - "ArrayC", + "; revision: ", + "NumberC", + "; weight: ", + "NumberC", + "; }>>; timeWindow: ", + "UnionC", + "<[", + "TypeC", + "<{ duration: ", + "Type", "<", - "AnyC", - ">; }>>; }>; }>; }> | undefined; handler: ({}: ", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - " & { params: { body: { logEntry: { fields: { field: string; value: any[]; }[]; }; }; }; }) => Promise; } & ", + ", string, unknown>; type: ", + "LiteralC", + "<\"rolling\">; }>, ", + "TypeC", + "<{ duration: ", + "Type", + "<", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - "; \"POST /internal/observability/copilot/prompts/logsFindSimilar\": { endpoint: \"POST /internal/observability/copilot/prompts/logsFindSimilar\"; params?: ", - "TypeC", - "<{ body: ", - "TypeC", - "<{ logEntry: ", + ", string, unknown>; type: ", + "LiteralC", + "<\"calendarAligned\">; }>]>; budgetingMethod: ", + "UnionC", + "<[", + "LiteralC", + "<\"occurrences\">, ", + "LiteralC", + "<\"timeslices\">]>; objective: ", + "IntersectionC", + "<[", "TypeC", - "<{ fields: ", - "ArrayC", + "<{ target: ", + "NumberC", + "; }>, ", + "PartialC", + "<{ timesliceTarget: ", + "NumberC", + "; timesliceWindow: ", + "Type", "<", - "TypeC", - "<{ field: ", - "StringC", - "; value: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + ", string, unknown>; }>]>; tags: ", "ArrayC", "<", - "AnyC", - ">; }>>; }>; }>; }> | undefined; handler: ({}: ", + "StringC", + ">; }>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -7977,269 +7862,31 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { body: { logEntry: { fields: { field: string; value: any[]; }[]; }; }; }; }) => Promise; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /internal/observability/copilot/prompts/infraExplainProcess\": { endpoint: \"POST /internal/observability/copilot/prompts/infraExplainProcess\"; params?: ", - "TypeC", - "<{ body: ", - "TypeC", - "<{ command: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { body: { command: string; }; }; }) => Promise; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /internal/observability/copilot/prompts/explainLogSpike\": { endpoint: \"POST /internal/observability/copilot/prompts/explainLogSpike\"; params?: ", - "TypeC", - "<{ body: ", - "TypeC", - "<{ significantFieldValues: ", - "ArrayC", - "<", - "TypeC", - "<{ field: ", - "StringC", - "; value: ", - "UnionC", - "<[", - "StringC", - ", ", - "NumberC", - "]>; docCount: ", - "NumberC", - "; pValue: ", - "UnionC", - "<[", - "NumberC", - ", ", - "NullC", - "]>; }>>; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { body: { significantFieldValues: { field: string; value: string | number; docCount: number; pValue: number | null; }[]; }; }; }) => Promise; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"GET /api/observability/composite_slos 2023-05-24\"?: ({ endpoint: \"GET /api/observability/composite_slos 2023-05-24\"; params?: ", - "PartialC", - "<{ query: ", - "PartialC", - "<{ name: ", - "StringC", - "; page: ", - "StringC", - "; perPage: ", - "StringC", - "; sortBy: ", - "LiteralC", - "<\"creationTime\">; sortDirection: ", - "UnionC", - "<[", - "LiteralC", - "<\"asc\">, ", - "LiteralC", - "<\"desc\">]>; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params?: { query?: { name?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"creationTime\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ") | undefined; \"GET /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"GET /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; }; }) => Promise<{ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ") | undefined; \"DELETE /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"DELETE /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; }; }) => Promise; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - ") | undefined; \"PUT /api/observability/composite_slos/{id} 2023-05-24\"?: ({ endpoint: \"PUT /api/observability/composite_slos/{id} 2023-05-24\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ id: ", - "StringC", - "; }>; body: ", - "PartialC", - "<{ name: ", - "StringC", - "; compositeMethod: ", - "LiteralC", - "<\"weightedAverage\">; sources: ", - "ArrayC", - "<", - "TypeC", - "<{ id: ", - "StringC", - "; revision: ", - "NumberC", - "; weight: ", - "NumberC", - "; }>>; timeWindow: ", - "UnionC", - "<[", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"rolling\">; }>, ", - "TypeC", - "<{ duration: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; type: ", - "LiteralC", - "<\"calendarAligned\">; }>]>; budgetingMethod: ", - "UnionC", - "<[", - "LiteralC", - "<\"occurrences\">, ", - "LiteralC", - "<\"timeslices\">]>; objective: ", - "IntersectionC", - "<[", - "TypeC", - "<{ target: ", - "NumberC", - "; }>, ", - "PartialC", - "<{ timesliceTarget: ", - "NumberC", - "; timesliceWindow: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>]>; tags: ", - "ArrayC", - "<", - "StringC", - ">; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { id: string; }; body: { name?: string | undefined; compositeMethod?: \"weightedAverage\" | undefined; sources?: { id: string; revision: number; weight: number; }[] | undefined; timeWindow?: { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"rolling\"; } | { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; }) | undefined; tags?: string[] | undefined; }; }; }) => Promise<{ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; }>; } & ", + " & { params: { path: { id: string; }; body: { name?: string | undefined; compositeMethod?: \"weightedAverage\" | undefined; sources?: { id: string; revision: number; weight: number; }[] | undefined; timeWindow?: { duration: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + "; type: \"rolling\"; } | { duration: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + "; type: \"calendarAligned\"; } | undefined; budgetingMethod?: \"occurrences\" | \"timeslices\" | undefined; objective?: ({ target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + " | undefined; }) | undefined; tags?: string[] | undefined; }; }; }) => Promise<{ id: string; name: string; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; compositeMethod: \"weightedAverage\"; sources: { id: string; revision: number; weight: number; }[]; tags: string[]; createdAt: string; updatedAt: string; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -8673,21 +8320,51 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { path: { id: string; }; }; }) => Promise<{ sloResources: { [x: string]: string; \".slo-observability.sli\": string; \".slo-observability.sli-mappings\": string; \".slo-observability.sli-settings\": string; } | undefined; sloSavedObject: string | ", + " & { params: { path: { id: string; }; }; }) => Promise<{ sloResources: { \".slo-observability.sli\": string; \".slo-observability.sli-mappings\": string; \".slo-observability.sli-settings\": string; \".slo-observability.sli.pipeline\": string; } | undefined; sloSummaryResources: { \".slo-observability.summary\": string; \".slo-observability.summary-mappings\": string; \".slo-observability.summary-settings\": string; } | undefined; slo: string | { id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; filter: string; good: string; total: string; timestampField: string; }; } | { type: \"sli.metric.custom\"; params: { index: string; filter: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; filter: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); }; }; timeWindow: { duration: ", { - "pluginId": "@kbn/core-saved-objects-common", + "pluginId": "@kbn/slo-schema", "scope": "common", - "docId": "kibKbnCoreSavedObjectsCommonPluginApi", - "section": "def-common.SavedObject", - "text": "SavedObject" + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + "; type: \"rolling\"; } | { duration: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + " | undefined; }; settings: { syncDelay: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - "<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; filter: string; good: string; total: string; timestampField: string; }; } | { type: \"sli.metric.custom\"; params: { index: string; filter: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; filter: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; }>; sloTransformStats: ", + "; frequency: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + "; }; revision: number; enabled: boolean; tags: string[]; createdAt: Date; updatedAt: Date; }; sloTransformStats: ", + "TransformGetTransformStatsResponse", + "; sloSummaryTransformsStats: ", "TransformGetTransformStatsResponse", - "; dataSample: string | ", - "SearchResponse", - ">; }>; } & ", + "; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -8707,7 +8384,9 @@ "PublicLicenseJSON", "; userPrivileges: ", "SecurityGetUserPrivilegesResponse", - "; sloResources: { [x: string]: string; \".slo-observability.sli\": string; \".slo-observability.sli-mappings\": string; \".slo-observability.sli-settings\": string; } | undefined; }>; } & ", + "; sloResources: { \".slo-observability.sli\": string; \".slo-observability.sli-mappings\": string; \".slo-observability.sli-settings\": string; \".slo-observability.sli.pipeline\": string; } | undefined; sloSummaryResources: { \".slo-observability.summary\": string; \".slo-observability.summary-mappings\": string; \".slo-observability.summary-settings\": string; } | undefined; sloSummaryTransformsStats: ", + "TransformGetTransformStatsResponse", + "; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -9111,11 +8790,9 @@ "PartialC", "<{ query: ", "PartialC", - "<{ name: ", + "<{ kqlQuery: ", "StringC", - "; indicatorTypes: ", - "Type", - "; page: ", + "; page: ", "StringC", "; perPage: ", "StringC", @@ -9123,9 +8800,13 @@ "UnionC", "<[", "LiteralC", - "<\"creationTime\">, ", + "<\"error_budget_consumed\">, ", "LiteralC", - "<\"indicatorType\">]>; sortDirection: ", + "<\"error_budget_remaining\">, ", + "LiteralC", + "<\"sli_value\">, ", + "LiteralC", + "<\"status\">]>; sortDirection: ", "UnionC", "<[", "LiteralC", @@ -9139,7 +8820,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params?: { query?: { name?: string | undefined; indicatorTypes?: string[] | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"creationTime\" | \"indicatorType\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; filter: string; good: string; total: string; timestampField: string; }; } | { type: \"sli.metric.custom\"; params: { index: string; filter: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; filter: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ", + " & { params?: { query?: { kqlQuery?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"status\" | \"error_budget_consumed\" | \"error_budget_remaining\" | \"sli_value\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; filter: string; good: string; total: string; timestampField: string; }; } | { type: \"sli.metric.custom\"; params: { index: string; filter: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; filter: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -9539,273 +9220,21 @@ "section": "def-common.Duration", "text": "Duration" }, - ", string, unknown>; frequency: ", - "Type", - "<", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - ", string, unknown>; }>; tags: ", - "ArrayC", - "<", - "StringC", - ">; }>]>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { body: { name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; filter: string; good: string; total: string; timestampField: string; }; } | { type: \"sli.metric.custom\"; params: { index: string; filter: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; filter: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); }; }; timeWindow: { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"rolling\"; } | { duration: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; frequency?: ", - { - "pluginId": "@kbn/slo-schema", - "scope": "common", - "docId": "kibKbnSloSchemaPluginApi", - "section": "def-common.Duration", - "text": "Duration" - }, - " | undefined; } | undefined; tags?: string[] | undefined; }; }; }) => Promise<{ id: string; }>; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\": { endpoint: \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\"; params?: ", - "TypeC", - "<{ query: ", - "TypeC", - "<{ registrationContexts: ", - "ArrayC", - "<", - "StringC", - ">; namespace: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { query: { registrationContexts: string[]; namespace: string; }; }; }) => Promise; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; }[TEndpoint] extends { endpoint: any; params?: any; handler: ({}: any) => Promise; } & ", - "ServerRouteCreateOptions", - " ? TReturnType : never" - ], - "path": "x-pack/plugins/observability/server/routes/types.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "observability", - "id": "def-server.ObservabilityConfig", - "type": "Type", - "tags": [], - "label": "ObservabilityConfig", - "description": [], - "signature": [ - "{ readonly aiAssistant?: Readonly<{} & { enabled: boolean; feedback: Readonly<{ url?: string | undefined; } & { enabled: boolean; }>; provider: Readonly<{} & { openAI: Readonly<{} & { apiKey: string; model: string; }>; }> | Readonly<{} & { azureOpenAI: Readonly<{} & { apiKey: string; resourceName: string; deploymentId: string; }>; }>; }> | undefined; readonly enabled: boolean; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly thresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly compositeSlo: Readonly<{} & { enabled: boolean; }>; }" - ], - "path": "x-pack/plugins/observability/server/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "observability", - "id": "def-server.ObservabilityServerRouteRepository", - "type": "Type", - "tags": [], - "label": "ObservabilityServerRouteRepository", - "description": [], - "signature": [ - "{ \"POST /internal/observability/copilot/prompts/{promptId}/track\": { endpoint: \"POST /internal/observability/copilot/prompts/{promptId}/track\"; params?: ", - "TypeC", - "<{ path: ", - "TypeC", - "<{ promptId: ", - "StringC", - "; }>; body: ", - "IntersectionC", - "<[", - "TypeC", - "<{ responseTime: ", - "NumberC", - "; messages: ", - "ArrayC", - "<", - "IntersectionC", - "<[", - "TypeC", - "<{ role: ", - "UnionC", - "<[", - "LiteralC", - "<\"system\">, ", - "LiteralC", - "<\"user\">, ", - "LiteralC", - "<\"assistant\">]>; content: ", - "StringC", - "; }>, ", - "PartialC", - "<{ name: ", - "StringC", - "; }>]>>; response: ", - "StringC", - "; }>, ", - "PartialC", - "<{ feedbackAction: ", - "UnionC", - "<[", - "LiteralC", - "<\"thumbsup\">, ", - "LiteralC", - "<\"thumbsdown\">]>; }>]>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { path: { promptId: string; }; body: { responseTime: number; messages: ({ role: \"user\" | \"system\" | \"assistant\"; content: string; } & { name?: string | undefined; })[]; response: string; } & { feedbackAction?: \"thumbsup\" | \"thumbsdown\" | undefined; }; }; }) => Promise; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /internal/observability/copilot/prompts/profilingOptimizeFunction\": { endpoint: \"POST /internal/observability/copilot/prompts/profilingOptimizeFunction\"; params?: ", - "TypeC", - "<{ body: ", - "TypeC", - "<{ library: ", - "StringC", - "; functionName: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { body: { library: string; functionName: string; }; }; }) => Promise; } & ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" - }, - "; \"POST /internal/observability/copilot/prompts/apmExplainError\": { endpoint: \"POST /internal/observability/copilot/prompts/apmExplainError\"; params?: ", - "TypeC", - "<{ body: ", - "IntersectionC", - "<[", - "TypeC", - "<{ serviceName: ", - "StringC", - "; languageName: ", - "StringC", - "; runtimeName: ", - "StringC", - "; runtimeVersion: ", - "StringC", - "; transactionName: ", - "StringC", - "; logStacktrace: ", - "StringC", - "; exceptionStacktrace: ", - "StringC", - "; }>, ", - "PartialC", - "<{ spanName: ", - "StringC", - "; }>]>; }> | undefined; handler: ({}: ", - { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" - }, - " & { params: { body: { serviceName: string; languageName: string; runtimeName: string; runtimeVersion: string; transactionName: string; logStacktrace: string; exceptionStacktrace: string; } & { spanName?: string | undefined; }; }; }) => Promise; } & ", + ", string, unknown>; frequency: ", + "Type", + "<", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - "; \"POST /internal/observability/copilot/prompts/logsExplainMessage\": { endpoint: \"POST /internal/observability/copilot/prompts/logsExplainMessage\"; params?: ", - "TypeC", - "<{ body: ", - "TypeC", - "<{ logEntry: ", - "TypeC", - "<{ fields: ", + ", string, unknown>; }>; tags: ", "ArrayC", "<", - "TypeC", - "<{ field: ", "StringC", - "; value: ", - "ArrayC", - "<", - "AnyC", - ">; }>>; }>; }>; }> | undefined; handler: ({}: ", + ">; }>]>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -9813,61 +9242,47 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { body: { logEntry: { fields: { field: string; value: any[]; }[]; }; }; }; }) => Promise; } & ", + " & { params: { body: { name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; filter: string; good: string; total: string; timestampField: string; }; } | { type: \"sli.metric.custom\"; params: { index: string; filter: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; filter: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); }; }; timeWindow: { duration: ", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - "; \"POST /internal/observability/copilot/prompts/logsFindSimilar\": { endpoint: \"POST /internal/observability/copilot/prompts/logsFindSimilar\"; params?: ", - "TypeC", - "<{ body: ", - "TypeC", - "<{ logEntry: ", - "TypeC", - "<{ fields: ", - "ArrayC", - "<", - "TypeC", - "<{ field: ", - "StringC", - "; value: ", - "ArrayC", - "<", - "AnyC", - ">; }>>; }>; }>; }> | undefined; handler: ({}: ", + "; type: \"rolling\"; } | { duration: ", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - " & { params: { body: { logEntry: { fields: { field: string; value: any[]; }[]; }; }; }; }) => Promise; } & ", + "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteCreateOptions", - "text": "ObservabilityRouteCreateOptions" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - "; \"POST /internal/observability/copilot/prompts/infraExplainProcess\": { endpoint: \"POST /internal/observability/copilot/prompts/infraExplainProcess\"; params?: ", - "TypeC", - "<{ body: ", - "TypeC", - "<{ command: ", - "StringC", - "; }>; }> | undefined; handler: ({}: ", + " | undefined; }; } & { id?: string | undefined; settings?: { syncDelay?: ", { - "pluginId": "observability", - "scope": "server", - "docId": "kibObservabilityPluginApi", - "section": "def-server.ObservabilityRouteHandlerResources", - "text": "ObservabilityRouteHandlerResources" + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + " | undefined; frequency?: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - " & { params: { body: { command: string; }; }; }) => Promise; } & ", + " | undefined; } | undefined; tags?: string[] | undefined; }; }; }) => Promise<{ id: string; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -9875,31 +9290,17 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"POST /internal/observability/copilot/prompts/explainLogSpike\": { endpoint: \"POST /internal/observability/copilot/prompts/explainLogSpike\"; params?: ", + "; \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\": { endpoint: \"GET /api/observability/rules/alerts/dynamic_index_pattern 2023-10-31\"; params?: ", "TypeC", - "<{ body: ", + "<{ query: ", "TypeC", - "<{ significantFieldValues: ", + "<{ registrationContexts: ", "ArrayC", "<", - "TypeC", - "<{ field: ", "StringC", - "; value: ", - "UnionC", - "<[", + ">; namespace: ", "StringC", - ", ", - "NumberC", - "]>; docCount: ", - "NumberC", - "; pValue: ", - "UnionC", - "<[", - "NumberC", - ", ", - "NullC", - "]>; }>>; }>; }> | undefined; handler: ({}: ", + "; }>; }> | undefined; handler: ({}: ", { "pluginId": "observability", "scope": "server", @@ -9907,7 +9308,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { body: { significantFieldValues: { field: string; value: string | number; docCount: number; pValue: number | null; }[]; }; }; }) => Promise; } & ", + " & { params: { query: { registrationContexts: string[]; namespace: string; }; }; }) => Promise; } & ", { "pluginId": "observability", "scope": "server", @@ -9915,7 +9316,39 @@ "section": "def-server.ObservabilityRouteCreateOptions", "text": "ObservabilityRouteCreateOptions" }, - "; \"GET /api/observability/composite_slos 2023-05-24\"?: ({ endpoint: \"GET /api/observability/composite_slos 2023-05-24\"; params?: ", + "; }[TEndpoint] extends { endpoint: any; params?: any; handler: ({}: any) => Promise; } & ", + "ServerRouteCreateOptions", + " ? TReturnType : never" + ], + "path": "x-pack/plugins/observability/server/routes/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observability", + "id": "def-server.ObservabilityConfig", + "type": "Type", + "tags": [], + "label": "ObservabilityConfig", + "description": [], + "signature": [ + "{ readonly enabled: boolean; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly thresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly compositeSlo: Readonly<{} & { enabled: boolean; }>; }" + ], + "path": "x-pack/plugins/observability/server/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observability", + "id": "def-server.ObservabilityServerRouteRepository", + "type": "Type", + "tags": [], + "label": "ObservabilityServerRouteRepository", + "description": [], + "signature": [ + "{ \"GET /api/observability/composite_slos 2023-05-24\"?: ({ endpoint: \"GET /api/observability/composite_slos 2023-05-24\"; params?: ", "PartialC", "<{ query: ", "PartialC", @@ -10541,21 +9974,51 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params: { path: { id: string; }; }; }) => Promise<{ sloResources: { [x: string]: string; \".slo-observability.sli\": string; \".slo-observability.sli-mappings\": string; \".slo-observability.sli-settings\": string; } | undefined; sloSavedObject: string | ", + " & { params: { path: { id: string; }; }; }) => Promise<{ sloResources: { \".slo-observability.sli\": string; \".slo-observability.sli-mappings\": string; \".slo-observability.sli-settings\": string; \".slo-observability.sli.pipeline\": string; } | undefined; sloSummaryResources: { \".slo-observability.summary\": string; \".slo-observability.summary-mappings\": string; \".slo-observability.summary-settings\": string; } | undefined; slo: string | { id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; filter: string; good: string; total: string; timestampField: string; }; } | { type: \"sli.metric.custom\"; params: { index: string; filter: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; filter: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); }; }; timeWindow: { duration: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + "; type: \"rolling\"; } | { duration: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + "; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + " | undefined; }; settings: { syncDelay: ", + { + "pluginId": "@kbn/slo-schema", + "scope": "common", + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" + }, + "; frequency: ", { - "pluginId": "@kbn/core-saved-objects-common", + "pluginId": "@kbn/slo-schema", "scope": "common", - "docId": "kibKbnCoreSavedObjectsCommonPluginApi", - "section": "def-common.SavedObject", - "text": "SavedObject" + "docId": "kibKbnSloSchemaPluginApi", + "section": "def-common.Duration", + "text": "Duration" }, - "<{ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; filter: string; good: string; total: string; timestampField: string; }; } | { type: \"sli.metric.custom\"; params: { index: string; filter: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; filter: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; settings: { syncDelay: string; frequency: string; }; revision: number; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; }>; sloTransformStats: ", + "; }; revision: number; enabled: boolean; tags: string[]; createdAt: Date; updatedAt: Date; }; sloTransformStats: ", + "TransformGetTransformStatsResponse", + "; sloSummaryTransformsStats: ", "TransformGetTransformStatsResponse", - "; dataSample: string | ", - "SearchResponse", - ">; }>; } & ", + "; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -10575,7 +10038,9 @@ "PublicLicenseJSON", "; userPrivileges: ", "SecurityGetUserPrivilegesResponse", - "; sloResources: { [x: string]: string; \".slo-observability.sli\": string; \".slo-observability.sli-mappings\": string; \".slo-observability.sli-settings\": string; } | undefined; }>; } & ", + "; sloResources: { \".slo-observability.sli\": string; \".slo-observability.sli-mappings\": string; \".slo-observability.sli-settings\": string; \".slo-observability.sli.pipeline\": string; } | undefined; sloSummaryResources: { \".slo-observability.summary\": string; \".slo-observability.summary-mappings\": string; \".slo-observability.summary-settings\": string; } | undefined; sloSummaryTransformsStats: ", + "TransformGetTransformStatsResponse", + "; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -10979,11 +10444,9 @@ "PartialC", "<{ query: ", "PartialC", - "<{ name: ", + "<{ kqlQuery: ", "StringC", - "; indicatorTypes: ", - "Type", - "; page: ", + "; page: ", "StringC", "; perPage: ", "StringC", @@ -10991,9 +10454,13 @@ "UnionC", "<[", "LiteralC", - "<\"creationTime\">, ", + "<\"error_budget_consumed\">, ", "LiteralC", - "<\"indicatorType\">]>; sortDirection: ", + "<\"error_budget_remaining\">, ", + "LiteralC", + "<\"sli_value\">, ", + "LiteralC", + "<\"status\">]>; sortDirection: ", "UnionC", "<[", "LiteralC", @@ -11007,7 +10474,7 @@ "section": "def-server.ObservabilityRouteHandlerResources", "text": "ObservabilityRouteHandlerResources" }, - " & { params?: { query?: { name?: string | undefined; indicatorTypes?: string[] | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"creationTime\" | \"indicatorType\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; filter: string; good: string; total: string; timestampField: string; }; } | { type: \"sli.metric.custom\"; params: { index: string; filter: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; filter: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ", + " & { params?: { query?: { kqlQuery?: string | undefined; page?: string | undefined; perPage?: string | undefined; sortBy?: \"status\" | \"error_budget_consumed\" | \"error_budget_remaining\" | \"sli_value\" | undefined; sortDirection?: \"asc\" | \"desc\" | undefined; } | undefined; } | undefined; }) => Promise<{ page: number; perPage: number; total: number; results: ({ id: string; name: string; description: string; indicator: { type: \"sli.apm.transactionDuration\"; params: { environment: string; service: string; transactionType: string; transactionName: string; threshold: number; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.apm.transactionErrorRate\"; params: { environment: string; service: string; transactionType: string; transactionName: string; index: string; } & { filter?: string | undefined; }; } | { type: \"sli.kql.custom\"; params: { index: string; filter: string; good: string; total: string; timestampField: string; }; } | { type: \"sli.metric.custom\"; params: { index: string; filter: string; good: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; total: { metrics: ({ name: string; aggregation: \"sum\"; field: string; } & { filter?: string | undefined; })[]; equation: string; }; timestampField: string; }; } | { type: \"sli.histogram.custom\"; params: { index: string; timestampField: string; filter: string; good: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); total: ({ field: string; aggregation: \"value_count\"; } & { filter?: string | undefined; }) | ({ field: string; aggregation: \"range\"; from: number; to: number; } & { filter?: string | undefined; }); }; }; timeWindow: { duration: string; type: \"rolling\"; } | { duration: string; type: \"calendarAligned\"; }; budgetingMethod: \"occurrences\" | \"timeslices\"; objective: { target: number; } & { timesliceTarget?: number | undefined; timesliceWindow?: string | undefined; }; revision: number; settings: { syncDelay: string; frequency: string; }; enabled: boolean; tags: string[]; createdAt: string; updatedAt: string; } & { summary: { status: \"HEALTHY\" | \"NO_DATA\" | \"DEGRADING\" | \"VIOLATED\"; sliValue: number; errorBudget: { initial: number; consumed: number; remaining: number; isEstimated: boolean; }; }; })[]; }>; } & ", { "pluginId": "observability", "scope": "server", @@ -13833,9 +13300,7 @@ "GetResponse", ">; delete: (deleteParams: { id: string; }) => Promise<", "WriteResponseBase", - ">; } | undefined>; getOpenAIClient(): ", - "IOpenAIClient", - " | undefined; alertsLocator: ", + ">; } | undefined>; alertsLocator: ", { "pluginId": "share", "scope": "common", @@ -14491,117 +13956,6 @@ ], "returnComment": [], "initialIsOpen": false - }, - { - "parentPluginId": "observability", - "id": "def-common.loadCoPilotPrompts", - "type": "Function", - "tags": [], - "label": "loadCoPilotPrompts", - "description": [], - "signature": [ - "() => Promise<{ profilingOptimizeFunction: { params: ", - "TypeC", - "<{ library: ", - "StringC", - "; functionName: ", - "StringC", - "; }>; messages: (params: { library: string; functionName: string; }) => ", - "ChatCompletionRequestMessage", - "[]; }; apmExplainError: { params: ", - "IntersectionC", - "<[", - "TypeC", - "<{ serviceName: ", - "StringC", - "; languageName: ", - "StringC", - "; runtimeName: ", - "StringC", - "; runtimeVersion: ", - "StringC", - "; transactionName: ", - "StringC", - "; logStacktrace: ", - "StringC", - "; exceptionStacktrace: ", - "StringC", - "; }>, ", - "PartialC", - "<{ spanName: ", - "StringC", - "; }>]>; messages: (params: { serviceName: string; languageName: string; runtimeName: string; runtimeVersion: string; transactionName: string; logStacktrace: string; exceptionStacktrace: string; } & { spanName?: string | undefined; }) => ", - "ChatCompletionRequestMessage", - "[]; }; logsExplainMessage: { params: ", - "TypeC", - "<{ logEntry: ", - "TypeC", - "<{ fields: ", - "ArrayC", - "<", - "TypeC", - "<{ field: ", - "StringC", - "; value: ", - "ArrayC", - "<", - "AnyC", - ">; }>>; }>; }>; messages: (params: { logEntry: { fields: { field: string; value: any[]; }[]; }; }) => ", - "ChatCompletionRequestMessage", - "[]; }; logsFindSimilar: { params: ", - "TypeC", - "<{ logEntry: ", - "TypeC", - "<{ fields: ", - "ArrayC", - "<", - "TypeC", - "<{ field: ", - "StringC", - "; value: ", - "ArrayC", - "<", - "AnyC", - ">; }>>; }>; }>; messages: (params: { logEntry: { fields: { field: string; value: any[]; }[]; }; }) => ", - "ChatCompletionRequestMessage", - "[]; }; infraExplainProcess: { params: ", - "TypeC", - "<{ command: ", - "StringC", - "; }>; messages: (params: { command: string; }) => ", - "ChatCompletionRequestMessage", - "[]; }; explainLogSpike: { params: ", - "TypeC", - "<{ significantFieldValues: ", - "ArrayC", - "<", - "TypeC", - "<{ field: ", - "StringC", - "; value: ", - "UnionC", - "<[", - "StringC", - ", ", - "NumberC", - "]>; docCount: ", - "NumberC", - "; pValue: ", - "UnionC", - "<[", - "NumberC", - ", ", - "NullC", - "]>; }>>; }>; messages: (params: { significantFieldValues: { field: string; value: string | number; docCount: number; pValue: number | null; }[]; }) => ", - "ChatCompletionRequestMessage", - "[]; }; }>" - ], - "path": "x-pack/plugins/observability/common/co_pilot/index.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [], - "initialIsOpen": false } ], "interfaces": [ @@ -14717,18 +14071,6 @@ } ], "enums": [ - { - "parentPluginId": "observability", - "id": "def-common.CoPilotPromptId", - "type": "Enum", - "tags": [], - "label": "CoPilotPromptId", - "description": [], - "path": "x-pack/plugins/observability/common/co_pilot/index.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "observability", "id": "def-common.ProcessorEvent", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index fc308283c618d7..858b3a78eebdd4 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-07-28 +date: 2023-08-01 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 | |-------------------|-----------|------------------------|-----------------| -| 516 | 45 | 508 | 19 | +| 509 | 45 | 502 | 16 | ## Client diff --git a/api_docs/observability_a_i_assistant.devdocs.json b/api_docs/observability_a_i_assistant.devdocs.json new file mode 100644 index 00000000000000..6a07ae0c41f055 --- /dev/null +++ b/api_docs/observability_a_i_assistant.devdocs.json @@ -0,0 +1,1087 @@ +{ + "id": "observabilityAIAssistant", + "client": { + "classes": [], + "functions": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ContextualInsight", + "type": "Function", + "tags": [], + "label": "ContextualInsight", + "description": [], + "signature": [ + "React.ForwardRefExoticComponent<{ messages: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + "[]; title: string; } & React.RefAttributes<{}>>" + ], + "path": "x-pack/plugins/observability_ai_assistant/public/index.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ContextualInsight.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ObservabilityAIAssistantProvider", + "type": "Function", + "tags": [], + "label": "ObservabilityAIAssistantProvider", + "description": [], + "signature": [ + "React.ProviderExoticComponent>" + ], + "path": "x-pack/plugins/observability_ai_assistant/public/context/observability_ai_assistant_provider.tsx", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ObservabilityAIAssistantProvider.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.useObservabilityAIAssistant", + "type": "Function", + "tags": [], + "label": "useObservabilityAIAssistant", + "description": [], + "signature": [ + "() => ", + "ObservabilityAIAssistantService" + ], + "path": "x-pack/plugins/observability_ai_assistant/public/hooks/use_observability_ai_assistant.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.Conversation", + "type": "Interface", + "tags": [], + "label": "Conversation", + "description": [], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.Conversation.timestamp", + "type": "string", + "tags": [], + "label": "'@timestamp'", + "description": [], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.Conversation.user", + "type": "Object", + "tags": [], + "label": "user", + "description": [], + "signature": [ + "{ id?: string | undefined; name: string; }" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.Conversation.conversation", + "type": "Object", + "tags": [], + "label": "conversation", + "description": [], + "signature": [ + "{ id: string; title: string; last_updated: string; }" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.Conversation.messages", + "type": "Array", + "tags": [], + "label": "messages", + "description": [], + "signature": [ + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + "[]" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.Conversation.labels", + "type": "Object", + "tags": [], + "label": "labels", + "description": [], + "signature": [ + "{ [x: string]: string; }" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.Conversation.numeric_labels", + "type": "Object", + "tags": [], + "label": "numeric_labels", + "description": [], + "signature": [ + "{ [x: string]: number; }" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.Conversation.namespace", + "type": "string", + "tags": [], + "label": "namespace", + "description": [], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.Message", + "type": "Interface", + "tags": [], + "label": "Message", + "description": [], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.Message.timestamp", + "type": "string", + "tags": [], + "label": "'@timestamp'", + "description": [], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.Message.message", + "type": "Object", + "tags": [], + "label": "message", + "description": [], + "signature": [ + "{ content?: string | undefined; name?: string | undefined; role: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.MessageRole", + "text": "MessageRole" + }, + "; function_call?: { name: string; args?: ", + { + "pluginId": "@kbn/utility-types", + "scope": "common", + "docId": "kibKbnUtilityTypesPluginApi", + "section": "def-common.Serializable", + "text": "Serializable" + }, + "; trigger: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.MessageRole", + "text": "MessageRole" + }, + ".Assistant | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.MessageRole", + "text": "MessageRole" + }, + ".User | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.MessageRole", + "text": "MessageRole" + }, + ".Elastic; } | undefined; data?: ", + { + "pluginId": "@kbn/utility-types", + "scope": "common", + "docId": "kibKbnUtilityTypesPluginApi", + "section": "def-common.Serializable", + "text": "Serializable" + }, + "; }" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.MessageRole", + "type": "Enum", + "tags": [], + "label": "MessageRole", + "description": [], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "misc": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.APIReturnType", + "type": "Type", + "tags": [], + "label": "APIReturnType", + "description": [], + "signature": [ + "{ \"GET /internal/observability_ai_assistant/connectors\": { endpoint: \"GET /internal/observability_ai_assistant/connectors\"; params?: undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + ") => Promise<", + { + "pluginId": "actions", + "scope": "server", + "docId": "kibActionsPluginApi", + "section": "def-server.FindActionResult", + "text": "FindActionResult" + }, + "[]>; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"DELETE /internal/observability_ai_assistant/conversation/{conversationId}\": { endpoint: \"DELETE /internal/observability_ai_assistant/conversation/{conversationId}\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ conversationId: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { path: { conversationId: string; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/conversation/{conversationId}\": { endpoint: \"POST /internal/observability_ai_assistant/conversation/{conversationId}\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ conversationId: ", + "StringC", + "; }>; body: ", + "TypeC", + "<{ conversation: ", + "Type", + "<", + "ConversationUpdateRequest", + ", ", + "ConversationUpdateRequest", + ", unknown>; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { path: { conversationId: string; }; body: { conversation: ", + "ConversationUpdateRequest", + "; }; }; }) => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"PUT /internal/observability_ai_assistant/conversation\": { endpoint: \"PUT /internal/observability_ai_assistant/conversation\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ conversation: ", + "Type", + "<", + "ConversationRequestBase", + ", ", + "ConversationRequestBase", + ", unknown>; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { conversation: ", + "ConversationRequestBase", + "; }; }; }) => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/conversations\": { endpoint: \"POST /internal/observability_ai_assistant/conversations\"; params?: ", + "PartialC", + "<{ body: ", + "PartialC", + "<{ query: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params?: { body?: { query?: string | undefined; } | undefined; } | undefined; }) => Promise<{ conversations: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + "[]; }>; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"GET /internal/observability_ai_assistant/conversation/{conversationId}\": { endpoint: \"GET /internal/observability_ai_assistant/conversation/{conversationId}\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ conversationId: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { path: { conversationId: string; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/chat\": { endpoint: \"POST /internal/observability_ai_assistant/chat\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ messages: ", + "ArrayC", + "<", + "Type", + "<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + ", ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + ", unknown>>; connectorId: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { messages: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + "[]; connectorId: string; }; }; }) => Promise<", + "IncomingMessage", + ">; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; }[TEndpoint] extends { endpoint: any; params?: any; handler: ({}: any) => Promise; } & ", + "ServerRouteCreateOptions", + " ? TReturnType : never" + ], + "path": "x-pack/plugins/observability_ai_assistant/public/api/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ObservabilityAIAssistantAPIClientRequestParamsOf", + "type": "Type", + "tags": [], + "label": "ObservabilityAIAssistantAPIClientRequestParamsOf", + "description": [], + "signature": [ + "{ \"GET /internal/observability_ai_assistant/connectors\": { endpoint: \"GET /internal/observability_ai_assistant/connectors\"; params?: undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + ") => Promise<", + { + "pluginId": "actions", + "scope": "server", + "docId": "kibActionsPluginApi", + "section": "def-server.FindActionResult", + "text": "FindActionResult" + }, + "[]>; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"DELETE /internal/observability_ai_assistant/conversation/{conversationId}\": { endpoint: \"DELETE /internal/observability_ai_assistant/conversation/{conversationId}\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ conversationId: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { path: { conversationId: string; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/conversation/{conversationId}\": { endpoint: \"POST /internal/observability_ai_assistant/conversation/{conversationId}\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ conversationId: ", + "StringC", + "; }>; body: ", + "TypeC", + "<{ conversation: ", + "Type", + "<", + "ConversationUpdateRequest", + ", ", + "ConversationUpdateRequest", + ", unknown>; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { path: { conversationId: string; }; body: { conversation: ", + "ConversationUpdateRequest", + "; }; }; }) => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"PUT /internal/observability_ai_assistant/conversation\": { endpoint: \"PUT /internal/observability_ai_assistant/conversation\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ conversation: ", + "Type", + "<", + "ConversationRequestBase", + ", ", + "ConversationRequestBase", + ", unknown>; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { conversation: ", + "ConversationRequestBase", + "; }; }; }) => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/conversations\": { endpoint: \"POST /internal/observability_ai_assistant/conversations\"; params?: ", + "PartialC", + "<{ body: ", + "PartialC", + "<{ query: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params?: { body?: { query?: string | undefined; } | undefined; } | undefined; }) => Promise<{ conversations: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + "[]; }>; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"GET /internal/observability_ai_assistant/conversation/{conversationId}\": { endpoint: \"GET /internal/observability_ai_assistant/conversation/{conversationId}\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ conversationId: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { path: { conversationId: string; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/chat\": { endpoint: \"POST /internal/observability_ai_assistant/chat\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ messages: ", + "ArrayC", + "<", + "Type", + "<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + ", ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + ", unknown>>; connectorId: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { messages: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + "[]; connectorId: string; }; }; }) => Promise<", + "IncomingMessage", + ">; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; }[TEndpoint] extends { endpoint: any; params?: infer TRouteParamsRT | undefined; handler: ({}: any) => Promise; } & ", + "ServerRouteCreateOptions", + " ? TRouteParamsRT extends ", + { + "pluginId": "@kbn/server-route-repository", + "scope": "common", + "docId": "kibKbnServerRouteRepositoryPluginApi", + "section": "def-common.RouteParamsRT", + "text": "RouteParamsRT" + }, + " ? ClientRequestParamsOfType : {} : never" + ], + "path": "x-pack/plugins/observability_ai_assistant/public/api/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ObservabilityAIAssistantAPIEndpoint", + "type": "Type", + "tags": [], + "label": "ObservabilityAIAssistantAPIEndpoint", + "description": [], + "signature": [ + "\"POST /internal/observability_ai_assistant/chat\" | \"GET /internal/observability_ai_assistant/conversation/{conversationId}\" | \"POST /internal/observability_ai_assistant/conversations\" | \"PUT /internal/observability_ai_assistant/conversation\" | \"POST /internal/observability_ai_assistant/conversation/{conversationId}\" | \"DELETE /internal/observability_ai_assistant/conversation/{conversationId}\" | \"GET /internal/observability_ai_assistant/connectors\"" + ], + "path": "x-pack/plugins/observability_ai_assistant/public/api/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [], + "setup": { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ObservabilityAIAssistantPluginSetup", + "type": "Interface", + "tags": [], + "label": "ObservabilityAIAssistantPluginSetup", + "description": [], + "path": "x-pack/plugins/observability_ai_assistant/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ObservabilityAIAssistantPluginStart", + "type": "Interface", + "tags": [], + "label": "ObservabilityAIAssistantPluginStart", + "description": [], + "signature": [ + { + "pluginId": "observabilityAIAssistant", + "scope": "public", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-public.ObservabilityAIAssistantPluginStart", + "text": "ObservabilityAIAssistantPluginStart" + }, + " extends ", + "ObservabilityAIAssistantService" + ], + "path": "x-pack/plugins/observability_ai_assistant/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "lifecycle": "start", + "initialIsOpen": true + } + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-server.ObservabilityAIAssistantServerRouteRepository", + "type": "Type", + "tags": [], + "label": "ObservabilityAIAssistantServerRouteRepository", + "description": [], + "signature": [ + "{ \"GET /internal/observability_ai_assistant/connectors\": { endpoint: \"GET /internal/observability_ai_assistant/connectors\"; params?: undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + ") => Promise<", + { + "pluginId": "actions", + "scope": "server", + "docId": "kibActionsPluginApi", + "section": "def-server.FindActionResult", + "text": "FindActionResult" + }, + "[]>; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"DELETE /internal/observability_ai_assistant/conversation/{conversationId}\": { endpoint: \"DELETE /internal/observability_ai_assistant/conversation/{conversationId}\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ conversationId: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { path: { conversationId: string; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/conversation/{conversationId}\": { endpoint: \"POST /internal/observability_ai_assistant/conversation/{conversationId}\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ conversationId: ", + "StringC", + "; }>; body: ", + "TypeC", + "<{ conversation: ", + "Type", + "<", + "ConversationUpdateRequest", + ", ", + "ConversationUpdateRequest", + ", unknown>; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { path: { conversationId: string; }; body: { conversation: ", + "ConversationUpdateRequest", + "; }; }; }) => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"PUT /internal/observability_ai_assistant/conversation\": { endpoint: \"PUT /internal/observability_ai_assistant/conversation\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ conversation: ", + "Type", + "<", + "ConversationRequestBase", + ", ", + "ConversationRequestBase", + ", unknown>; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { conversation: ", + "ConversationRequestBase", + "; }; }; }) => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/conversations\": { endpoint: \"POST /internal/observability_ai_assistant/conversations\"; params?: ", + "PartialC", + "<{ body: ", + "PartialC", + "<{ query: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params?: { body?: { query?: string | undefined; } | undefined; } | undefined; }) => Promise<{ conversations: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + "[]; }>; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"GET /internal/observability_ai_assistant/conversation/{conversationId}\": { endpoint: \"GET /internal/observability_ai_assistant/conversation/{conversationId}\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ conversationId: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { path: { conversationId: string; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/chat\": { endpoint: \"POST /internal/observability_ai_assistant/chat\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ messages: ", + "ArrayC", + "<", + "Type", + "<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + ", ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + ", unknown>>; connectorId: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { messages: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + "[]; connectorId: string; }; }; }) => Promise<", + "IncomingMessage", + ">; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; }" + ], + "path": "x-pack/plugins/observability_ai_assistant/server/routes/get_global_observability_ai_assistant_route_repository.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-common.Conversation", + "type": "Interface", + "tags": [], + "label": "Conversation", + "description": [], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-common.Conversation.timestamp", + "type": "string", + "tags": [], + "label": "'@timestamp'", + "description": [], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-common.Conversation.user", + "type": "Object", + "tags": [], + "label": "user", + "description": [], + "signature": [ + "{ id?: string | undefined; name: string; }" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-common.Conversation.conversation", + "type": "Object", + "tags": [], + "label": "conversation", + "description": [], + "signature": [ + "{ id: string; title: string; last_updated: string; }" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-common.Conversation.messages", + "type": "Array", + "tags": [], + "label": "messages", + "description": [], + "signature": [ + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Message", + "text": "Message" + }, + "[]" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-common.Conversation.labels", + "type": "Object", + "tags": [], + "label": "labels", + "description": [], + "signature": [ + "{ [x: string]: string; }" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-common.Conversation.numeric_labels", + "type": "Object", + "tags": [], + "label": "numeric_labels", + "description": [], + "signature": [ + "{ [x: string]: number; }" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-common.Conversation.namespace", + "type": "string", + "tags": [], + "label": "namespace", + "description": [], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-common.Message", + "type": "Interface", + "tags": [], + "label": "Message", + "description": [], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-common.Message.timestamp", + "type": "string", + "tags": [], + "label": "'@timestamp'", + "description": [], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-common.Message.message", + "type": "Object", + "tags": [], + "label": "message", + "description": [], + "signature": [ + "{ content?: string | undefined; name?: string | undefined; role: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.MessageRole", + "text": "MessageRole" + }, + "; function_call?: { name: string; args?: ", + { + "pluginId": "@kbn/utility-types", + "scope": "common", + "docId": "kibKbnUtilityTypesPluginApi", + "section": "def-common.Serializable", + "text": "Serializable" + }, + "; trigger: ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.MessageRole", + "text": "MessageRole" + }, + ".Assistant | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.MessageRole", + "text": "MessageRole" + }, + ".User | ", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.MessageRole", + "text": "MessageRole" + }, + ".Elastic; } | undefined; data?: ", + { + "pluginId": "@kbn/utility-types", + "scope": "common", + "docId": "kibKbnUtilityTypesPluginApi", + "section": "def-common.Serializable", + "text": "Serializable" + }, + "; }" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-common.MessageRole", + "type": "Enum", + "tags": [], + "label": "MessageRole", + "description": [], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx new file mode 100644 index 00000000000000..2c01c0beadc885 --- /dev/null +++ b/api_docs/observability_a_i_assistant.mdx @@ -0,0 +1,58 @@ +--- +#### +#### This 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: kibObservabilityAIAssistantPluginApi +slug: /kibana-dev-docs/api/observabilityAIAssistant +title: "observabilityAIAssistant" +image: https://source.unsplash.com/400x175/?github +description: API docs for the observabilityAIAssistant plugin +date: 2023-08-01 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] +--- +import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; + + + +Contact [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 35 | 0 | 33 | 5 | + +## Client + +### Setup + + +### Start + + +### Functions + + +### Interfaces + + +### Enums + + +### Consts, variables and types + + +## Server + +### Consts, variables and types + + +## Common + +### Interfaces + + +### Enums + + diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 944122f941feb6..7fc6656480096e 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.devdocs.json b/api_docs/observability_shared.devdocs.json index 0ac067f093627b..3e93ed26a1aed8 100644 --- a/api_docs/observability_shared.devdocs.json +++ b/api_docs/observability_shared.devdocs.json @@ -1429,9 +1429,9 @@ "signature": [ "() => ", { - "pluginId": "kibanaReact", + "pluginId": "@kbn/react-kibana-context-styled", "scope": "common", - "docId": "kibKibanaReactPluginApi", + "docId": "kibKbnReactKibanaContextStyledPluginApi", "section": "def-common.EuiTheme", "text": "EuiTheme" } diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index f493379a741cc8..532ffcb228a8ef 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 8958c15cab79c7..68213d49090c35 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-07-28 +date: 2023-08-01 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 ff0f40ae58d6a6..9e9b863af75b83 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-07-28 +date: 2023-08-01 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 | |--------------|----------|------------------------| -| 652 | 542 | 38 | +| 660 | 550 | 38 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 71635 | 555 | 61344 | 1467 | +| 71794 | 555 | 61386 | 1472 | ## Plugin Directory @@ -61,13 +61,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@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. | 1012 | 0 | 243 | 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/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | The Data Visualizer tools help you understand your data, by analyzing the metrics and fields in a log file or an existing Elasticsearch index. | 31 | 3 | 25 | 1 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 12 | 0 | 10 | 3 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 86 | 0 | 60 | 15 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 37 | 0 | 35 | 2 | | discoverLogExplorer | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | This plugin exposes and registers Logs+ features. | 0 | 0 | 0 | 0 | | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | APIs used to assess the quality of data in Elasticsearch indexes | 2 | 0 | 0 | 0 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 532 | 11 | 434 | 7 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 535 | 11 | 437 | 7 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Extends embeddable plugin with more functionality | 14 | 0 | 14 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides encryption and decryption utilities for saved objects containing sensitive information. | 51 | 0 | 44 | 0 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Adds dashboards for discovering and managing Enterprise Search products. | 10 | 0 | 10 | 0 | @@ -112,7 +112,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 123 | 2 | 96 | 4 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides UI and APIs for the interactive setup mode. | 28 | 0 | 18 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 6 | 0 | 6 | 0 | -| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 185 | 1 | 154 | 5 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 186 | 1 | 147 | 5 | | kibanaUsageCollection | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | | | [@elastic/kibana-app-services](https://github.com/orgs/elastic/teams/kibana-app-services) | - | 609 | 3 | 416 | 9 | | | [@elastic/sec-cloudnative-integrations](https://github.com/orgs/elastic/teams/sec-cloudnative-integrations) | - | 5 | 0 | 5 | 1 | @@ -132,7 +132,8 @@ 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) | - | 516 | 45 | 508 | 19 | +| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 509 | 45 | 502 | 16 | +| | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 35 | 0 | 33 | 5 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 14 | 0 | 14 | 0 | | | [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observability-ui) | - | 277 | 1 | 276 | 11 | | | [@elastic/security-defend-workflows](https://github.com/orgs/elastic/teams/security-defend-workflows) | - | 24 | 0 | 24 | 7 | @@ -184,7 +185,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@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. | 53 | 0 | 23 | 2 | | | [@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. | 142 | 2 | 104 | 22 | | upgradeAssistant | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 0 | 0 | 0 | 0 | -| uptime | [@elastic/uptime](https://github.com/orgs/elastic/teams/uptime) | This plugin visualizes data from Heartbeat, and integrates with other Observability solutions. | 0 | 0 | 0 | 0 | +| | [@elastic/uptime](https://github.com/orgs/elastic/teams/uptime) | This plugin visualizes data from Heartbeat, and integrates with other Observability solutions. | 1 | 0 | 1 | 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 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 55 | 0 | 16 | 2 | @@ -210,7 +211,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Package name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | |--------------|----------------|-----------|--------------|----------|---------------|--------| | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 11 | 5 | 11 | 0 | -| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 6 | 0 | 6 | 0 | +| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 30 | 0 | 6 | 1 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 12 | 0 | 0 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 16 | 0 | 15 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 24 | 0 | 24 | 0 | @@ -236,7 +237,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 62 | 0 | 17 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 2 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 1 | -| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 37 | 0 | 36 | 0 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 33 | 0 | 32 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 116 | 0 | 90 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 75 | 0 | 46 | 10 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 24 | 0 | 24 | 0 | @@ -388,7 +389,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 15 | 0 | 14 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 9 | 0 | 9 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 6 | 0 | 4 | 0 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 2 | 0 | 1 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 6 | 0 | 6 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 30 | 1 | 18 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 11 | 1 | 11 | 3 | @@ -472,20 +472,21 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 2 | 0 | 2 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 96 | 2 | 61 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 206 | 3 | 1 | 0 | -| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 32 | 0 | 0 | 0 | +| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 37 | 0 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 152 | 1 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 141 | 0 | 5 | 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) | - | 11 | 0 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 36 | 4 | 8 | 0 | +| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 11 | 0 | 0 | 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 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 5 | 0 | 3 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 8 | 2 | 8 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 3 | 0 | 0 | 0 | -| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 11 | 0 | 0 | 0 | -| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 5 | 0 | 0 | 0 | +| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 14 | 0 | 0 | 0 | +| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 30 | 0 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 5 | 0 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 8 | 0 | 0 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 2 | 0 | 1 | 0 | @@ -502,6 +503,12 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 1 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 13 | 0 | 7 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 22 | 0 | 9 | 0 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 8 | 0 | 2 | 0 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 4 | 0 | 1 | 0 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 4 | 0 | 1 | 1 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 18 | 0 | 3 | 0 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 11 | 0 | 2 | 0 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 10 | 0 | 7 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 18 | 0 | 18 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 40 | 0 | 38 | 5 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 13 | 0 | 9 | 0 | @@ -533,7 +540,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 120 | 0 | 116 | 0 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 31 | 2 | 29 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 54 | 0 | 51 | 1 | -| | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 25 | 0 | 24 | 1 | +| | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 31 | 0 | 30 | 1 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 10 | 0 | 7 | 1 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 0 | 0 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 2 | 0 | 2 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index f607f29d107089..958ddd374cbc3c 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-07-28 +date: 2023-08-01 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 ffefd93be9c39d..54047f29deff3b 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-07-28 +date: 2023-08-01 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 d1efd1694334df..8aba5ac09ddfac 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-07-28 +date: 2023-08-01 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 e31178ee99299d..35cc60d55e94a5 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/reporting_export_types.mdx b/api_docs/reporting_export_types.mdx index a8c9644436b1ca..5f44ca3b00fc42 100644 --- a/api_docs/reporting_export_types.mdx +++ b/api_docs/reporting_export_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reportingExportTypes title: "reportingExportTypes" image: https://source.unsplash.com/400x175/?github description: API docs for the reportingExportTypes plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reportingExportTypes'] --- import reportingExportTypesObj from './reporting_export_types.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index 3ed1c892be973b..b916c52446e892 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-07-28 +date: 2023-08-01 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 999225d9401666..0491770a6fb449 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-07-28 +date: 2023-08-01 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 fa72f497ef8a83..c3e780d33feb40 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-07-28 +date: 2023-08-01 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 b4a7ddecac91a4..a8fca47df77143 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-07-28 +date: 2023-08-01 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 9fa2eb0fd7ab64..61c417a295bd91 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-07-28 +date: 2023-08-01 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 bfb6a2a3f03bab..f29a9722944360 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-07-28 +date: 2023-08-01 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 3dbf5ca1313ac2..3f12291e89c7f9 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-07-28 +date: 2023-08-01 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 5e0b2c3e02bc2e..690190fb0b4461 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-07-28 +date: 2023-08-01 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 b6c9e11b2d3fed..c03063af1509bb 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-07-28 +date: 2023-08-01 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 04a71a63ace7e0..c97b63cf986f98 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-07-28 +date: 2023-08-01 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 d6d47312b579ef..87eadd92f2a84d 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-07-28 +date: 2023-08-01 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 d178ef5d622c3e..4dfac43f252262 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-07-28 +date: 2023-08-01 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 4868d768401fa1..90cb75c35a0cb1 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 5b26d71a69aee2..8975fbcd1cb5a9 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index 3180e49d901379..3ce884f0495d21 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index dfb2ff400a89e0..e71d4d42e33c62 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless'] --- import serverlessObj from './serverless.devdocs.json'; diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx index caf9655958a21e..051fc19ebd0459 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability'] --- import serverlessObservabilityObj from './serverless_observability.devdocs.json'; diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx index 8fe12f467c3c93..42455c2d7a968c 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 28b44be583f3f9..dc0fde36a0d3b3 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-07-28 +date: 2023-08-01 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 729c7496d3f4f0..c3e07de3c9f33a 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-07-28 +date: 2023-08-01 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 e5c8a0c93912ab..e1b83e2e559344 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-07-28 +date: 2023-08-01 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 a74b50ddb2fe86..a326428860216b 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-07-28 +date: 2023-08-01 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 8c11b8e5980796..8a39b2fba283cd 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-07-28 +date: 2023-08-01 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 07525ec4e5ffe6..6bf7d29cf68db4 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-07-28 +date: 2023-08-01 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 2de2b7df5cff7c..b79ad9e504f00e 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-07-28 +date: 2023-08-01 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 b4485da8e8ebe1..57baf114a5e013 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.devdocs.json b/api_docs/telemetry_collection_manager.devdocs.json index 67ed3b0e5e1955..1f2f28671fd4ce 100644 --- a/api_docs/telemetry_collection_manager.devdocs.json +++ b/api_docs/telemetry_collection_manager.devdocs.json @@ -214,7 +214,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -1176,6 +1176,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index 274c830cbe30f2..01c7925efc5d72 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-07-28 +date: 2023-08-01 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 50307aaddd7b65..353ab18ff14e5f 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-07-28 +date: 2023-08-01 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 af2aa41eaa814c..9fcdedc3064ad8 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx index 74f77a18ce16c5..133eb45b561bb1 100644 --- a/api_docs/text_based_languages.mdx +++ b/api_docs/text_based_languages.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages title: "textBasedLanguages" image: https://source.unsplash.com/400x175/?github description: API docs for the textBasedLanguages plugin -date: 2023-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages'] --- import textBasedLanguagesObj from './text_based_languages.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 34e4c5385a18df..703b8d801f5445 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-07-28 +date: 2023-08-01 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 4b7e27180605a0..4e74f1296d3878 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-07-28 +date: 2023-08-01 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 c44696e99f890a..2b108949c9fc9b 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-07-28 +date: 2023-08-01 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 50f107a95f8100..7bded109be3245 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-07-28 +date: 2023-08-01 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 f5e00f327e9ab4..5ee893435928dd 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-07-28 +date: 2023-08-01 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 7f8cb3daeaedb9..b8d6c0b9737f8b 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index bb64923d02d33f..c2a4ca898dce46 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index a1a231fbe5b198..d0caea36616788 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index 32e4c2b9402eac..7304e9edb866cc 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.devdocs.json b/api_docs/uptime.devdocs.json new file mode 100644 index 00000000000000..96ba9d53919c02 --- /dev/null +++ b/api_docs/uptime.devdocs.json @@ -0,0 +1,43 @@ +{ + "id": "uptime", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "uptime", + "id": "def-common.UPTIME_RULE_TYPES", + "type": "Array", + "tags": [], + "label": "UPTIME_RULE_TYPES", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/uptime/common/constants/uptime_alerts.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx new file mode 100644 index 00000000000000..4e74653f369503 --- /dev/null +++ b/api_docs/uptime.mdx @@ -0,0 +1,30 @@ +--- +#### +#### This 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: kibUptimePluginApi +slug: /kibana-dev-docs/api/uptime +title: "uptime" +image: https://source.unsplash.com/400x175/?github +description: API docs for the uptime plugin +date: 2023-08-01 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] +--- +import uptimeObj from './uptime.devdocs.json'; + +This plugin visualizes data from Heartbeat, and integrates with other Observability solutions. + +Contact [@elastic/uptime](https://github.com/orgs/elastic/teams/uptime) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 1 | 0 | 1 | 0 | + +## Common + +### Consts, variables and types + + diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 9feef3a59780d5..9cc7b970d64f8b 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.devdocs.json b/api_docs/usage_collection.devdocs.json index dfc86b1d1b8f14..d3e9b42e131408 100644 --- a/api_docs/usage_collection.devdocs.json +++ b/api_docs/usage_collection.devdocs.json @@ -483,7 +483,7 @@ "SearchResponse", ">; }; helpers: ", "default", - "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", + "; name: string | symbol; [kAsyncSearch]: symbol | null; [kAutoscaling]: symbol | null; [kCat]: symbol | null; [kCcr]: symbol | null; [kCluster]: symbol | null; [kDanglingIndices]: symbol | null; [kEnrich]: symbol | null; [kEql]: symbol | null; [kFeatures]: symbol | null; [kFleet]: symbol | null; [kGraph]: symbol | null; [kIlm]: symbol | null; [kIndices]: symbol | null; [kIngest]: symbol | null; [kLicense]: symbol | null; [kLogstash]: symbol | null; [kMigration]: symbol | null; [kMl]: symbol | null; [kMonitoring]: symbol | null; [kNodes]: symbol | null; [kRollup]: symbol | null; [kSearchApplication]: symbol | null; [kSearchableSnapshots]: symbol | null; [kSecurity]: symbol | null; [kShutdown]: symbol | null; [kSlm]: symbol | null; [kSnapshot]: symbol | null; [kSql]: symbol | null; [kSsl]: symbol | null; [kSynonyms]: symbol | null; [kTasks]: symbol | null; [kTextStructure]: symbol | null; [kTransform]: symbol | null; [kWatcher]: symbol | null; [kXpack]: symbol | null; transport: ", "default", "; child: (opts: ", "ClientOptions", @@ -1445,6 +1445,8 @@ "default", "; ssl: ", "default", + "; synonyms: ", + "default", "; tasks: ", "default", "; termsEnum: { (this: That, params: ", diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 02d0c96b688219..c3b6bed548a6a6 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-07-28 +date: 2023-08-01 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 bdc3842af192f2..ab1033578ad615 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-07-28 +date: 2023-08-01 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 3dbc91f196841a..1fa463294619ef 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-07-28 +date: 2023-08-01 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 69616aa2a187db..6a6076f457b752 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-07-28 +date: 2023-08-01 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 b035de52d65a21..1c412ecad671c7 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-07-28 +date: 2023-08-01 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 534a80cc9c4937..9ae2ac7a8752de 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-07-28 +date: 2023-08-01 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 6e4c192d542237..11ed7055e68835 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-07-28 +date: 2023-08-01 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 7a1ca596d745c4..72504cf5ba6c4c 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-07-28 +date: 2023-08-01 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 094c3301bf5fff..5741952e1e6512 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-07-28 +date: 2023-08-01 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 ef08fc04688b61..8100d5cc713764 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-07-28 +date: 2023-08-01 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 555d77f4f839d0..d6a1daa604bf68 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-07-28 +date: 2023-08-01 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 36d127c13797d6..d7245533218011 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-07-28 +date: 2023-08-01 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 f0fa04a2bd5b3f..8247d887a4b8f2 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-07-28 +date: 2023-08-01 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; diff --git a/config/serverless.es.yml b/config/serverless.es.yml index 5433ce9be76768..5d971c9d2d03ae 100644 --- a/config/serverless.es.yml +++ b/config/serverless.es.yml @@ -26,3 +26,6 @@ telemetry.labels.serverless: search # Alerts config xpack.actions.enabledActionTypes: ['.email', '.index', '.slack', '.jira', '.webhook', '.teams'] + +# Fleet specific configuration +xpack.fleet.internal.capabilities: ['serverless_search'] diff --git a/config/serverless.oblt.yml b/config/serverless.oblt.yml index ea9f0100a0b69e..1fc14186373a2e 100644 --- a/config/serverless.oblt.yml +++ b/config/serverless.oblt.yml @@ -24,6 +24,9 @@ xpack.fleet.agentIdVerificationEnabled: false ## APM Serverless Onboarding flow xpack.apm.serverlessOnboarding: true +# Fleet specific configuration +xpack.fleet.internal.capabilities: ['apm', 'uptime', 'observability'] + ## Required for force installation of APM Package xpack.fleet.packages: - name: apm diff --git a/config/serverless.security.yml b/config/serverless.security.yml index ede91b167dd054..c9df8e9731d556 100644 --- a/config/serverless.security.yml +++ b/config/serverless.security.yml @@ -23,7 +23,9 @@ xpack.serverless.plugin.developer.projectSwitcher.currentType: 'security' # Specify in telemetry the project type telemetry.labels.serverless: security +# Fleet specific configuration +xpack.fleet.internal.capabilities: ['security'] + # Serverless security specific options xpack.securitySolution.enableExperimental: - - discoverInTimeline - + - discoverInTimeline diff --git a/config/serverless.yml b/config/serverless.yml index e9d223313aa910..4342054500a675 100644 --- a/config/serverless.yml +++ b/config/serverless.yml @@ -1,6 +1,5 @@ interactiveSetup.enabled: false newsfeed.enabled: false -xpack.security.showNavLinks: false xpack.serverless.plugin.enabled: true # Fleet settings xpack.fleet.internal.fleetServerStandalone: true @@ -42,7 +41,6 @@ management.deeplinks.navLinkStatus: visible # Other disabled plugins #xpack.canvas.enabled: false #only disabable in dev-mode -xpack.reporting.enabled: false xpack.cloud_integrations.data_migration.enabled: false data.search.sessions.enabled: false advanced_settings.enabled: false diff --git a/docs/apm/api.asciidoc b/docs/apm/api.asciidoc index fb672b2884af20..9058b29f0cb8a1 100644 --- a/docs/apm/api.asciidoc +++ b/docs/apm/api.asciidoc @@ -11,6 +11,7 @@ Some APM app features are provided via a REST API: * <> * <> * <> +* <> * <> [float] @@ -715,6 +716,219 @@ curl -X DELETE "http://localhost:5601/api/apm/sourcemaps/apm:foo-1.0.0-644fd5a9" ******************************************************* //// +[role="xpack"] +[[android-sourcemap-api]] +=== Android source map API + +IMPORTANT: This endpoint is only compatible with the +{apm-guide-ref}/index.html[APM integration for Elastic Agent]. + +An Android source map (generated using Android's https://developer.android.com/build/shrink-code[R8 tool]) +allows obfuscated app stacktraces to be mapped back to original source code -- +allowing you to maintain the size and security of minimized code, without losing the ability to debug your application. + +For best results, uploading source maps should become a part of your deployment procedure, +and not something you only do when you see unhelpful errors. +That’s because uploading source maps after errors happen won’t make old errors magically readable -- +errors must occur again for source mapping to occur. + +The following APIs are available: + +* <> +* <> +* <> + +[float] +[[use-android-sourcemap-api]] +==== How to use APM APIs + +.Expand for required headers, privileges, and usage details +[%collapsible%closed] +====== +include::api.asciidoc[tag=using-the-APIs] +====== + +//// +******************************************************* +//// + +[[android-sourcemap-post]] +==== Create or update an Android source map + +Create or update an Android source map for a specific app and version. + +[[android-sourcemap-post-privs]] +===== Privileges + +The user accessing this endpoint requires `All` Kibana privileges for the {beat_kib_app} feature. +For more information, see <>. + +[[android-sourcemap-post-req]] +===== Request + +`POST /api/apm/androidmaps` + +[role="child_attributes"] +[[android-sourcemap-post-req-body]] +===== Request body + +`service_name`:: +(required, string) The name of the Android app that the map should apply to. + +`service_version`:: +(required, string) The version of the Android app that the map should apply to. + +`map_file`:: +(required, string or file upload) The R8-generated map. + +[[android-sourcemap-post-example]] +===== Examples + +The following example uploads a source map for a app named `foo` and a service version of `1.0.0`: + +[source,curl] +-------------------------------------------------- +curl -X POST "http://localhost:5601/api/apm/androidmaps" \ +-H 'Content-Type: multipart/form-data' \ +-H 'kbn-xsrf: true' \ +-H 'Authorization: ApiKey ${YOUR_API_KEY}' \ +-F 'service_name="foo"' \ +-F 'service_version="1.0.0"' \ +-F 'map_file=@"/Path/to/the/file/mapping.txt"' +-------------------------------------------------- + +[[android-sourcemap-post-body]] +===== Response body + +[source,js] +-------------------------------------------------- +{ + "type": "sourcemap", + "identifier": "foo-1.0.0-android", + "relative_url": "/api/fleet/artifacts/foo-1.0.0-android/644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456", + "body": "eJyFkL1OwzAUhd/Fc+MbYMuCEBIbHRjKgBgc96R16tiWr1OQqr47NwqJxEK3q/PzWccXxchnZ7E1A1SjuhjVZtF2yOxiEPlO17oWox3D3uPFeSRTjmJQARfCPeiAgGx8NTKsYdAc1T3rwaSJGcds8Sp3c1HnhfywUZ3QhMTFFGepZxqMC9oex3CS9tpk1XyozgOlmoVKuJX1DqEQZ0su7PGtLU+V/3JPKc3cL7TJ2FNDRPov4bFta3MDM4f7W69lpJjLO9qdK8bzVPhcJz3HUCQ4LbO/p5hCSC4cZPByrp/wFqOklbpefwAhzpqI", + "created": "2021-07-09T20:47:44.812Z", + "id": "apm:foo-1.0.0-android-644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456", + "compressionAlgorithm": "zlib", + "decodedSha256": "644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456", + "decodedSize": 441, + "encodedSha256": "024c72749c3e3dd411b103f7040ae62633558608f480bce4b108cf5b2275bd24", + "encodedSize": 237, + "encryptionAlgorithm": "none", + "packageName": "apm" +} +-------------------------------------------------- + +//// +******************************************************* +//// + +[[android-sourcemap-get]] +==== Get source maps + +Returns an array of Fleet artifacts, including source map uploads. + +[[android-sourcemap-get-privs]] +===== Privileges + +The user accessing this endpoint requires `Read` or `All` Kibana privileges for the {beat_kib_app} feature. +For more information, see <>. + +[[android-sourcemap-get-req]] +===== Request + +`GET /api/apm/sourcemaps` + +[[android-sourcemap-get-example]] +===== Example + +The following example requests all uploaded source maps: + +[source,curl] +-------------------------------------------------- +curl -X GET "http://localhost:5601/api/apm/sourcemaps" \ +-H 'Content-Type: application/json' \ +-H 'kbn-xsrf: true' \ +-H 'Authorization: ApiKey ${YOUR_API_KEY}' +-------------------------------------------------- + +[[android-sourcemap-get-body]] +===== Response body + +[source,js] +-------------------------------------------------- +{ + "artifacts": [ + { + "type": "sourcemap", + "identifier": "foo-1.0.0-android", + "relative_url": "/api/fleet/artifacts/foo-1.0.0-android/644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456", + "body": { + "serviceName": "foo", + "serviceVersion": "1.0.0", + "bundleFilepath": "android", + "sourceMap": "# compiler: R8\n# compiler_version: 3.2.47\n# min_api: 26\n..." + }, + "created": "2021-07-09T20:47:44.812Z", + "id": "apm:foo-1.0.0-android-644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456", + "compressionAlgorithm": "zlib", + "decodedSha256": "644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456", + "decodedSize": 441, + "encodedSha256": "024c72749c3e3dd411b103f7040ae62633558608f480bce4b108cf5b2275bd24", + "encodedSize": 237, + "encryptionAlgorithm": "none", + "packageName": "apm" + } + ] +} +-------------------------------------------------- + +//// +******************************************************* +//// + +[[android-sourcemap-delete]] +==== Delete source map + +Delete a previously uploaded source map. + +[[android-sourcemap-delete-privs]] +===== Privileges + +The user accessing this endpoint requires `All` Kibana privileges for the {beat_kib_app} feature. +For more information, see <>. + +[[android-sourcemap-delete-req]] +===== Request + +`DELETE /api/apm/sourcemaps/:id` + +[[android-sourcemap-delete-example]] +===== Example + +The following example deletes a source map with an id of `apm:foo-1.0.0-android-644fd5a9`: + +[source,curl] +-------------------------------------------------- +curl -X DELETE "http://localhost:5601/api/apm/sourcemaps/apm:foo-1.0.0-android-644fd5a9" \ +-H 'Content-Type: application/json' \ +-H 'kbn-xsrf: true' \ +-H 'Authorization: ApiKey ${YOUR_API_KEY}' +-------------------------------------------------- + +[[android-sourcemap-delete-body]] +===== Response body + +[source,js] +-------------------------------------------------- +{} +-------------------------------------------------- + +//// +******************************************************* +******************************************************* +//// + [role="xpack"] [[agent-key-api]] === APM agent Key API diff --git a/docs/settings/security-settings.asciidoc b/docs/settings/security-settings.asciidoc index 98d7b13a1122bd..06c8835d25c3cd 100644 --- a/docs/settings/security-settings.asciidoc +++ b/docs/settings/security-settings.asciidoc @@ -210,7 +210,7 @@ Sets the interval at which {kib} tries to remove expired and invalid sessions fr + TIP: Use a string of `[ms\|s\|m\|h\|d\|w\|M\|Y]` (e.g. '20m', '24h', '7d', '1w'). -xpack.security.session.сoncurrentSessions.maxSessions:: +xpack.security.session.concurrentSessions.maxSessions {ess-icon}:: Set the maximum number of sessions each user is allowed to have active at any given time. By default, no limit is applied. If set, the value of this option should be an integer between `1` and `1000`. diff --git a/fleet_packages.json b/fleet_packages.json index c94a6aecf1b410..13d38fcc5e6b84 100644 --- a/fleet_packages.json +++ b/fleet_packages.json @@ -30,7 +30,7 @@ }, { "name": "elastic_agent", - "version": "1.9.0" + "version": "1.9.1" }, { "name": "endpoint", diff --git a/package.json b/package.json index d9506aac45273e..eb2183e23ff84f 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "@elastic/apm-rum-react": "^1.4.3", "@elastic/charts": "59.1.0", "@elastic/datemath": "5.0.3", - "@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@8.8.0-canary.2", + "@elastic/elasticsearch": "npm:@elastic/elasticsearch@8.9.0", "@elastic/ems-client": "8.4.0", "@elastic/eui": "85.0.1", "@elastic/filesaver": "1.1.2", @@ -508,6 +508,7 @@ "@kbn/ml-date-picker": "link:x-pack/packages/ml/date_picker", "@kbn/ml-date-utils": "link:x-pack/packages/ml/date_utils", "@kbn/ml-error-utils": "link:x-pack/packages/ml/error_utils", + "@kbn/ml-in-memory-table": "link:x-pack/packages/ml/in_memory_table", "@kbn/ml-is-defined": "link:x-pack/packages/ml/is_defined", "@kbn/ml-is-populated-object": "link:x-pack/packages/ml/is_populated_object", "@kbn/ml-kibana-theme": "link:x-pack/packages/ml/kibana_theme", @@ -1352,7 +1353,7 @@ "@types/styled-components": "^5.1.0", "@types/supertest": "^2.0.5", "@types/tapable": "^1.0.6", - "@types/tar": "^6.1.3", + "@types/tar": "^6.1.5", "@types/tempy": "^0.2.0", "@types/testing-library__jest-dom": "^5.14.7", "@types/tinycolor2": "^1.4.1", @@ -1428,7 +1429,7 @@ "eslint-plugin-cypress": "^2.13.2", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-import": "^2.24.2", - "eslint-plugin-jest": "^24.5.0", + "eslint-plugin-jest": "^27.2.3", "eslint-plugin-jsx-a11y": "^6.4.1", "eslint-plugin-mocha": "^10.0.5", "eslint-plugin-no-unsanitized": "^3.1.5", diff --git a/packages/core/chrome/core-chrome-browser-internal/src/ui/project/header.tsx b/packages/core/chrome/core-chrome-browser-internal/src/ui/project/header.tsx index 65000740327ee5..45061e193de38c 100644 --- a/packages/core/chrome/core-chrome-browser-internal/src/ui/project/header.tsx +++ b/packages/core/chrome/core-chrome-browser-internal/src/ui/project/header.tsx @@ -248,7 +248,6 @@ export const ProjectHeader = ({ - @@ -263,6 +262,10 @@ export const ProjectHeader = ({ navigateToUrl={application.navigateToUrl} /> + + + + diff --git a/packages/core/saved-objects/core-saved-objects-server/docs/model_versions.md b/packages/core/saved-objects/core-saved-objects-server/docs/model_versions.md index ba04303fbd0c80..6e0e0a388c3310 100644 --- a/packages/core/saved-objects/core-saved-objects-server/docs/model_versions.md +++ b/packages/core/saved-objects/core-saved-objects-server/docs/model_versions.md @@ -13,8 +13,9 @@ - [Adding an indexed field without default value](#adding-an-indexed-field-without-default-value) - [Adding an indexed field with a default value](#adding-an-indexed-field-with-a-default-value) - [Removing an existing field](#removing-an-existing-field) -- [Particularities of the serverless environment](#particularities-of-the-serverless-environment) +- [Limitations and edge cases in serverless environments](#limitations-and-edge-cases-in-serverless-environments) - [Using the fields option of the find api](#using-the-fields-option-of-the-find-savedobjects-api) + - [Using update with dynamically backfilled fields](#using-update-with-dynamically-backfilled-fields) ## Introduction @@ -870,7 +871,7 @@ const myType: SavedObjectsType = { }; ``` -## Particularities of the serverless environment +## Limitations and edge cases in serverless environments The serverless environment, and the fact that upgrade in such environments are performed in a way where, at some point, the old and new version of the application are living in cohabitation, leads @@ -891,3 +892,69 @@ Which is why, when using this option, the API consumer needs to make sure that * to the `fields` option **were already present in the prior model version**. Otherwise, it may lead to inconsistencies during upgrades, where newly introduced or backfilled fields may not necessarily appear in the documents returned from the `search` API when the option is used. + +### Using `update` with dynamically backfilled fields + +The savedObjects `update` API is effectively a partial update (using Elasticsearch's `_update` under the hood), +allowing API consumers to only specify the subset of fields they want to update to new values, without having to +provide the full list of attributes (the unchanged ones). We're also not changing the `version` of the document +during updates, even when the instance performing the operation doesn't know about the current model version +of the document (e.g an old node during an upgrade). + +If this was fine before zero downtime upgrades, there is an edge case in serverless when this API is used +to update fields that are the "source" of another field's backfill that can potentially lead to data becoming inconsistent. + +For example, imagine that: + +1. In model version 1, we have some `index (number)` field. + +2. In model version 2, we introduce a `odd (boolean)` field that is backfilled with the following function: + +```ts +let change: SavedObjectsModelDataBackfillChange = { + type: 'data_backfill', + backfillFn: (doc, ctx) => { + return { attributes: { odd: doc.attributes.index % 2 === 1 } }; + }, +}; +``` + +3. During the cohabitation period (upgrade), an instance of the new version of Kibana creates a document + +E.g with the following attributes: + +```ts +const newDocAttributes = { + index: 12, + odd: false, +} +``` + +4. Then an instance of the old version of Kibana updates the `index` field of this document + +Which could occur either while being still in the cohabitation period, or in case of rollback: + +```ts +savedObjectClient.update('type', 'id', { + index: 11, +}); +``` + +We will then be in a situation where our data is **inconsistent**, as the value of the `odd` field wasn't recomputed: + +```json +{ + index: 11, + odd: false, +} +``` + +The long term solution for that is implementing [backward-compatible updates](https://github.com/elastic/kibana/issues/152807), however +this won't be done for the MVP, so the workaround for now is to avoid situations where this edge case can occur. + +It can be avoided by either: + +1. Not having backfill functions depending on the value of the existing fields (*recommended*) + +2. Not performing update operations impacting fields that are used as "source" for backfill functions + (*note*: both the previous and next version of Kibana must follow this rule then) \ No newline at end of file diff --git a/packages/deeplinks/ml/deep_links.ts b/packages/deeplinks/ml/deep_links.ts index d0c79bcec76482..dc6accb275272a 100644 --- a/packages/deeplinks/ml/deep_links.ts +++ b/packages/deeplinks/ml/deep_links.ts @@ -15,6 +15,7 @@ export type LinkId = | 'anomalyDetection' | 'anomalyExplorer' | 'singleMetricViewer' + | 'dataComparison' | 'dataFrameAnalytics' | 'resultExplorer' | 'analyticsMap' diff --git a/packages/kbn-i18n/src/core/locales.js b/packages/kbn-i18n/src/core/locales.js index a989dfa6fe3c13..44f6bd6c6bd805 100644 --- a/packages/kbn-i18n/src/core/locales.js +++ b/packages/kbn-i18n/src/core/locales.js @@ -23,5 +23,8 @@ addLocaleData({ locale: "ja", pluralRuleFunction: function (n,ord){if(ord)return addLocaleData({ locale: "ja-JP", parentLocale: "ja" }); addLocaleData({ locale: "ko", pluralRuleFunction: function (n,ord){if(ord)return"other";return"other"},"fields":{"year":{"displayName":"년","relative":{"0":"올해","1":"내년","-1":"작년"},"relativeTime":{"future":{"other":"{0}년 후"},"past":{"other":"{0}년 전"}}},"year-short":{"displayName":"년","relative":{"0":"올해","1":"내년","-1":"작년"},"relativeTime":{"future":{"other":"{0}년 후"},"past":{"other":"{0}년 전"}}},"month":{"displayName":"월","relative":{"0":"이번 달","1":"다음 달","-1":"지난달"},"relativeTime":{"future":{"other":"{0}개월 후"},"past":{"other":"{0}개월 전"}}},"month-short":{"displayName":"월","relative":{"0":"이번 달","1":"다음 달","-1":"지난달"},"relativeTime":{"future":{"other":"{0}개월 후"},"past":{"other":"{0}개월 전"}}},"day":{"displayName":"일","relative":{"0":"오늘","1":"내일","2":"모레","-2":"그저께","-1":"어제"},"relativeTime":{"future":{"other":"{0}일 후"},"past":{"other":"{0}일 전"}}},"day-short":{"displayName":"일","relative":{"0":"오늘","1":"내일","2":"모레","-2":"그저께","-1":"어제"},"relativeTime":{"future":{"other":"{0}일 후"},"past":{"other":"{0}일 전"}}},"hour":{"displayName":"시","relative":{"0":"현재 시간"},"relativeTime":{"future":{"other":"{0}시간 후"},"past":{"other":"{0}시간 전"}}},"hour-short":{"displayName":"시","relative":{"0":"현재 시간"},"relativeTime":{"future":{"other":"{0}시간 후"},"past":{"other":"{0}시간 전"}}},"minute":{"displayName":"분","relative":{"0":"현재 분"},"relativeTime":{"future":{"other":"{0}분 후"},"past":{"other":"{0}분 전"}}},"minute-short":{"displayName":"분","relative":{"0":"현재 분"},"relativeTime":{"future":{"other":"{0}분 후"},"past":{"other":"{0}분 전"}}},"second":{"displayName":"초","relative":{"0":"지금"},"relativeTime":{"future":{"other":"{0}초 후"},"past":{"other":"{0}초 전"}}},"second-short":{"displayName":"초","relative":{"0":"지금"},"relativeTime":{"future":{"other":"{0}초 후"},"past":{"other":"{0}초 전"}}}} }); addLocaleData({ locale: "ko-KR", parentLocale: "ko" }); +addLocaleData({ locale: "pt", pluralRuleFunction: function (n,ord){if(ord)return"other";return n==1?"one":"other"},"fields":{"year":{"displayName":"ano","relative":{"0":"este ano","1":"próximo ano","-1":"ano passado"},"relativeTime":{"future":{"one":"em {0} ano","other":"em {0} anos"},"past":{"one":"há {0} ano","other":"há {0} anos"}}},"year-short":{"displayName":"a","relative":{"0":"este ano","1":"próximo ano","-1":"último ano"},"relativeTime":{"future":{"one":"em {0} ano","other":"em {0} anos"},"past":{"one":"há {0} ano","other":"há {0} anos"}}},"month":{"displayName":"mês","relative":{"0":"este mês","1":"próximo mês","-1":"mês passado"},"relativeTime":{"future":{"one":"em {0} mês","other":"em {0} meses"},"past":{"one":"há {0} mês","other":"há {0} meses"}}},"month-short":{"displayName":"m","relative":{"0":"este mês","1":"próximo mês","-1":"último mês"},"relativeTime":{"future":{"one":"em {0} mês","other":"em {0} meses"},"past":{"one":"há {0} mês","other":"há {0} meses"}}},"day":{"displayName":"dia","relative":{"0":"hoje","1":"amanhã","-1":"ontem"},"relativeTime":{"future":{"one":"em {0} dia","other":"em {0} dias"},"past":{"one":"há {0} dia","other":"há {0} dias"}}},"day-short":{"displayName":"d","relative":{"0":"hoje","1":"amanhã","-1":"ontem"},"relativeTime":{"future":{"one":"em {0} dia","other":"em {0} dias"},"past":{"one":"há {0} dia","other":"há {0} dias"}}},"hour":{"displayName":"hora","relative":{"0":"nesta hora"},"relativeTime":{"future":{"one":"em {0} hora","other":"em {0} horas"},"past":{"one":"há {0} hora","other":"há {0} horas"}}},"hour-short":{"displayName":"h","relative":{"0":"nesta hora"},"relativeTime":{"future":{"one":"em {0} h","other":"em {0} h"},"past":{"one":"há {0} h","other":"há {0} h"}}},"minute":{"displayName":"minuto","relative":{"0":"neste minuto"},"relativeTime":{"future":{"one":"em {0} minuto","other":"em {0} minutos"},"past":{"one":"há {0} minuto","other":"há {0} minutos"}}},"minute-short":{"displayName":"min","relative":{"0":"neste minuto"},"relativeTime":{"future":{"one":"em {0} min","other":"em {0} min"},"past":{"one":"há {0} min","other":"há {0} min"}}},"second":{"displayName":"segundo","relative":{"0":"agora"},"relativeTime":{"future":{"one":"em {0} segundo","other":"em {0} segundos"},"past":{"one":"há {0} segundo","other":"há {0} segundos"}}},"second-short":{"displayName":"s","relative":{"0":"agora"},"relativeTime":{"future":{"one":"em {0} s","other":"em {0} s"},"past":{"one":"há {0} s","other":"há {0} s"}}}} }); +addLocaleData({ locale: "pt-BR", parentLocale: "pt" }); addLocaleData({ locale: "zh", pluralRuleFunction: function (n,ord){if(ord)return"other";return"other"},"fields":{"year":{"displayName":"年","relative":{"0":"今年","1":"明年","-1":"去年"},"relativeTime":{"future":{"other":"{0}年后"},"past":{"other":"{0}年前"}}},"year-short":{"displayName":"年","relative":{"0":"今年","1":"明年","-1":"去年"},"relativeTime":{"future":{"other":"{0}年后"},"past":{"other":"{0}年前"}}},"month":{"displayName":"月","relative":{"0":"本月","1":"下个月","-1":"上个月"},"relativeTime":{"future":{"other":"{0}个月后"},"past":{"other":"{0}个月前"}}},"month-short":{"displayName":"月","relative":{"0":"本月","1":"下个月","-1":"上个月"},"relativeTime":{"future":{"other":"{0}个月后"},"past":{"other":"{0}个月前"}}},"day":{"displayName":"日","relative":{"0":"今天","1":"明天","2":"后天","-2":"前天","-1":"昨天"},"relativeTime":{"future":{"other":"{0}天后"},"past":{"other":"{0}天前"}}},"day-short":{"displayName":"日","relative":{"0":"今天","1":"明天","2":"后天","-2":"前天","-1":"昨天"},"relativeTime":{"future":{"other":"{0}天后"},"past":{"other":"{0}天前"}}},"hour":{"displayName":"小时","relative":{"0":"这一时间 \u002F 此时"},"relativeTime":{"future":{"other":"{0}小时后"},"past":{"other":"{0}小时前"}}},"hour-short":{"displayName":"小时","relative":{"0":"这一时间 \u002F 此时"},"relativeTime":{"future":{"other":"{0}小时后"},"past":{"other":"{0}小时前"}}},"minute":{"displayName":"分钟","relative":{"0":"此刻"},"relativeTime":{"future":{"other":"{0}分钟后"},"past":{"other":"{0}分钟前"}}},"minute-short":{"displayName":"分","relative":{"0":"此刻"},"relativeTime":{"future":{"other":"{0}分钟后"},"past":{"other":"{0}分钟前"}}},"second":{"displayName":"秒","relative":{"0":"现在"},"relativeTime":{"future":{"other":"{0}秒钟后"},"past":{"other":"{0}秒钟前"}}},"second-short":{"displayName":"秒","relative":{"0":"现在"},"relativeTime":{"future":{"other":"{0}秒后"},"past":{"other":"{0}秒前"}}}} }); addLocaleData({ locale: "zh-CN", parentLocale: "zh" }); + diff --git a/packages/kbn-storybook/src/lib/decorators.tsx b/packages/kbn-storybook/src/lib/decorators.tsx index c49571df48a2fd..270b9662e2210e 100644 --- a/packages/kbn-storybook/src/lib/decorators.tsx +++ b/packages/kbn-storybook/src/lib/decorators.tsx @@ -14,7 +14,7 @@ import 'core_styles'; import { BehaviorSubject } from 'rxjs'; import { CoreTheme } from '@kbn/core-theme-browser'; import { I18nStart } from '@kbn/core-i18n-browser'; -import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; +import { KibanaRootContextProvider } from '@kbn/react-kibana-context-root'; const theme$ = new BehaviorSubject({ darkMode: false }); @@ -34,9 +34,9 @@ const KibanaContextDecorator: DecoratorFn = (storyFn, { globals }) => { }, [colorMode]); return ( - + {storyFn()} - + ); }; diff --git a/packages/kbn-storybook/templates/index.ejs b/packages/kbn-storybook/templates/index.ejs index b52fc548b814b8..5540031e3b73c2 100644 --- a/packages/kbn-storybook/templates/index.ejs +++ b/packages/kbn-storybook/templates/index.ejs @@ -4,64 +4,74 @@ We use this one instead because we want to add the @kbn/ui-shared-deps-* tags here. --> - - - <%= htmlWebpackPlugin.options.title || 'Storybook'%> - <% if (htmlWebpackPlugin.files.favicon) { %> + + + + <%= htmlWebpackPlugin.options.title || 'Storybook' %> + + + <% if (htmlWebpackPlugin.files.favicon) { %> <% } %> - - - - + - - - - - - - + + + - <% if (typeof headHtmlSnippet !== 'undefined') { %> <%= headHtmlSnippet %> <% } %> <% - htmlWebpackPlugin.files.css.forEach(file => { %> - - <% }); %> + + + + + + + - - - - - - - <% if (typeof bodyHtmlSnippet !== 'undefined') { %> - <%= bodyHtmlSnippet %> - <% } %> + <% if (typeof headHtmlSnippet !=='undefined' ) { %> + <%= headHtmlSnippet %> + <% } %> + <% htmlWebpackPlugin.files.css.forEach(file=> { %> + + <% }); %> -

-
+ + + + + - <% if (typeof globals !== 'undefined' && Object.keys(globals).length) { %> - - <% } %> + + <% } %> + + <% htmlWebpackPlugin.files.js.forEach(file=> { %> + + <% }); %> + - <% htmlWebpackPlugin.files.js.forEach(file => { %> - - <% }); %> - diff --git a/packages/kbn-storybook/tsconfig.json b/packages/kbn-storybook/tsconfig.json index 20b509a7b434da..6463962ff65f98 100644 --- a/packages/kbn-storybook/tsconfig.json +++ b/packages/kbn-storybook/tsconfig.json @@ -19,7 +19,7 @@ "@kbn/core-theme-browser", "@kbn/i18n-react", "@kbn/core-i18n-browser", - "@kbn/react-kibana-context-render", + "@kbn/react-kibana-context-root", ], "exclude": [ "target/**/*", diff --git a/packages/kbn-test/src/kbn_client/kbn_client_requester.ts b/packages/kbn-test/src/kbn_client/kbn_client_requester.ts index 36a007c1c0d1c0..be9ea42d94d66b 100644 --- a/packages/kbn-test/src/kbn_client/kbn_client_requester.ts +++ b/packages/kbn-test/src/kbn_client/kbn_client_requester.ts @@ -131,6 +131,7 @@ export class KbnClientRequester { headers: { ...options.headers, 'kbn-xsrf': 'kbn-client', + 'x-elastic-internal-origin': 'kbn-client', }, httpsAgent: this.httpsAgent, responseType: options.responseType, diff --git a/packages/react/kibana_context/styled/README.mdx b/packages/react/kibana_context/styled/README.mdx index 335fc7ee69e636..9f9ec22268ceb4 100644 --- a/packages/react/kibana_context/styled/README.mdx +++ b/packages/react/kibana_context/styled/README.mdx @@ -13,3 +13,5 @@ Before `emotion` was introduced, some components used `styled-components` to eas It should _not_ be used in new code. +**NOTE:** plugins cannot use `styled-components` and `emotion` at the same time, their Babel plugins conflict. The EUI team has fielded many questions about this. The best solution is to migrate to `emotion` and not use `styled-components`. + diff --git a/src/core/server/integration_tests/ui_settings/index.test.ts b/src/core/server/integration_tests/ui_settings/index.test.ts index fc61f2cd5a33f3..5bc4082e25b2c7 100644 --- a/src/core/server/integration_tests/ui_settings/index.test.ts +++ b/src/core/server/integration_tests/ui_settings/index.test.ts @@ -20,9 +20,9 @@ describe('uiSettings/routes', function () { jest.setTimeout(120_000); beforeAll(startServers); - // eslint-disable-next-line jest/valid-describe + // eslint-disable-next-line jest/valid-describe-callback describe('doc missing', docMissingSuite(savedObjectIndex)); - // eslint-disable-next-line jest/valid-describe + // eslint-disable-next-line jest/valid-describe-callback describe('doc exists', docExistsSuite(savedObjectIndex)); afterAll(stopServers); }); diff --git a/src/plugins/console/public/application/components/variables/utils.test.ts b/src/plugins/console/public/application/components/variables/utils.test.ts new file mode 100644 index 00000000000000..0b990ca998114d --- /dev/null +++ b/src/plugins/console/public/application/components/variables/utils.test.ts @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { isValidVariableName } from './utils'; + +describe('utils', () => { + describe('isValidVariableName', () => { + it('returns `false` to `null`', () => { + // @ts-ignore passing a wrong type intentionally + expect(isValidVariableName(null)).toBe(false); + }); + + it('returns `false` to empty string', () => { + expect(isValidVariableName('')).toBe(false); + }); + + it('returns `false` to space string', () => { + expect(isValidVariableName(' ')).toBe(false); + }); + + it('returns `false` to integer zero', () => { + // @ts-ignore passing a wrong type intentionally + expect(isValidVariableName(0)).toBe(false); + }); + + it('returns `false` to float zero', () => { + // @ts-ignore passing a wrong type intentionally + expect(isValidVariableName(0.0)).toBe(false); + }); + + it('returns `true` to string zero', () => { + expect(isValidVariableName('0')).toBe(true); + }); + + it('returns `true` to allowed styles', () => { + for (const name of ['camelCase', 'snake_case', 'PascalCase', 'MACRO_CASE']) { + expect(isValidVariableName(name)).toBe(true); + } + }); + + it('returns `false` to disallowed styles', () => { + for (const name of ['kebab-case', 'COBOL-CASE', 'dot.notation', 'bracket[notation]']) { + expect(isValidVariableName(name)).toBe(false); + } + }); + + it('returns `true` to underscores prefix & suffix', () => { + expect(isValidVariableName('__name__')).toBe(true); + }); + + it('returns `true` to numbers prefix & suffix', () => { + expect(isValidVariableName('00name00')).toBe(true); + }); + }); +}); diff --git a/src/plugins/console/public/application/components/variables/utils.ts b/src/plugins/console/public/application/components/variables/utils.ts index 852498b92da98c..3e0ac32f266c47 100644 --- a/src/plugins/console/public/application/components/variables/utils.ts +++ b/src/plugins/console/public/application/components/variables/utils.ts @@ -37,3 +37,12 @@ export const generateEmptyVariableField = (): DevToolsVariable => ({ name: '', value: '', }); + +export const isValidVariableName = (name: string) => { + /* + * MUST avoid characters that get URL-encoded, because they'll result in unusable variable names. + * Common variable names consist of letters, digits, and underscores and do not begin with a digit. + * However, the ones beginning with a digit are still allowed here for backward compatibility. + */ + return typeof name === 'string' && name.match(/^[a-zA-Z0-9_]+$/g) !== null; +}; diff --git a/src/plugins/console/public/application/components/variables/variables_flyout.tsx b/src/plugins/console/public/application/components/variables/variables_flyout.tsx index 46b67bdf9075fd..5ca172b2e045b5 100644 --- a/src/plugins/console/public/application/components/variables/variables_flyout.tsx +++ b/src/plugins/console/public/application/components/variables/variables_flyout.tsx @@ -85,15 +85,14 @@ export const DevToolsVariablesFlyout = (props: DevToolsVariablesFlyoutProps) => defaultMessage: 'Variable name', }), render: (name, { id }) => { - // Avoid characters that get URL-encoded, because they'll result in unusable variable names. - const isInvalid = name && !name.match(/^[a-zA-Z0-9]+$/g); + const isInvalid = !utils.isValidVariableName(name); return ( , ]} fullWidth={true} diff --git a/src/plugins/dashboard/public/dashboard_actions/open_replace_panel_flyout.tsx b/src/plugins/dashboard/public/dashboard_actions/open_replace_panel_flyout.tsx index c4e81a17bb760d..909979b31c2bbc 100644 --- a/src/plugins/dashboard/public/dashboard_actions/open_replace_panel_flyout.tsx +++ b/src/plugins/dashboard/public/dashboard_actions/open_replace_panel_flyout.tsx @@ -14,6 +14,7 @@ import type { EmbeddableInput, EmbeddableOutput, } from '@kbn/embeddable-plugin/public'; +import { tracksOverlays } from '@kbn/embeddable-plugin/public'; import { toMountPoint } from '@kbn/kibana-react-plugin/public'; import { ReplacePanelFlyout } from './replace_panel_flyout'; @@ -33,12 +34,18 @@ export async function openReplacePanelFlyout(options: { overlays: { openFlyout }, } = pluginServices.getServices(); + // send the overlay ref to the root embeddable if it is capable of tracking overlays + const rootEmbeddable = embeddable.getRoot(); + const overlayTracker = tracksOverlays(rootEmbeddable) ? rootEmbeddable : undefined; + const flyoutSession = openFlyout( toMountPoint( { if (flyoutSession) { + if (overlayTracker) overlayTracker.clearOverlays(); + flyoutSession.close(); } }} @@ -50,6 +57,12 @@ export async function openReplacePanelFlyout(options: { { 'data-test-subj': 'dashboardReplacePanel', ownFocus: true, + onClose: (overlayRef) => { + if (overlayTracker) overlayTracker.clearOverlays(); + overlayRef.close(); + }, } ); + + overlayTracker?.openOverlay(flyoutSession); } diff --git a/src/plugins/dashboard/public/dashboard_app/top_nav/use_dashboard_menu_items.tsx b/src/plugins/dashboard/public/dashboard_app/top_nav/use_dashboard_menu_items.tsx index 22b12b4726fcd8..51fad4a852ef90 100644 --- a/src/plugins/dashboard/public/dashboard_app/top_nav/use_dashboard_menu_items.tsx +++ b/src/plugins/dashboard/public/dashboard_app/top_nav/use_dashboard_menu_items.tsx @@ -53,6 +53,7 @@ export const useDashboardMenuItems = ({ const lastSavedId = dashboard.select((state) => state.componentState.lastSavedId); const dashboardTitle = dashboard.select((state) => state.explicitInput.title); const viewMode = dashboard.select((state) => state.explicitInput.viewMode); + const disableTopNav = isSaveInProgress || hasOverlays; /** * Show the Dashboard app's share menu @@ -106,7 +107,12 @@ export const useDashboardMenuItems = ({ * Clone the dashboard */ const clone = useCallback(() => { - dashboard.runClone().then((result) => maybeRedirect(result)); + setIsSaveInProgress(true); + + dashboard.runClone().then((result) => { + setIsSaveInProgress(false); + maybeRedirect(result); + }); }, [maybeRedirect, dashboard]); /** @@ -134,6 +140,7 @@ export const useDashboardMenuItems = ({ /** * Register all of the top nav configs that can be used by dashboard. */ + const menuItems = useMemo(() => { return { fullScreen: { @@ -141,6 +148,7 @@ export const useDashboardMenuItems = ({ id: 'full-screen', testId: 'dashboardFullScreenMode', run: () => dashboard.dispatch.setFullScreenMode(true), + disableButton: disableTopNav, } as TopNavMenuData, labs: { @@ -161,6 +169,7 @@ export const useDashboardMenuItems = ({ dashboard.dispatch.setViewMode(ViewMode.EDIT); dashboard.clearOverlays(); }, + disableButton: disableTopNav, } as TopNavMenuData, quickSave: { @@ -170,13 +179,13 @@ export const useDashboardMenuItems = ({ emphasize: true, isLoading: isSaveInProgress, testId: 'dashboardQuickSaveMenuItem', - disableButton: !hasUnsavedChanges || isSaveInProgress || hasOverlays, + disableButton: disableTopNav || !hasUnsavedChanges, run: () => quickSaveDashboard(), } as TopNavMenuData, saveAs: { description: topNavStrings.saveAs.description, - disableButton: isSaveInProgress || hasOverlays, + disableButton: disableTopNav, id: 'save', emphasize: !Boolean(lastSavedId), testId: 'dashboardSaveMenuItem', @@ -188,7 +197,7 @@ export const useDashboardMenuItems = ({ switchToViewMode: { ...topNavStrings.switchToViewMode, id: 'cancel', - disableButton: isSaveInProgress || !lastSavedId || hasOverlays, + disableButton: disableTopNav || !lastSavedId, testId: 'dashboardViewOnlyMode', run: () => resetChanges(true), } as TopNavMenuData, @@ -197,7 +206,7 @@ export const useDashboardMenuItems = ({ ...topNavStrings.share, id: 'share', testId: 'shareTopNavButton', - disableButton: isSaveInProgress || hasOverlays, + disableButton: disableTopNav, run: showShare, } as TopNavMenuData, @@ -205,7 +214,7 @@ export const useDashboardMenuItems = ({ ...topNavStrings.settings, id: 'settings', testId: 'dashboardSettingsButton', - disableButton: isSaveInProgress || hasOverlays, + disableButton: disableTopNav, run: () => dashboard.showSettings(), } as TopNavMenuData, @@ -213,22 +222,22 @@ export const useDashboardMenuItems = ({ ...topNavStrings.clone, id: 'clone', testId: 'dashboardClone', - disableButton: isSaveInProgress, + disableButton: disableTopNav, run: () => clone(), } as TopNavMenuData, }; }, [ - quickSaveDashboard, - hasUnsavedChanges, + disableTopNav, isSaveInProgress, - saveDashboardAs, - setIsLabsShown, - resetChanges, - hasOverlays, + hasUnsavedChanges, lastSavedId, - isLabsShown, showShare, dashboard, + setIsLabsShown, + isLabsShown, + quickSaveDashboard, + saveDashboardAs, + resetChanges, clone, ]); diff --git a/src/plugins/dashboard/public/dashboard_container/embeddable/api/add_panel_from_library.ts b/src/plugins/dashboard/public/dashboard_container/embeddable/api/add_panel_from_library.ts index d1ae2de6e10cd1..60c78a62ebbc7f 100644 --- a/src/plugins/dashboard/public/dashboard_container/embeddable/api/add_panel_from_library.ts +++ b/src/plugins/dashboard/public/dashboard_container/embeddable/api/add_panel_from_library.ts @@ -18,6 +18,9 @@ export function addFromLibrary(this: DashboardContainer) { this.setScrollToPanelId(id); this.setHighlightPanelId(id); }, + onClose: () => { + this.clearOverlays(); + }, }) ); } diff --git a/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx b/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx index d1f3c7d57bb40e..636634d23099f9 100644 --- a/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx +++ b/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx @@ -427,10 +427,12 @@ export class DashboardContainer extends Container { this.clearOverlays(); + this.dispatch.setHasOverlays(true); this.overlayRef = ref; }; public clearOverlays = () => { + this.dispatch.setHasOverlays(false); this.controlGroup?.closeAllFlyouts(); this.overlayRef?.close(); }; diff --git a/src/plugins/data_views/server/fetcher/lib/field_capabilities/field_caps_response.ts b/src/plugins/data_views/server/fetcher/lib/field_capabilities/field_caps_response.ts index ee029f1271297f..715fea9beef3b8 100644 --- a/src/plugins/data_views/server/fetcher/lib/field_capabilities/field_caps_response.ts +++ b/src/plugins/data_views/server/fetcher/lib/field_capabilities/field_caps_response.ts @@ -129,7 +129,7 @@ export function readFieldCapsResponse( if (timeSeriesMetricProp.length === 1 && timeSeriesMetricProp[0] === 'counter') { timeSeriesMetricType = 'counter'; } - // @ts-expect-error MappingTimeSeriesMetricType does not contain 'position' + if (timeSeriesMetricProp.length === 1 && timeSeriesMetricProp[0] === 'position') { timeSeriesMetricType = 'position'; } @@ -148,9 +148,7 @@ export function readFieldCapsResponse( timeSeriesDimension: capsByType[types[0]].time_series_dimension, }; // This is intentionally using a "hash" and a "push" to be highly optimized with very large indexes - // @ts-expect-error MappingTimeSeriesMetricType does not contain 'position' agg.array.push(field); - // @ts-expect-error MappingTimeSeriesMetricType does not contain 'position' agg.hash[fieldName] = field; return agg; }, diff --git a/src/plugins/data_views/server/rest_api_routes/route_types.ts b/src/plugins/data_views/server/rest_api_routes/route_types.ts index 0c872aa5bd53d0..8498b6c3b17019 100644 --- a/src/plugins/data_views/server/rest_api_routes/route_types.ts +++ b/src/plugins/data_views/server/rest_api_routes/route_types.ts @@ -97,7 +97,7 @@ export type FieldSpecRestResponse = DataViewFieldBaseRestResponse & { fixedInterval?: string[]; timeZone?: string[]; timeSeriesDimension?: boolean; - timeSeriesMetric?: 'histogram' | 'summary' | 'gauge' | 'counter'; + timeSeriesMetric?: 'histogram' | 'summary' | 'gauge' | 'counter' | 'position'; shortDotsEnable?: boolean; isMapped?: boolean; parentName?: string; @@ -161,7 +161,7 @@ export interface FieldDescriptorRestResponse { metadata_field?: boolean; fixedInterval?: string[]; timeZone?: string[]; - timeSeriesMetric?: 'histogram' | 'summary' | 'counter' | 'gauge'; + timeSeriesMetric?: 'histogram' | 'summary' | 'counter' | 'gauge' | 'position'; timeSeriesDimension?: boolean; conflictDescriptions?: Record; } diff --git a/src/plugins/discover/public/components/discover_grid/discover_grid.scss b/src/plugins/discover/public/components/discover_grid/discover_grid.scss index 18fc15f024fa46..c21651cec7dd91 100644 --- a/src/plugins/discover/public/components/discover_grid/discover_grid.scss +++ b/src/plugins/discover/public/components/discover_grid/discover_grid.scss @@ -119,8 +119,8 @@ } .dscDiscoverGrid__descriptionListDescription { - word-break: normal !important; - white-space: nowrap; + word-break: break-all; + white-space: normal; // Special handling for images coming from the image field formatter img { diff --git a/src/plugins/embeddable/public/add_panel_flyout/open_add_panel_flyout.tsx b/src/plugins/embeddable/public/add_panel_flyout/open_add_panel_flyout.tsx index d02661d25d6fd8..e8efd7ea8820d0 100644 --- a/src/plugins/embeddable/public/add_panel_flyout/open_add_panel_flyout.tsx +++ b/src/plugins/embeddable/public/add_panel_flyout/open_add_panel_flyout.tsx @@ -23,10 +23,13 @@ const LazyAddPanelFlyout = React.lazy(async () => { export const openAddPanelFlyout = ({ container, onAddPanel, + onClose, }: { container: IContainer; onAddPanel?: (id: string) => void; + onClose?: () => void; }): OverlayRef => { + // send the overlay ref to the root embeddable if it is capable of tracking overlays const flyoutSession = core.overlays.openFlyout( toMountPoint( }> @@ -37,7 +40,12 @@ export const openAddPanelFlyout = ({ { 'data-test-subj': 'dashboardAddPanel', ownFocus: true, + onClose: (overlayRef) => { + if (onClose) onClose(); + overlayRef.close(); + }, } ); + return flyoutSession; }; diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx index 1dc0a65e16b527..88fe4d2eeda847 100644 --- a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx +++ b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_action.tsx @@ -10,12 +10,13 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import { TimeRange } from '@kbn/es-query'; import { toMountPoint } from '@kbn/kibana-react-plugin/public'; -import { OverlayRef, OverlayStart, ThemeServiceStart } from '@kbn/core/public'; +import { OverlayStart, ThemeServiceStart } from '@kbn/core/public'; import { Action, IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; -import { CustomizePanelEditor } from './customize_panel_editor'; -import { ViewMode, CommonlyUsedRange } from '../../../lib/types'; import { IEmbeddable, Embeddable, EmbeddableInput, EmbeddableOutput } from '../../..'; +import { ViewMode, CommonlyUsedRange } from '../../../lib/types'; +import { tracksOverlays } from '../track_overlays'; +import { CustomizePanelEditor } from './customize_panel_editor'; export const ACTION_CUSTOMIZE_PANEL = 'ACTION_CUSTOMIZE_PANEL'; @@ -23,15 +24,6 @@ const VISUALIZE_EMBEDDABLE_TYPE = 'visualization'; type VisualizeEmbeddable = IEmbeddable<{ id: string }, EmbeddableOutput & { visTypeName: string }>; -interface TracksOverlays { - openOverlay: (ref: OverlayRef) => void; - clearOverlays: () => void; -} - -function tracksOverlays(root: unknown): root is TracksOverlays { - return Boolean((root as TracksOverlays).openOverlay && (root as TracksOverlays).clearOverlays); -} - function isVisualizeEmbeddable( embeddable: IEmbeddable | VisualizeEmbeddable ): embeddable is VisualizeEmbeddable { diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_editor.tsx b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_editor.tsx index 2e5eafa9c7c463..178da61e75a793 100644 --- a/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_editor.tsx +++ b/src/plugins/embeddable/public/embeddable_panel/panel_actions/customize_panel_action/customize_panel_editor.tsx @@ -291,7 +291,7 @@ export const CustomizePanelEditor = (props: CustomizePanelProps) => { diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_actions/index.ts b/src/plugins/embeddable/public/embeddable_panel/panel_actions/index.ts index e29ee2b9fe34d6..8a58fd98fee70d 100644 --- a/src/plugins/embeddable/public/embeddable_panel/panel_actions/index.ts +++ b/src/plugins/embeddable/public/embeddable_panel/panel_actions/index.ts @@ -17,3 +17,4 @@ export { } from './customize_panel_action'; export { EditPanelAction, ACTION_EDIT_PANEL } from './edit_panel_action/edit_panel_action'; export { RemovePanelAction, REMOVE_PANEL_ACTION } from './remove_panel_action/remove_panel_action'; +export { tracksOverlays } from './track_overlays'; diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_actions/inspect_panel_action/inspect_panel_action.ts b/src/plugins/embeddable/public/embeddable_panel/panel_actions/inspect_panel_action/inspect_panel_action.ts index ef2dbe941ee512..dd6d9e4f83284e 100644 --- a/src/plugins/embeddable/public/embeddable_panel/panel_actions/inspect_panel_action/inspect_panel_action.ts +++ b/src/plugins/embeddable/public/embeddable_panel/panel_actions/inspect_panel_action/inspect_panel_action.ts @@ -11,6 +11,7 @@ import { Action } from '@kbn/ui-actions-plugin/public'; import { Start as InspectorStartContract } from '@kbn/inspector-plugin/public'; import { IEmbeddable } from '../../../lib/embeddables'; +import { tracksOverlays } from '../track_overlays'; export const ACTION_INSPECT_PANEL = 'openInspector'; @@ -45,6 +46,11 @@ export class InspectPanelAction implements Action { if (!(await this.isCompatible({ embeddable })) || adapters === undefined) { throw new Error('Action not compatible with context'); } + + // send the overlay ref to the root embeddable if it is capable of tracking overlays + const rootEmbeddable = embeddable.getRoot(); + const overlayTracker = tracksOverlays(rootEmbeddable) ? rootEmbeddable : undefined; + const session = this.inspector.open(adapters, { title: embeddable.getTitle(), options: { @@ -62,14 +68,20 @@ export class InspectPanelAction implements Action { // before calling the original destroy method const originalDestroy = embeddable.destroy; embeddable.destroy = () => { + if (overlayTracker) overlayTracker.clearOverlays(); + session.close(); if (originalDestroy) { originalDestroy.call(embeddable); } }; + // In case the inspector gets closed (otherwise), restore the original destroy function session.onClose.finally(() => { + if (overlayTracker) overlayTracker.clearOverlays(); embeddable.destroy = originalDestroy; }); + + overlayTracker?.openOverlay(session); } } diff --git a/src/plugins/embeddable/public/embeddable_panel/panel_actions/track_overlays.ts b/src/plugins/embeddable/public/embeddable_panel/panel_actions/track_overlays.ts new file mode 100644 index 00000000000000..28022e6ed1937d --- /dev/null +++ b/src/plugins/embeddable/public/embeddable_panel/panel_actions/track_overlays.ts @@ -0,0 +1,18 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { OverlayRef } from '@kbn/core-mount-utils-browser'; + +interface TracksOverlays { + openOverlay: (ref: OverlayRef) => void; + clearOverlays: () => void; +} + +export const tracksOverlays = (root: unknown): root is TracksOverlays => { + return Boolean((root as TracksOverlays).openOverlay && (root as TracksOverlays).clearOverlays); +}; diff --git a/src/plugins/embeddable/public/index.ts b/src/plugins/embeddable/public/index.ts index 7a9ecda475f6de..42244c70ed9c64 100644 --- a/src/plugins/embeddable/public/index.ts +++ b/src/plugins/embeddable/public/index.ts @@ -92,6 +92,7 @@ export { ACTION_EDIT_PANEL, RemovePanelAction, REMOVE_PANEL_ACTION, + tracksOverlays, } from './embeddable_panel/panel_actions'; export type { diff --git a/src/plugins/embeddable/tsconfig.json b/src/plugins/embeddable/tsconfig.json index 8962fec29daada..6470017e62220c 100644 --- a/src/plugins/embeddable/tsconfig.json +++ b/src/plugins/embeddable/tsconfig.json @@ -28,7 +28,8 @@ "@kbn/saved-objects-finder-plugin", "@kbn/analytics", "@kbn/usage-collection-plugin", - "@kbn/ui-theme" + "@kbn/ui-theme", + "@kbn/core-mount-utils-browser" ], "exclude": ["target/**/*"] } diff --git a/src/plugins/files/server/routes/public_facing/download.ts b/src/plugins/files/server/routes/public_facing/download.ts index 31559800952297..6eadde2aaa3837 100644 --- a/src/plugins/files/server/routes/public_facing/download.ts +++ b/src/plugins/files/server/routes/public_facing/download.ts @@ -73,6 +73,7 @@ export function register(router: FilesRouter) { validate: { ...rt }, options: { authRequired: false, + access: 'public', }, }, handler diff --git a/src/plugins/inspector/public/views/requests/_requests.scss b/src/plugins/inspector/public/views/requests/_requests.scss index ac6414d33684c5..3c4d2cceef3f0e 100644 --- a/src/plugins/inspector/public/views/requests/_requests.scss +++ b/src/plugins/inspector/public/views/requests/_requests.scss @@ -1,5 +1,5 @@ .insRequestDetailsStats__icon { - margin-right: $euiSizeS; + margin-left: $euiSizeXS; } .insRequestSelector__singleRequest { diff --git a/src/plugins/inspector/public/views/requests/components/details/req_details_stats.tsx b/src/plugins/inspector/public/views/requests/components/details/req_details_stats.tsx index 7ba24dc168f368..176eafa1464852 100644 --- a/src/plugins/inspector/public/views/requests/components/details/req_details_stats.tsx +++ b/src/plugins/inspector/public/views/requests/components/details/req_details_stats.tsx @@ -37,6 +37,8 @@ export class RequestDetailsStats extends Component { return [ + {stat.label} + {stat.description ? ( { )} - {stat.label} {stat.value} , diff --git a/tsconfig.base.json b/tsconfig.base.json index 0a7dc1821f67e9..fc2fbde3ae0d6f 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -978,6 +978,8 @@ "@kbn/ml-date-utils/*": ["x-pack/packages/ml/date_utils/*"], "@kbn/ml-error-utils": ["x-pack/packages/ml/error_utils"], "@kbn/ml-error-utils/*": ["x-pack/packages/ml/error_utils/*"], + "@kbn/ml-in-memory-table": ["x-pack/packages/ml/in_memory_table"], + "@kbn/ml-in-memory-table/*": ["x-pack/packages/ml/in_memory_table/*"], "@kbn/ml-is-defined": ["x-pack/packages/ml/is_defined"], "@kbn/ml-is-defined/*": ["x-pack/packages/ml/is_defined/*"], "@kbn/ml-is-populated-object": ["x-pack/packages/ml/is_populated_object"], diff --git a/x-pack/packages/kbn-slo-schema/src/models/duration.test.ts b/x-pack/packages/kbn-slo-schema/src/models/duration.test.ts index 7a7e6ebfec99fc..5e1f0e14a5dc3d 100644 --- a/x-pack/packages/kbn-slo-schema/src/models/duration.test.ts +++ b/x-pack/packages/kbn-slo-schema/src/models/duration.test.ts @@ -27,8 +27,6 @@ describe('Duration', () => { expect(new Duration(1, DurationUnit.Day).format()).toBe('1d'); expect(new Duration(1, DurationUnit.Week).format()).toBe('1w'); expect(new Duration(1, DurationUnit.Month).format()).toBe('1M'); - expect(new Duration(1, DurationUnit.Quarter).format()).toBe('1Q'); - expect(new Duration(1, DurationUnit.Year).format()).toBe('1Y'); }); }); @@ -39,31 +37,25 @@ describe('Duration', () => { expect(short.isShorterThan(new Duration(1, DurationUnit.Day))).toBe(true); expect(short.isShorterThan(new Duration(1, DurationUnit.Week))).toBe(true); expect(short.isShorterThan(new Duration(1, DurationUnit.Month))).toBe(true); - expect(short.isShorterThan(new Duration(1, DurationUnit.Quarter))).toBe(true); - expect(short.isShorterThan(new Duration(1, DurationUnit.Year))).toBe(true); }); it('returns false when the current duration is longer (or equal) than the other duration', () => { - const long = new Duration(1, DurationUnit.Year); + const long = new Duration(1, DurationUnit.Month); expect(long.isShorterThan(new Duration(1, DurationUnit.Minute))).toBe(false); expect(long.isShorterThan(new Duration(1, DurationUnit.Hour))).toBe(false); expect(long.isShorterThan(new Duration(1, DurationUnit.Day))).toBe(false); expect(long.isShorterThan(new Duration(1, DurationUnit.Week))).toBe(false); expect(long.isShorterThan(new Duration(1, DurationUnit.Month))).toBe(false); - expect(long.isShorterThan(new Duration(1, DurationUnit.Quarter))).toBe(false); - expect(long.isShorterThan(new Duration(1, DurationUnit.Year))).toBe(false); }); }); describe('isLongerOrEqualThan', () => { it('returns true when the current duration is longer or equal than the other duration', () => { - const long = new Duration(2, DurationUnit.Year); + const long = new Duration(2, DurationUnit.Month); expect(long.isLongerOrEqualThan(new Duration(1, DurationUnit.Hour))).toBe(true); expect(long.isLongerOrEqualThan(new Duration(1, DurationUnit.Day))).toBe(true); expect(long.isLongerOrEqualThan(new Duration(1, DurationUnit.Week))).toBe(true); expect(long.isLongerOrEqualThan(new Duration(1, DurationUnit.Month))).toBe(true); - expect(long.isLongerOrEqualThan(new Duration(1, DurationUnit.Quarter))).toBe(true); - expect(long.isLongerOrEqualThan(new Duration(1, DurationUnit.Year))).toBe(true); }); it('returns false when the current duration is shorter than the other duration', () => { @@ -73,8 +65,6 @@ describe('Duration', () => { expect(short.isLongerOrEqualThan(new Duration(1, DurationUnit.Day))).toBe(false); expect(short.isLongerOrEqualThan(new Duration(1, DurationUnit.Week))).toBe(false); expect(short.isLongerOrEqualThan(new Duration(1, DurationUnit.Month))).toBe(false); - expect(short.isLongerOrEqualThan(new Duration(1, DurationUnit.Quarter))).toBe(false); - expect(short.isLongerOrEqualThan(new Duration(1, DurationUnit.Year))).toBe(false); }); }); diff --git a/x-pack/packages/kbn-slo-schema/src/models/duration.ts b/x-pack/packages/kbn-slo-schema/src/models/duration.ts index d4016a3389b2ad..33ff6cbd25ac8e 100644 --- a/x-pack/packages/kbn-slo-schema/src/models/duration.ts +++ b/x-pack/packages/kbn-slo-schema/src/models/duration.ts @@ -14,8 +14,6 @@ enum DurationUnit { 'Day' = 'd', 'Week' = 'w', 'Month' = 'M', - 'Quarter' = 'Q', - 'Year' = 'Y', } class Duration { @@ -55,6 +53,10 @@ class Duration { format(): string { return `${this.value}${this.unit}`; } + + asSeconds(): number { + return moment.duration(this.value, toMomentUnitOfTime(this.unit)).asSeconds(); + } } const toDurationUnit = (unit: string): DurationUnit => { @@ -69,10 +71,6 @@ const toDurationUnit = (unit: string): DurationUnit => { return DurationUnit.Week; case 'M': return DurationUnit.Month; - case 'Q': - return DurationUnit.Quarter; - case 'y': - return DurationUnit.Year; default: throw new Error('invalid duration unit'); } @@ -90,10 +88,6 @@ const toMomentUnitOfTime = (unit: DurationUnit): moment.unitOfTime.Diff => { return 'weeks'; case DurationUnit.Month: return 'months'; - case DurationUnit.Quarter: - return 'quarters'; - case DurationUnit.Year: - return 'years'; default: assertNever(unit); } diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts b/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts index fda0e767c71d0e..1a398ca25bbf0b 100644 --- a/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts +++ b/x-pack/packages/kbn-slo-schema/src/rest_specs/slo.ts @@ -7,15 +7,17 @@ import * as t from 'io-ts'; import { + apmTransactionDurationIndicatorSchema, + apmTransactionErrorRateIndicatorSchema, budgetingMethodSchema, dateType, + durationType, + histogramIndicatorSchema, historicalSummarySchema, indicatorSchema, - indicatorTypesArraySchema, indicatorTypesSchema, kqlCustomIndicatorSchema, metricCustomIndicatorSchema, - histogramIndicatorSchema, objectiveSchema, optionalSettingsSchema, previewDataSchema, @@ -24,9 +26,6 @@ import { summarySchema, tagsSchema, timeWindowSchema, - apmTransactionErrorRateIndicatorSchema, - apmTransactionDurationIndicatorSchema, - durationType, timeWindowTypeSchema, } from '../schema'; @@ -69,12 +68,16 @@ const getSLOParamsSchema = t.type({ }); const sortDirectionSchema = t.union([t.literal('asc'), t.literal('desc')]); -const sortBySchema = t.union([t.literal('creationTime'), t.literal('indicatorType')]); +const sortBySchema = t.union([ + t.literal('error_budget_consumed'), + t.literal('error_budget_remaining'), + t.literal('sli_value'), + t.literal('status'), +]); const findSLOParamsSchema = t.partial({ query: t.partial({ - name: t.string, - indicatorTypes: indicatorTypesArraySchema, + kqlQuery: t.string, page: t.string, perPage: t.string, sortBy: sortBySchema, diff --git a/x-pack/packages/kbn-slo-schema/src/schema/common.ts b/x-pack/packages/kbn-slo-schema/src/schema/common.ts index 250525ce2192c1..166f3eab34a924 100644 --- a/x-pack/packages/kbn-slo-schema/src/schema/common.ts +++ b/x-pack/packages/kbn-slo-schema/src/schema/common.ts @@ -43,8 +43,6 @@ const summarySchema = t.type({ errorBudget: errorBudgetSchema, }); -type SummarySchema = t.TypeOf; - const historicalSummarySchema = t.intersection([ t.type({ date: dateType, @@ -59,8 +57,6 @@ const previewDataSchema = t.type({ const dateRangeSchema = t.type({ from: dateType, to: dateType }); -export type { SummarySchema }; - export { ALL_VALUE, allOrAnyString, diff --git a/x-pack/packages/ml/aiops_components/index.ts b/x-pack/packages/ml/aiops_components/index.ts index ec23951d9e8fb1..bfe84e260decdd 100644 --- a/x-pack/packages/ml/aiops_components/index.ts +++ b/x-pack/packages/ml/aiops_components/index.ts @@ -7,3 +7,5 @@ export { DualBrush, DualBrushAnnotation } from './src/dual_brush'; export { ProgressControls } from './src/progress_controls'; +export { DocumentCountChart } from './src/document_count_chart'; +export type { DocumentCountChartPoint, DocumentCountChartProps } from './src/document_count_chart'; diff --git a/x-pack/plugins/aiops/public/components/document_count_content/document_count_chart/brush_badge.tsx b/x-pack/packages/ml/aiops_components/src/document_count_chart/brush_badge.tsx similarity index 88% rename from x-pack/plugins/aiops/public/components/document_count_content/document_count_chart/brush_badge.tsx rename to x-pack/packages/ml/aiops_components/src/document_count_chart/brush_badge.tsx index 0f9fa9dbcde974..53563a721026ba 100644 --- a/x-pack/plugins/aiops/public/components/document_count_content/document_count_chart/brush_badge.tsx +++ b/x-pack/packages/ml/aiops_components/src/document_count_chart/brush_badge.tsx @@ -22,6 +22,15 @@ interface BrushBadgeProps { width: number; } +/** + * Badge component + * @param label - label + * @param marginLeft - margin left + * @param timestampFrom - start timestamp + * @param timestampTo - ending timestamp + * @param width - width of badge + * @constructor + */ export const BrushBadge: FC = ({ label, marginLeft, diff --git a/x-pack/plugins/aiops/public/components/document_count_content/document_count_chart/document_count_chart.tsx b/x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx similarity index 76% rename from x-pack/plugins/aiops/public/components/document_count_content/document_count_chart/document_count_chart.tsx rename to x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx index a9e813dbec540a..5b488522d23c75 100644 --- a/x-pack/plugins/aiops/public/components/document_count_content/document_count_chart/document_count_chart.tsx +++ b/x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx @@ -23,14 +23,20 @@ import { import { i18n } from '@kbn/i18n'; import { IUiSettingsClient } from '@kbn/core/public'; -import { DualBrush, DualBrushAnnotation } from '@kbn/aiops-components'; import { getSnappedWindowParameters, getWindowParameters } from '@kbn/aiops-utils'; import type { WindowParameters } from '@kbn/aiops-utils'; import { MULTILAYER_TIME_AXIS_STYLE } from '@kbn/charts-plugin/common'; -import { useAiopsAppContext } from '../../../hooks/use_aiops_app_context'; +import { + BarStyleAccessor, + RectAnnotationSpec, +} from '@elastic/charts/dist/chart_types/xy_chart/utils/specs'; +import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; +import type { ChartsPluginStart } from '@kbn/charts-plugin/public'; +import type { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; import { BrushBadge } from './brush_badge'; +import { DualBrush, DualBrushAnnotation } from '../..'; declare global { interface Window { @@ -46,27 +52,79 @@ interface TimeFilterRange { to: number; } +/** + * Datum for the bar chart + */ export interface DocumentCountChartPoint { + /** + * Time of bucket + */ time: number | string; + /** + * Number of doc count for that time bucket + */ value: number; } -interface DocumentCountChartProps { - brushSelectionUpdateHandler?: (d: WindowParameters, force: boolean) => void; +/** + * Brush settings + */ +export interface BrushSettings { + /** + * Optional label name for brush + */ + label?: string; + /** + * Optional style for brush + */ + annotationStyle?: RectAnnotationSpec['style']; + /** + * Optional width for brush + */ + badgeWidth?: number; +} + +/** + * Props for document count chart + */ +export interface DocumentCountChartProps { + /** List of Kibana services that are required as dependencies */ + dependencies: { + data: DataPublicPluginStart; + charts: ChartsPluginStart; + fieldFormats: FieldFormatsStart; + uiSettings: IUiSettingsClient; + }; + /** Optional callback function which gets called the brush selection has changed */ + brushSelectionUpdateHandler?: (windowParameters: WindowParameters, force: boolean) => void; + /** Optional width */ width?: number; + /** Data chart points */ chartPoints: DocumentCountChartPoint[]; + /** Data chart points split */ chartPointsSplit?: DocumentCountChartPoint[]; + /** Start time range for the chart */ timeRangeEarliest: number; + /** Ending time range for the chart */ timeRangeLatest: number; + /** Time interval for the document count buckets */ interval: number; + /** Label to name the adjustedChartPointsSplit histogram */ chartPointsSplitLabel: string; + /** Whether or not brush has been reset */ isBrushCleared: boolean; - /* Timestamp for start of initial analysis */ + /** Timestamp for start of initial analysis */ autoAnalysisStart?: number | WindowParameters; + /** Optional style to override bar chart */ + barStyleAccessor?: BarStyleAccessor; /** Optional color override for the default bar color for charts */ barColorOverride?: string; /** Optional color override for the highlighted bar color for charts */ barHighlightColorOverride?: string; + /** Optional settings override for the 'deviation' brush */ + deviationBrush?: BrushSettings; + /** Optional settings override for the 'baseline' brush */ + baselineBrush?: BrushSettings; } const SPEC_ID = 'document_count'; @@ -102,7 +160,29 @@ function getBaselineBadgeOverflow( : 0; } +/** + * Document count chart with draggable brushes to select time ranges + * by default use `Baseline` and `Deviation` for the badge names + * @param dependencies - List of Kibana services that are required as dependencies + * @param brushSelectionUpdateHandler - Optional callback function which gets called the brush selection has changed + * @param width - Optional width + * @param chartPoints - Data chart points + * @param chartPointsSplit - Data chart points split + * @param timeRangeEarliest - Start time range for the chart + * @param timeRangeLatest - Ending time range for the chart + * @param interval - Time interval for the document count buckets + * @param chartPointsSplitLabel - Label to name the adjustedChartPointsSplit histogram + * @param isBrushCleared - Whether or not brush has been reset + * @param autoAnalysisStart - Timestamp for start of initial analysis + * @param barColorOverride - Optional color override for the default bar color for charts + * @param barStyleAccessor - Optional style to override bar chart + * @param barHighlightColorOverride - Optional color override for the highlighted bar color for charts + * @param deviationBrush - Optional settings override for the 'deviation' brush + * @param baselineBrush - Optional settings override for the 'baseline' brush + * @constructor + */ export const DocumentCountChart: FC = ({ + dependencies, brushSelectionUpdateHandler, width, chartPoints, @@ -114,9 +194,12 @@ export const DocumentCountChart: FC = ({ isBrushCleared, autoAnalysisStart, barColorOverride, + barStyleAccessor, barHighlightColorOverride, + deviationBrush = {}, + baselineBrush = {}, }) => { - const { data, uiSettings, fieldFormats, charts } = useAiopsAppContext(); + const { data, uiSettings, fieldFormats, charts } = dependencies; const chartTheme = charts.theme.useChartsTheme(); const chartBaseTheme = charts.theme.useChartsBaseTheme(); @@ -339,22 +422,28 @@ export const DocumentCountChart: FC = ({
= ({ timeZone={timeZone} color={barColor} yNice + styleAccessor={barStyleAccessor} /> )} {adjustedChartPointsSplit?.length && ( @@ -438,11 +528,13 @@ export const DocumentCountChart: FC = ({ id="aiopsBaseline" min={windowParameters.baselineMin} max={windowParameters.baselineMax} + style={baselineBrush.annotationStyle} /> )} diff --git a/x-pack/plugins/aiops/public/components/document_count_content/document_count_chart/index.ts b/x-pack/packages/ml/aiops_components/src/document_count_chart/index.ts similarity index 76% rename from x-pack/plugins/aiops/public/components/document_count_content/document_count_chart/index.ts rename to x-pack/packages/ml/aiops_components/src/document_count_chart/index.ts index 22f39e2ca5d1d7..808496f8107823 100644 --- a/x-pack/plugins/aiops/public/components/document_count_content/document_count_chart/index.ts +++ b/x-pack/packages/ml/aiops_components/src/document_count_chart/index.ts @@ -6,4 +6,4 @@ */ export { DocumentCountChart } from './document_count_chart'; -export type { DocumentCountChartPoint } from './document_count_chart'; +export type { DocumentCountChartPoint, DocumentCountChartProps } from './document_count_chart'; diff --git a/x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush.tsx b/x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush.tsx index 80ba3850044a38..05635405e39d99 100644 --- a/x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush.tsx +++ b/x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush.tsx @@ -55,22 +55,71 @@ const BRUSH_HANDLE_SIZE = 4; const BRUSH_HANDLE_ROUNDED_CORNER = 2; interface DualBrushProps { + /** + * Min and max numeric timestamps for the two brushes + */ windowParameters: WindowParameters; + /** + * Min timestamp for x domain + */ min: number; + /** + * Max timestamp for x domain + */ max: number; + /** + * Callback function whenever the brush changes + */ onChange?: (windowParameters: WindowParameters, windowPxParameters: WindowParameters) => void; + /** + * Margin left + */ marginLeft: number; + /** + * Nearest timestamps to snap to the brushes to + */ snapTimestamps?: number[]; + /** + * Width + */ width: number; } +/** + * DualBrush React Component + * Dual brush component that overlays the document count chart + * @type {FC} + * @param props - `DualBrushProps` component props + * @returns {React.ReactElement} The DualBrush component. + */ export function DualBrush({ + /** + * Min and max numeric timestamps for the two brushes + */ windowParameters, + /** + * Min timestamp for x domain + */ min, + /** + * Max timestamp for x domain + */ max, + /** + * Callback function whenever the brush changes + */ onChange, + /** + * Margin left + */ marginLeft, + /** + * Nearest timestamps to snap to the brushes to + */ snapTimestamps, + /** + * Width + */ width, }: DualBrushProps) { const d3BrushContainer = useRef(null); diff --git a/x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush_annotation.tsx b/x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush_annotation.tsx index a689ab340224b8..f78bfc78f3ccec 100644 --- a/x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush_annotation.tsx +++ b/x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush_annotation.tsx @@ -9,14 +9,23 @@ import React, { FC } from 'react'; import { RectAnnotation } from '@elastic/charts'; import { useEuiTheme } from '@elastic/eui'; +import { RectAnnotationSpec } from '@elastic/charts/dist/chart_types/xy_chart/utils/specs'; interface BrushAnnotationProps { id: string; min: number; max: number; + style?: RectAnnotationSpec['style']; } -export const DualBrushAnnotation: FC = ({ id, min, max }) => { +/** + * DualBrushAnnotation React Component + * Dual brush annotation component that overlays the document count chart + * @type {FC} + * @param props - `BrushAnnotationProps` component props + * @returns {React.ReactElement} The DualBrushAnnotation component. + */ +export const DualBrushAnnotation: FC = ({ id, min, max, style }) => { const { euiTheme } = useEuiTheme(); const { colors } = euiTheme; @@ -34,12 +43,14 @@ export const DualBrushAnnotation: FC = ({ id, min, max }) }, ]} id={`rect_brush_annotation_${id}`} - style={{ - strokeWidth: 0, - stroke: colors.lightShade, - fill: colors.lightShade, - opacity: 0.5, - }} + style={ + style ?? { + strokeWidth: 0, + stroke: colors.lightShade, + fill: colors.lightShade, + opacity: 0.5, + } + } hideTooltips={true} /> ); diff --git a/x-pack/packages/ml/aiops_components/src/progress_controls/progress_controls.tsx b/x-pack/packages/ml/aiops_components/src/progress_controls/progress_controls.tsx index 43e51e9cc4c697..7083282d3609f6 100644 --- a/x-pack/packages/ml/aiops_components/src/progress_controls/progress_controls.tsx +++ b/x-pack/packages/ml/aiops_components/src/progress_controls/progress_controls.tsx @@ -26,6 +26,9 @@ import { useAnimatedProgressBarBackground } from './use_animated_progress_bar_ba // TODO Consolidate with duplicate component `CorrelationsProgressControls` in // `x-pack/plugins/apm/public/components/app/correlations/progress_controls.tsx` +/** + * Props for ProgressControlProps + */ interface ProgressControlProps { isBrushCleared: boolean; progress: number; @@ -35,8 +38,32 @@ interface ProgressControlProps { onReset: () => void; isRunning: boolean; shouldRerunAnalysis: boolean; + runAnalysisDisabled?: boolean; } +/** + * ProgressControls React Component + * Component with ability to Run & cancel analysis + * by default use `Baseline` and `Deviation` for the badge name + * @type {FC} + * @param children - List of Kibana services that are required as dependencies + * @param brushSelectionUpdateHandler - Optional callback function which gets called the brush selection has changed + * @param width - Optional width + * @param chartPoints - Data chart points + * @param chartPointsSplit - Data chart points split + * @param timeRangeEarliest - Start time range for the chart + * @param timeRangeLatest - Ending time range for the chart + * @param interval - Time interval for the document count buckets + * @param chartPointsSplitLabel - Label to name the adjustedChartPointsSplit histogram + * @param isBrushCleared - Whether or not brush has been reset + * @param autoAnalysisStart - Timestamp for start of initial analysis + * @param barColorOverride - Optional color override for the default bar color for charts + * @param barStyleAccessor - Optional style to override bar chart + * @param barHighlightColorOverride - Optional color override for the highlighted bar color for charts + * @param deviationBrush - Optional settings override for the 'deviation' brush + * @param baselineBrush - Optional settings override for the 'baseline' brush + * @returns {React.ReactElement} The ProgressControls component. + */ export const ProgressControls: FC = ({ children, isBrushCleared, @@ -47,6 +74,7 @@ export const ProgressControls: FC = ({ onReset, isRunning, shouldRerunAnalysis, + runAnalysisDisabled = false, }) => { const { euiTheme } = useEuiTheme(); const runningProgressBarStyles = useAnimatedProgressBarBackground(euiTheme.colors.success); @@ -57,6 +85,7 @@ export const ProgressControls: FC = ({ {!isRunning && ( (items: T[], initialSortField: string) { +/** + * Returned type for useTableState hook + */ +export interface UseTableState { + /** + * Callback function which gets called whenever the pagination or sorting state of the table changed + */ + onTableChange: EuiInMemoryTable['onTableChange']; + /** + * Pagination object which contains pageIndex, pageSize + */ + pagination: Pagination; + /** + * Sort field and sort direction + */ + sorting: { sort: { field: string; direction: Direction } }; + /** + * setPageIndex setter function which updates page index + */ + setPageIndex: Dispatch>; +} + +/** + * Hook to help with managing the pagination and sorting for EuiInMemoryTable + * @param {TableItem} items - data to show in the table + * @param {string} initialSortField - field name to sort by default + * @param {string} initialSortDirection - default to 'asc' + */ +export function useTableState( + items: T[], + initialSortField: string, + initialSortDirection: 'asc' | 'desc' = 'asc' +) { const [pageIndex, setPageIndex] = useState(0); const [pageSize, setPageSize] = useState(10); const [sortField, setSortField] = useState(initialSortField); - const [sortDirection, setSortDirection] = useState('asc'); + const [sortDirection, setSortDirection] = useState(initialSortDirection); const onTableChange: EuiInMemoryTable['onTableChange'] = ({ page = { index: 0, size: 10 }, @@ -42,5 +74,10 @@ export function useTableState(items: T[], initialSortField: string) { }, }; - return { onTableChange, pagination, sorting, setPageIndex }; + return { + onTableChange, + pagination, + sorting, + setPageIndex, + }; } diff --git a/x-pack/packages/ml/in_memory_table/index.ts b/x-pack/packages/ml/in_memory_table/index.ts new file mode 100644 index 00000000000000..2975582a4298b0 --- /dev/null +++ b/x-pack/packages/ml/in_memory_table/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { useTableState } from './hooks/use_table_state'; +export type { UseTableState } from './hooks/use_table_state'; diff --git a/x-pack/packages/ml/in_memory_table/jest.config.js b/x-pack/packages/ml/in_memory_table/jest.config.js new file mode 100644 index 00000000000000..a0dd7192dac509 --- /dev/null +++ b/x-pack/packages/ml/in_memory_table/jest.config.js @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../..', + roots: ['/x-pack/packages/ml/in_memory_table'], +}; diff --git a/x-pack/packages/ml/in_memory_table/kibana.jsonc b/x-pack/packages/ml/in_memory_table/kibana.jsonc new file mode 100644 index 00000000000000..cb50985bc61591 --- /dev/null +++ b/x-pack/packages/ml/in_memory_table/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "type": "shared-common", + "id": "@kbn/ml-in-memory-table", + "owner": "@elastic/ml-ui" +} diff --git a/x-pack/packages/ml/in_memory_table/package.json b/x-pack/packages/ml/in_memory_table/package.json new file mode 100644 index 00000000000000..54cf41c738653d --- /dev/null +++ b/x-pack/packages/ml/in_memory_table/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/ml-in-memory-table", + "private": true, + "version": "1.0.0", + "license": "Elastic License 2.0" +} \ No newline at end of file diff --git a/x-pack/packages/ml/in_memory_table/tsconfig.json b/x-pack/packages/ml/in_memory_table/tsconfig.json new file mode 100644 index 00000000000000..67fc862a62f307 --- /dev/null +++ b/x-pack/packages/ml/in_memory_table/tsconfig.json @@ -0,0 +1,23 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react", + "@emotion/react/types/css-prop", + "@testing-library/jest-dom", + "@testing-library/react" + ] + }, + "include": [ + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + ] +} diff --git a/x-pack/packages/ml/query_utils/index.ts b/x-pack/packages/ml/query_utils/index.ts index c5aa2901b3613b..b7dde76982130c 100644 --- a/x-pack/packages/ml/query_utils/index.ts +++ b/x-pack/packages/ml/query_utils/index.ts @@ -9,3 +9,6 @@ export { addExcludeFrozenToQuery } from './src/add_exclude_frozen_to_query'; export { buildBaseFilterCriteria } from './src/build_base_filter_criteria'; export { ES_CLIENT_TOTAL_HITS_RELATION } from './src/es_client_total_hits_relation'; export { getSafeAggregationName } from './src/get_safe_aggregation_name'; +export { SEARCH_QUERY_LANGUAGE } from './src/types'; +export type { SearchQueryLanguage } from './src/types'; +export { getDefaultDSLQuery } from './src/get_default_query'; diff --git a/x-pack/packages/ml/query_utils/src/get_default_query.ts b/x-pack/packages/ml/query_utils/src/get_default_query.ts new file mode 100644 index 00000000000000..f17746ddd2929e --- /dev/null +++ b/x-pack/packages/ml/query_utils/src/get_default_query.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 { cloneDeep } from 'lodash'; +import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; + +const DEFAULT_QUERY = { + bool: { + must: [ + { + match_all: {}, + }, + ], + }, +}; + +/** + * Default DSL query which matches all the results + */ +export function getDefaultDSLQuery(): QueryDslQueryContainer { + return cloneDeep(DEFAULT_QUERY); +} diff --git a/x-pack/packages/ml/query_utils/src/types.ts b/x-pack/packages/ml/query_utils/src/types.ts new file mode 100644 index 00000000000000..ce4a92a073138a --- /dev/null +++ b/x-pack/packages/ml/query_utils/src/types.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/** + * Constant for kuery and lucene string + */ +export const SEARCH_QUERY_LANGUAGE = { + KUERY: 'kuery', + LUCENE: 'lucene', +} as const; + +/** + * Type for SearchQueryLanguage + */ +export type SearchQueryLanguage = typeof SEARCH_QUERY_LANGUAGE[keyof typeof SEARCH_QUERY_LANGUAGE]; diff --git a/x-pack/packages/ml/random_sampler_utils/index.ts b/x-pack/packages/ml/random_sampler_utils/index.ts index 941df2408ae829..5b73c4d732f89c 100644 --- a/x-pack/packages/ml/random_sampler_utils/index.ts +++ b/x-pack/packages/ml/random_sampler_utils/index.ts @@ -10,3 +10,4 @@ export { createRandomSamplerWrapper, type RandomSamplerWrapper, } from './src/random_sampler_wrapper'; +export * from './src/random_sampler_manager'; diff --git a/x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts b/x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts new file mode 100644 index 00000000000000..364fbdfc4b8a0c --- /dev/null +++ b/x-pack/packages/ml/random_sampler_utils/src/random_sampler_manager.ts @@ -0,0 +1,168 @@ +/* + * 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 { BehaviorSubject } from 'rxjs'; +import { createRandomSamplerWrapper } from './random_sampler_wrapper'; + +/** + * List of default probabilities to use for random sampler + */ +export const RANDOM_SAMPLER_PROBABILITIES = [ + 0.00001, 0.00005, 0.0001, 0.0005, 0.001, 0.005, 0.01, 0.05, 0.1, 0.2, 0.3, 0.4, 0.5, +].map((n) => n * 100); + +/** + * Default recommended minimum probability for default sampling + */ +export const MIN_SAMPLER_PROBABILITY = 0.00001; + +/** + * Default step minimum probability for default sampling + */ +export const RANDOM_SAMPLER_STEP = MIN_SAMPLER_PROBABILITY * 100; + +/** + * Default probability to use + */ +export const DEFAULT_PROBABILITY = 0.001; + +/** + * Default options for random sampler + */ +export const RANDOM_SAMPLER_OPTION = { + ON_AUTOMATIC: 'on_automatic', + ON_MANUAL: 'on_manual', + OFF: 'off', +} as const; + +/** + * Default option for random sampler type + */ +export type RandomSamplerOption = typeof RANDOM_SAMPLER_OPTION[keyof typeof RANDOM_SAMPLER_OPTION]; + +/** + * Type for the random sampler probability + */ +export type RandomSamplerProbability = number | null; + +/** + * Class that helps manage random sampling settings + * Automatically calculates the probability if only total doc count is provided + * Else, use the probability that was explicitly set + */ +export class RandomSampler { + private docCount$ = new BehaviorSubject(0); + private mode$ = new BehaviorSubject(RANDOM_SAMPLER_OPTION.ON_AUTOMATIC); + private probability$ = new BehaviorSubject(DEFAULT_PROBABILITY); + private setRandomSamplerModeInStorage: (mode: RandomSamplerOption) => void; + private setRandomSamplerProbabilityInStorage: (prob: RandomSamplerProbability) => void; + + /** + * Initial values + * @param {RandomSamplerOption} randomSamplerMode - random sampler mode + * @param setRandomSamplerMode - callback to be called when random sampler mode is set + * @param randomSamplerProbability - initial value for random sampler probability + * @param setRandomSamplerProbability - initial setter for random sampler probability + */ + constructor( + randomSamplerMode: RandomSamplerOption, + setRandomSamplerMode: (mode: RandomSamplerOption) => void, + randomSamplerProbability: RandomSamplerProbability, + setRandomSamplerProbability: (prob: RandomSamplerProbability) => void + ) { + this.mode$.next(randomSamplerMode); + this.setRandomSamplerModeInStorage = setRandomSamplerMode; + this.probability$.next(randomSamplerProbability); + this.setRandomSamplerProbabilityInStorage = setRandomSamplerProbability; + } + + /** + * Set total doc count + * If probability is not explicitly set, this doc count is used for calculating the suggested probability for sampling + * @param docCount - total document count + */ + setDocCount(docCount: number) { + return this.docCount$.next(docCount); + } + + /** + * Get doc count + */ + getDocCount() { + return this.docCount$.getValue(); + } + /** + * Set and save in storage what mode of random sampling to use + * @param {RandomSamplerOption} mode - mode to use when wrapping/unwrapping random sampling aggs + */ + public setMode(mode: RandomSamplerOption) { + this.setRandomSamplerModeInStorage(mode); + return this.mode$.next(mode); + } + + /** + * Observable to get currently set mode of random sampling + */ + public getMode$() { + return this.mode$.asObservable(); + } + + /** + * Helper to get currently set mode of random sampling + */ + public getMode() { + return this.mode$.getValue(); + } + + /** + * Helper to set the probability to use for random sampling requests + * @param {RandomSamplerProbability} probability - numeric value 0 < probability < 1 to use for random sampling + */ + public setProbability(probability: RandomSamplerProbability) { + this.setRandomSamplerProbabilityInStorage(probability); + return this.probability$.next(probability); + } + + /** + * Observability to get the probability to use for random sampling requests + */ + public getProbability$() { + return this.probability$.asObservable(); + } + + /** + * Observability to get the probability to use for random sampling requests + */ + public getProbability() { + return this.probability$.getValue(); + } + + /** + * Helper to return factory to extend any ES aggregations with the random sampling probability + * Returns wrapper = {wrap, unwrap} + * Where {wrap} extends the ES aggregations with the random sampling probability + * And {unwrap} accesses the original ES aggregations directly + */ + public createRandomSamplerWrapper() { + const mode = this.getMode(); + const probability = this.getProbability(); + + let prob = {}; + if (mode === RANDOM_SAMPLER_OPTION.ON_MANUAL) { + prob = { probability }; + } else if (mode === RANDOM_SAMPLER_OPTION.OFF) { + prob = { probability: 1 }; + } + + const wrapper = createRandomSamplerWrapper({ + ...prob, + totalNumDocs: this.getDocCount(), + }); + this.setProbability(wrapper.probability); + return wrapper; + } +} diff --git a/x-pack/packages/ml/response_stream/client/use_fetch_stream.ts b/x-pack/packages/ml/response_stream/client/use_fetch_stream.ts index bfd01b607ffacb..d2d140f80ee41d 100644 --- a/x-pack/packages/ml/response_stream/client/use_fetch_stream.ts +++ b/x-pack/packages/ml/response_stream/client/use_fetch_stream.ts @@ -129,7 +129,10 @@ export function useFetchStream>( return { cancel, - data: dataThrottled, + // To avoid a race condition where the stream already ended but `useThrottle` would + // yet have to trigger another update within the throttling interval, we'll return + // the unthrottled data once the stream is complete. + data: isRunning ? dataThrottled : data, dispatch, errors, isCancelled, diff --git a/x-pack/performance/configs/apm_config.ts b/x-pack/performance/configs/apm_config.ts new file mode 100644 index 00000000000000..ebcfeb1aa34486 --- /dev/null +++ b/x-pack/performance/configs/apm_config.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 type { FtrConfigProviderContext } from '@kbn/test'; +import { CA_CERT_PATH } from '@kbn/dev-utils'; + +// eslint-disable-next-line import/no-default-export +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const xpackFunctionalConfig = await readConfigFile( + // eslint-disable-next-line @kbn/imports/no_boundary_crossing + require.resolve('../../test/functional/config.base.js') + ); + + return { + ...xpackFunctionalConfig.getAll(), + + kbnTestServer: { + ...xpackFunctionalConfig.get('kbnTestServer'), + serverArgs: [ + ...xpackFunctionalConfig.get('kbnTestServer.serverArgs'), + '--home.disableWelcomeScreen=true', + '--csp.strict=false', + '--csp.warnLegacyBrowsers=false', + // define custom kibana server args here + `--elasticsearch.ssl.certificateAuthorities=${CA_CERT_PATH}`, + '--server.eluMonitor.enabled=true', + '--server.eluMonitor.logging.enabled=true', + '--server.eluMonitor.logging.threshold.ela=250', + '--server.eluMonitor.logging.threshold.elu=0.15', + ], + }, + }; +} diff --git a/x-pack/performance/journeys/apm_service_inventory.ts b/x-pack/performance/journeys/apm_service_inventory.ts new file mode 100644 index 00000000000000..980c193f67bbbc --- /dev/null +++ b/x-pack/performance/journeys/apm_service_inventory.ts @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Journey } from '@kbn/journeys'; +import { SynthtraceClient } from '../services/synthtrace'; +import { generateData } from '../synthtrace_data/apm_data'; + +// FLAKY: https://github.com/elastic/kibana/issues/162813 +export const journey = new Journey({ + beforeSteps: async ({ kbnUrl, log, auth, es }) => { + // Install APM Package + const synthClient = new SynthtraceClient({ + kbnBaseUrl: kbnUrl.get(), + logger: log, + username: auth.getUsername(), + password: auth.getPassword(), + esClient: es, + }); + + await synthClient.installApmPackage(); + // Setup Synthtrace Client + await synthClient.initialiseEsClient(); + // Generate data using Synthtrace + const start = Date.now() - 1000; + const end = Date.now(); + await synthClient.index( + generateData({ + from: new Date(start).getTime(), + to: new Date(end).getTime(), + }) + ); + }, + ftrConfigPath: 'x-pack/performance/configs/apm_config.ts', + skipped: true, +}) + .step('Navigate to Service Inventory Page', async ({ page, kbnUrl }) => { + await page.goto(kbnUrl.get(`app/apm/services`)); + await page.waitForSelector(`[data-test-subj="serviceLink_nodejs"]`); + }) + .step('Navigate to Service Overview Page', async ({ page, kbnUrl }) => { + await page.click(`[data-test-subj="serviceLink_nodejs"]`); + await page.waitForSelector(`[data-test-subj="apmMainTemplateHeaderServiceName"]`); + }) + .step('Navigate to Transactions tabs', async ({ page, kbnUrl }) => { + await page.click(`[data-test-subj="transactionsTab"]`); + await page.waitForSelector(`[data-test-subj="apmTransactionDetailLinkLink"]`); + }) + .step('Wait for Trace Waterfall on the page to load', async ({ page, kbnUrl }) => { + await page.click(`[data-test-subj="apmTransactionDetailLinkLink"]`); + await page.waitForSelector(`[data-test-subj="apmWaterfallButton"]`); + }); diff --git a/x-pack/performance/services/synthtrace/index.ts b/x-pack/performance/services/synthtrace/index.ts new file mode 100644 index 00000000000000..fc7ac5c306b621 --- /dev/null +++ b/x-pack/performance/services/synthtrace/index.ts @@ -0,0 +1,66 @@ +/* + * 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 { ApmSynthtraceEsClient, ApmSynthtraceKibanaClient } from '@kbn/apm-synthtrace'; +import Url from 'url'; +import { Readable } from 'stream'; +import { ApmFields, SynthtraceGenerator } from '@kbn/apm-synthtrace-client'; + +export interface SynthtraceClientParams { + kbnBaseUrl: string; + logger: any; + username: string; + password: string; + esClient: any; +} + +export class SynthtraceClient { + private synthtraceEsClient: ApmSynthtraceEsClient | undefined; + private packageVersion: string = ''; + private readonly kibanaUrlWithAuth: string; + + constructor(private readonly baseParams: SynthtraceClientParams) { + const kibanaUrl = new URL(this.baseParams.kbnBaseUrl); + this.kibanaUrlWithAuth = Url.format({ + protocol: kibanaUrl.protocol, + hostname: kibanaUrl.hostname, + port: kibanaUrl.port, + auth: `${this.baseParams.username}:${this.baseParams.password}`, + }); + } + + async installApmPackage() { + const kibanaClient = new ApmSynthtraceKibanaClient({ + logger: this.baseParams.logger, + target: this.kibanaUrlWithAuth, + }); + this.packageVersion = await kibanaClient.fetchLatestApmPackageVersion(); + + await kibanaClient.installApmPackage(this.packageVersion); + } + + async initialiseEsClient() { + this.synthtraceEsClient = new ApmSynthtraceEsClient({ + client: this.baseParams.esClient, + logger: this.baseParams.logger, + refreshAfterIndex: true, + version: this.packageVersion, + }); + + this.synthtraceEsClient.pipeline(this.synthtraceEsClient.getDefaultPipeline(false)); + } + + async index(events: SynthtraceGenerator) { + if (this.synthtraceEsClient) { + await this.synthtraceEsClient.index( + Readable.from(Array.from(events).flatMap((event) => event.serialize())) + ); + } else { + throw new Error('ES Client not initialised'); + } + } +} diff --git a/x-pack/performance/synthtrace_data/apm_data.ts b/x-pack/performance/synthtrace_data/apm_data.ts new file mode 100644 index 00000000000000..4a7ab835d37cd5 --- /dev/null +++ b/x-pack/performance/synthtrace_data/apm_data.ts @@ -0,0 +1,77 @@ +/* + * 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 { apm, httpExitSpan, timerange } from '@kbn/apm-synthtrace-client'; + +export function generateData({ from, to }: { from: number; to: number }) { + const range = timerange(from, to); + const transactionName = '240rpm/75% 1000ms'; + + const synthRum = apm + .service({ name: 'synth-rum', environment: 'production', agentName: 'rum-js' }) + .instance('my-instance'); + const synthNode = apm + .service({ name: 'synth-node', environment: 'production', agentName: 'nodejs' }) + .instance('my-instance'); + const synthGo = apm + .service({ name: 'synth-go', environment: 'production', agentName: 'go' }) + .instance('my-instance'); + + return range.interval('1m').generator((timestamp) => { + return synthRum + .transaction({ transactionName }) + .duration(400) + .timestamp(timestamp) + .children( + // synth-rum -> synth-node + synthRum + .span( + httpExitSpan({ + spanName: 'GET /api/products/top', + destinationUrl: 'http://synth-node:3000', + }) + ) + .duration(300) + .timestamp(timestamp) + + .children( + // synth-node + synthNode + .transaction({ transactionName: 'Initial transaction in synth-node' }) + .duration(300) + .timestamp(timestamp) + .children( + synthNode + // synth-node -> synth-go + .span( + httpExitSpan({ + spanName: 'GET synth-go:3000', + destinationUrl: 'http://synth-go:3000', + }) + ) + .timestamp(timestamp) + .duration(400) + + .children( + // synth-go + synthGo + + .transaction({ transactionName: 'Initial transaction in synth-go' }) + .timestamp(timestamp) + .duration(200) + .children( + synthGo + .span({ spanName: 'custom_operation', spanType: 'custom' }) + .timestamp(timestamp) + .duration(100) + .success() + ) + ) + ) + ) + ); + }); +} diff --git a/x-pack/performance/tsconfig.json b/x-pack/performance/tsconfig.json index fb60be2e310ce8..8dcd1caca873f7 100644 --- a/x-pack/performance/tsconfig.json +++ b/x-pack/performance/tsconfig.json @@ -14,5 +14,8 @@ "@kbn/tooling-log", "@kbn/test", "@kbn/expect", + "@kbn/dev-utils", + "@kbn/apm-synthtrace", + "@kbn/apm-synthtrace-client", ] } diff --git a/x-pack/plugins/actions/server/usage/actions_telemetry.ts b/x-pack/plugins/actions/server/usage/actions_telemetry.ts index 7959d147753502..49ac9ff1978f87 100644 --- a/x-pack/plugins/actions/server/usage/actions_telemetry.ts +++ b/x-pack/plugins/actions/server/usage/actions_telemetry.ts @@ -476,7 +476,7 @@ export async function getExecutionsPerDayCount( countFailedByType: Record; avgExecutionTime: number; avgExecutionTimeByType: Record; - countRunOutcomeByConnectorType: Record; + countRunOutcomeByConnectorType: Record>; }> { const scriptedMetric = { scripted_metric: { diff --git a/x-pack/plugins/actions/server/usage/task_state.ts b/x-pack/plugins/actions/server/usage/task_state.ts index c41c76df6133c4..3d4d96b525d5e7 100644 --- a/x-pack/plugins/actions/server/usage/task_state.ts +++ b/x-pack/plugins/actions/server/usage/task_state.ts @@ -66,7 +66,7 @@ export const stateSchemaByVersion = { avg_execution_time_by_type_per_day: schema.recordOf(schema.string(), schema.number()), count_connector_types_by_action_run_outcome_per_day: schema.recordOf( schema.string(), - schema.number() + schema.recordOf(schema.string(), schema.number()) ), }), }, diff --git a/x-pack/plugins/aiops/public/application/utils/search_utils.ts b/x-pack/plugins/aiops/public/application/utils/search_utils.ts index 4f6e0508c83d7b..99a9dfda4c642d 100644 --- a/x-pack/plugins/aiops/public/application/utils/search_utils.ts +++ b/x-pack/plugins/aiops/public/application/utils/search_utils.ts @@ -26,27 +26,11 @@ import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/typesWith import type { DataView } from '@kbn/data-views-plugin/public'; import type { SimpleSavedObject } from '@kbn/core/public'; import { isPopulatedObject } from '@kbn/ml-is-populated-object'; - -const DEFAULT_QUERY = { - bool: { - must: [ - { - match_all: {}, - }, - ], - }, -}; - -export const SEARCH_QUERY_LANGUAGE = { - KUERY: 'kuery', - LUCENE: 'lucene', -} as const; - -export type SearchQueryLanguage = typeof SEARCH_QUERY_LANGUAGE[keyof typeof SEARCH_QUERY_LANGUAGE]; - -export function getDefaultQuery() { - return cloneDeep(DEFAULT_QUERY); -} +import { + getDefaultDSLQuery, + type SearchQueryLanguage, + SEARCH_QUERY_LANGUAGE, +} from '@kbn/ml-query-utils'; export type SavedSearchSavedObject = SimpleSavedObject; @@ -94,7 +78,7 @@ export function createMergedEsQuery( dataView?: DataView, uiSettings?: IUiSettingsClient ) { - let combinedQuery: QueryDslQueryContainer = getDefaultQuery(); + let combinedQuery: QueryDslQueryContainer = getDefaultDSLQuery(); // FIXME: Add support for AggregateQuery type #150091 if (isQuery(query) && query.language === SEARCH_QUERY_LANGUAGE.KUERY) { @@ -171,7 +155,7 @@ export function getEsQueryFromSavedSearch({ // Flattened query from search source may contain a clause that narrows the time range // which might interfere with global time pickers so we need to remove const savedQuery = - cloneDeep(savedSearch.searchSource.getSearchRequestBody()?.query) ?? getDefaultQuery(); + cloneDeep(savedSearch.searchSource.getSearchRequestBody()?.query) ?? getDefaultDSLQuery(); const timeField = savedSearch.searchSource.getField('index')?.timeFieldName; if (Array.isArray(savedQuery.bool.filter) && timeField !== undefined) { diff --git a/x-pack/plugins/aiops/public/application/utils/url_state.ts b/x-pack/plugins/aiops/public/application/utils/url_state.ts index f174733ea11bfc..22a32a3d610edf 100644 --- a/x-pack/plugins/aiops/public/application/utils/url_state.ts +++ b/x-pack/plugins/aiops/public/application/utils/url_state.ts @@ -9,7 +9,7 @@ import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import type { Filter, Query } from '@kbn/es-query'; -import { SEARCH_QUERY_LANGUAGE, SearchQueryLanguage } from './search_utils'; +import { SEARCH_QUERY_LANGUAGE, type SearchQueryLanguage } from '@kbn/ml-query-utils'; const defaultSearchQuery = { match_all: {}, diff --git a/x-pack/plugins/aiops/public/components/change_point_detection/search_bar.tsx b/x-pack/plugins/aiops/public/components/change_point_detection/search_bar.tsx index 020c5da876b2a6..69537c1ef26dad 100644 --- a/x-pack/plugins/aiops/public/components/change_point_detection/search_bar.tsx +++ b/x-pack/plugins/aiops/public/components/change_point_detection/search_bar.tsx @@ -10,7 +10,7 @@ import { i18n } from '@kbn/i18n'; import { type Filter, fromKueryExpression, type Query } from '@kbn/es-query'; import { type SearchBarOwnProps } from '@kbn/unified-search-plugin/public/search_bar'; import { EuiSpacer, EuiTextColor } from '@elastic/eui'; -import { SEARCH_QUERY_LANGUAGE } from '../../application/utils/search_utils'; +import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils'; import { useDataSource } from '../../hooks/use_data_source'; import { useAiopsAppContext } from '../../hooks/use_aiops_app_context'; diff --git a/x-pack/plugins/aiops/public/components/document_count_content/document_count_content/document_count_content.tsx b/x-pack/plugins/aiops/public/components/document_count_content/document_count_content/document_count_content.tsx index 01fa56b1470d9a..cc6e147f5ec00d 100644 --- a/x-pack/plugins/aiops/public/components/document_count_content/document_count_content/document_count_content.tsx +++ b/x-pack/plugins/aiops/public/components/document_count_content/document_count_content/document_count_content.tsx @@ -11,9 +11,14 @@ import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import type { WindowParameters } from '@kbn/aiops-utils'; +import { + BarStyleAccessor, + RectAnnotationSpec, +} from '@elastic/charts/dist/chart_types/xy_chart/utils/specs'; +import { DocumentCountChart, type DocumentCountChartPoint } from '@kbn/aiops-components'; +import { useAiopsAppContext } from '../../../hooks/use_aiops_app_context'; import { DocumentCountStats } from '../../../get_document_stats'; -import { DocumentCountChart, DocumentCountChartPoint } from '../document_count_chart'; import { TotalCountHeader } from '../total_count_header'; export interface DocumentCountContentProps { @@ -29,6 +34,13 @@ export interface DocumentCountContentProps { barColorOverride?: string; /** Optional color override for the highlighted bar color for charts */ barHighlightColorOverride?: string; + windowParameters?: WindowParameters; + incomingInitialAnalysisStart?: number | WindowParameters; + baselineLabel?: string; + deviationLabel?: string; + barStyleAccessor?: BarStyleAccessor; + baselineAnnotationStyle?: RectAnnotationSpec['style']; + deviationAnnotationStyle?: RectAnnotationSpec['style']; } export const DocumentCountContent: FC = ({ @@ -42,7 +54,12 @@ export const DocumentCountContent: FC = ({ initialAnalysisStart, barColorOverride, barHighlightColorOverride, + windowParameters, + incomingInitialAnalysisStart, + ...docCountChartProps }) => { + const { data, uiSettings, fieldFormats, charts } = useAiopsAppContext(); + const bucketTimestamps = Object.keys(documentCountStats?.buckets ?? {}).map((time) => +time); const splitBucketTimestamps = Object.keys(documentCountStatsSplit?.buckets ?? {}).map( (time) => +time @@ -84,6 +101,7 @@ export const DocumentCountContent: FC = ({ {documentCountStats.interval !== undefined && ( = ({ autoAnalysisStart={initialAnalysisStart} barColorOverride={barColorOverride} barHighlightColorOverride={barHighlightColorOverride} + {...docCountChartProps} /> )} diff --git a/x-pack/plugins/aiops/public/components/log_categorization/category_table/category_table.tsx b/x-pack/plugins/aiops/public/components/log_categorization/category_table/category_table.tsx index 103e5c7d846df2..1dc30c04253bcc 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/category_table/category_table.tsx +++ b/x-pack/plugins/aiops/public/components/log_categorization/category_table/category_table.tsx @@ -21,12 +21,12 @@ import { import { DataViewField } from '@kbn/data-views-plugin/common'; import { Filter } from '@kbn/es-query'; +import { useTableState } from '@kbn/ml-in-memory-table'; import { useDiscoverLinks, createFilter, QueryMode, QUERY_MODE } from '../use_discover_links'; import { MiniHistogram } from '../../mini_histogram'; import { useEuiTheme } from '../../../hooks/use_eui_theme'; import type { LogCategorizationAppState } from '../../../application/utils/url_state'; import type { EventRate, Category, SparkLinesPerCategory } from '../use_categorize_request'; -import { useTableState } from './use_table_state'; import { getLabels } from './labels'; import { TableHeader } from './table_header'; diff --git a/x-pack/plugins/aiops/public/components/log_categorization/category_table/use_table_state.ts b/x-pack/plugins/aiops/public/components/log_categorization/category_table/use_table_state.ts deleted file mode 100644 index c67fe7d28fa9b4..00000000000000 --- a/x-pack/plugins/aiops/public/components/log_categorization/category_table/use_table_state.ts +++ /dev/null @@ -1,46 +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 { useState } from 'react'; -import { EuiInMemoryTable, Direction, Pagination } from '@elastic/eui'; - -export function useTableState(items: T[], initialSortField: string) { - const [pageIndex, setPageIndex] = useState(0); - const [pageSize, setPageSize] = useState(10); - const [sortField, setSortField] = useState(initialSortField); - const [sortDirection, setSortDirection] = useState('asc'); - - const onTableChange: EuiInMemoryTable['onTableChange'] = ({ - page = { index: 0, size: 10 }, - sort = { field: sortField, direction: sortDirection }, - }) => { - const { index, size } = page; - setPageIndex(index); - setPageSize(size); - - const { field, direction } = sort; - setSortField(field as string); - setSortDirection(direction as Direction); - }; - - const pagination: Pagination = { - pageIndex, - pageSize, - totalItemCount: (items ?? []).length, - pageSizeOptions: [10, 20, 50], - showPerPageOptions: true, - }; - - const sorting = { - sort: { - field: sortField, - direction: sortDirection, - }, - }; - - return { onTableChange, pagination, sorting, setPageIndex }; -} diff --git a/x-pack/plugins/aiops/public/components/log_categorization/document_count_chart.tsx b/x-pack/plugins/aiops/public/components/log_categorization/document_count_chart.tsx index 7e02eabf01dbc2..d34861b924ccb7 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/document_count_chart.tsx +++ b/x-pack/plugins/aiops/public/components/log_categorization/document_count_chart.tsx @@ -8,7 +8,8 @@ import React, { FC, useMemo } from 'react'; import { i18n } from '@kbn/i18n'; -import { DocumentCountChart as DocumentCountChartRoot } from '../document_count_content/document_count_chart'; +import { DocumentCountChart as DocumentCountChartRoot } from '@kbn/aiops-components'; +import { useAiopsAppContext } from '../../hooks/use_aiops_app_context'; import { TotalCountHeader } from '../document_count_content/total_count_header'; import type { Category, SparkLinesPerCategory } from './use_categorize_request'; import type { EventRate } from './use_categorize_request'; @@ -31,6 +32,8 @@ export const DocumentCountChart: FC = ({ selectedCategory, documentCountStats, }) => { + const { data, uiSettings, fieldFormats, charts } = useAiopsAppContext(); + const chartPointsSplitLabel = i18n.translate( 'xpack.aiops.logCategorization.chartPointsSplitLabel', { @@ -69,6 +72,7 @@ export const DocumentCountChart: FC = ({ <> { jest.clearAllMocks(); }); - it('should return empty migratedActions when error is thrown within method', async () => { + it('should throw an exception when error is thrown within method', async () => { (retrieveMigratedLegacyActions as jest.Mock).mockRejectedValueOnce(new Error('test failure')); - const migratedActions = await migrateLegacyActions(context, { - ruleId, - attributes, - }); + await expect( + migrateLegacyActions(context, { + ruleId, + attributes, + }) + ).rejects.toThrowError( + `Failed to migrate legacy actions for SIEM rule ${ruleId}: test failure` + ); - expect(migratedActions).toEqual({ - resultedActions: [], - hasLegacyActions: false, - resultedReferences: [], - }); expect(context.logger.error).toHaveBeenCalledWith( `migrateLegacyActions(): Failed to migrate legacy actions for SIEM rule ${ruleId}: test failure` ); @@ -168,7 +167,11 @@ describe('migrateLegacyActions', () => { }); await migrateLegacyActions(context, { ruleId, attributes }); - expect(retrieveMigratedLegacyActions).toHaveBeenCalledWith(context, { ruleId }); + expect(retrieveMigratedLegacyActions).toHaveBeenCalledWith( + context, + { ruleId }, + expect.any(Function) + ); }); it('should not call validateActions and injectReferencesIntoActions if skipActionsValidation=true', async () => { @@ -178,44 +181,6 @@ describe('migrateLegacyActions', () => { expect(injectReferencesIntoActions).not.toHaveBeenCalled(); }); - it('should call validateActions and injectReferencesIntoActions if attributes provided', async () => { - (retrieveMigratedLegacyActions as jest.Mock).mockResolvedValueOnce({ - legacyActions: legacyActionsMock, - legacyActionsReferences: legacyReferencesMock, - }); - - (injectReferencesIntoActions as jest.Mock).mockReturnValue('actions-with-references'); - await migrateLegacyActions(context, { ruleId, attributes }); - - expect(validateActions).toHaveBeenCalledWith(context, ruleType, { - ...attributes, - actions: 'actions-with-references', - }); - - expect(injectReferencesIntoActions).toHaveBeenCalledWith( - 'rule_id_1', - [ - { - actionRef: 'action_0', - actionTypeId: '.email', - group: 'default', - params: { - message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', - subject: 'Test Actions', - to: ['test@test.com'], - }, - uuid: '11403909-ca9b-49ba-9d7a-7e5320e68d05', - frequency: { - notifyWhen: 'onThrottleInterval', - summary: true, - throttle: '1d', - }, - }, - ], - [{ id: 'cc85da20-d480-11ed-8e69-1df522116c28', name: 'action_0', type: 'action' }] - ); - }); - it('should set frequency props from rule level to existing actions', async () => { const result = await migrateLegacyActions(context, { ruleId, diff --git a/x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/migrate_legacy_actions.ts b/x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/migrate_legacy_actions.ts index c092e3fed982b1..75bcb39e522b91 100644 --- a/x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/migrate_legacy_actions.ts +++ b/x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/migrate_legacy_actions.ts @@ -5,6 +5,9 @@ * 2.0. */ +import Boom from '@hapi/boom'; +import { i18n } from '@kbn/i18n'; + import { AlertConsumers } from '@kbn/rule-data-utils'; import type { SavedObjectReference } from '@kbn/core/server'; @@ -49,15 +52,14 @@ export const migrateLegacyActions: MigrateLegacyActions = async ( }; } - const { legacyActions, legacyActionsReferences } = await retrieveMigratedLegacyActions( - context, - { - ruleId, + const validateLegacyActions = async ( + legacyActions: RawRuleAction[], + legacyActionsReferences: SavedObjectReference[] + ) => { + // sometimes we don't need to validate legacy actions. For example, when delete rules or update rule from payload + if (skipActionsValidation === true) { + return; } - ); - - // sometimes we don't need to validate legacy actions. For example, when delete rules or update rule from payload - if (skipActionsValidation !== true) { const ruleType = context.ruleTypeRegistry.get(attributes.alertTypeId); await validateActions(context, ruleType, { ...attributes, @@ -66,7 +68,15 @@ export const migrateLegacyActions: MigrateLegacyActions = async ( notifyWhen: undefined, actions: injectReferencesIntoActions(ruleId, legacyActions, legacyActionsReferences), }); - } + }; + + const { legacyActions, legacyActionsReferences } = await retrieveMigratedLegacyActions( + context, + { + ruleId, + }, + validateLegacyActions + ); // fix references for a case when actions present in a rule if (actions.length) { @@ -103,11 +113,14 @@ export const migrateLegacyActions: MigrateLegacyActions = async ( context.logger.error( `migrateLegacyActions(): Failed to migrate legacy actions for SIEM rule ${ruleId}: ${e.message}` ); - - return { - resultedActions: [], - hasLegacyActions: false, - resultedReferences: [], - }; + throw Boom.badRequest( + i18n.translate('xpack.alerting.rulesClient.validateLegacyActions.errorSummary', { + defaultMessage: 'Failed to migrate legacy actions for SIEM rule {ruleId}: {errorMessage}', + values: { + ruleId, + errorMessage: e.message, + }, + }) + ); } }; diff --git a/x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.test.ts b/x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.test.ts index b49497d086efef..043754dff226e7 100644 --- a/x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.test.ts +++ b/x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.test.ts @@ -69,7 +69,8 @@ describe('Legacy rule action migration logic', () => { unsecuredSavedObjectsClient: savedObjectsClient, logger, } as unknown as RulesClientContext, - { ruleId } + { ruleId }, + () => Promise.resolve() ); expect(deleteRuleMock).not.toHaveBeenCalled(); @@ -92,7 +93,8 @@ describe('Legacy rule action migration logic', () => { unsecuredSavedObjectsClient: savedObjectsClient, logger, } as unknown as RulesClientContext, - { ruleId } + { ruleId }, + () => Promise.resolve() ); expect(deleteRuleMock).not.toHaveBeenCalled(); @@ -116,7 +118,8 @@ describe('Legacy rule action migration logic', () => { unsecuredSavedObjectsClient: savedObjectsClient, logger, } as unknown as RulesClientContext, - { ruleId } + { ruleId }, + () => Promise.resolve() ); expect(deleteRuleMock).not.toHaveBeenCalled(); @@ -146,7 +149,8 @@ describe('Legacy rule action migration logic', () => { unsecuredSavedObjectsClient: savedObjectsClient, logger, } as unknown as RulesClientContext, - { ruleId } + { ruleId }, + () => Promise.resolve() ); expect(deleteRuleMock).toHaveBeenCalledWith(expect.any(Object), { id: '456' }); @@ -192,7 +196,8 @@ describe('Legacy rule action migration logic', () => { unsecuredSavedObjectsClient: savedObjectsClient, logger, } as unknown as RulesClientContext, - { ruleId } + { ruleId }, + () => Promise.resolve() ); expect(deleteRuleMock).toHaveBeenCalledWith(expect.any(Object), { id: '456' }); @@ -237,7 +242,8 @@ describe('Legacy rule action migration logic', () => { unsecuredSavedObjectsClient: savedObjectsClient, logger, } as unknown as RulesClientContext, - { ruleId } + { ruleId }, + () => Promise.resolve() ); expect(deleteRuleMock).toHaveBeenCalledWith(expect.any(Object), { id: '456' }); @@ -263,5 +269,47 @@ describe('Legacy rule action migration logic', () => { legacyActionsReferences: [{ id: '456', name: 'action_0', type: 'action' }], }); }); + + test('it calls validateLegacyActions on migration a rule with legacy actions', async () => { + // siem.notifications is not created for a rule with no actions + findMock.mockResolvedValueOnce({ + page: 1, + perPage: 1, + total: 1, + data: [legacyGetDailyNotificationResult(connectorId, ruleId)], + }); + // siem-detection-engine-rule-actions SO is still created + savedObjectsClient.find.mockResolvedValueOnce( + legacyGetSiemNotificationRuleActionsSOResultWithSingleHit(['daily'], ruleId, connectorId) + ); + + const validateLegacyActions = jest.fn(); + await retrieveMigratedLegacyActions( + { + unsecuredSavedObjectsClient: savedObjectsClient, + logger, + } as unknown as RulesClientContext, + { ruleId }, + validateLegacyActions + ); + + expect(validateLegacyActions).toHaveBeenCalledWith( + [ + { + actionRef: 'action_0', + actionTypeId: '.email', + frequency: { notifyWhen: 'onThrottleInterval', summary: true, throttle: '1d' }, + group: 'default', + params: { + message: 'Rule {{context.rule.name}} generated {{state.signals_count}} alerts', + subject: 'Test Actions', + to: ['test@test.com'], + }, + uuid: expect.any(String), + }, + ], + [{ id: '456', name: 'action_0', type: 'action' }] + ); + }); }); }); diff --git a/x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.ts b/x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.ts index 83cd315aaa5a57..9678dff6898c8e 100644 --- a/x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.ts +++ b/x-pack/plugins/alerting/server/rules_client/lib/siem_legacy_actions/retrieve_migrated_legacy_actions.ts @@ -15,7 +15,11 @@ import { transformFromLegacyActions } from './transform_legacy_actions'; type RetrieveMigratedLegacyActions = ( context: RulesClientContext, - { ruleId }: { ruleId: string } + { ruleId }: { ruleId: string }, + validateLegacyActions: ( + legacyActions: RawRuleAction[], + legacyActionsReferences: SavedObjectReference[] + ) => Promise ) => Promise<{ legacyActions: RawRuleAction[]; legacyActionsReferences: SavedObjectReference[] }>; /** @@ -27,7 +31,8 @@ type RetrieveMigratedLegacyActions = ( */ export const retrieveMigratedLegacyActions: RetrieveMigratedLegacyActions = async ( context, - { ruleId } + { ruleId }, + validateLegacyActions ) => { const { unsecuredSavedObjectsClient } = context; try { @@ -71,17 +76,19 @@ export const retrieveMigratedLegacyActions: RetrieveMigratedLegacyActions = asyn return { legacyActions: [], legacyActionsReferences: [] }; } - await Promise.all([ - // If the legacy notification rule type ("siem.notification") exist, - // migration and cleanup are needed - siemNotificationsExist && deleteRule(context, { id: siemNotification.data[0].id }), - // Delete the legacy sidecar SO if it exists - legacyRuleNotificationSOsExist && - unsecuredSavedObjectsClient.delete( - legacyRuleActionsSavedObjectType, - legacyRuleActionsSO.saved_objects[0].id - ), - ]); + const deleteLegacyActions = async () => { + await Promise.all([ + // If the legacy notification rule type ("siem.notification") exist, + // migration and cleanup are needed + siemNotificationsExist && deleteRule(context, { id: siemNotification.data[0].id }), + // Delete the legacy sidecar SO if it exists + legacyRuleNotificationSOsExist && + unsecuredSavedObjectsClient.delete( + legacyRuleActionsSavedObjectType, + legacyRuleActionsSO.saved_objects[0].id + ), + ]); + }; // If legacy notification sidecar ("siem-detection-engine-rule-actions") // exist, migration is needed @@ -95,22 +102,28 @@ export const retrieveMigratedLegacyActions: RetrieveMigratedLegacyActions = asyn legacyRuleActionsSO.saved_objects[0].attributes.ruleThrottle === 'no_actions' || legacyRuleActionsSO.saved_objects[0].attributes.ruleThrottle === 'rule' ) { + await deleteLegacyActions(); return { legacyActions: [], legacyActionsReferences: [] }; } - return { - legacyActions: transformFromLegacyActions( - legacyRuleActionsSO.saved_objects[0].attributes, - legacyRuleActionsSO.saved_objects[0].references - ), - legacyActionsReferences: - // only action references need to be saved - legacyRuleActionsSO.saved_objects[0].references.filter(({ type }) => type === 'action') ?? - [], - }; + const legacyActions = transformFromLegacyActions( + legacyRuleActionsSO.saved_objects[0].attributes, + legacyRuleActionsSO.saved_objects[0].references + ); + // only action references need to be saved + const legacyActionsReferences = + legacyRuleActionsSO.saved_objects[0].references.filter(({ type }) => type === 'action') ?? + []; + await validateLegacyActions(legacyActions, legacyActionsReferences); + + // Delete legacy actions only after the validation + await deleteLegacyActions(); + return { legacyActions, legacyActionsReferences }; } + await deleteLegacyActions(); } catch (e) { context.logger.debug(`Migration has failed for rule ${ruleId}: ${e.message}`); + throw e; } return { legacyActions: [], legacyActionsReferences: [] }; diff --git a/x-pack/plugins/apm/common/privilege_type.ts b/x-pack/plugins/apm/common/privilege_type.ts index 3c2a0da3f3f05f..4cb7831b42c022 100644 --- a/x-pack/plugins/apm/common/privilege_type.ts +++ b/x-pack/plugins/apm/common/privilege_type.ts @@ -12,6 +12,10 @@ export enum PrivilegeType { AGENT_CONFIG = 'config_agent:read', } +export enum ClusterPrivilegeType { + MANAGE_OWN_API_KEY = 'manage_own_api_key', +} + export const privilegesTypeRt = t.array( t.union([ t.literal(PrivilegeType.EVENT), diff --git a/x-pack/plugins/apm/dev_docs/overflow_bucket_setup.md b/x-pack/plugins/apm/dev_docs/overflow_bucket_setup.md index 61e8bfb53d5812..60bd87714609ff 100644 --- a/x-pack/plugins/apm/dev_docs/overflow_bucket_setup.md +++ b/x-pack/plugins/apm/dev_docs/overflow_bucket_setup.md @@ -154,7 +154,11 @@ For more detailed instructions you can check [apm-server dev documentation](http - Copy paste the below script in a file called `tx_max_group.go` This file is responsible for generating 3 transactions per service. - ``` + +
+ tx_max_group.go + + ```go package main import ( @@ -185,9 +189,14 @@ For more detailed instructions you can check [apm-server dev documentation](http span.End() } ``` - +
+ - Now create a Bash Script file, name it anything - e.g., `service_max_group.sh` This file will generate services and then transactions for each service using the go script above. + +
+ tx_max_group.go + ```sh #!/usr/bin/env bash @@ -203,6 +212,7 @@ For more detailed instructions you can check [apm-server dev documentation](http echo "Ending script" ``` +
- Run `sh service_max_group` to generate the data diff --git a/x-pack/plugins/apm/server/routes/agent_keys/create_agent_key.ts b/x-pack/plugins/apm/server/routes/agent_keys/create_agent_key.ts index 0ceac90227d8ba..05560a7fb0dd06 100644 --- a/x-pack/plugins/apm/server/routes/agent_keys/create_agent_key.ts +++ b/x-pack/plugins/apm/server/routes/agent_keys/create_agent_key.ts @@ -8,8 +8,10 @@ import { SecurityCreateApiKeyResponse } from '@elastic/elasticsearch/lib/api/types'; import Boom from '@hapi/boom'; import { ApmPluginRequestHandlerContext } from '../typings'; +import { ClusterPrivilegeType } from '../../../common/privilege_type'; const resource = '*'; +const CLUSTER_PRIVILEGES = [ClusterPrivilegeType.MANAGE_OWN_API_KEY]; export interface CreateAgentKeyResponse { agentKey: SecurityCreateApiKeyResponse; @@ -39,10 +41,12 @@ export async function createAgentKey({ application: userApplicationPrivileges, username, has_all_requested: hasRequiredPrivileges, + cluster: clusterPrivileges, } = await coreContext.elasticsearch.client.asCurrentUser.security.hasPrivileges( { body: { application: [application], + cluster: CLUSTER_PRIVILEGES, }, } ); @@ -54,9 +58,19 @@ export async function createAgentKey({ .filter((x) => !x[1]) .map((x) => x[0]); + const missingClusterPrivileges = Object.keys(clusterPrivileges).filter( + (key) => !clusterPrivileges[key] + ); + const error = `${username} is missing the following requested privilege(s): ${missingPrivileges.join( ', ' - )}.\ + )}${ + missingClusterPrivileges && missingClusterPrivileges.length > 0 + ? ` and following cluster privileges - ${missingClusterPrivileges.join( + ', ' + )} privilege(s)` + : '' + }.\ You might try with the superuser, or add the missing APM application privileges to the role of the authenticated user, eg.: PUT /_security/role/my_role { @@ -68,7 +82,10 @@ export async function createAgentKey({ }], ... }`; - throw Boom.internal(error, { missingPrivileges }, 403); + throw Boom.forbidden(error, { + missingPrivileges, + missingClusterPrivileges, + }); } const body = { diff --git a/x-pack/plugins/apm/server/routes/fleet/source_maps.ts b/x-pack/plugins/apm/server/routes/fleet/source_maps.ts index ad2bc870c7f33b..4eb0b011cef3c4 100644 --- a/x-pack/plugins/apm/server/routes/fleet/source_maps.ts +++ b/x-pack/plugins/apm/server/routes/fleet/source_maps.ts @@ -19,12 +19,18 @@ import { getPackagePolicyWithSourceMap } from './get_package_policy_decorators'; const doUnzip = promisify(unzip); -interface ApmSourceMapArtifactBody { +interface ApmMapArtifactBody { serviceName: string; serviceVersion: string; bundleFilepath: string; + sourceMap: string; +} + +interface ApmSourceMapArtifactBody + extends Omit { sourceMap: SourceMap; } + export type ArtifactSourceMap = Omit & { body: ApmSourceMapArtifactBody; }; @@ -104,6 +110,23 @@ export async function createFleetSourceMapArtifact({ }); } +export async function createFleetAndroidMapArtifact({ + apmArtifactBody, + fleetPluginStart, +}: { + apmArtifactBody: ApmMapArtifactBody; + fleetPluginStart: FleetPluginStart; +}) { + const apmArtifactClient = getApmArtifactClient(fleetPluginStart); + const identifier = `${apmArtifactBody.serviceName}-${apmArtifactBody.serviceVersion}-android`; + + return apmArtifactClient.createArtifact({ + type: 'sourcemap', + identifier, + content: JSON.stringify(apmArtifactBody), + }); +} + export async function deleteFleetSourcemapArtifact({ id, fleetPluginStart, diff --git a/x-pack/plugins/apm/server/routes/source_maps/bulk_create_apm_source_maps.ts b/x-pack/plugins/apm/server/routes/source_maps/bulk_create_apm_source_maps.ts index f681642c0bc4be..5cc9f93e49b7b3 100644 --- a/x-pack/plugins/apm/server/routes/source_maps/bulk_create_apm_source_maps.ts +++ b/x-pack/plugins/apm/server/routes/source_maps/bulk_create_apm_source_maps.ts @@ -10,7 +10,7 @@ import { Artifact } from '@kbn/fleet-plugin/server'; import { getUnzippedArtifactBody } from '../fleet/source_maps'; import { APM_SOURCE_MAP_INDEX } from '../settings/apm_indices/get_apm_indices'; import { ApmSourceMap } from './create_apm_source_map_index_template'; -import { getEncodedContent, getSourceMapId } from './sourcemap_utils'; +import { getEncodedSourceMapContent, getSourceMapId } from './sourcemap_utils'; export async function bulkCreateApmSourceMaps({ artifacts, @@ -24,7 +24,7 @@ export async function bulkCreateApmSourceMaps({ const { serviceName, serviceVersion, bundleFilepath, sourceMap } = await getUnzippedArtifactBody(artifact.body); - const { contentEncoded, contentHash } = await getEncodedContent( + const { contentEncoded, contentHash } = await getEncodedSourceMapContent( sourceMap ); diff --git a/x-pack/plugins/apm/server/routes/source_maps/create_apm_source_map.ts b/x-pack/plugins/apm/server/routes/source_maps/create_apm_source_map.ts index 442b9299587a6f..132a92a2251875 100644 --- a/x-pack/plugins/apm/server/routes/source_maps/create_apm_source_map.ts +++ b/x-pack/plugins/apm/server/routes/source_maps/create_apm_source_map.ts @@ -10,7 +10,11 @@ import { Logger } from '@kbn/core/server'; import { APM_SOURCE_MAP_INDEX } from '../settings/apm_indices/get_apm_indices'; import { ApmSourceMap } from './create_apm_source_map_index_template'; import { SourceMap } from './route'; -import { getEncodedContent, getSourceMapId } from './sourcemap_utils'; +import { + getEncodedSourceMapContent, + getEncodedContent, + getSourceMapId, +} from './sourcemap_utils'; export async function createApmSourceMap({ internalESClient, @@ -31,9 +35,75 @@ export async function createApmSourceMap({ serviceName: string; serviceVersion: string; }) { - const { contentEncoded, contentHash } = await getEncodedContent( + const { contentEncoded, contentHash } = await getEncodedSourceMapContent( sourceMapContent ); + return await doCreateApmMap({ + internalESClient, + logger, + fleetId, + created, + bundleFilepath, + serviceName, + serviceVersion, + contentEncoded, + contentHash, + }); +} + +export async function createApmAndroidMap({ + internalESClient, + logger, + fleetId, + created, + mapContent, + bundleFilepath, + serviceName, + serviceVersion, +}: { + internalESClient: ElasticsearchClient; + logger: Logger; + fleetId: string; + created: string; + mapContent: string; + bundleFilepath: string; + serviceName: string; + serviceVersion: string; +}) { + const { contentEncoded, contentHash } = await getEncodedContent(mapContent); + return await doCreateApmMap({ + internalESClient, + logger, + fleetId, + created, + bundleFilepath, + serviceName, + serviceVersion, + contentEncoded, + contentHash, + }); +} +async function doCreateApmMap({ + internalESClient, + logger, + fleetId, + created, + bundleFilepath, + serviceName, + serviceVersion, + contentEncoded, + contentHash, +}: { + internalESClient: ElasticsearchClient; + logger: Logger; + fleetId: string; + created: string; + bundleFilepath: string; + serviceName: string; + serviceVersion: string; + contentEncoded: string; + contentHash: string; +}) { const doc: ApmSourceMap = { fleet_id: fleetId, created, diff --git a/x-pack/plugins/apm/server/routes/source_maps/route.ts b/x-pack/plugins/apm/server/routes/source_maps/route.ts index ae292676446686..c0cc2404af492e 100644 --- a/x-pack/plugins/apm/server/routes/source_maps/route.ts +++ b/x-pack/plugins/apm/server/routes/source_maps/route.ts @@ -9,19 +9,24 @@ import { SavedObjectsClientContract } from '@kbn/core/server'; import { Artifact } from '@kbn/fleet-plugin/server'; import { jsonRt, toNumberRt } from '@kbn/io-ts-utils'; import * as t from 'io-ts'; +import { either } from 'fp-ts/lib/Either'; import { ApmFeatureFlags } from '../../../common/apm_feature_flags'; import { getInternalSavedObjectsClient } from '../../lib/helpers/get_internal_saved_objects_client'; import { stringFromBufferRt } from '../../utils/string_from_buffer_rt'; import { createApmServerRoute } from '../apm_routes/create_apm_server_route'; import { createFleetSourceMapArtifact, + createFleetAndroidMapArtifact, deleteFleetSourcemapArtifact, getCleanedBundleFilePath, listSourceMapArtifacts, ListSourceMapArtifactsResponse, updateSourceMapsOnFleetPolicies, } from '../fleet/source_maps'; -import { createApmSourceMap } from './create_apm_source_map'; +import { + createApmSourceMap, + createApmAndroidMap, +} from './create_apm_source_map'; import { deleteApmSourceMap } from './delete_apm_sourcemap'; import { runFleetSourcemapArtifactsMigration } from './schedule_source_map_migration'; @@ -41,6 +46,24 @@ export const sourceMapRt = t.intersection([ export type SourceMap = t.TypeOf; +const androidMapValidation = new t.Type( + 'ANDROID_MAP_VALIDATION', + t.string.is, + (input, context): t.Validation => + either.chain( + t.string.validate(input, context), + (str): t.Validation => { + const firstLine = str.split('\n', 1)[0]; + if (firstLine.trim() === '# compiler: R8') { + return t.success(str); + } else { + return t.failure(input, context); + } + } + ), + (a): string => a +); + function throwNotImplementedIfSourceMapNotAvailable( featureFlags: ApmFeatureFlags ): void { @@ -91,7 +114,7 @@ const uploadSourceMapRoute = createApmServerRoute({ endpoint: 'POST /api/apm/sourcemaps 2023-10-31', options: { tags: ['access:apm', 'access:apm_write'], - body: { accepts: ['multipart/form-data'] }, + body: { accepts: ['multipart/form-data'], maxBytes: 100 * 1024 * 1024 }, }, params: t.type({ body: t.type({ @@ -169,6 +192,85 @@ const uploadSourceMapRoute = createApmServerRoute({ }, }); +const uploadAndroidMapRoute = createApmServerRoute({ + endpoint: 'POST /api/apm/androidmaps 2023-10-31', + options: { + tags: ['access:apm', 'access:apm_write'], + body: { accepts: ['multipart/form-data'], maxBytes: 100 * 1024 * 1024 }, + }, + params: t.type({ + body: t.type({ + service_name: t.string, + service_version: t.string, + map_file: t + .union([t.string, stringFromBufferRt]) + .pipe(androidMapValidation), + }), + }), + handler: async ({ + params, + plugins, + core, + logger, + featureFlags, + }): Promise => { + throwNotImplementedIfSourceMapNotAvailable(featureFlags); + + const { + service_name: serviceName, + service_version: serviceVersion, + map_file: sourceMapContent, + } = params.body; + const bundleFilepath = 'android'; + const fleetPluginStart = await plugins.fleet?.start(); + const coreStart = await core.start(); + const internalESClient = coreStart.elasticsearch.client.asInternalUser; + const savedObjectsClient = await getInternalSavedObjectsClient(coreStart); + try { + if (fleetPluginStart) { + // create source map as fleet artifact + const artifact = await createFleetAndroidMapArtifact({ + fleetPluginStart, + apmArtifactBody: { + serviceName, + serviceVersion, + bundleFilepath, + sourceMap: sourceMapContent, + }, + }); + + // sync source map to APM managed index + await createApmAndroidMap({ + internalESClient, + logger, + fleetId: artifact.id, + created: artifact.created, + mapContent: sourceMapContent, + bundleFilepath, + serviceName, + serviceVersion, + }); + + // sync source map to fleet policy + await updateSourceMapsOnFleetPolicies({ + coreStart, + fleetPluginStart, + savedObjectsClient: + savedObjectsClient as unknown as SavedObjectsClientContract, + internalESClient, + }); + + return artifact; + } + } catch (e) { + throw Boom.internal( + 'Something went wrong while creating a new android map', + e + ); + } + }, +}); + const deleteSourceMapRoute = createApmServerRoute({ endpoint: 'DELETE /api/apm/sourcemaps/{id} 2023-10-31', options: { tags: ['access:apm', 'access:apm_write'] }, @@ -230,5 +332,6 @@ export const sourceMapsRouteRepository = { ...listSourceMapRoute, ...uploadSourceMapRoute, ...deleteSourceMapRoute, + ...uploadAndroidMapRoute, ...migrateFleetArtifactsSourceMapRoute, }; diff --git a/x-pack/plugins/apm/server/routes/source_maps/sourcemap_utils.ts b/x-pack/plugins/apm/server/routes/source_maps/sourcemap_utils.ts index 20ff2fa4bd41c9..408d1b98f9c5a2 100644 --- a/x-pack/plugins/apm/server/routes/source_maps/sourcemap_utils.ts +++ b/x-pack/plugins/apm/server/routes/source_maps/sourcemap_utils.ts @@ -16,8 +16,11 @@ function asSha256Encoded(content: BinaryLike): string { return createHash('sha256').update(content).digest('hex'); } -export async function getEncodedContent(sourceMapContent: SourceMap) { - const contentBuffer = Buffer.from(JSON.stringify(sourceMapContent)); +export async function getEncodedSourceMapContent(sourceMapContent: SourceMap) { + return getEncodedContent(JSON.stringify(sourceMapContent)); +} +export async function getEncodedContent(textContent: string) { + const contentBuffer = Buffer.from(textContent); const contentZipped = await deflateAsync(contentBuffer); const contentEncoded = contentZipped.toString('base64'); const contentHash = asSha256Encoded(contentZipped); diff --git a/x-pack/plugins/apm/server/test_helpers/create_apm_users/authentication.ts b/x-pack/plugins/apm/server/test_helpers/create_apm_users/authentication.ts index fedc98151ce405..0b6fc8bb9947af 100644 --- a/x-pack/plugins/apm/server/test_helpers/create_apm_users/authentication.ts +++ b/x-pack/plugins/apm/server/test_helpers/create_apm_users/authentication.ts @@ -5,7 +5,10 @@ * 2.0. */ -import { PrivilegeType } from '../../../common/privilege_type'; +import { + PrivilegeType, + ClusterPrivilegeType, +} from '../../../common/privilege_type'; export enum ApmUsername { noAccessUser = 'no_access_user', @@ -67,7 +70,7 @@ export const customRoles = { }, [ApmCustomRolename.apmManageOwnAgentKeys]: { elasticsearch: { - cluster: ['manage_own_api_key'], + cluster: [ClusterPrivilegeType.MANAGE_OWN_API_KEY], }, }, [ApmCustomRolename.apmManageOwnAndCreateAgentKeys]: { diff --git a/x-pack/plugins/cases/public/components/header_page/editable_title.test.tsx b/x-pack/plugins/cases/public/components/header_page/editable_title.test.tsx index b8486e67dff759..f7e4df4d6a2e21 100644 --- a/x-pack/plugins/cases/public/components/header_page/editable_title.test.tsx +++ b/x-pack/plugins/cases/public/components/header_page/editable_title.test.tsx @@ -35,14 +35,16 @@ describe('EditableTitle', () => { expect(renderResult.getByText('Test title')).toBeInTheDocument(); }); - it('does not show the edit icon when the user does not have edit permissions', () => { + it('inline edit defaults to readOnly when the user does not have the edit permissions', () => { const wrapper = mount( ); - expect(wrapper.find('[data-test-subj="editable-title-edit-icon"]').exists()).toBeFalsy(); + expect( + wrapper.find('button[data-test-subj="editable-title-header-value"]').prop('disabled') + ).toBe(true); }); it('shows the edit title input field', () => { @@ -52,7 +54,7 @@ describe('EditableTitle', () => { ); - wrapper.find('button[data-test-subj="editable-title-edit-icon"]').simulate('click'); + wrapper.find('button[data-test-subj="editable-title-header-value"]').simulate('click'); wrapper.update(); expect(wrapper.find('[data-test-subj="editable-title-input-field"]').first().exists()).toBe( @@ -67,12 +69,12 @@ describe('EditableTitle', () => { ); - wrapper.find('button[data-test-subj="editable-title-edit-icon"]').simulate('click'); + wrapper.find('button[data-test-subj="editable-title-header-value"]').simulate('click'); wrapper.update(); - expect(wrapper.find('[data-test-subj="editable-title-submit-btn"]').first().exists()).toBe( - true - ); + expect( + wrapper.find('button[data-test-subj="editable-title-submit-btn"]').first().exists() + ).toBe(true); }); it('shows the cancel button', () => { @@ -82,27 +84,12 @@ describe('EditableTitle', () => { ); - wrapper.find('button[data-test-subj="editable-title-edit-icon"]').simulate('click'); - wrapper.update(); - - expect(wrapper.find('[data-test-subj="editable-title-cancel-btn"]').first().exists()).toBe( - true - ); - }); - - it('DOES NOT shows the edit icon when in edit mode', () => { - const wrapper = mount( - - - - ); - - wrapper.find('button[data-test-subj="editable-title-edit-icon"]').simulate('click'); + wrapper.find('button[data-test-subj="editable-title-header-value"]').simulate('click'); wrapper.update(); - expect(wrapper.find('[data-test-subj="editable-title-edit-icon"]').first().exists()).toBe( - false - ); + expect( + wrapper.find('button[data-test-subj="editable-title-cancel-btn"]').first().exists() + ).toBe(true); }); it('switch to non edit mode when canceled', () => { @@ -112,11 +99,13 @@ describe('EditableTitle', () => { ); - wrapper.find('button[data-test-subj="editable-title-edit-icon"]').simulate('click'); + wrapper.find('button[data-test-subj="editable-title-header-value"]').simulate('click'); wrapper.update(); wrapper.find('button[data-test-subj="editable-title-cancel-btn"]').simulate('click'); - expect(wrapper.find('[data-test-subj="editable-title-edit-icon"]').first().exists()).toBe(true); + expect( + wrapper.find('button[data-test-subj="editable-title-header-value"]').first().exists() + ).toBe(true); }); it('should change the title', () => { @@ -128,7 +117,7 @@ describe('EditableTitle', () => { ); - wrapper.find('button[data-test-subj="editable-title-edit-icon"]').simulate('click'); + wrapper.find('button[data-test-subj="editable-title-header-value"]').simulate('click'); wrapper.update(); wrapper @@ -152,18 +141,21 @@ describe('EditableTitle', () => { ); - wrapper.find('button[data-test-subj="editable-title-edit-icon"]').simulate('click'); + wrapper.find('button[data-test-subj="editable-title-header-value"]').simulate('click'); wrapper.update(); wrapper .find('input[data-test-subj="editable-title-input-field"]') + .simulate('change', { target: { value: newTitle } }); wrapper.update(); wrapper.find('button[data-test-subj="editable-title-cancel-btn"]').simulate('click'); wrapper.update(); - expect(wrapper.find('h1[data-test-subj="header-page-title"]').text()).toEqual(title); + expect(wrapper.find('button[data-test-subj="editable-title-header-value"]').text()).toEqual( + title + ); }); it('submits the title', () => { @@ -175,11 +167,12 @@ describe('EditableTitle', () => { ); - wrapper.find('button[data-test-subj="editable-title-edit-icon"]').simulate('click'); + wrapper.find('button[data-test-subj="editable-title-header-value"]').simulate('click'); wrapper.update(); wrapper .find('input[data-test-subj="editable-title-input-field"]') + .last() .simulate('change', { target: { value: newTitle } }); wrapper.find('button[data-test-subj="editable-title-submit-btn"]').simulate('click'); @@ -187,7 +180,9 @@ describe('EditableTitle', () => { expect(submitTitle).toHaveBeenCalled(); expect(submitTitle.mock.calls[0][0]).toEqual(newTitle); - expect(wrapper.find('[data-test-subj="editable-title-edit-icon"]').first().exists()).toBe(true); + expect( + wrapper.find('button[data-test-subj="editable-title-header-value"]').first().exists() + ).toBe(true); }); it('does not submit the title when the length is longer than 160 characters', () => { @@ -199,7 +194,7 @@ describe('EditableTitle', () => { ); - wrapper.find('button[data-test-subj="editable-title-edit-icon"]').simulate('click'); + wrapper.find('button[data-test-subj="editable-title-header-value"]').simulate('click'); wrapper.update(); wrapper @@ -213,9 +208,9 @@ describe('EditableTitle', () => { ); expect(submitTitle).not.toHaveBeenCalled(); - expect(wrapper.find('[data-test-subj="editable-title-edit-icon"]').first().exists()).toBe( - false - ); + expect( + wrapper.find('button[data-test-subj="editable-title-header-value"]').first().exists() + ).toBe(false); }); it('does not submit the title is empty', () => { @@ -225,11 +220,12 @@ describe('EditableTitle', () => { ); - wrapper.find('button[data-test-subj="editable-title-edit-icon"]').simulate('click'); + wrapper.find('button[data-test-subj="editable-title-header-value"]').simulate('click'); wrapper.update(); wrapper .find('input[data-test-subj="editable-title-input-field"]') + .simulate('change', { target: { value: '' } }); wrapper.find('button[data-test-subj="editable-title-submit-btn"]').simulate('click'); @@ -237,9 +233,9 @@ describe('EditableTitle', () => { expect(wrapper.find('.euiFormErrorText').text()).toBe('A name is required.'); expect(submitTitle).not.toHaveBeenCalled(); - expect(wrapper.find('[data-test-subj="editable-title-edit-icon"]').first().exists()).toBe( - false - ); + expect( + wrapper.find('button[data-test-subj="editable-title-header-value"]').first().exists() + ).toBe(false); }); it('does not show an error after a previous edit error was displayed', () => { @@ -252,7 +248,7 @@ describe('EditableTitle', () => { ); - wrapper.find('button[data-test-subj="editable-title-edit-icon"]').simulate('click'); + wrapper.find('button[data-test-subj="editable-title-header-value"]').simulate('click'); wrapper.update(); // simualte a long title @@ -269,6 +265,7 @@ describe('EditableTitle', () => { // write a shorter one wrapper .find('input[data-test-subj="editable-title-input-field"]') + .simulate('change', { target: { value: shortTitle } }); wrapper.update(); @@ -277,7 +274,7 @@ describe('EditableTitle', () => { wrapper.update(); // edit again - wrapper.find('button[data-test-subj="editable-title-edit-icon"]').simulate('click'); + wrapper.find('button[data-test-subj="editable-title-header-value"]').simulate('click'); wrapper.update(); // no error should appear diff --git a/x-pack/plugins/cases/public/components/header_page/editable_title.tsx b/x-pack/plugins/cases/public/components/header_page/editable_title.tsx index fdf5b09ca3c64d..9ddb6978c35cd9 100644 --- a/x-pack/plugins/cases/public/components/header_page/editable_title.tsx +++ b/x-pack/plugins/cases/public/components/header_page/editable_title.tsx @@ -5,38 +5,15 @@ * 2.0. */ -import type { ChangeEvent } from 'react'; import React, { useState, useCallback } from 'react'; -import styled, { css } from 'styled-components'; -import { - EuiButton, - EuiButtonEmpty, - EuiFlexGroup, - EuiFlexItem, - EuiFieldText, - EuiButtonIcon, - EuiLoadingSpinner, - EuiFormRow, -} from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiInlineEditTitle } from '@elastic/eui'; import { MAX_TITLE_LENGTH } from '../../../common/constants'; import * as i18n from './translations'; -import { Title } from './title'; +import { TitleExperimentalBadge, TitleBetaBadge } from './title'; import { useCasesContext } from '../cases_context/use_cases_context'; -const MyEuiButtonIcon = styled(EuiButtonIcon)` - ${({ theme }) => css` - margin-left: ${theme.eui.euiSize}; - `} -`; - -const MySpinner = styled(EuiLoadingSpinner)` - ${({ theme }) => css` - margin-left: ${theme.eui.euiSize}; - `} -`; - export interface EditableTitleProps { isLoading: boolean; title: string; @@ -47,92 +24,81 @@ const EditableTitleComponent: React.FC = ({ onSubmit, isLoad const { releasePhase, permissions } = useCasesContext(); const [editMode, setEditMode] = useState(false); const [errors, setErrors] = useState([]); - const [newTitle, setNewTitle] = useState(title); - const onCancel = useCallback(() => { - setEditMode(false); - setErrors([]); - setNewTitle(title); - }, [title]); + const onClickSubmit = useCallback( + (newTitleValue: string): boolean => { + if (!newTitleValue.trim().length) { + setErrors([i18n.TITLE_REQUIRED]); + return false; + } - const onClickEditIcon = useCallback(() => setEditMode(true), []); - const onClickSubmit = useCallback((): void => { - if (!newTitle.trim().length) { - setErrors([i18n.TITLE_REQUIRED]); - return; - } + if (newTitleValue.trim().length > MAX_TITLE_LENGTH) { + setErrors([i18n.MAX_LENGTH_ERROR('title', MAX_TITLE_LENGTH)]); + return false; + } - if (newTitle.trim().length > MAX_TITLE_LENGTH) { - setErrors([i18n.MAX_LENGTH_ERROR('title', MAX_TITLE_LENGTH)]); - return; - } + if (newTitleValue !== title) { + onSubmit(newTitleValue.trim()); + } + setEditMode(false); + setErrors([]); - if (newTitle !== title) { - onSubmit(newTitle); - } - setEditMode(false); - setErrors([]); - }, [newTitle, onSubmit, title]); + return true; + }, + [onSubmit, title] + ); - const handleOnChange = useCallback((e: ChangeEvent) => { - setNewTitle(e.target.value); + const onCancel = () => { setErrors([]); - }, []); + setEditMode(false); + }; const hasErrors = errors.length > 0; - return editMode ? ( - - - - - - - - {i18n.SAVE} - - - - - {i18n.CANCEL} - - - - - ) : ( - - {isLoading && <MySpinner data-test-subj="editable-title-loading" />} - {!isLoading && permissions.update && ( - <MyEuiButtonIcon - aria-label={i18n.EDIT_TITLE_ARIA(title as string)} - iconType="pencil" - onClick={onClickEditIcon} - data-test-subj="editable-title-edit-icon" + return ( + <EuiFlexGroup> + <EuiFlexItem grow={true} css={releasePhase && { overflow: 'hidden' }}> + <EuiInlineEditTitle + defaultValue={title} + readModeProps={{ + onClick: () => setEditMode(true), + 'data-test-subj': 'editable-title-header-value', + }} + editModeProps={{ + formRowProps: { error: errors }, + inputProps: { + 'data-test-subj': 'editable-title-input-field', + onChange: () => { + setErrors([]); + }, + }, + saveButtonProps: { + 'data-test-subj': 'editable-title-submit-btn', + isDisabled: hasErrors, + }, + cancelButtonProps: { + onClick: () => onCancel(), + 'data-test-subj': 'editable-title-cancel-btn', + }, + }} + inputAriaLabel="Editable title input field" + heading="h1" + size="s" + isInvalid={hasErrors} + isLoading={isLoading} + isReadOnly={!permissions.update} + onSave={(value) => { + return onClickSubmit(value); + }} + startWithEditOpen={editMode} + data-test-subj="header-page-title" /> - )} - +
+ + {releasePhase === 'experimental' && } + {releasePhase === 'beta' && } + + ); }; EditableTitleComponent.displayName = 'EditableTitle'; diff --git a/x-pack/plugins/cases/public/components/header_page/index.tsx b/x-pack/plugins/cases/public/components/header_page/index.tsx index 9d267d30b0dfa7..c820de4b25fc1e 100644 --- a/x-pack/plugins/cases/public/components/header_page/index.tsx +++ b/x-pack/plugins/cases/public/components/header_page/index.tsx @@ -87,7 +87,7 @@ const HeaderPageComponent: React.FC = ({ return (
- + {showBackButton && ( ( ); ExperimentalBadge.displayName = 'ExperimentalBadge'; +export const TitleExperimentalBadge = React.memo(ExperimentalBadge); const BetaBadge: React.FC = () => ( ); BetaBadge.displayName = 'BetaBadge'; +export const TitleBetaBadge = React.memo(BetaBadge); const TitleComponent: React.FC = ({ title, releasePhase, children }) => ( diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credential_form.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credential_form.tsx index eeafb3cc40e005..ea192309310e35 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credential_form.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/gcp_credential_form.tsx @@ -4,7 +4,10 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import React, { useEffect, useState } from 'react'; +import React, { useEffect } from 'react'; +import semverLt from 'semver/functions/lt'; +import semverCoerce from 'semver/functions/coerce'; +import semverValid from 'semver/functions/valid'; import { EuiFieldText, EuiFormRow, @@ -25,6 +28,12 @@ import { RadioGroup } from './csp_boxed_radio_group'; import { getPosturePolicy, NewPackagePolicyPostureInput } from './utils'; import { MIN_VERSION_GCP_CIS } from '../../common/constants'; +export const CIS_GCP_INPUT_FIELDS_TEST_SUBJECTS = { + PROJECT_ID: 'project_id_test_id', + CREDENTIALS_TYPE: 'credentials_type_test_id', + CREDENTIALS_FILE: 'credentials_file_test_id', + CREDENTIALS_JSON: 'credentials_json_test_id', +}; type SetupFormatGCP = 'google_cloud_shell' | 'manual'; const GCPSetupInfoContent = () => ( <> @@ -49,7 +58,7 @@ const GCPSetupInfoContent = () => ( ); -/* NEED TO FIND THE REAL URL HERE LATER*/ +/* NEED TO FIND THE REAL URL HERE LATER */ const DocsLink = ( ); -const CredentialFileText = i18n.translate( - 'xpack.csp.findings.gcpIntegration.gcpInputText.credentialFileText', - { defaultMessage: 'Path to JSON file containing the credentials and key used to subscribe' } -); -const CredentialJSONText = i18n.translate( - 'xpack.csp.findings.gcpIntegration.gcpInputText.credentialJSONText', - { defaultMessage: 'JSON blob containing the credentials and key used to subscribe' } -); - type GcpCredentialsType = 'credentials_file' | 'credentials_json'; type GcpFields = Record; interface GcpInputFields { @@ -90,32 +90,39 @@ const gcpField: GcpInputFields = { type: 'text', }, credentials_file: { - label: i18n.translate('xpack.csp.gcpIntegration.credentialsFileFieldLabel', { - defaultMessage: 'Credentials File', + label: i18n.translate('xpack.csp.findings.gcpIntegration.gcpInputText.credentialFileText', { + defaultMessage: 'Path to JSON file containing the credentials and key used to subscribe', }), type: 'text', }, credentials_json: { - label: i18n.translate('xpack.csp.gcpIntegration.credentialsJSONFieldLabel', { - defaultMessage: 'Credentials JSON', + label: i18n.translate('xpack.csp.findings.gcpIntegration.gcpInputText.credentialJSONText', { + defaultMessage: 'JSON blob containing the credentials and key used to subscribe', }), type: 'text', }, + credentials_type: { + label: i18n.translate( + 'xpack.csp.findings.gcpIntegration.gcpInputText.credentialSelectBoxTitle', + { defaultMessage: 'Credential' } + ), + type: 'text', + }, }, }; const credentialOptionsList = [ { - label: i18n.translate('xpack.csp.gcpIntegration.credentialsFileOption', { + text: i18n.translate('xpack.csp.gcpIntegration.credentialsFileOption', { defaultMessage: 'Credentials File', }), - text: 'Credentials File', + value: 'credentials-file', }, { - label: i18n.translate('xpack.csp.gcpIntegration.credentialsjsonOption', { + text: i18n.translate('xpack.csp.gcpIntegration.credentialsJsonOption', { defaultMessage: 'Credentials JSON', }), - text: 'Credentials JSON', + value: 'credentials-json', }, ]; @@ -140,7 +147,7 @@ const getSetupFormatOptions = (): Array<{ }, ]; -interface Props { +interface GcpFormProps { newPolicy: NewPackagePolicy; input: Extract< NewPackagePolicyPostureInput, @@ -175,12 +182,12 @@ export const GcpCredentialsForm = ({ packageInfo, setIsValid, onChange, -}: Props) => { +}: GcpFormProps) => { const fields = getInputVarsFields(input, gcpField.fields); - + const validSemantic = semverValid(packageInfo.version); + const integrationVersionNumberOnly = semverCoerce(validSemantic) || ''; + const isInvalid = semverLt(integrationVersionNumberOnly, MIN_VERSION_GCP_CIS); useEffect(() => { - const isInvalid = packageInfo.version < MIN_VERSION_GCP_CIS; - setIsValid(!isInvalid); onChange({ @@ -190,7 +197,7 @@ export const GcpCredentialsForm = ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [input, packageInfo]); - if (packageInfo.version < MIN_VERSION_GCP_CIS) { + if (isInvalid) { return ( <> @@ -240,52 +247,64 @@ const GcpInputVarFields = ({ fields: Array; onChange: (key: string, value: string) => void; }) => { - const [credentialOption, setCredentialOption] = useState('Credentials File'); - const targetFieldName = (id: string) => { + const getFieldById = (id: keyof GcpInputFields['fields']) => { return fields.find((element) => element.id === id); }; + const projectIdFields = getFieldById('project_id'); + const credentialsTypeFields = getFieldById('credentials_type') || credentialOptionsList[0]; + const credentialFilesFields = getFieldById('credentials_file'); + const credentialJSONFields = getFieldById('credentials_json'); + + const credentialFieldValue = credentialOptionsList[0].value; + const credentialJSONValue = credentialOptionsList[1].value; + return (
- - onChange(targetFieldName('project_id')!.id, event.target.value)} - /> - - - { - setCredentialOption(optionElem.target.value); - }} - /> - - {credentialOption === 'Credentials File' && ( - + {projectIdFields && ( + + onChange(projectIdFields.id, event.target.value)} + /> + + )} + {credentialFilesFields && credentialJSONFields && ( + + { + onChange('credentials_type', optionElem.target.value); + }} + /> + + )} + + {credentialsTypeFields.value === credentialFieldValue && credentialFilesFields && ( + - onChange(targetFieldName('credentials_file')!.id, event.target.value) - } + value={credentialFilesFields.value || ''} + onChange={(event) => onChange(credentialFilesFields.id, event.target.value)} /> )} - {credentialOption === 'Credentials JSON' && ( - + {credentialsTypeFields?.value === credentialJSONValue && credentialJSONFields && ( + - onChange(targetFieldName('credentials_json')!.id, event.target.value) - } + value={credentialJSONFields.value || ''} + onChange={(event) => onChange(credentialJSONFields.id, event.target.value)} /> )} diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/mocks.ts b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/mocks.ts index ce14f80b3d9650..6d8b8b648bf20d 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/mocks.ts +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/mocks.ts @@ -18,6 +18,7 @@ import { import type { PostureInput } from '../../../common/types'; export const getMockPolicyAWS = () => getPolicyMock(CLOUDBEAT_AWS, 'cspm', 'aws'); +export const getMockPolicyGCP = () => getPolicyMock(CLOUDBEAT_GCP, 'cspm', 'gcp'); export const getMockPolicyK8s = () => getPolicyMock(CLOUDBEAT_VANILLA, 'kspm', 'self_managed'); export const getMockPolicyEKS = () => getPolicyMock(CLOUDBEAT_EKS, 'kspm', 'eks'); export const getMockPolicyVulnMgmtAWS = () => @@ -79,6 +80,28 @@ export const getMockPackageInfoCspmAWS = (packageVersion = '1.5.0') => { } as PackageInfo; }; +export const getMockPackageInfoCspmGCP = (packageVersion = '1.5.0') => { + return { + version: packageVersion, + name: 'cspm', + policy_templates: [ + { + title: '', + description: '', + name: 'cspm', + inputs: [ + { + type: CLOUDBEAT_GCP, + title: 'GCP', + description: '', + vars: [{}], + }, + ], + }, + ], + } as PackageInfo; +}; + const getPolicyMock = ( type: PostureInput, posture: string, @@ -106,6 +129,12 @@ const getPolicyMock = ( 'aws.credentials.type': { value: 'assume_role', type: 'text' }, }; + const gcpVarsMock = { + project_id: { type: 'text' }, + credentials_file: { type: 'text' }, + credentials_json: { type: 'text' }, + }; + const dataStream = { type: 'logs', dataset: 'cloud_security_posture.findings' }; return { @@ -145,8 +174,8 @@ const getPolicyMock = ( { type: CLOUDBEAT_GCP, policy_template: 'cspm', - enabled: false, - streams: [{ enabled: false, data_stream: dataStream }], + enabled: type === CLOUDBEAT_GCP, + streams: [{ enabled: type === CLOUDBEAT_GCP, data_stream: dataStream, vars: gcpVarsMock }], }, { type: CLOUDBEAT_AZURE, diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx index aa1a26fbeea7f2..808a3164fb41cc 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx @@ -14,9 +14,11 @@ import { import { TestProvider } from '../../test/test_provider'; import { getMockPackageInfoCspmAWS, + getMockPackageInfoCspmGCP, getMockPackageInfoVulnMgmtAWS, getMockPolicyAWS, getMockPolicyEKS, + getMockPolicyGCP, getMockPolicyK8s, getMockPolicyVulnMgmtAWS, } from './mocks'; @@ -28,11 +30,12 @@ import type { } from '@kbn/fleet-plugin/common'; import userEvent from '@testing-library/user-event'; import { getPosturePolicy } from './utils'; -import { CLOUDBEAT_AWS, CLOUDBEAT_EKS } from '../../../common/constants'; +import { CLOUDBEAT_AWS, CLOUDBEAT_EKS, CLOUDBEAT_GCP } from '../../../common/constants'; import { useParams } from 'react-router-dom'; import { createReactQueryResponse } from '../../test/fixtures/react_query'; import { useCspSetupStatusApi } from '../../common/api/use_setup_status_api'; import { usePackagePolicyList } from '../../common/api/use_package_policy_list'; +import { CIS_GCP_INPUT_FIELDS_TEST_SUBJECTS } from './gcp_credential_form'; // mock useParams jest.mock('react-router-dom', () => ({ @@ -974,4 +977,132 @@ describe('', () => { }); }); }); + + describe('GCP Credentials input fields', () => { + it(`renders ${CLOUDBEAT_GCP} Not supported when version is not at least version 1.5.0`, () => { + let policy = getMockPolicyGCP(); + policy = getPosturePolicy(policy, CLOUDBEAT_GCP, { + credentials_type: { value: 'credentials-file' }, + }); + + const { getByText } = render( + + ); + + expect(onChange).toHaveBeenCalledWith({ + isValid: false, + updatedPolicy: policy, + }); + + expect( + getByText( + 'CIS GCP is not supported on the current Integration version, please upgrade your integration to the latest version to use CIS GCP' + ) + ).toBeInTheDocument(); + }); + + it(`renders ${CLOUDBEAT_GCP} Credentials File fields`, () => { + let policy = getMockPolicyGCP(); + policy = getPosturePolicy(policy, CLOUDBEAT_GCP, { + credentials_type: { value: 'credentials-file' }, + }); + + const { getByLabelText, getByRole } = render( + + ); + + expect(getByRole('option', { name: 'Credentials File', selected: true })).toBeInTheDocument(); + + expect( + getByLabelText('Path to JSON file containing the credentials and key used to subscribe') + ).toBeInTheDocument(); + }); + + it(`updates ${CLOUDBEAT_GCP} Credentials File fields`, () => { + let policy = getMockPolicyGCP(); + policy = getPosturePolicy(policy, CLOUDBEAT_GCP, { + credentials_type: { value: 'credentials-file' }, + }); + + const { rerender, getByTestId } = render( + + ); + + userEvent.type(getByTestId(CIS_GCP_INPUT_FIELDS_TEST_SUBJECTS.PROJECT_ID), 'a'); + + policy = getPosturePolicy(policy, CLOUDBEAT_GCP, { + project_id: { value: 'a' }, + }); + + expect(onChange).toHaveBeenCalledWith({ + isValid: true, + updatedPolicy: policy, + }); + + rerender(); + + userEvent.type(getByTestId(CIS_GCP_INPUT_FIELDS_TEST_SUBJECTS.CREDENTIALS_FILE), 'b'); + + policy = getPosturePolicy(policy, CLOUDBEAT_GCP, { + credentials_file: { value: 'b' }, + }); + + expect(onChange).toHaveBeenNthCalledWith(5, { + isValid: true, + updatedPolicy: policy, + }); + }); + + it(`renders ${CLOUDBEAT_GCP} Credentials JSON fields`, () => { + let policy = getMockPolicyGCP(); + policy = getPosturePolicy(policy, CLOUDBEAT_GCP, { + credentials_type: { value: 'credentials-json' }, + }); + + const { getByLabelText, getByRole } = render( + + ); + + expect(getByRole('option', { name: 'Credentials JSON', selected: true })).toBeInTheDocument(); + + expect( + getByLabelText('JSON blob containing the credentials and key used to subscribe') + ).toBeInTheDocument(); + }); + + it(`updates ${CLOUDBEAT_GCP} Credentials JSON fields`, () => { + let policy = getMockPolicyGCP(); + policy = getPosturePolicy(policy, CLOUDBEAT_GCP, { + credentials_type: { value: 'credentials-json' }, + }); + + const { rerender, getByTestId } = render( + + ); + + userEvent.type(getByTestId(CIS_GCP_INPUT_FIELDS_TEST_SUBJECTS.PROJECT_ID), 'a'); + + policy = getPosturePolicy(policy, CLOUDBEAT_GCP, { + project_id: { value: 'a' }, + }); + + expect(onChange).toHaveBeenCalledWith({ + isValid: true, + updatedPolicy: policy, + }); + + rerender(); + + userEvent.type(getByTestId(CIS_GCP_INPUT_FIELDS_TEST_SUBJECTS.CREDENTIALS_JSON), 'b'); + + policy = getPosturePolicy(policy, CLOUDBEAT_GCP, { + credentials_json: { value: 'b' }, + }); + + expect(onChange).toHaveBeenNthCalledWith(5, { + isValid: true, + updatedPolicy: policy, + }); + }); + }); }); diff --git a/x-pack/plugins/data_visualizer/common/i18n_constants.ts b/x-pack/plugins/data_visualizer/common/i18n_constants.ts new file mode 100644 index 00000000000000..73a9e05d9ffabd --- /dev/null +++ b/x-pack/plugins/data_visualizer/common/i18n_constants.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; + +export const EXPAND_ROW = i18n.translate('xpack.dataVisualizer.table.expandRowScreenMsg', { + defaultMessage: 'Expand row', +}); + +export const COLLAPSE_ROW = i18n.translate('xpack.dataVisualizer.table.collapseAriaLabel', { + defaultMessage: 'Collapse row', +}); diff --git a/x-pack/plugins/data_visualizer/public/api/index.ts b/x-pack/plugins/data_visualizer/public/api/index.ts index 3b96e4caad3403..a07f4041637b19 100644 --- a/x-pack/plugins/data_visualizer/public/api/index.ts +++ b/x-pack/plugins/data_visualizer/public/api/index.ts @@ -6,7 +6,11 @@ */ import { lazyLoadModules } from '../lazy_load_bundle'; -import type { FileDataVisualizerSpec, IndexDataVisualizerSpec } from '../application'; +import type { + DataComparisonSpec, + FileDataVisualizerSpec, + IndexDataVisualizerSpec, +} from '../application'; export async function getFileDataVisualizerComponent(): Promise<() => FileDataVisualizerSpec> { const modules = await lazyLoadModules(); @@ -17,3 +21,8 @@ export async function getIndexDataVisualizerComponent(): Promise<() => IndexData const modules = await lazyLoadModules(); return () => modules.IndexDataVisualizer; } + +export async function getDataComparisonComponent(): Promise<() => DataComparisonSpec> { + const modules = await lazyLoadModules(); + return () => modules.DataComparison; +} diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/document_count_content/document_count_content.tsx b/x-pack/plugins/data_visualizer/public/application/common/components/document_count_content/document_count_content.tsx index cb4f55b49cb41f..911a6ba9ea7318 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/document_count_content/document_count_content.tsx +++ b/x-pack/plugins/data_visualizer/public/application/common/components/document_count_content/document_count_content.tsx @@ -20,7 +20,6 @@ import { } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { isDefined } from '@kbn/ml-is-defined'; import type { DocumentCountChartPoint } from './document_count_chart'; import { RandomSamplerOption, @@ -30,7 +29,8 @@ import { import { TotalCountHeader } from './total_count_header'; import type { DocumentCountStats } from '../../../../../common/types/field_stats'; import { DocumentCountChart } from './document_count_chart'; -import { RandomSamplerRangeSlider } from './random_sampler_range_slider'; +import { RandomSamplerRangeSlider } from '../random_sampling_menu/random_sampler_range_slider'; +import { ProbabilityUsedMessage } from '../random_sampling_menu/probability_used'; export interface Props { documentCountStats?: DocumentCountStats; @@ -42,20 +42,6 @@ export interface Props { loading: boolean; } -const ProbabilityUsedMessage = ({ samplingProbability }: Pick) => { - return isDefined(samplingProbability) ? ( -
- - - -
- ) : null; -}; - const CalculatingProbabilityMessage = (
diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/random_sampling_menu/probability_used.tsx b/x-pack/plugins/data_visualizer/public/application/common/components/random_sampling_menu/probability_used.tsx new file mode 100644 index 00000000000000..e36b59791a2d90 --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/common/components/random_sampling_menu/probability_used.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 { isDefined } from '@kbn/ml-is-defined'; +import { EuiSpacer } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import React from 'react'; +import { Props } from '../document_count_content/document_count_content'; + +export const ProbabilityUsedMessage = ({ + samplingProbability, +}: Pick) => { + return isDefined(samplingProbability) ? ( +
+ + + +
+ ) : null; +}; diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/document_count_content/random_sampler_range_slider.tsx b/x-pack/plugins/data_visualizer/public/application/common/components/random_sampling_menu/random_sampler_range_slider.tsx similarity index 100% rename from x-pack/plugins/data_visualizer/public/application/common/components/document_count_content/random_sampler_range_slider.tsx rename to x-pack/plugins/data_visualizer/public/application/common/components/random_sampling_menu/random_sampler_range_slider.tsx index 1ccf5b16c411e3..926dd0ed80af15 100644 --- a/x-pack/plugins/data_visualizer/public/application/common/components/document_count_content/random_sampler_range_slider.tsx +++ b/x-pack/plugins/data_visualizer/public/application/common/components/random_sampling_menu/random_sampler_range_slider.tsx @@ -5,12 +5,12 @@ * 2.0. */ +import React, { useState } from 'react'; +import { isDefined } from '@kbn/ml-is-defined'; import { EuiButton, EuiFlexItem, EuiFormRow, EuiRange, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { isDefined } from '@kbn/ml-is-defined'; -import { FormattedMessage } from '@kbn/i18n-react'; -import React, { useState } from 'react'; import { roundToDecimalPlace } from '@kbn/ml-number-utils'; +import { FormattedMessage } from '@kbn/i18n-react'; import { MIN_SAMPLER_PROBABILITY, RANDOM_SAMPLER_PROBABILITIES, diff --git a/x-pack/plugins/data_visualizer/public/application/common/components/random_sampling_menu/random_sampling_menu.tsx b/x-pack/plugins/data_visualizer/public/application/common/components/random_sampling_menu/random_sampling_menu.tsx new file mode 100644 index 00000000000000..41b0413662012c --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/common/components/random_sampling_menu/random_sampling_menu.tsx @@ -0,0 +1,184 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FC, useCallback, useMemo, useState } from 'react'; +import useObservable from 'react-use/lib/useObservable'; +import { i18n } from '@kbn/i18n'; +import { + EuiButtonEmpty, + EuiCallOut, + EuiFlexItem, + EuiFormRow, + EuiPanel, + EuiPopover, + EuiSelect, + EuiSpacer, +} from '@elastic/eui'; +import { RandomSampler } from '@kbn/ml-random-sampler-utils'; +import { RandomSamplerRangeSlider } from './random_sampler_range_slider'; +import { + MIN_SAMPLER_PROBABILITY, + RANDOM_SAMPLER_OPTION, + RANDOM_SAMPLER_SELECT_OPTIONS, + RandomSamplerOption, +} from '../../../index_data_visualizer/constants/random_sampler'; +import { ProbabilityUsedMessage } from './probability_used'; + +interface Props { + randomSampler: RandomSampler; + reload: () => void; +} + +export const SamplingMenu: FC = ({ randomSampler, reload }) => { + const [showSamplingOptionsPopover, setShowSamplingOptionsPopover] = useState(false); + + const samplingProbability = useObservable( + randomSampler.getProbability$(), + randomSampler.getProbability() + ); + + const setSamplingProbability = useCallback( + (probability: number | null) => { + randomSampler.setProbability(probability); + reload(); + }, + [reload, randomSampler] + ); + + const randomSamplerPreference = useObservable(randomSampler.getMode$(), randomSampler.getMode()); + + const setRandomSamplerPreference = useCallback( + (nextPref: RandomSamplerOption) => { + if (nextPref === RANDOM_SAMPLER_OPTION.ON_MANUAL) { + // By default, when switching to manual, restore previously chosen probability + // else, default to 0.001% + const savedRandomSamplerProbability = randomSampler.getProbability(); + randomSampler.setProbability( + savedRandomSamplerProbability && + savedRandomSamplerProbability > 0 && + savedRandomSamplerProbability <= 0.5 + ? savedRandomSamplerProbability + : MIN_SAMPLER_PROBABILITY + ); + } + randomSampler.setMode(nextPref); + reload(); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [setSamplingProbability, randomSampler] + ); + + const { calloutInfoMessage, buttonText } = useMemo(() => { + switch (randomSamplerPreference) { + case RANDOM_SAMPLER_OPTION.OFF: + return { + calloutInfoMessage: i18n.translate( + 'xpack.dataVisualizer.randomSamplerSettingsPopUp.offCallout.message', + { + defaultMessage: + 'Random sampling can be turned on to increase the speed of analysis, although some accuracy will be lost.', + } + ), + buttonText: i18n.translate( + 'xpack.dataVisualizer.randomSamplerSettingsPopUp.offCallout.button', + { + defaultMessage: 'No sampling', + } + ), + }; + case RANDOM_SAMPLER_OPTION.ON_AUTOMATIC: + return { + calloutInfoMessage: i18n.translate( + 'xpack.dataVisualizer.randomSamplerSettingsPopUp.onAutomaticCallout.message', + { + defaultMessage: + 'The view will use random sampler aggregations. The probability is automatically set to balance accuracy and speed.', + } + ), + buttonText: i18n.translate( + 'xpack.dataVisualizer.randomSamplerSettingsPopUp.onAutomaticCallout.button', + { + defaultMessage: 'Auto sampling', + } + ), + }; + + case RANDOM_SAMPLER_OPTION.ON_MANUAL: + default: + return { + calloutInfoMessage: i18n.translate( + 'xpack.dataVisualizer.randomSamplerSettingsPopUp.onManualCallout.message', + { + defaultMessage: + 'The view will use random sampler aggregations. A lower percentage probability increases performance, but some accuracy is lost.', + } + ), + buttonText: i18n.translate( + 'xpack.dataVisualizer.randomSamplerSettingsPopUp.onManualCallout.button', + { + defaultMessage: 'Manual sampling', + } + ), + }; + } + }, [randomSamplerPreference]); + + return ( + setShowSamplingOptionsPopover(!showSamplingOptionsPopover)} + iconSide="right" + iconType="arrowDown" + > + {buttonText} + + } + isOpen={showSamplingOptionsPopover} + closePopover={() => setShowSamplingOptionsPopover(false)} + panelPaddingSize="none" + anchorPosition="downLeft" + > + + + + + + + + setRandomSamplerPreference(e.target.value as RandomSamplerOption)} + /> + + + {randomSamplerPreference === RANDOM_SAMPLER_OPTION.ON_MANUAL ? ( + + ) : null} + + {randomSamplerPreference === RANDOM_SAMPLER_OPTION.ON_AUTOMATIC ? ( + + ) : null} + + + ); +}; diff --git a/x-pack/plugins/data_visualizer/public/application/common/hooks/data_source_context.ts b/x-pack/plugins/data_visualizer/public/application/common/hooks/data_source_context.ts new file mode 100644 index 00000000000000..fcb627bf925ba4 --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/common/hooks/data_source_context.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createContext, useContext } from 'react'; +import type { DataView } from '@kbn/data-views-plugin/common'; +import type { SavedSearch } from '@kbn/saved-search-plugin/public'; + +export const DataSourceContext = createContext<{ + dataView: DataView | never; + savedSearch: SavedSearch | null; +}>({ + get dataView(): never { + throw new Error('DataSourceContext is not implemented'); + }, + savedSearch: null, +}); + +export function useDataSource() { + return useContext(DataSourceContext); +} diff --git a/x-pack/plugins/data_visualizer/public/application/common/hooks/use_data.ts b/x-pack/plugins/data_visualizer/public/application/common/hooks/use_data.ts new file mode 100644 index 00000000000000..9e7e3f9633291a --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/common/hooks/use_data.ts @@ -0,0 +1,113 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { DataView } from '@kbn/data-views-plugin/common'; +import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { Dictionary } from '@kbn/ml-url-state'; +import { Moment } from 'moment'; +import { useExecutionContext } from '@kbn/kibana-react-plugin/public'; +import { useEffect, useMemo, useState } from 'react'; +import { mlTimefilterRefresh$, useTimefilter } from '@kbn/ml-date-picker'; +import { merge } from 'rxjs'; +import { RandomSampler } from '@kbn/ml-random-sampler-utils'; +import { + DocumentStatsSearchStrategyParams, + useDocumentCountStats, +} from './use_document_count_stats'; +import { useDataVisualizerKibana } from '../../kibana_context'; +import { useTimeBuckets } from './use_time_buckets'; + +const DEFAULT_BAR_TARGET = 75; + +export const useData = ( + selectedDataView: DataView, + contextId: string, + searchQuery: estypes.QueryDslQueryContainer, + randomSampler: RandomSampler, + onUpdate?: (params: Dictionary) => void, + barTarget: number = DEFAULT_BAR_TARGET, + timeRange?: { min: Moment; max: Moment } +) => { + const { + services: { executionContext }, + } = useDataVisualizerKibana(); + + useExecutionContext(executionContext, { + name: 'data_visualizer', + type: 'application', + id: contextId, + }); + + const [lastRefresh, setLastRefresh] = useState(0); + + const _timeBuckets = useTimeBuckets(); + const timefilter = useTimefilter({ + timeRangeSelector: selectedDataView?.timeFieldName !== undefined, + autoRefreshSelector: true, + }); + + const docCountRequestParams: DocumentStatsSearchStrategyParams | undefined = useMemo(() => { + const timefilterActiveBounds = timeRange ?? timefilter.getActiveBounds(); + if (timefilterActiveBounds !== undefined) { + _timeBuckets.setInterval('auto'); + _timeBuckets.setBounds(timefilterActiveBounds); + _timeBuckets.setBarTarget(barTarget); + return { + earliest: timefilterActiveBounds.min?.valueOf(), + latest: timefilterActiveBounds.max?.valueOf(), + intervalMs: _timeBuckets.getInterval()?.asMilliseconds(), + index: selectedDataView.getIndexPattern(), + searchQuery, + timeFieldName: selectedDataView.timeFieldName, + runtimeFieldMap: selectedDataView.getRuntimeMappings(), + }; + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [lastRefresh, JSON.stringify({ searchQuery, timeRange })]); + + const documentStats = useDocumentCountStats(docCountRequestParams, lastRefresh, randomSampler); + + useEffect(() => { + const timefilterUpdateSubscription = merge( + timefilter.getAutoRefreshFetch$(), + timefilter.getTimeUpdate$(), + mlTimefilterRefresh$ + ).subscribe(() => { + if (onUpdate) { + onUpdate({ + time: timefilter.getTime(), + refreshInterval: timefilter.getRefreshInterval(), + }); + setLastRefresh(Date.now()); + } + }); + + // This listens just for an initial update of the timefilter to be switched on. + const timefilterEnabledSubscription = timefilter.getEnabledUpdated$().subscribe(() => { + if (docCountRequestParams === undefined) { + setLastRefresh(Date.now()); + } + }); + + return () => { + timefilterUpdateSubscription.unsubscribe(); + timefilterEnabledSubscription.unsubscribe(); + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return { + documentStats, + timefilter, + /** Start timestamp filter */ + earliest: docCountRequestParams?.earliest, + /** End timestamp filter */ + latest: docCountRequestParams?.latest, + intervalMs: docCountRequestParams?.intervalMs, + forceRefresh: () => setLastRefresh(Date.now()), + }; +}; diff --git a/x-pack/plugins/data_visualizer/public/application/common/hooks/use_document_count_stats.ts b/x-pack/plugins/data_visualizer/public/application/common/hooks/use_document_count_stats.ts new file mode 100644 index 00000000000000..6514b1f98a2924 --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/common/hooks/use_document_count_stats.ts @@ -0,0 +1,290 @@ +/* + * 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 { useCallback, useEffect, useRef, useState } from 'react'; +import { stringHash } from '@kbn/ml-string-hash'; +import { extractErrorProperties } from '@kbn/ml-error-utils'; +import { Query } from '@kbn/es-query'; +import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { SignificantTerm } from '@kbn/ml-agg-utils'; +import { + createRandomSamplerWrapper, + RandomSampler, + RandomSamplerWrapper, +} from '@kbn/ml-random-sampler-utils'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import { each, get } from 'lodash'; +import { lastValueFrom } from 'rxjs'; +import { buildBaseFilterCriteria } from '@kbn/ml-query-utils'; +import useObservable from 'react-use/lib/useObservable'; +import { useDataVisualizerKibana } from '../../kibana_context'; +import { displayError } from '../util/display_error'; + +export const RANDOM_SAMPLER_SEED = 3867418; + +export interface DocumentStats { + sampleProbability: number; + totalCount: number; + documentCountStats?: DocumentCountStats; + documentCountStatsCompare?: DocumentCountStats; +} + +export interface DocumentCountStats { + interval?: number; + buckets?: { [key: string]: number }; + timeRangeEarliest?: number; + timeRangeLatest?: number; + totalCount: number; +} + +export interface DocumentStatsSearchStrategyParams { + earliest?: number; + latest?: number; + intervalMs?: number; + index: string; + searchQuery: Query['query']; + timeFieldName?: string; + runtimeFieldMap?: estypes.MappingRuntimeFields; + fieldsToFetch?: string[]; + selectedSignificantTerm?: SignificantTerm; + includeSelectedSignificantTerm?: boolean; + trackTotalHits?: boolean; +} + +export const getDocumentCountStatsRequest = ( + params: DocumentStatsSearchStrategyParams, + randomSamplerWrapper?: RandomSamplerWrapper, + skipAggs = false +) => { + const { + index, + timeFieldName, + earliest: earliestMs, + latest: latestMs, + runtimeFieldMap, + searchQuery, + intervalMs, + fieldsToFetch, + trackTotalHits, + } = params; + + const size = 0; + const filterCriteria = buildBaseFilterCriteria(timeFieldName, earliestMs, latestMs, searchQuery); + + const rawAggs: Record = { + eventRate: { + date_histogram: { + field: timeFieldName, + fixed_interval: `${intervalMs}ms`, + min_doc_count: 0, + ...(earliestMs !== undefined && latestMs !== undefined + ? { + extended_bounds: { + min: earliestMs, + max: latestMs, + }, + } + : {}), + }, + }, + }; + + const aggs = randomSamplerWrapper ? randomSamplerWrapper.wrap(rawAggs) : rawAggs; + + const searchBody = { + query: { + bool: { + filter: filterCriteria, + }, + }, + ...(!fieldsToFetch && + !skipAggs && + timeFieldName !== undefined && + intervalMs !== undefined && + intervalMs > 0 + ? { aggs } + : {}), + ...(isPopulatedObject(runtimeFieldMap) ? { runtime_mappings: runtimeFieldMap } : {}), + track_total_hits: trackTotalHits === true, + size, + }; + return { + index, + body: searchBody, + }; +}; + +export const processDocumentCountStats = ( + body: estypes.SearchResponse | undefined, + params: DocumentStatsSearchStrategyParams, + randomSamplerWrapper?: RandomSamplerWrapper +): DocumentCountStats | undefined => { + if (!body) return undefined; + + const totalCount = (body.hits.total as estypes.SearchTotalHits).value ?? body.hits.total ?? 0; + + if ( + params.intervalMs === undefined || + params.earliest === undefined || + params.latest === undefined + ) { + return { + totalCount, + }; + } + const buckets: { [key: string]: number } = {}; + const dataByTimeBucket: Array<{ key: string; doc_count: number }> = get( + randomSamplerWrapper && body.aggregations !== undefined + ? randomSamplerWrapper.unwrap(body.aggregations) + : body.aggregations, + ['eventRate', 'buckets'], + [] + ); + each(dataByTimeBucket, (dataForTime) => { + const time = dataForTime.key; + buckets[time] = dataForTime.doc_count; + }); + + return { + interval: params.intervalMs, + buckets, + timeRangeEarliest: params.earliest, + timeRangeLatest: params.latest, + totalCount, + }; +}; + +export interface DocumentStatsSearchStrategyParams { + earliest?: number; + latest?: number; + intervalMs?: number; + index: string; + searchQuery: Query['query']; + timeFieldName?: string; + runtimeFieldMap?: estypes.MappingRuntimeFields; + fieldsToFetch?: string[]; + selectedSignificantTerm?: SignificantTerm; + includeSelectedSignificantTerm?: boolean; + trackTotalHits?: boolean; +} + +export function useDocumentCountStats( + searchParams: TParams | undefined, + lastRefresh: number, + randomSampler: RandomSampler +): DocumentStats { + const { + data, + notifications: { toasts }, + } = useDataVisualizerKibana().services; + + const abortCtrl = useRef(new AbortController()); + + const [documentStats, setDocumentStats] = useState({ + sampleProbability: 1, + totalCount: 0, + }); + + const [documentStatsCache, setDocumentStatsCache] = useState>({}); + const samplingProbability = useObservable( + randomSampler.getProbability$(), + randomSampler.getProbability() + ); + + const fetchDocumentCountData = useCallback(async () => { + if (!searchParams) return; + + const cacheKey = stringHash( + `${JSON.stringify(searchParams)}-${randomSampler.getProbability()}` + ); + + if (documentStatsCache[cacheKey]) { + setDocumentStats(documentStatsCache[cacheKey]); + return; + } + + try { + abortCtrl.current = new AbortController(); + + const totalHitsParams = { + ...searchParams, + selectedSignificantTerm: undefined, + trackTotalHits: true, + }; + + const totalHitsResp = await lastValueFrom( + data.search.search( + { + params: getDocumentCountStatsRequest(totalHitsParams, undefined, true), + }, + { abortSignal: abortCtrl.current.signal } + ) + ); + const totalHitsStats = processDocumentCountStats(totalHitsResp?.rawResponse, searchParams); + const totalCount = totalHitsStats?.totalCount ?? 0; + + if (randomSampler) { + randomSampler.setDocCount(totalCount); + } + const randomSamplerWrapper = randomSampler + ? randomSampler.createRandomSamplerWrapper() + : createRandomSamplerWrapper({ + totalNumDocs: totalCount, + seed: RANDOM_SAMPLER_SEED, + }); + const resp = await lastValueFrom( + data.search.search( + { + params: getDocumentCountStatsRequest( + { ...searchParams, trackTotalHits: false }, + randomSamplerWrapper + ), + }, + { abortSignal: abortCtrl.current.signal } + ) + ); + + const documentCountStats = processDocumentCountStats( + resp?.rawResponse, + searchParams, + randomSamplerWrapper + ); + + const newStats: DocumentStats = { + sampleProbability: randomSamplerWrapper.probability, + documentCountStats, + totalCount, + }; + + setDocumentStatsCache({ + ...documentStatsCache, + [cacheKey]: newStats, + }); + } catch (error) { + // An `AbortError` gets triggered when a user cancels a request by navigating away, we need to ignore these errors. + if (error.name !== 'AbortError') { + displayError(toasts, searchParams!.index, extractErrorProperties(error)); + } + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [data?.search, documentStatsCache, searchParams, toasts, samplingProbability]); + + useEffect( + function getDocumentCountData() { + fetchDocumentCountData(); + return () => abortCtrl.current.abort(); + }, + [fetchDocumentCountData, lastRefresh, samplingProbability] + ); + + // Clear the document count stats cache when the outer page (date picker/search bar) triggers a refresh. + useEffect(() => { + setDocumentStatsCache({}); + }, [lastRefresh]); + + return documentStats; +} diff --git a/x-pack/plugins/data_visualizer/public/application/common/hooks/use_search.ts b/x-pack/plugins/data_visualizer/public/application/common/hooks/use_search.ts new file mode 100644 index 00000000000000..0dc825dd295f89 --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/common/hooks/use_search.ts @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { DataView } from '@kbn/data-views-plugin/public'; +import type { SavedSearch } from '@kbn/saved-search-plugin/public'; + +import { useEffect } from 'react'; +import { FilterStateStore } from '@kbn/es-query'; +import { getEsQueryFromSavedSearch } from '../../index_data_visualizer/utils/saved_search_utils'; +import { useDataVisualizerKibana } from '../../kibana_context'; +import type { BasicAppState } from '../../data_comparison/types'; + +export const useSearch = ( + { dataView, savedSearch }: { dataView: DataView; savedSearch: SavedSearch | null | undefined }, + appState: BasicAppState, + readOnly: boolean = false +) => { + const { + uiSettings, + data: { + query: { filterManager }, + }, + } = useDataVisualizerKibana().services; + + useEffect( + function clearFiltersOnLeave() { + return () => { + // We want to clear all filters that have not been pinned globally + // when navigating to other pages + filterManager + .getFilters() + .filter((f) => f.$state?.store === FilterStateStore.APP_STATE) + .forEach((f) => filterManager.removeFilter(f)); + }; + }, + [filterManager] + ); + + const searchData = getEsQueryFromSavedSearch({ + dataView, + uiSettings, + savedSearch, + filterManager, + }); + + if (searchData === undefined || (appState && appState.searchString !== '')) { + if (appState?.filters && readOnly === false) { + const globalFilters = filterManager?.getGlobalFilters(); + + if (filterManager) filterManager.setFilters(appState.filters); + if (globalFilters) filterManager?.addFilters(globalFilters); + } + return { + searchQuery: appState?.searchQuery, + searchString: appState?.searchString, + searchQueryLanguage: appState?.searchQueryLanguage, + }; + } else { + return { + searchQuery: searchData.searchQuery, + searchString: searchData.searchString, + searchQueryLanguage: searchData.queryLanguage, + }; + } +}; diff --git a/x-pack/plugins/data_visualizer/public/application/common/hooks/use_time_buckets.ts b/x-pack/plugins/data_visualizer/public/application/common/hooks/use_time_buckets.ts new file mode 100644 index 00000000000000..0c7999dba9adcb --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/common/hooks/use_time_buckets.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import { UI_SETTINGS } from '@kbn/data-service'; +import { TimeBuckets } from '../../../../common/services/time_buckets'; +import { useDataVisualizerKibana } from '../../kibana_context'; + +export const useTimeBuckets = () => { + const { uiSettings } = useDataVisualizerKibana().services; + + return useMemo(() => { + return new TimeBuckets({ + [UI_SETTINGS.HISTOGRAM_MAX_BARS]: uiSettings.get(UI_SETTINGS.HISTOGRAM_MAX_BARS), + [UI_SETTINGS.HISTOGRAM_BAR_TARGET]: uiSettings.get(UI_SETTINGS.HISTOGRAM_BAR_TARGET), + dateFormat: uiSettings.get('dateFormat'), + 'dateFormat:scaled': uiSettings.get('dateFormat:scaled'), + }); + }, [uiSettings]); +}; diff --git a/x-pack/plugins/data_visualizer/public/application/common/util/display_error.ts b/x-pack/plugins/data_visualizer/public/application/common/util/display_error.ts new file mode 100644 index 00000000000000..c36bb0f03e51dc --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/common/util/display_error.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ToastsStart } from '@kbn/core-notifications-browser'; +import { i18n } from '@kbn/i18n'; + +export function displayError(toastNotifications: ToastsStart, index: string, err: any) { + if (err.statusCode === 500) { + toastNotifications.addError(err, { + title: i18n.translate('xpack.dataVisualizer.index.dataLoader.internalServerErrorMessage', { + defaultMessage: + 'Error loading data in index {index}. {message}. ' + + 'The request may have timed out. Try using a smaller sample size or narrowing the time range.', + values: { + index, + message: err.error ?? err.message, + }, + }), + }); + } else { + toastNotifications.addError(err, { + title: i18n.translate('xpack.dataVisualizer.index.errorLoadingDataMessage', { + defaultMessage: 'Error loading data in index {index}. {message}.', + values: { + index, + message: err.error ?? err.message, + }, + }), + }); + } +} diff --git a/x-pack/plugins/data_visualizer/public/application/common/util/get_error_messages_from_es_shard_failures.test.ts b/x-pack/plugins/data_visualizer/public/application/common/util/get_error_messages_from_es_shard_failures.test.ts new file mode 100644 index 00000000000000..fa060ee60079e3 --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/common/util/get_error_messages_from_es_shard_failures.test.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getErrorMessagesFromEsShardFailures } from './get_error_messages_from_es_shard_failures'; + +describe('getErrorMessagesFromEsShardFailures', () => { + test('returns extracted reasons if _shard.failures exist', () => { + const reason = + '[parent] Data too large, data for [] would be [1059268784/1010.1mb], which is larger than the limit of [1020054732/972.7mb], real usage: [940288176/896.7mb], new bytes reserved: [118980608/113.4mb], usages [inflight_requests=60008/58.6kb, model_inference=0/0b, eql_sequence=0/0b, fielddata=245141854/233.7mb, request=162398296/154.8mb]'; + const resp = { + took: 37, + timed_out: false, + _shards: { + total: 2, + successful: 1, + skipped: 1, + failed: 1, + failures: [ + { + shard: 0, + index: 'apm-7.2.0-span-2019.10.31', + node: 'PEyAKEkKQFql88n4oXyYMw', + reason: { + type: 'circuit_breaking_exception', + reason, + bytes_wanted: 1059268784, + bytes_limit: 1020054732, + durability: 'PERMANENT', + }, + }, + ], + }, + hits: { + total: 0, + max_score: 0, + hits: [], + }, + }; + expect(getErrorMessagesFromEsShardFailures(resp)).toEqual([reason]); + }); + + test('returns empty array if _shard.failures not defined', () => { + const resp = { + took: 37, + timed_out: false, + }; + expect(getErrorMessagesFromEsShardFailures(resp)).toEqual([]); + expect(getErrorMessagesFromEsShardFailures(null)).toEqual([]); + expect(getErrorMessagesFromEsShardFailures(undefined)).toEqual([]); + expect(getErrorMessagesFromEsShardFailures('')).toEqual([]); + }); +}); diff --git a/x-pack/plugins/data_visualizer/public/application/common/util/get_error_messages_from_es_shard_failures.ts b/x-pack/plugins/data_visualizer/public/application/common/util/get_error_messages_from_es_shard_failures.ts new file mode 100644 index 00000000000000..d0e39eae1fd50d --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/common/util/get_error_messages_from_es_shard_failures.ts @@ -0,0 +1,22 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import { isDefined } from '@kbn/ml-is-defined'; + +export const getErrorMessagesFromEsShardFailures = (arg?: unknown): string[] => { + if (isPopulatedObject(arg, ['_shards'])) { + return (arg._shards.failures ?? []) + .map((failure) => + isPopulatedObject(failure, ['reason']) && failure.reason.reason + ? failure.reason.reason + : undefined + ) + .filter(isDefined); + } + return []; +}; diff --git a/x-pack/plugins/data_visualizer/public/application/data_comparison/charts/data_comparison_distribution_chart.tsx b/x-pack/plugins/data_visualizer/public/application/data_comparison/charts/data_comparison_distribution_chart.tsx new file mode 100644 index 00000000000000..96a4876d5df11d --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/data_comparison/charts/data_comparison_distribution_chart.tsx @@ -0,0 +1,51 @@ +/* + * 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 { Axis, BarSeries, Chart, Position, ScaleType, Settings, Tooltip } from '@elastic/charts'; +import React from 'react'; +import { NoChartsData } from './no_charts_data'; +import { ComparisonHistogram } from '../types'; +import { DataComparisonChartTooltipBody } from '../data_comparison_chart_tooltip_body'; +import { COMPARISON_LABEL, DATA_COMPARISON_TYPE } from '../constants'; + +export const DataComparisonDistributionChart = ({ + featureName, + fieldType, + data, + colors, +}: { + featureName: string; + fieldType: string; + data: ComparisonHistogram[]; + colors: { referenceColor: string; productionColor: string }; +}) => { + if (data.length === 0) return ; + return ( + + + + + Number(d).toFixed(2)} /> + { + const key = identifier.seriesKeys[0]; + return key === COMPARISON_LABEL ? colors.productionColor : colors.referenceColor; + }} + /> + + ); +}; diff --git a/x-pack/plugins/data_visualizer/public/application/data_comparison/charts/no_charts_data.tsx b/x-pack/plugins/data_visualizer/public/application/data_comparison/charts/no_charts_data.tsx new file mode 100644 index 00000000000000..1c35f700f52f22 --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/data_comparison/charts/no_charts_data.tsx @@ -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 { FormattedMessage } from '@kbn/i18n-react'; +import { EuiText, type EuiTextProps } from '@elastic/eui'; +import React from 'react'; + +export const NoChartsData = ({ textAlign }: { textAlign?: EuiTextProps['textAlign'] }) => { + return ( + + + + ); +}; diff --git a/x-pack/plugins/data_visualizer/public/application/data_comparison/charts/overlap_distribution_chart.tsx b/x-pack/plugins/data_visualizer/public/application/data_comparison/charts/overlap_distribution_chart.tsx new file mode 100644 index 00000000000000..34f6a797831c05 --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/data_comparison/charts/overlap_distribution_chart.tsx @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { AreaSeries, Chart, CurveType, ScaleType, Settings, Tooltip } from '@elastic/charts'; +import { i18n } from '@kbn/i18n'; +import React from 'react'; +import { NoChartsData } from './no_charts_data'; +import type { ComparisonHistogram, DataComparisonField } from '../types'; +import { DataComparisonChartTooltipBody } from '../data_comparison_chart_tooltip_body'; +import { COMPARISON_LABEL, DATA_COMPARISON_TYPE, REFERENCE_LABEL } from '../constants'; + +export const OverlapDistributionComparison = ({ + data, + colors, + fieldType, + fieldName, +}: { + data: ComparisonHistogram[]; + colors: { referenceColor: string; productionColor: string }; + fieldType?: DataComparisonField['type']; + fieldName?: DataComparisonField['field']; +}) => { + if (data.length === 0) return ; + + return ( + + + + + { + const key = identifier.seriesKeys[0]; + return key === COMPARISON_LABEL ? colors.productionColor : colors.referenceColor; + }} + /> + + ); +}; diff --git a/x-pack/plugins/data_visualizer/public/application/data_comparison/charts/single_distribution_chart.tsx b/x-pack/plugins/data_visualizer/public/application/data_comparison/charts/single_distribution_chart.tsx new file mode 100644 index 00000000000000..22796f371cb559 --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/data_comparison/charts/single_distribution_chart.tsx @@ -0,0 +1,45 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SeriesColorAccessor } from '@elastic/charts/dist/chart_types/xy_chart/utils/specs'; +import { BarSeries, Chart, ScaleType, Settings } from '@elastic/charts'; +import React from 'react'; +import { NoChartsData } from './no_charts_data'; +import { DATA_COMPARISON_TYPE } from '../constants'; +import { DataComparisonField, Histogram } from '../types'; + +export const SingleDistributionChart = ({ + data, + color, + fieldType, + name, +}: { + data: Histogram[]; + name: string; + color?: SeriesColorAccessor; + fieldType?: DataComparisonField['type']; +}) => { + if (data.length === 0) return ; + + return ( + + + + + ); +}; diff --git a/x-pack/plugins/data_visualizer/public/application/data_comparison/constants.ts b/x-pack/plugins/data_visualizer/public/application/data_comparison/constants.ts new file mode 100644 index 00000000000000..e64e19cc736fdd --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/data_comparison/constants.ts @@ -0,0 +1,1064 @@ +/* + * 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 DATA_COMPARISON_TYPE = { + NUMERIC: 'numeric', + CATEGORICAL: 'categorical', + UNSUPPORTED: 'unsupported', +} as const; + +export const NUMERIC_TYPE_LABEL = i18n.translate( + 'xpack.dataVisualizer.dataComparison.numericLabel', + { + defaultMessage: 'Numeric', + } +); +export const CATEGORICAL_TYPE_LABEL = i18n.translate( + 'xpack.dataVisualizer.dataComparison.categoricalLabel', + { + defaultMessage: 'Categorical', + } +); + +export const UNSUPPORTED_LABEL = i18n.translate( + 'xpack.dataVisualizer.dataComparison.UnsupportedLabel', + { + defaultMessage: 'Unsupported', + } +); + +export const REFERENCE_LABEL = i18n.translate( + 'xpack.dataVisualizer.dataComparison.referenceLabel', + { + defaultMessage: 'Reference', + } +); + +export const COMPARISON_LABEL = i18n.translate( + 'xpack.dataVisualizer.dataComparison.productionLabel', + { + defaultMessage: 'Comparison', + } +); + +export const DATA_COMPARISON_TYPE_LABEL = { + [DATA_COMPARISON_TYPE.NUMERIC]: NUMERIC_TYPE_LABEL, + [DATA_COMPARISON_TYPE.CATEGORICAL]: CATEGORICAL_TYPE_LABEL, + [DATA_COMPARISON_TYPE.UNSUPPORTED]: UNSUPPORTED_LABEL, +} as const; + +export const DRIFT_P_VALUE_THRESHOLD = 0.05; +/** + * Table generated from following python code + df = range(1,100) + + # levels of significance + significance_levels = np.concatenate((np.logspace(-6, -3, 3), np.linspace(0.01, 0.99, 99))) + + # create the table + table = [] + for d in df: + row = [] + for l in significance_levels: + row.append(round(stats.chi2.ppf(1 - l, d), 2)) + table.append(row) + + critical_value_table = np.array(table) + * until we find a low size replacement for doing chi2test in js + */ +export const CRITICAL_VALUES_TABLE = [ + [ + 23.93, 17.32, 10.83, 6.63, 5.41, 4.71, 4.22, 3.84, 3.54, 3.28, 3.06, 2.87, 2.71, 2.55, 2.42, + 2.29, 2.18, 2.07, 1.97, 1.88, 1.8, 1.72, 1.64, 1.57, 1.5, 1.44, 1.38, 1.32, 1.27, 1.22, 1.17, + 1.12, 1.07, 1.03, 0.99, 0.95, 0.91, 0.87, 0.84, 0.8, 0.77, 0.74, 0.71, 0.68, 0.65, 0.62, 0.6, + 0.57, 0.55, 0.52, 0.5, 0.48, 0.45, 0.43, 0.41, 0.39, 0.38, 0.36, 0.34, 0.32, 0.31, 0.29, 0.27, + 0.26, 0.25, 0.23, 0.22, 0.21, 0.19, 0.18, 0.17, 0.16, 0.15, 0.14, 0.13, 0.12, 0.11, 0.1, 0.09, + 0.09, 0.08, 0.07, 0.06, 0.06, 0.05, 0.05, 0.04, 0.04, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01, 0.01, + 0.01, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, + ], + [ + 27.63, 20.72, 13.82, 9.21, 7.82, 7.01, 6.44, 5.99, 5.63, 5.32, 5.05, 4.82, 4.61, 4.41, 4.24, + 4.08, 3.93, 3.79, 3.67, 3.54, 3.43, 3.32, 3.22, 3.12, 3.03, 2.94, 2.85, 2.77, 2.69, 2.62, 2.55, + 2.48, 2.41, 2.34, 2.28, 2.22, 2.16, 2.1, 2.04, 1.99, 1.94, 1.88, 1.83, 1.78, 1.74, 1.69, 1.64, + 1.6, 1.55, 1.51, 1.47, 1.43, 1.39, 1.35, 1.31, 1.27, 1.23, 1.2, 1.16, 1.12, 1.09, 1.06, 1.02, + 0.99, 0.96, 0.92, 0.89, 0.86, 0.83, 0.8, 0.77, 0.74, 0.71, 0.68, 0.66, 0.63, 0.6, 0.58, 0.55, + 0.52, 0.5, 0.47, 0.45, 0.42, 0.4, 0.37, 0.35, 0.33, 0.3, 0.28, 0.26, 0.23, 0.21, 0.19, 0.17, + 0.15, 0.12, 0.1, 0.08, 0.06, 0.04, 0.02, + ], + [ + 30.66, 23.51, 16.27, 11.34, 9.84, 8.95, 8.31, 7.81, 7.41, 7.06, 6.76, 6.49, 6.25, 6.03, 5.83, + 5.65, 5.48, 5.32, 5.17, 5.02, 4.89, 4.76, 4.64, 4.53, 4.41, 4.31, 4.21, 4.11, 4.01, 3.92, 3.83, + 3.75, 3.66, 3.58, 3.51, 3.43, 3.36, 3.28, 3.21, 3.14, 3.08, 3.01, 2.95, 2.88, 2.82, 2.76, 2.7, + 2.64, 2.59, 2.53, 2.47, 2.42, 2.37, 2.31, 2.26, 2.21, 2.16, 2.11, 2.06, 2.01, 1.96, 1.92, 1.87, + 1.82, 1.78, 1.73, 1.69, 1.64, 1.6, 1.55, 1.51, 1.47, 1.42, 1.38, 1.34, 1.3, 1.25, 1.21, 1.17, + 1.13, 1.09, 1.05, 1.01, 0.96, 0.92, 0.88, 0.84, 0.8, 0.76, 0.71, 0.67, 0.63, 0.58, 0.54, 0.49, + 0.45, 0.4, 0.35, 0.3, 0.25, 0.18, 0.11, + ], + [ + 33.38, 26.0, 18.47, 13.28, 11.67, 10.71, 10.03, 9.49, 9.04, 8.67, 8.34, 8.04, 7.78, 7.54, 7.32, + 7.11, 6.92, 6.74, 6.58, 6.42, 6.27, 6.13, 5.99, 5.86, 5.73, 5.61, 5.5, 5.39, 5.28, 5.17, 5.07, + 4.97, 4.88, 4.79, 4.7, 4.61, 4.52, 4.44, 4.36, 4.28, 4.2, 4.12, 4.04, 3.97, 3.9, 3.83, 3.76, + 3.69, 3.62, 3.55, 3.49, 3.42, 3.36, 3.29, 3.23, 3.17, 3.11, 3.05, 2.99, 2.93, 2.87, 2.81, 2.75, + 2.7, 2.64, 2.58, 2.53, 2.47, 2.41, 2.36, 2.3, 2.25, 2.19, 2.14, 2.09, 2.03, 1.98, 1.92, 1.87, + 1.81, 1.76, 1.7, 1.65, 1.59, 1.54, 1.48, 1.42, 1.37, 1.31, 1.25, 1.19, 1.13, 1.06, 1.0, 0.93, + 0.86, 0.79, 0.71, 0.63, 0.54, 0.43, 0.3, + ], + [ + 35.89, 28.31, 20.52, 15.09, 13.39, 12.37, 11.64, 11.07, 10.6, 10.19, 9.84, 9.52, 9.24, 8.98, + 8.74, 8.52, 8.31, 8.12, 7.93, 7.76, 7.6, 7.44, 7.29, 7.15, 7.01, 6.88, 6.75, 6.63, 6.51, 6.39, + 6.28, 6.17, 6.06, 5.96, 5.86, 5.76, 5.67, 5.57, 5.48, 5.39, 5.3, 5.22, 5.13, 5.05, 4.97, 4.89, + 4.81, 4.73, 4.65, 4.57, 4.5, 4.42, 4.35, 4.28, 4.21, 4.14, 4.07, 4.0, 3.93, 3.86, 3.79, 3.72, + 3.66, 3.59, 3.52, 3.46, 3.39, 3.33, 3.26, 3.19, 3.13, 3.06, 3.0, 2.94, 2.87, 2.81, 2.74, 2.67, + 2.61, 2.54, 2.48, 2.41, 2.34, 2.27, 2.21, 2.14, 2.07, 1.99, 1.92, 1.85, 1.77, 1.69, 1.61, 1.53, + 1.44, 1.35, 1.25, 1.15, 1.03, 0.9, 0.75, 0.55, + ], + [ + 38.26, 30.5, 22.46, 16.81, 15.03, 13.97, 13.2, 12.59, 12.09, 11.66, 11.28, 10.95, 10.64, 10.37, + 10.11, 9.88, 9.65, 9.45, 9.25, 9.06, 8.89, 8.72, 8.56, 8.4, 8.26, 8.11, 7.97, 7.84, 7.71, 7.59, + 7.46, 7.35, 7.23, 7.12, 7.01, 6.9, 6.8, 6.69, 6.59, 6.5, 6.4, 6.3, 6.21, 6.12, 6.03, 5.94, 5.85, + 5.77, 5.68, 5.6, 5.51, 5.43, 5.35, 5.27, 5.19, 5.11, 5.03, 4.95, 4.87, 4.8, 4.72, 4.65, 4.57, + 4.5, 4.42, 4.35, 4.27, 4.2, 4.12, 4.05, 3.98, 3.9, 3.83, 3.75, 3.68, 3.6, 3.53, 3.45, 3.38, 3.3, + 3.23, 3.15, 3.07, 2.99, 2.91, 2.83, 2.75, 2.66, 2.57, 2.49, 2.4, 2.3, 2.2, 2.1, 2.0, 1.88, 1.76, + 1.64, 1.49, 1.33, 1.13, 0.87, + ], + [ + 40.52, 32.59, 24.32, 18.48, 16.62, 15.51, 14.7, 14.07, 13.54, 13.09, 12.69, 12.34, 12.02, 11.72, + 11.45, 11.2, 10.97, 10.75, 10.54, 10.34, 10.15, 9.97, 9.8, 9.64, 9.48, 9.33, 9.18, 9.04, 8.9, + 8.76, 8.63, 8.51, 8.38, 8.26, 8.14, 8.03, 7.92, 7.81, 7.7, 7.59, 7.49, 7.38, 7.28, 7.18, 7.09, + 6.99, 6.89, 6.8, 6.71, 6.62, 6.52, 6.43, 6.35, 6.26, 6.17, 6.08, 6.0, 5.91, 5.83, 5.74, 5.66, + 5.58, 5.49, 5.41, 5.33, 5.25, 5.16, 5.08, 5.0, 4.92, 4.84, 4.75, 4.67, 4.59, 4.51, 4.42, 4.34, + 4.25, 4.17, 4.08, 4.0, 3.91, 3.82, 3.73, 3.64, 3.55, 3.45, 3.36, 3.26, 3.16, 3.05, 2.95, 2.83, + 2.72, 2.59, 2.46, 2.32, 2.17, 2.0, 1.8, 1.56, 1.24, + ], + [ + 42.7, 34.6, 26.12, 20.09, 18.17, 17.01, 16.17, 15.51, 14.96, 14.48, 14.07, 13.7, 13.36, 13.05, + 12.77, 12.51, 12.26, 12.03, 11.81, 11.6, 11.4, 11.21, 11.03, 10.86, 10.69, 10.53, 10.37, 10.22, + 10.07, 9.93, 9.79, 9.66, 9.52, 9.4, 9.27, 9.15, 9.03, 8.91, 8.79, 8.68, 8.57, 8.46, 8.35, 8.24, + 8.14, 8.04, 7.93, 7.83, 7.73, 7.63, 7.54, 7.44, 7.34, 7.25, 7.16, 7.06, 6.97, 6.88, 6.78, 6.69, + 6.6, 6.51, 6.42, 6.33, 6.24, 6.15, 6.06, 5.98, 5.89, 5.8, 5.71, 5.62, 5.53, 5.44, 5.35, 5.26, + 5.16, 5.07, 4.98, 4.88, 4.79, 4.69, 4.59, 4.49, 4.39, 4.29, 4.19, 4.08, 3.97, 3.85, 3.74, 3.62, + 3.49, 3.36, 3.22, 3.07, 2.91, 2.73, 2.54, 2.31, 2.03, 1.65, + ], + [ + 44.81, 36.55, 27.88, 21.67, 19.68, 18.48, 17.61, 16.92, 16.35, 15.85, 15.42, 15.03, 14.68, + 14.36, 14.07, 13.79, 13.53, 13.29, 13.06, 12.84, 12.63, 12.43, 12.24, 12.06, 11.88, 11.71, + 11.55, 11.39, 11.23, 11.08, 10.94, 10.8, 10.66, 10.52, 10.39, 10.26, 10.13, 10.01, 9.88, 9.76, + 9.64, 9.53, 9.41, 9.3, 9.19, 9.08, 8.97, 8.86, 8.76, 8.65, 8.55, 8.44, 8.34, 8.24, 8.14, 8.04, + 7.94, 7.84, 7.75, 7.65, 7.55, 7.45, 7.36, 7.26, 7.16, 7.07, 6.97, 6.88, 6.78, 6.68, 6.59, 6.49, + 6.39, 6.3, 6.2, 6.1, 6.0, 5.9, 5.8, 5.7, 5.59, 5.49, 5.38, 5.27, 5.16, 5.05, 4.93, 4.82, 4.7, + 4.57, 4.44, 4.31, 4.17, 4.02, 3.87, 3.7, 3.52, 3.33, 3.1, 2.85, 2.53, 2.09, + ], + [ + 46.86, 38.45, 29.59, 23.21, 21.16, 19.92, 19.02, 18.31, 17.71, 17.2, 16.75, 16.35, 15.99, 15.65, + 15.34, 15.06, 14.79, 14.53, 14.29, 14.07, 13.85, 13.64, 13.44, 13.25, 13.07, 12.89, 12.72, + 12.55, 12.39, 12.23, 12.08, 11.93, 11.78, 11.64, 11.5, 11.36, 11.23, 11.1, 10.97, 10.84, 10.72, + 10.59, 10.47, 10.35, 10.24, 10.12, 10.01, 9.89, 9.78, 9.67, 9.56, 9.45, 9.34, 9.23, 9.13, 9.02, + 8.92, 8.81, 8.71, 8.6, 8.5, 8.4, 8.3, 8.19, 8.09, 7.99, 7.89, 7.78, 7.68, 7.58, 7.47, 7.37, + 7.27, 7.16, 7.06, 6.95, 6.84, 6.74, 6.63, 6.52, 6.41, 6.29, 6.18, 6.06, 5.94, 5.82, 5.7, 5.57, + 5.44, 5.3, 5.16, 5.02, 4.87, 4.7, 4.54, 4.35, 4.16, 3.94, 3.7, 3.41, 3.06, 2.56, + ], + [ + 48.87, 40.31, 31.26, 24.72, 22.62, 21.34, 20.41, 19.68, 19.06, 18.53, 18.07, 17.65, 17.28, + 16.93, 16.61, 16.31, 16.03, 15.77, 15.52, 15.28, 15.05, 14.84, 14.63, 14.43, 14.24, 14.05, + 13.87, 13.7, 13.53, 13.37, 13.21, 13.05, 12.9, 12.75, 12.6, 12.46, 12.32, 12.18, 12.05, 11.92, + 11.79, 11.66, 11.53, 11.4, 11.28, 11.16, 11.04, 10.92, 10.8, 10.69, 10.57, 10.45, 10.34, 10.23, + 10.12, 10.0, 9.89, 9.78, 9.67, 9.56, 9.45, 9.35, 9.24, 9.13, 9.02, 8.91, 8.8, 8.7, 8.59, 8.48, + 8.37, 8.26, 8.15, 8.04, 7.93, 7.81, 7.7, 7.58, 7.47, 7.35, 7.23, 7.11, 6.99, 6.86, 6.74, 6.61, + 6.47, 6.34, 6.2, 6.05, 5.9, 5.74, 5.58, 5.4, 5.22, 5.02, 4.81, 4.57, 4.31, 4.0, 3.61, 3.05, + ], + [ + 50.83, 42.13, 32.91, 26.22, 24.05, 22.74, 21.79, 21.03, 20.39, 19.85, 19.37, 18.94, 18.55, + 18.19, 17.86, 17.55, 17.26, 16.99, 16.73, 16.49, 16.25, 16.03, 15.81, 15.61, 15.41, 15.21, + 15.03, 14.85, 14.67, 14.5, 14.33, 14.17, 14.01, 13.86, 13.7, 13.56, 13.41, 13.27, 13.13, 12.99, + 12.85, 12.72, 12.58, 12.45, 12.32, 12.2, 12.07, 11.95, 11.82, 11.7, 11.58, 11.46, 11.34, 11.22, + 11.1, 10.99, 10.87, 10.76, 10.64, 10.53, 10.41, 10.3, 10.18, 10.07, 9.95, 9.84, 9.73, 9.61, 9.5, + 9.38, 9.27, 9.15, 9.03, 8.92, 8.8, 8.68, 8.56, 8.44, 8.32, 8.19, 8.07, 7.94, 7.81, 7.67, 7.54, + 7.4, 7.26, 7.11, 6.96, 6.81, 6.65, 6.48, 6.3, 6.12, 5.92, 5.71, 5.48, 5.23, 4.94, 4.6, 4.18, + 3.57, + ], + [ + 52.75, 43.92, 34.53, 27.69, 25.47, 24.12, 23.14, 22.36, 21.71, 21.15, 20.66, 20.21, 19.81, + 19.44, 19.1, 18.78, 18.48, 18.2, 17.94, 17.68, 17.44, 17.21, 16.98, 16.77, 16.56, 16.36, 16.17, + 15.98, 15.8, 15.62, 15.45, 15.28, 15.12, 14.96, 14.8, 14.65, 14.49, 14.35, 14.2, 14.05, 13.91, + 13.77, 13.64, 13.5, 13.37, 13.23, 13.1, 12.97, 12.84, 12.72, 12.59, 12.46, 12.34, 12.22, 12.09, + 11.97, 11.85, 11.73, 11.61, 11.49, 11.37, 11.25, 11.13, 11.01, 10.89, 10.77, 10.65, 10.53, + 10.41, 10.29, 10.17, 10.05, 9.93, 9.8, 9.68, 9.55, 9.43, 9.3, 9.17, 9.04, 8.91, 8.77, 8.63, + 8.49, 8.35, 8.2, 8.05, 7.9, 7.74, 7.58, 7.41, 7.23, 7.04, 6.84, 6.63, 6.41, 6.16, 5.89, 5.58, + 5.22, 4.77, 4.11, + ], + [ + 54.64, 45.68, 36.12, 29.14, 26.87, 25.49, 24.49, 23.68, 23.02, 22.44, 21.93, 21.48, 21.06, + 20.68, 20.33, 20.0, 19.7, 19.41, 19.13, 18.87, 18.62, 18.38, 18.15, 17.93, 17.72, 17.51, 17.31, + 17.12, 16.93, 16.75, 16.57, 16.39, 16.22, 16.06, 15.89, 15.73, 15.58, 15.42, 15.27, 15.12, + 14.97, 14.83, 14.69, 14.54, 14.4, 14.27, 14.13, 14.0, 13.86, 13.73, 13.6, 13.47, 13.34, 13.21, + 13.08, 12.96, 12.83, 12.7, 12.58, 12.45, 12.33, 12.2, 12.08, 11.95, 11.83, 11.7, 11.58, 11.45, + 11.33, 11.2, 11.08, 10.95, 10.82, 10.69, 10.56, 10.43, 10.3, 10.17, 10.03, 9.89, 9.75, 9.61, + 9.47, 9.32, 9.17, 9.02, 8.86, 8.7, 8.53, 8.36, 8.18, 7.99, 7.79, 7.58, 7.36, 7.12, 6.86, 6.57, + 6.24, 5.86, 5.37, 4.66, + ], + [ + 56.49, 47.41, 37.7, 30.58, 28.26, 26.85, 25.82, 25.0, 24.31, 23.72, 23.2, 22.73, 22.31, 21.92, + 21.56, 21.22, 20.9, 20.6, 20.32, 20.05, 19.79, 19.55, 19.31, 19.08, 18.86, 18.65, 18.44, 18.25, + 18.05, 17.86, 17.68, 17.5, 17.32, 17.15, 16.98, 16.82, 16.65, 16.49, 16.34, 16.18, 16.03, 15.88, + 15.73, 15.59, 15.44, 15.3, 15.16, 15.02, 14.88, 14.74, 14.61, 14.47, 14.34, 14.21, 14.07, 13.94, + 13.81, 13.68, 13.55, 13.42, 13.29, 13.16, 13.03, 12.9, 12.77, 12.64, 12.51, 12.38, 12.25, 12.12, + 11.99, 11.85, 11.72, 11.59, 11.45, 11.31, 11.18, 11.04, 10.9, 10.75, 10.61, 10.46, 10.31, 10.15, + 10.0, 9.83, 9.67, 9.5, 9.32, 9.14, 8.95, 8.75, 8.55, 8.33, 8.09, 7.84, 7.57, 7.26, 6.91, 6.5, + 5.98, 5.23, + ], + [ + 58.32, 49.12, 39.25, 32.0, 29.63, 28.19, 27.14, 26.3, 25.59, 24.99, 24.46, 23.98, 23.54, 23.14, + 22.77, 22.42, 22.1, 21.79, 21.5, 21.23, 20.96, 20.71, 20.47, 20.23, 20.0, 19.79, 19.57, 19.37, + 19.17, 18.97, 18.78, 18.6, 18.42, 18.24, 18.07, 17.9, 17.73, 17.56, 17.4, 17.24, 17.09, 16.93, + 16.78, 16.63, 16.48, 16.33, 16.19, 16.04, 15.9, 15.76, 15.62, 15.48, 15.34, 15.2, 15.06, 14.93, + 14.79, 14.66, 14.52, 14.39, 14.25, 14.12, 13.98, 13.85, 13.71, 13.58, 13.44, 13.31, 13.17, + 13.04, 12.9, 12.76, 12.62, 12.48, 12.34, 12.2, 12.06, 11.91, 11.76, 11.62, 11.46, 11.31, 11.15, + 10.99, 10.83, 10.66, 10.49, 10.31, 10.13, 9.94, 9.74, 9.53, 9.31, 9.08, 8.84, 8.57, 8.28, 7.96, + 7.6, 7.16, 6.61, 5.81, + ], + [ + 60.13, 50.81, 40.79, 33.41, 31.0, 29.52, 28.44, 27.59, 26.87, 26.25, 25.71, 25.21, 24.77, 24.36, + 23.98, 23.62, 23.29, 22.98, 22.68, 22.4, 22.12, 21.86, 21.61, 21.37, 21.14, 20.92, 20.7, 20.49, + 20.28, 20.08, 19.89, 19.7, 19.51, 19.33, 19.15, 18.97, 18.8, 18.63, 18.47, 18.3, 18.14, 17.98, + 17.82, 17.67, 17.52, 17.36, 17.21, 17.06, 16.92, 16.77, 16.63, 16.48, 16.34, 16.2, 16.05, 15.91, + 15.77, 15.63, 15.49, 15.35, 15.21, 15.08, 14.94, 14.8, 14.66, 14.52, 14.38, 14.24, 14.1, 13.96, + 13.82, 13.67, 13.53, 13.39, 13.24, 13.09, 12.94, 12.79, 12.64, 12.48, 12.33, 12.17, 12.0, 11.84, + 11.66, 11.49, 11.31, 11.12, 10.93, 10.74, 10.53, 10.31, 10.09, 9.84, 9.59, 9.31, 9.01, 8.67, + 8.29, 7.83, 7.26, 6.41, + ], + [ + 61.91, 52.47, 42.31, 34.81, 32.35, 30.84, 29.75, 28.87, 28.14, 27.5, 26.95, 26.45, 25.99, 25.57, + 25.18, 24.82, 24.48, 24.16, 23.85, 23.56, 23.28, 23.02, 22.76, 22.51, 22.28, 22.04, 21.82, 21.6, + 21.39, 21.19, 20.99, 20.79, 20.6, 20.41, 20.23, 20.05, 19.87, 19.7, 19.53, 19.36, 19.19, 19.03, + 18.87, 18.71, 18.55, 18.39, 18.24, 18.09, 17.93, 17.78, 17.63, 17.49, 17.34, 17.19, 17.05, 16.9, + 16.76, 16.61, 16.47, 16.32, 16.18, 16.04, 15.89, 15.75, 15.61, 15.46, 15.32, 15.17, 15.03, + 14.88, 14.74, 14.59, 14.44, 14.29, 14.14, 13.99, 13.83, 13.68, 13.52, 13.36, 13.19, 13.03, + 12.86, 12.68, 12.51, 12.33, 12.14, 11.95, 11.75, 11.54, 11.33, 11.1, 10.86, 10.61, 10.35, 10.06, + 9.74, 9.39, 8.99, 8.51, 7.91, 7.01, + ], + [ + 63.68, 54.12, 43.82, 36.19, 33.69, 32.16, 31.04, 30.14, 29.4, 28.75, 28.18, 27.67, 27.2, 26.78, + 26.38, 26.01, 25.66, 25.33, 25.02, 24.72, 24.43, 24.16, 23.9, 23.65, 23.4, 23.17, 22.94, 22.72, + 22.5, 22.29, 22.09, 21.89, 21.69, 21.5, 21.31, 21.12, 20.94, 20.76, 20.59, 20.42, 20.24, 20.08, + 19.91, 19.75, 19.58, 19.42, 19.26, 19.11, 18.95, 18.8, 18.64, 18.49, 18.34, 18.19, 18.04, 17.89, + 17.74, 17.59, 17.44, 17.29, 17.15, 17.0, 16.85, 16.7, 16.55, 16.41, 16.26, 16.11, 15.96, 15.81, + 15.66, 15.51, 15.35, 15.2, 15.04, 14.88, 14.72, 14.56, 14.4, 14.23, 14.06, 13.89, 13.72, 13.54, + 13.35, 13.17, 12.97, 12.77, 12.57, 12.35, 12.13, 11.9, 11.65, 11.39, 11.11, 10.81, 10.48, 10.12, + 9.7, 9.2, 8.57, 7.63, + ], + [ + 65.42, 55.76, 45.31, 37.57, 35.02, 33.46, 32.32, 31.41, 30.65, 29.99, 29.41, 28.89, 28.41, + 27.97, 27.57, 27.19, 26.83, 26.5, 26.18, 25.87, 25.58, 25.31, 25.04, 24.78, 24.53, 24.29, 24.05, + 23.83, 23.61, 23.39, 23.18, 22.98, 22.77, 22.58, 22.38, 22.2, 22.01, 21.83, 21.65, 21.47, 21.29, + 21.12, 20.95, 20.78, 20.62, 20.45, 20.29, 20.13, 19.97, 19.81, 19.65, 19.49, 19.34, 19.18, + 19.03, 18.87, 18.72, 18.57, 18.42, 18.26, 18.11, 17.96, 17.81, 17.66, 17.5, 17.35, 17.2, 17.05, + 16.89, 16.74, 16.58, 16.42, 16.27, 16.11, 15.95, 15.78, 15.62, 15.45, 15.28, 15.11, 14.94, + 14.76, 14.58, 14.39, 14.2, 14.01, 13.81, 13.6, 13.39, 13.17, 12.94, 12.7, 12.44, 12.17, 11.88, + 11.57, 11.23, 10.85, 10.42, 9.9, 9.24, 8.26, + ], + [ + 67.15, 57.37, 46.8, 38.93, 36.34, 34.76, 33.6, 32.67, 31.89, 31.22, 30.63, 30.1, 29.62, 29.17, + 28.76, 28.37, 28.01, 27.66, 27.34, 27.03, 26.73, 26.44, 26.17, 25.91, 25.65, 25.41, 25.17, + 24.93, 24.71, 24.49, 24.27, 24.06, 23.86, 23.66, 23.46, 23.27, 23.07, 22.89, 22.7, 22.52, 22.34, + 22.17, 21.99, 21.82, 21.65, 21.48, 21.31, 21.15, 20.98, 20.82, 20.66, 20.5, 20.34, 20.18, 20.02, + 19.86, 19.71, 19.55, 19.39, 19.24, 19.08, 18.92, 18.77, 18.61, 18.46, 18.3, 18.14, 17.98, 17.83, + 17.67, 17.51, 17.34, 17.18, 17.02, 16.85, 16.69, 16.52, 16.34, 16.17, 15.99, 15.81, 15.63, + 15.44, 15.25, 15.06, 14.86, 14.65, 14.44, 14.22, 13.99, 13.75, 13.5, 13.24, 12.96, 12.66, 12.34, + 11.99, 11.59, 11.14, 10.6, 9.91, 8.9, + ], + [ + 68.86, 58.98, 48.27, 40.29, 37.66, 36.05, 34.87, 33.92, 33.13, 32.45, 31.85, 31.31, 30.81, + 30.36, 29.94, 29.54, 29.17, 28.82, 28.49, 28.17, 27.87, 27.58, 27.3, 27.03, 26.77, 26.52, 26.28, + 26.04, 25.81, 25.58, 25.36, 25.15, 24.94, 24.73, 24.53, 24.33, 24.14, 23.95, 23.76, 23.57, + 23.39, 23.21, 23.03, 22.85, 22.68, 22.51, 22.34, 22.17, 22.0, 21.83, 21.67, 21.5, 21.34, 21.17, + 21.01, 20.85, 20.69, 20.53, 20.37, 20.21, 20.05, 19.89, 19.73, 19.57, 19.41, 19.25, 19.09, + 18.92, 18.76, 18.6, 18.43, 18.27, 18.1, 17.93, 17.76, 17.59, 17.42, 17.24, 17.06, 16.88, 16.69, + 16.51, 16.31, 16.12, 15.92, 15.71, 15.5, 15.28, 15.05, 14.82, 14.57, 14.31, 14.04, 13.75, 13.45, + 13.11, 12.75, 12.34, 11.87, 11.31, 10.6, 9.54, + ], + [ + 70.55, 60.57, 49.73, 41.64, 38.97, 37.33, 36.13, 35.17, 34.37, 33.68, 33.06, 32.51, 32.01, + 31.54, 31.11, 30.71, 30.34, 29.98, 29.64, 29.32, 29.01, 28.71, 28.43, 28.15, 27.89, 27.63, + 27.38, 27.14, 26.91, 26.68, 26.45, 26.23, 26.02, 25.81, 25.6, 25.4, 25.2, 25.01, 24.81, 24.62, + 24.44, 24.25, 24.07, 23.89, 23.71, 23.53, 23.36, 23.19, 23.01, 22.84, 22.67, 22.5, 22.34, 22.17, + 22.0, 21.84, 21.67, 21.51, 21.35, 21.18, 21.02, 20.85, 20.69, 20.53, 20.36, 20.2, 20.03, 19.87, + 19.7, 19.53, 19.36, 19.19, 19.02, 18.85, 18.67, 18.5, 18.32, 18.14, 17.95, 17.77, 17.58, 17.38, + 17.19, 16.98, 16.78, 16.57, 16.35, 16.12, 15.89, 15.65, 15.39, 15.13, 14.85, 14.55, 14.23, + 13.89, 13.51, 13.09, 12.61, 12.03, 11.29, 10.2, + ], + [ + 72.23, 62.14, 51.18, 42.98, 40.27, 38.61, 37.39, 36.42, 35.6, 34.89, 34.27, 33.71, 33.2, 32.73, + 32.29, 31.88, 31.5, 31.13, 30.79, 30.46, 30.14, 29.84, 29.55, 29.27, 29.0, 28.74, 28.49, 28.24, + 28.0, 27.77, 27.54, 27.31, 27.1, 26.88, 26.67, 26.47, 26.26, 26.06, 25.87, 25.67, 25.48, 25.29, + 25.11, 24.92, 24.74, 24.56, 24.38, 24.2, 24.03, 23.85, 23.68, 23.51, 23.34, 23.17, 23.0, 22.83, + 22.66, 22.49, 22.32, 22.16, 21.99, 21.82, 21.65, 21.48, 21.32, 21.15, 20.98, 20.81, 20.64, + 20.47, 20.29, 20.12, 19.94, 19.77, 19.59, 19.41, 19.22, 19.04, 18.85, 18.66, 18.46, 18.26, + 18.06, 17.85, 17.64, 17.42, 17.2, 16.97, 16.73, 16.48, 16.22, 15.95, 15.66, 15.35, 15.03, 14.67, + 14.28, 13.85, 13.35, 12.75, 11.99, 10.86, + ], + [ + 73.89, 63.71, 52.62, 44.31, 41.57, 39.88, 38.64, 37.65, 36.82, 36.11, 35.47, 34.9, 34.38, 33.9, + 33.46, 33.04, 32.65, 32.28, 31.93, 31.6, 31.28, 30.97, 30.68, 30.39, 30.12, 29.85, 29.59, 29.34, + 29.09, 28.86, 28.62, 28.39, 28.17, 27.95, 27.74, 27.53, 27.32, 27.12, 26.92, 26.72, 26.53, + 26.33, 26.14, 25.96, 25.77, 25.59, 25.4, 25.22, 25.04, 24.86, 24.69, 24.51, 24.34, 24.16, 23.99, + 23.82, 23.64, 23.47, 23.3, 23.13, 22.96, 22.79, 22.62, 22.44, 22.27, 22.1, 21.93, 21.75, 21.58, + 21.4, 21.22, 21.05, 20.87, 20.69, 20.5, 20.32, 20.13, 19.94, 19.75, 19.55, 19.35, 19.15, 18.94, + 18.73, 18.51, 18.29, 18.06, 17.82, 17.57, 17.32, 17.05, 16.77, 16.47, 16.16, 15.82, 15.46, + 15.06, 14.61, 14.1, 13.48, 12.7, 11.52, + ], + [ + 75.55, 65.26, 54.05, 45.64, 42.86, 41.15, 39.89, 38.89, 38.04, 37.32, 36.67, 36.09, 35.56, + 35.08, 34.62, 34.2, 33.81, 33.43, 33.07, 32.73, 32.41, 32.09, 31.79, 31.5, 31.22, 30.95, 30.69, + 30.43, 30.19, 29.94, 29.71, 29.47, 29.25, 29.02, 28.81, 28.59, 28.38, 28.17, 27.97, 27.77, + 27.57, 27.37, 27.18, 26.99, 26.8, 26.61, 26.42, 26.24, 26.06, 25.87, 25.69, 25.51, 25.34, 25.16, + 24.98, 24.81, 24.63, 24.45, 24.28, 24.1, 23.93, 23.75, 23.58, 23.4, 23.23, 23.05, 22.88, 22.7, + 22.52, 22.34, 22.16, 21.98, 21.79, 21.61, 21.42, 21.23, 21.04, 20.84, 20.65, 20.45, 20.24, + 20.03, 19.82, 19.6, 19.38, 19.15, 18.91, 18.67, 18.42, 18.16, 17.88, 17.6, 17.29, 16.97, 16.62, + 16.25, 15.84, 15.38, 14.85, 14.22, 13.41, 12.2, + ], + [ + 77.19, 66.81, 55.48, 46.96, 44.14, 42.41, 41.13, 40.11, 39.26, 38.52, 37.87, 37.28, 36.74, + 36.25, 35.79, 35.36, 34.96, 34.57, 34.21, 33.87, 33.53, 33.22, 32.91, 32.62, 32.33, 32.06, + 31.79, 31.53, 31.27, 31.03, 30.79, 30.55, 30.32, 30.09, 29.87, 29.65, 29.44, 29.23, 29.02, + 28.81, 28.61, 28.41, 28.21, 28.02, 27.83, 27.63, 27.44, 27.26, 27.07, 26.89, 26.7, 26.52, 26.34, + 26.16, 25.97, 25.79, 25.62, 25.44, 25.26, 25.08, 24.9, 24.72, 24.54, 24.37, 24.19, 24.01, 23.83, + 23.64, 23.46, 23.28, 23.09, 22.91, 22.72, 22.53, 22.34, 22.14, 21.95, 21.75, 21.55, 21.34, + 21.13, 20.92, 20.7, 20.48, 20.25, 20.02, 19.78, 19.53, 19.27, 19.0, 18.72, 18.42, 18.11, 17.78, + 17.43, 17.05, 16.62, 16.15, 15.61, 14.96, 14.13, 12.88, + ], + [ + 78.82, 68.34, 56.89, 48.28, 45.42, 43.66, 42.37, 41.34, 40.47, 39.72, 39.06, 38.46, 37.92, + 37.41, 36.95, 36.51, 36.1, 35.71, 35.35, 35.0, 34.66, 34.34, 34.03, 33.73, 33.44, 33.16, 32.89, + 32.62, 32.36, 32.11, 31.87, 31.63, 31.39, 31.16, 30.93, 30.71, 30.49, 30.28, 30.07, 29.86, + 29.65, 29.45, 29.25, 29.05, 28.85, 28.66, 28.47, 28.27, 28.08, 27.9, 27.71, 27.52, 27.34, 27.15, + 26.97, 26.78, 26.6, 26.42, 26.24, 26.06, 25.87, 25.69, 25.51, 25.33, 25.14, 24.96, 24.78, 24.59, + 24.4, 24.22, 24.03, 23.84, 23.65, 23.45, 23.26, 23.06, 22.86, 22.66, 22.45, 22.24, 22.03, 21.81, + 21.59, 21.36, 21.13, 20.89, 20.64, 20.39, 20.12, 19.85, 19.56, 19.26, 18.94, 18.6, 18.24, 17.84, + 17.41, 16.93, 16.37, 15.7, 14.85, 13.56, + ], + [ + 80.44, 69.87, 58.3, 49.59, 46.69, 44.91, 43.6, 42.56, 41.68, 40.92, 40.25, 39.64, 39.09, 38.58, + 38.11, 37.66, 37.25, 36.85, 36.48, 36.12, 35.78, 35.45, 35.14, 34.84, 34.54, 34.26, 33.98, + 33.71, 33.45, 33.19, 32.94, 32.7, 32.46, 32.23, 32.0, 31.77, 31.55, 31.33, 31.12, 30.9, 30.69, + 30.49, 30.28, 30.08, 29.88, 29.68, 29.49, 29.29, 29.1, 28.91, 28.71, 28.52, 28.34, 28.15, 27.96, + 27.77, 27.59, 27.4, 27.22, 27.03, 26.85, 26.66, 26.48, 26.29, 26.1, 25.92, 25.73, 25.54, 25.35, + 25.16, 24.97, 24.77, 24.58, 24.38, 24.18, 23.98, 23.77, 23.57, 23.36, 23.14, 22.92, 22.7, 22.48, + 22.24, 22.0, 21.76, 21.51, 21.25, 20.98, 20.7, 20.4, 20.09, 19.77, 19.42, 19.05, 18.65, 18.2, + 17.71, 17.14, 16.45, 15.57, 14.26, + ], + [ + 82.04, 71.38, 59.7, 50.89, 47.96, 46.16, 44.83, 43.77, 42.88, 42.11, 41.43, 40.82, 40.26, 39.74, + 39.26, 38.81, 38.39, 37.99, 37.61, 37.25, 36.9, 36.57, 36.25, 35.94, 35.64, 35.35, 35.07, 34.8, + 34.53, 34.27, 34.02, 33.77, 33.53, 33.29, 33.06, 32.83, 32.6, 32.38, 32.16, 31.95, 31.73, 31.52, + 31.32, 31.11, 30.91, 30.71, 30.51, 30.31, 30.11, 29.92, 29.72, 29.53, 29.34, 29.14, 28.95, + 28.76, 28.57, 28.39, 28.2, 28.01, 27.82, 27.63, 27.44, 27.25, 27.06, 26.87, 26.68, 26.49, 26.29, + 26.1, 25.9, 25.71, 25.51, 25.31, 25.1, 24.9, 24.69, 24.48, 24.26, 24.04, 23.82, 23.6, 23.36, + 23.13, 22.88, 22.63, 22.38, 22.11, 21.83, 21.55, 21.25, 20.93, 20.6, 20.25, 19.87, 19.45, 19.0, + 18.49, 17.91, 17.21, 16.31, 14.95, + ], + [ + 83.64, 72.89, 61.1, 52.19, 49.23, 47.4, 46.06, 44.99, 44.08, 43.3, 42.61, 41.99, 41.42, 40.9, + 40.41, 39.96, 39.53, 39.12, 38.74, 38.37, 38.02, 37.68, 37.36, 37.05, 36.74, 36.45, 36.16, + 35.89, 35.62, 35.35, 35.1, 34.84, 34.6, 34.36, 34.12, 33.89, 33.66, 33.43, 33.21, 32.99, 32.77, + 32.56, 32.35, 32.14, 31.93, 31.73, 31.52, 31.32, 31.12, 30.92, 30.73, 30.53, 30.34, 30.14, + 29.95, 29.75, 29.56, 29.37, 29.18, 28.99, 28.79, 28.6, 28.41, 28.22, 28.02, 27.83, 27.63, 27.44, + 27.24, 27.04, 26.84, 26.64, 26.44, 26.23, 26.03, 25.82, 25.61, 25.39, 25.17, 24.95, 24.72, + 24.49, 24.26, 24.01, 23.77, 23.51, 23.25, 22.98, 22.69, 22.4, 22.1, 21.77, 21.43, 21.07, 20.68, + 20.26, 19.8, 19.28, 18.68, 17.97, 17.04, 15.66, + ], + [ + 85.23, 74.39, 62.49, 53.49, 50.49, 48.64, 47.28, 46.19, 45.28, 44.49, 43.79, 43.16, 42.58, + 42.05, 41.56, 41.1, 40.67, 40.26, 39.87, 39.49, 39.14, 38.8, 38.47, 38.15, 37.84, 37.54, 37.25, + 36.97, 36.7, 36.43, 36.17, 35.92, 35.66, 35.42, 35.18, 34.94, 34.71, 34.48, 34.25, 34.03, 33.81, + 33.6, 33.38, 33.17, 32.96, 32.75, 32.54, 32.34, 32.14, 31.93, 31.73, 31.53, 31.34, 31.14, 30.94, + 30.74, 30.55, 30.35, 30.16, 29.96, 29.77, 29.57, 29.38, 29.18, 28.98, 28.79, 28.59, 28.39, + 28.19, 27.99, 27.78, 27.58, 27.37, 27.16, 26.95, 26.74, 26.52, 26.3, 26.08, 25.85, 25.62, 25.39, + 25.15, 24.9, 24.65, 24.39, 24.12, 23.84, 23.56, 23.26, 22.95, 22.62, 22.27, 21.9, 21.51, 21.08, + 20.6, 20.07, 19.46, 18.73, 17.78, 16.36, + ], + [ + 86.81, 75.88, 63.87, 54.78, 51.74, 49.88, 48.5, 47.4, 46.48, 45.68, 44.97, 44.33, 43.75, 43.21, + 42.71, 42.24, 41.8, 41.39, 40.99, 40.61, 40.25, 39.91, 39.57, 39.25, 38.94, 38.64, 38.34, 38.06, + 37.78, 37.51, 37.24, 36.98, 36.73, 36.48, 36.24, 36.0, 35.76, 35.53, 35.3, 35.07, 34.85, 34.63, + 34.41, 34.2, 33.98, 33.77, 33.56, 33.36, 33.15, 32.94, 32.74, 32.54, 32.34, 32.13, 31.93, 31.74, + 31.54, 31.34, 31.14, 30.94, 30.74, 30.54, 30.34, 30.15, 29.95, 29.74, 29.54, 29.34, 29.14, + 28.93, 28.73, 28.52, 28.31, 28.09, 27.88, 27.66, 27.44, 27.22, 26.99, 26.76, 26.53, 26.29, + 26.04, 25.79, 25.53, 25.27, 25.0, 24.71, 24.42, 24.12, 23.8, 23.46, 23.11, 22.73, 22.33, 21.89, + 21.41, 20.87, 20.24, 19.49, 18.53, 17.07, + ], + [ + 88.38, 77.37, 65.25, 56.06, 53.0, 51.11, 49.72, 48.6, 47.67, 46.86, 46.14, 45.49, 44.9, 44.36, + 43.85, 43.38, 42.94, 42.51, 42.11, 41.73, 41.37, 41.01, 40.68, 40.35, 40.03, 39.73, 39.43, + 39.14, 38.86, 38.58, 38.32, 38.05, 37.8, 37.54, 37.3, 37.05, 36.81, 36.58, 36.34, 36.11, 35.89, + 35.66, 35.44, 35.23, 35.01, 34.79, 34.58, 34.37, 34.16, 33.95, 33.75, 33.54, 33.34, 33.13, + 32.93, 32.73, 32.52, 32.32, 32.12, 31.92, 31.72, 31.52, 31.31, 31.11, 30.91, 30.7, 30.5, 30.29, + 30.09, 29.88, 29.67, 29.46, 29.24, 29.03, 28.81, 28.59, 28.36, 28.14, 27.91, 27.67, 27.43, + 27.19, 26.94, 26.68, 26.42, 26.15, 25.87, 25.59, 25.29, 24.98, 24.65, 24.31, 23.95, 23.57, + 23.16, 22.71, 22.22, 21.66, 21.03, 20.26, 19.28, 17.79, + ], + [ + 89.95, 78.84, 66.62, 57.34, 54.24, 52.34, 50.93, 49.8, 48.86, 48.04, 47.31, 46.66, 46.06, 45.51, + 45.0, 44.52, 44.07, 43.64, 43.23, 42.85, 42.48, 42.12, 41.78, 41.45, 41.13, 40.82, 40.52, 40.22, + 39.94, 39.66, 39.39, 39.12, 38.86, 38.6, 38.35, 38.11, 37.86, 37.62, 37.39, 37.15, 36.93, 36.7, + 36.47, 36.25, 36.03, 35.82, 35.6, 35.39, 35.17, 34.96, 34.75, 34.54, 34.34, 34.13, 33.92, 33.72, + 33.51, 33.31, 33.1, 32.9, 32.69, 32.49, 32.28, 32.08, 31.87, 31.66, 31.45, 31.25, 31.04, 30.82, + 30.61, 30.4, 30.18, 29.96, 29.74, 29.51, 29.28, 29.05, 28.82, 28.58, 28.34, 28.09, 27.84, 27.58, + 27.31, 27.04, 26.75, 26.46, 26.16, 25.84, 25.51, 25.16, 24.8, 24.41, 23.99, 23.53, 23.03, 22.47, + 21.82, 21.03, 20.03, 18.51, + ], + [ + 91.5, 80.31, 67.99, 58.62, 55.49, 53.56, 52.14, 51.0, 50.04, 49.21, 48.48, 47.82, 47.21, 46.66, + 46.14, 45.65, 45.2, 44.76, 44.35, 43.96, 43.59, 43.23, 42.88, 42.54, 42.22, 41.91, 41.6, 41.3, + 41.01, 40.73, 40.46, 40.19, 39.92, 39.66, 39.41, 39.16, 38.91, 38.67, 38.43, 38.19, 37.96, + 37.73, 37.5, 37.28, 37.06, 36.84, 36.62, 36.4, 36.19, 35.97, 35.76, 35.55, 35.34, 35.13, 34.92, + 34.71, 34.5, 34.29, 34.08, 33.88, 33.67, 33.46, 33.25, 33.04, 32.83, 32.62, 32.41, 32.2, 31.99, + 31.77, 31.55, 31.34, 31.12, 30.89, 30.67, 30.44, 30.21, 29.97, 29.73, 29.49, 29.24, 28.99, + 28.73, 28.47, 28.2, 27.92, 27.63, 27.34, 27.03, 26.71, 26.37, 26.02, 25.64, 25.25, 24.82, 24.35, + 23.84, 23.27, 22.61, 21.81, 20.78, 19.23, + ], + [ + 93.05, 81.78, 69.35, 59.89, 56.73, 54.78, 53.34, 52.19, 51.23, 50.39, 49.64, 48.97, 48.36, 47.8, + 47.28, 46.79, 46.32, 45.89, 45.47, 45.07, 44.69, 44.33, 43.98, 43.64, 43.31, 42.99, 42.68, + 42.38, 42.09, 41.8, 41.53, 41.25, 40.98, 40.72, 40.46, 40.21, 39.96, 39.71, 39.47, 39.23, 39.0, + 38.77, 38.53, 38.31, 38.08, 37.86, 37.64, 37.42, 37.2, 36.98, 36.76, 36.55, 36.34, 36.12, 35.91, + 35.7, 35.49, 35.28, 35.07, 34.85, 34.64, 34.43, 34.22, 34.01, 33.8, 33.58, 33.37, 33.15, 32.94, + 32.72, 32.5, 32.28, 32.05, 31.83, 31.6, 31.37, 31.13, 30.89, 30.65, 30.4, 30.15, 29.9, 29.64, + 29.37, 29.09, 28.81, 28.52, 28.21, 27.9, 27.57, 27.23, 26.87, 26.49, 26.09, 25.65, 25.18, 24.66, + 24.07, 23.4, 22.59, 21.54, 19.96, + ], + [ + 94.59, 83.24, 70.7, 61.16, 57.97, 56.0, 54.55, 53.38, 52.41, 51.56, 50.81, 50.13, 49.51, 48.94, + 48.41, 47.92, 47.45, 47.01, 46.59, 46.19, 45.8, 45.43, 45.08, 44.73, 44.4, 44.08, 43.77, 43.46, + 43.17, 42.88, 42.59, 42.32, 42.05, 41.78, 41.52, 41.26, 41.01, 40.76, 40.51, 40.27, 40.03, 39.8, + 39.56, 39.33, 39.1, 38.88, 38.65, 38.43, 38.21, 37.99, 37.77, 37.55, 37.34, 37.12, 36.9, 36.69, + 36.48, 36.26, 36.05, 35.83, 35.62, 35.41, 35.19, 34.98, 34.76, 34.54, 34.33, 34.11, 33.89, + 33.67, 33.44, 33.22, 32.99, 32.76, 32.53, 32.29, 32.06, 31.81, 31.57, 31.32, 31.06, 30.8, 30.54, + 30.26, 29.99, 29.7, 29.4, 29.09, 28.77, 28.44, 28.09, 27.73, 27.34, 26.93, 26.49, 26.01, 25.48, + 24.88, 24.2, 23.37, 22.3, 20.69, + ], + [ + 96.13, 84.69, 72.05, 62.43, 59.2, 57.22, 55.75, 54.57, 53.58, 52.73, 51.97, 51.28, 50.66, 50.08, + 49.55, 49.05, 48.57, 48.13, 47.7, 47.29, 46.91, 46.53, 46.17, 45.83, 45.49, 45.16, 44.85, 44.54, + 44.24, 43.95, 43.66, 43.38, 43.11, 42.84, 42.57, 42.31, 42.06, 41.8, 41.56, 41.31, 41.07, 40.83, + 40.59, 40.36, 40.13, 39.9, 39.67, 39.44, 39.22, 39.0, 38.78, 38.56, 38.34, 38.12, 37.9, 37.68, + 37.46, 37.25, 37.03, 36.81, 36.6, 36.38, 36.16, 35.94, 35.73, 35.51, 35.29, 35.06, 34.84, 34.62, + 34.39, 34.16, 33.93, 33.7, 33.46, 33.22, 32.98, 32.74, 32.49, 32.23, 31.97, 31.71, 31.44, 31.16, + 30.88, 30.59, 30.29, 29.97, 29.65, 29.31, 28.96, 28.59, 28.2, 27.78, 27.33, 26.84, 26.3, 25.7, + 25.0, 24.16, 23.07, 21.43, + ], + [ + 97.65, 86.14, 73.4, 63.69, 60.44, 58.43, 56.95, 55.76, 54.76, 53.9, 53.13, 52.44, 51.81, 51.22, + 50.68, 50.17, 49.7, 49.24, 48.81, 48.4, 48.01, 47.63, 47.27, 46.92, 46.58, 46.25, 45.93, 45.62, + 45.31, 45.02, 44.73, 44.44, 44.16, 43.89, 43.62, 43.36, 43.1, 42.85, 42.6, 42.35, 42.1, 41.86, + 41.62, 41.39, 41.15, 40.92, 40.69, 40.46, 40.23, 40.01, 39.78, 39.56, 39.34, 39.11, 38.89, + 38.67, 38.45, 38.23, 38.01, 37.79, 37.57, 37.35, 37.13, 36.91, 36.69, 36.47, 36.25, 36.02, + 35.79, 35.57, 35.34, 35.11, 34.87, 34.64, 34.4, 34.15, 33.91, 33.66, 33.41, 33.15, 32.89, 32.62, + 32.34, 32.06, 31.78, 31.48, 31.17, 30.86, 30.53, 30.18, 29.83, 29.45, 29.05, 28.63, 28.17, + 27.67, 27.12, 26.51, 25.8, 24.94, 23.84, 22.16, + ], + [ + 99.17, 87.58, 74.74, 64.95, 61.67, 59.64, 58.14, 56.94, 55.93, 55.06, 54.29, 53.59, 52.95, + 52.36, 51.81, 51.3, 50.82, 50.36, 49.93, 49.51, 49.11, 48.73, 48.36, 48.01, 47.66, 47.33, 47.01, + 46.69, 46.38, 46.08, 45.79, 45.5, 45.22, 44.95, 44.68, 44.41, 44.15, 43.89, 43.64, 43.39, 43.14, + 42.89, 42.65, 42.41, 42.17, 41.94, 41.7, 41.47, 41.24, 41.01, 40.79, 40.56, 40.34, 40.11, 39.89, + 39.66, 39.44, 39.22, 39.0, 38.77, 38.55, 38.33, 38.11, 37.88, 37.66, 37.43, 37.21, 36.98, 36.75, + 36.52, 36.28, 36.05, 35.81, 35.57, 35.33, 35.09, 34.84, 34.58, 34.33, 34.07, 33.8, 33.53, 33.25, + 32.97, 32.67, 32.37, 32.06, 31.74, 31.41, 31.06, 30.69, 30.31, 29.91, 29.48, 29.01, 28.51, + 27.95, 27.33, 26.6, 25.73, 24.61, 22.91, + ], + [ + 100.69, 89.01, 76.08, 66.21, 62.89, 60.85, 59.33, 58.12, 57.11, 56.22, 55.44, 54.73, 54.09, + 53.5, 52.94, 52.42, 51.94, 51.47, 51.04, 50.62, 50.21, 49.83, 49.46, 49.1, 48.75, 48.41, 48.08, + 47.77, 47.46, 47.15, 46.86, 46.57, 46.28, 46.0, 45.73, 45.46, 45.19, 44.93, 44.68, 44.42, 44.17, + 43.92, 43.68, 43.44, 43.2, 42.96, 42.72, 42.49, 42.25, 42.02, 41.79, 41.56, 41.34, 41.11, 40.88, + 40.66, 40.43, 40.2, 39.98, 39.75, 39.53, 39.3, 39.08, 38.85, 38.62, 38.39, 38.17, 37.93, 37.7, + 37.47, 37.23, 37.0, 36.75, 36.51, 36.27, 36.02, 35.77, 35.51, 35.25, 34.98, 34.71, 34.44, 34.16, + 33.87, 33.57, 33.27, 32.95, 32.63, 32.29, 31.93, 31.56, 31.18, 30.77, 30.33, 29.86, 29.34, + 28.78, 28.14, 27.41, 26.53, 25.38, 23.65, + ], + [ + 102.2, 90.44, 77.42, 67.46, 64.12, 62.05, 60.53, 59.3, 58.28, 57.38, 56.59, 55.88, 55.23, 54.63, + 54.07, 53.55, 53.05, 52.59, 52.14, 51.72, 51.31, 50.92, 50.55, 50.19, 49.83, 49.49, 49.16, + 48.84, 48.53, 48.22, 47.92, 47.63, 47.34, 47.06, 46.78, 46.51, 46.24, 45.98, 45.72, 45.46, 45.2, + 44.95, 44.71, 44.46, 44.22, 43.98, 43.74, 43.5, 43.26, 43.03, 42.8, 42.57, 42.34, 42.11, 41.88, + 41.65, 41.42, 41.19, 40.96, 40.74, 40.51, 40.28, 40.05, 39.82, 39.59, 39.36, 39.13, 38.89, + 38.66, 38.42, 38.18, 37.94, 37.7, 37.45, 37.2, 36.95, 36.7, 36.44, 36.17, 35.9, 35.63, 35.35, + 35.07, 34.77, 34.47, 34.16, 33.84, 33.51, 33.17, 32.81, 32.44, 32.04, 31.63, 31.18, 30.7, 30.18, + 29.61, 28.96, 28.22, 27.32, 26.16, 24.4, + ], + [ + 103.7, 91.87, 78.75, 68.71, 65.34, 63.25, 61.71, 60.48, 59.44, 58.54, 57.75, 57.03, 56.37, + 55.76, 55.2, 54.67, 54.17, 53.7, 53.25, 52.82, 52.41, 52.02, 51.64, 51.27, 50.92, 50.57, 50.24, + 49.91, 49.6, 49.29, 48.98, 48.69, 48.4, 48.11, 47.83, 47.56, 47.28, 47.02, 46.75, 46.49, 46.24, + 45.98, 45.73, 45.49, 45.24, 45.0, 44.75, 44.51, 44.28, 44.04, 43.8, 43.57, 43.34, 43.1, 42.87, + 42.64, 42.41, 42.18, 41.95, 41.72, 41.49, 41.25, 41.02, 40.79, 40.56, 40.32, 40.09, 39.85, + 39.61, 39.37, 39.13, 38.89, 38.64, 38.39, 38.14, 37.88, 37.63, 37.36, 37.1, 36.82, 36.55, 36.26, + 35.97, 35.68, 35.37, 35.06, 34.74, 34.4, 34.05, 33.69, 33.31, 32.91, 32.49, 32.04, 31.55, 31.02, + 30.44, 29.79, 29.03, 28.12, 26.94, 25.15, + ], + [ + 105.2, 93.29, 80.08, 69.96, 66.56, 64.45, 62.9, 61.66, 60.61, 59.7, 58.9, 58.17, 57.51, 56.89, + 56.32, 55.79, 55.29, 54.81, 54.36, 53.92, 53.51, 53.11, 52.73, 52.36, 52.0, 51.65, 51.31, 50.98, + 50.66, 50.35, 50.05, 49.75, 49.45, 49.16, 48.88, 48.6, 48.33, 48.06, 47.79, 47.53, 47.27, 47.01, + 46.76, 46.51, 46.26, 46.01, 45.77, 45.53, 45.29, 45.05, 44.81, 44.57, 44.34, 44.1, 43.87, 43.63, + 43.4, 43.16, 42.93, 42.7, 42.46, 42.23, 42.0, 41.76, 41.52, 41.29, 41.05, 40.81, 40.57, 40.33, + 40.08, 39.83, 39.58, 39.33, 39.08, 38.82, 38.56, 38.29, 38.02, 37.75, 37.46, 37.18, 36.88, + 36.58, 36.28, 35.96, 35.63, 35.29, 34.94, 34.57, 34.18, 33.78, 33.35, 32.89, 32.4, 31.87, 31.28, + 30.61, 29.84, 28.92, 27.72, 25.9, + ], + [ + 106.69, 94.71, 81.4, 71.2, 67.77, 65.65, 64.09, 62.83, 61.77, 60.86, 60.04, 59.31, 58.64, 58.02, + 57.45, 56.91, 56.4, 55.92, 55.46, 55.03, 54.61, 54.21, 53.82, 53.44, 53.08, 52.73, 52.39, 52.06, + 51.73, 51.42, 51.11, 50.8, 50.51, 50.22, 49.93, 49.65, 49.37, 49.1, 48.83, 48.56, 48.3, 48.04, + 47.79, 47.53, 47.28, 47.03, 46.79, 46.54, 46.3, 46.05, 45.81, 45.57, 45.34, 45.1, 44.86, 44.62, + 44.39, 44.15, 43.91, 43.68, 43.44, 43.21, 42.97, 42.73, 42.49, 42.25, 42.01, 41.77, 41.52, + 41.28, 41.03, 40.78, 40.53, 40.27, 40.02, 39.75, 39.49, 39.22, 38.95, 38.67, 38.38, 38.09, 37.8, + 37.49, 37.18, 36.86, 36.52, 36.18, 35.82, 35.45, 35.06, 34.65, 34.22, 33.75, 33.25, 32.71, + 32.11, 31.44, 30.66, 29.72, 28.5, 26.66, + ], + [ + 108.18, 96.12, 82.72, 72.44, 68.99, 66.85, 65.27, 64.0, 62.94, 62.01, 61.19, 60.45, 59.77, + 59.15, 58.57, 58.03, 57.51, 57.03, 56.57, 56.13, 55.7, 55.3, 54.91, 54.53, 54.16, 53.81, 53.46, + 53.13, 52.8, 52.48, 52.17, 51.86, 51.56, 51.27, 50.98, 50.69, 50.41, 50.14, 49.87, 49.6, 49.33, + 49.07, 48.81, 48.56, 48.3, 48.05, 47.8, 47.55, 47.31, 47.06, 46.82, 46.58, 46.34, 46.09, 45.85, + 45.62, 45.38, 45.14, 44.9, 44.66, 44.42, 44.18, 43.94, 43.7, 43.46, 43.22, 42.97, 42.73, 42.48, + 42.23, 41.98, 41.73, 41.47, 41.22, 40.95, 40.69, 40.42, 40.15, 39.87, 39.59, 39.3, 39.01, 38.71, + 38.4, 38.08, 37.76, 37.42, 37.07, 36.71, 36.33, 35.94, 35.52, 35.08, 34.61, 34.11, 33.56, 32.95, + 32.27, 31.48, 30.53, 29.29, 27.42, + ], + [ + 109.66, 97.53, 84.04, 73.68, 70.2, 68.04, 66.45, 65.17, 64.1, 63.16, 62.34, 61.59, 60.91, 60.28, + 59.69, 59.14, 58.63, 58.14, 57.67, 57.22, 56.8, 56.39, 55.99, 55.61, 55.24, 54.88, 54.54, 54.2, + 53.87, 53.54, 53.23, 52.92, 52.62, 52.32, 52.03, 51.74, 51.46, 51.18, 50.9, 50.63, 50.37, 50.1, + 49.84, 49.58, 49.32, 49.07, 48.82, 48.57, 48.32, 48.07, 47.82, 47.58, 47.34, 47.09, 46.85, + 46.61, 46.37, 46.12, 45.88, 45.64, 45.4, 45.16, 44.92, 44.67, 44.43, 44.18, 43.94, 43.69, 43.44, + 43.19, 42.93, 42.68, 42.42, 42.16, 41.89, 41.63, 41.36, 41.08, 40.8, 40.51, 40.22, 39.92, 39.62, + 39.31, 38.99, 38.66, 38.32, 37.96, 37.6, 37.22, 36.82, 36.4, 35.95, 35.47, 34.96, 34.4, 33.79, + 33.1, 32.3, 31.33, 30.08, 28.18, + ], + [ + 111.14, 98.93, 85.35, 74.92, 71.41, 69.23, 67.63, 66.34, 65.25, 64.31, 63.48, 62.73, 62.04, + 61.4, 60.81, 60.26, 59.74, 59.24, 58.77, 58.32, 57.89, 57.48, 57.08, 56.69, 56.32, 55.96, 55.61, + 55.27, 54.93, 54.61, 54.29, 53.98, 53.67, 53.37, 53.07, 52.79, 52.5, 52.22, 51.94, 51.67, 51.4, + 51.13, 50.87, 50.6, 50.34, 50.09, 49.83, 49.58, 49.33, 49.08, 48.83, 48.58, 48.33, 48.09, 47.84, + 47.6, 47.36, 47.11, 46.87, 46.62, 46.38, 46.13, 45.89, 45.64, 45.4, 45.15, 44.9, 44.65, 44.4, + 44.14, 43.89, 43.63, 43.37, 43.1, 42.83, 42.56, 42.29, 42.01, 41.73, 41.44, 41.14, 40.84, 40.53, + 40.22, 39.89, 39.56, 39.22, 38.86, 38.49, 38.1, 37.7, 37.27, 36.82, 36.34, 35.82, 35.25, 34.63, + 33.93, 33.12, 32.14, 30.87, 28.94, + ], + [ + 112.61, 100.33, 86.66, 76.15, 72.61, 70.42, 68.8, 67.5, 66.41, 65.46, 64.62, 63.86, 63.17, + 62.53, 61.93, 61.37, 60.84, 60.35, 59.87, 59.42, 58.98, 58.57, 58.16, 57.78, 57.4, 57.03, 56.68, + 56.33, 56.0, 55.67, 55.35, 55.03, 54.72, 54.42, 54.12, 53.83, 53.54, 53.26, 52.98, 52.7, 52.43, + 52.16, 51.89, 51.63, 51.37, 51.11, 50.85, 50.59, 50.34, 50.09, 49.83, 49.58, 49.33, 49.09, + 48.84, 48.59, 48.35, 48.1, 47.85, 47.61, 47.36, 47.11, 46.86, 46.62, 46.37, 46.12, 45.86, 45.61, + 45.35, 45.1, 44.84, 44.58, 44.31, 44.05, 43.78, 43.5, 43.22, 42.94, 42.66, 42.36, 42.07, 41.76, + 41.45, 41.13, 40.8, 40.46, 40.12, 39.75, 39.38, 38.99, 38.58, 38.15, 37.69, 37.2, 36.68, 36.11, + 35.47, 34.76, 33.94, 32.95, 31.66, 29.71, + ], + [ + 114.08, 101.73, 87.97, 77.39, 73.82, 71.61, 69.98, 68.67, 67.57, 66.61, 65.76, 65.0, 64.3, + 63.65, 63.05, 62.48, 61.95, 61.45, 60.97, 60.51, 60.08, 59.65, 59.25, 58.86, 58.48, 58.11, + 57.75, 57.4, 57.06, 56.73, 56.4, 56.09, 55.78, 55.47, 55.17, 54.87, 54.58, 54.3, 54.01, 53.73, + 53.46, 53.19, 52.92, 52.65, 52.39, 52.12, 51.86, 51.6, 51.35, 51.09, 50.84, 50.59, 50.33, 50.08, + 49.83, 49.58, 49.34, 49.09, 48.84, 48.59, 48.34, 48.09, 47.84, 47.59, 47.34, 47.08, 46.83, + 46.57, 46.31, 46.05, 45.79, 45.53, 45.26, 44.99, 44.72, 44.44, 44.16, 43.87, 43.58, 43.29, + 42.99, 42.68, 42.36, 42.04, 41.71, 41.37, 41.02, 40.65, 40.27, 39.87, 39.46, 39.02, 38.56, + 38.07, 37.54, 36.96, 36.32, 35.6, 34.77, 33.76, 32.46, 30.48, + ], + [ + 115.54, 103.12, 89.27, 78.62, 75.02, 72.8, 71.15, 69.83, 68.72, 67.76, 66.9, 66.13, 65.42, + 64.77, 64.16, 63.6, 63.06, 62.55, 62.07, 61.61, 61.17, 60.74, 60.33, 59.94, 59.55, 59.18, 58.82, + 58.47, 58.13, 57.79, 57.46, 57.14, 56.83, 56.52, 56.22, 55.92, 55.62, 55.33, 55.05, 54.77, + 54.49, 54.21, 53.94, 53.67, 53.41, 53.14, 52.88, 52.62, 52.36, 52.1, 51.84, 51.59, 51.33, 51.08, + 50.83, 50.58, 50.33, 50.07, 49.82, 49.57, 49.32, 49.07, 48.81, 48.56, 48.3, 48.05, 47.79, 47.53, + 47.27, 47.01, 46.75, 46.48, 46.21, 45.94, 45.66, 45.38, 45.1, 44.81, 44.51, 44.22, 43.91, 43.6, + 43.28, 42.95, 42.62, 42.27, 41.92, 41.55, 41.16, 40.76, 40.34, 39.9, 39.43, 38.93, 38.4, 37.81, + 37.16, 36.44, 35.59, 34.58, 33.26, 31.25, + ], + [ + 117.0, 104.5, 90.57, 79.84, 76.22, 73.98, 72.32, 70.99, 69.87, 68.9, 68.04, 67.26, 66.55, 65.89, + 65.28, 64.71, 64.17, 63.65, 63.17, 62.7, 62.26, 61.83, 61.41, 61.02, 60.63, 60.25, 59.89, 59.53, + 59.19, 58.85, 58.52, 58.2, 57.88, 57.57, 57.26, 56.96, 56.66, 56.37, 56.08, 55.8, 55.52, 55.24, + 54.97, 54.69, 54.43, 54.16, 53.89, 53.63, 53.37, 53.11, 52.85, 52.59, 52.33, 52.08, 51.82, + 51.57, 51.32, 51.06, 50.81, 50.55, 50.3, 50.04, 49.79, 49.53, 49.27, 49.02, 48.76, 48.5, 48.23, + 47.97, 47.7, 47.43, 47.16, 46.88, 46.6, 46.32, 46.03, 45.74, 45.44, 45.14, 44.84, 44.52, 44.2, + 43.87, 43.53, 43.18, 42.82, 42.45, 42.06, 41.65, 41.23, 40.78, 40.31, 39.8, 39.26, 38.67, 38.01, + 37.28, 36.42, 35.39, 34.06, 32.02, + ], + [ + 118.45, 105.89, 91.87, 81.07, 77.42, 75.16, 73.49, 72.15, 71.02, 70.04, 69.18, 68.39, 67.67, + 67.01, 66.39, 65.82, 65.27, 64.76, 64.26, 63.79, 63.35, 62.91, 62.5, 62.09, 61.7, 61.33, 60.96, + 60.6, 60.25, 59.91, 59.58, 59.25, 58.93, 58.62, 58.31, 58.0, 57.7, 57.41, 57.12, 56.83, 56.55, + 56.27, 55.99, 55.72, 55.45, 55.18, 54.91, 54.64, 54.38, 54.12, 53.85, 53.59, 53.33, 53.08, + 52.82, 52.56, 52.31, 52.05, 51.79, 51.54, 51.28, 51.02, 50.76, 50.5, 50.24, 49.98, 49.72, 49.46, + 49.19, 48.92, 48.65, 48.38, 48.11, 47.83, 47.55, 47.26, 46.97, 46.68, 46.38, 46.07, 45.76, + 45.44, 45.12, 44.78, 44.44, 44.09, 43.72, 43.34, 42.95, 42.54, 42.11, 41.66, 41.18, 40.67, + 40.12, 39.52, 38.86, 38.12, 37.25, 36.21, 34.86, 32.79, + ], + [ + 119.9, 107.27, 93.17, 82.29, 78.62, 76.34, 74.66, 73.31, 72.17, 71.19, 70.31, 69.52, 68.8, + 68.13, 67.51, 66.92, 66.38, 65.86, 65.36, 64.89, 64.43, 64.0, 63.58, 63.17, 62.78, 62.4, 62.03, + 61.66, 61.31, 60.97, 60.63, 60.3, 59.98, 59.66, 59.35, 59.05, 58.74, 58.45, 58.15, 57.86, 57.58, + 57.3, 57.02, 56.74, 56.46, 56.19, 55.92, 55.65, 55.39, 55.12, 54.86, 54.6, 54.33, 54.07, 53.81, + 53.55, 53.3, 53.04, 52.78, 52.52, 52.26, 52.0, 51.74, 51.48, 51.22, 50.95, 50.69, 50.42, 50.15, + 49.88, 49.61, 49.33, 49.06, 48.77, 48.49, 48.2, 47.91, 47.61, 47.31, 47.0, 46.69, 46.36, 46.04, + 45.7, 45.35, 45.0, 44.63, 44.24, 43.85, 43.43, 43.0, 42.54, 42.06, 41.54, 40.99, 40.38, 39.71, + 38.96, 38.08, 37.03, 35.66, 33.57, + ], + [ + 121.35, 108.65, 94.46, 83.51, 79.81, 77.52, 75.83, 74.47, 73.32, 72.33, 71.44, 70.65, 69.92, + 69.25, 68.62, 68.03, 67.48, 66.95, 66.45, 65.98, 65.52, 65.08, 64.66, 64.25, 63.85, 63.47, + 63.09, 62.73, 62.37, 62.03, 61.69, 61.36, 61.03, 60.71, 60.4, 60.09, 59.78, 59.48, 59.19, 58.9, + 58.61, 58.32, 58.04, 57.76, 57.48, 57.21, 56.94, 56.67, 56.4, 56.13, 55.86, 55.6, 55.33, 55.07, + 54.81, 54.55, 54.29, 54.02, 53.76, 53.5, 53.24, 52.98, 52.71, 52.45, 52.19, 51.92, 51.65, 51.38, + 51.11, 50.84, 50.56, 50.29, 50.01, 49.72, 49.43, 49.14, 48.85, 48.55, 48.24, 47.93, 47.61, + 47.29, 46.96, 46.61, 46.26, 45.9, 45.53, 45.15, 44.74, 44.33, 43.89, 43.43, 42.94, 42.42, 41.85, + 41.24, 40.56, 39.8, 38.92, 37.85, 36.46, 34.35, + ], + [ + 122.79, 110.02, 95.75, 84.73, 81.01, 78.7, 76.99, 75.62, 74.47, 73.47, 72.58, 71.77, 71.04, + 70.36, 69.73, 69.14, 68.58, 68.05, 67.55, 67.07, 66.61, 66.16, 65.74, 65.32, 64.93, 64.54, + 64.16, 63.79, 63.44, 63.09, 62.74, 62.41, 62.08, 61.76, 61.44, 61.13, 60.82, 60.52, 60.22, + 59.93, 59.64, 59.35, 59.06, 58.78, 58.5, 58.23, 57.95, 57.68, 57.41, 57.14, 56.87, 56.6, 56.33, + 56.07, 55.8, 55.54, 55.28, 55.01, 54.75, 54.49, 54.22, 53.96, 53.69, 53.42, 53.16, 52.89, 52.62, + 52.35, 52.07, 51.8, 51.52, 51.24, 50.96, 50.67, 50.38, 50.08, 49.79, 49.48, 49.17, 48.86, 48.54, + 48.21, 47.88, 47.53, 47.18, 46.81, 46.44, 46.05, 45.64, 45.22, 44.78, 44.31, 43.82, 43.29, + 42.72, 42.1, 41.42, 40.65, 39.75, 38.67, 37.27, 35.13, + ], + [ + 124.23, 111.39, 97.04, 85.95, 82.2, 79.88, 78.16, 76.78, 75.62, 74.61, 73.71, 72.9, 72.16, + 71.48, 70.84, 70.24, 69.68, 69.15, 68.64, 68.16, 67.69, 67.25, 66.82, 66.4, 66.0, 65.61, 65.23, + 64.86, 64.5, 64.14, 63.8, 63.46, 63.13, 62.8, 62.48, 62.17, 61.86, 61.56, 61.26, 60.96, 60.67, + 60.38, 60.09, 59.8, 59.52, 59.24, 58.96, 58.69, 58.42, 58.14, 57.87, 57.6, 57.33, 57.07, 56.8, + 56.53, 56.27, 56.0, 55.73, 55.47, 55.2, 54.93, 54.67, 54.4, 54.13, 53.86, 53.59, 53.31, 53.03, + 52.76, 52.48, 52.19, 51.91, 51.62, 51.32, 51.03, 50.73, 50.42, 50.11, 49.79, 49.47, 49.14, 48.8, + 48.45, 48.09, 47.72, 47.34, 46.95, 46.54, 46.11, 45.67, 45.2, 44.7, 44.16, 43.59, 42.96, 42.27, + 41.49, 40.59, 39.5, 38.08, 35.91, + ], + [ + 125.66, 112.76, 98.32, 87.17, 83.39, 81.05, 79.32, 77.93, 76.76, 75.74, 74.84, 74.02, 73.28, + 72.59, 71.95, 71.35, 70.78, 70.25, 69.73, 69.25, 68.78, 68.33, 67.89, 67.48, 67.07, 66.68, + 66.29, 65.92, 65.56, 65.2, 64.85, 64.51, 64.18, 63.85, 63.53, 63.21, 62.9, 62.59, 62.29, 61.99, + 61.69, 61.4, 61.11, 60.82, 60.54, 60.26, 59.98, 59.7, 59.43, 59.15, 58.88, 58.61, 58.33, 58.06, + 57.8, 57.53, 57.26, 56.99, 56.72, 56.45, 56.18, 55.91, 55.64, 55.37, 55.1, 54.83, 54.55, 54.27, + 54.0, 53.72, 53.43, 53.15, 52.86, 52.57, 52.27, 51.97, 51.67, 51.36, 51.04, 50.72, 50.39, 50.06, + 49.72, 49.37, 49.01, 48.64, 48.25, 47.85, 47.44, 47.01, 46.56, 46.08, 45.58, 45.04, 44.46, + 43.83, 43.13, 42.34, 41.43, 40.32, 38.89, 36.7, + ], + [ + 127.1, 114.12, 99.61, 88.38, 84.58, 82.23, 80.48, 79.08, 77.9, 76.88, 75.97, 75.15, 74.4, 73.7, + 73.06, 72.45, 71.88, 71.34, 70.83, 70.33, 69.86, 69.41, 68.97, 68.55, 68.14, 67.74, 67.36, + 66.98, 66.61, 66.26, 65.91, 65.56, 65.23, 64.9, 64.57, 64.25, 63.94, 63.63, 63.32, 63.02, 62.72, + 62.43, 62.13, 61.85, 61.56, 61.27, 60.99, 60.71, 60.43, 60.16, 59.88, 59.61, 59.33, 59.06, + 58.79, 58.52, 58.25, 57.98, 57.71, 57.44, 57.16, 56.89, 56.62, 56.35, 56.07, 55.8, 55.52, 55.24, + 54.96, 54.67, 54.39, 54.1, 53.81, 53.51, 53.22, 52.91, 52.61, 52.29, 51.98, 51.65, 51.32, 50.99, + 50.64, 50.29, 49.92, 49.55, 49.16, 48.76, 48.34, 47.91, 47.45, 46.97, 46.46, 45.91, 45.33, + 44.69, 43.98, 43.19, 42.27, 41.15, 39.7, 37.48, + ], + [ + 128.52, 115.49, 100.89, 89.59, 85.77, 83.4, 81.64, 80.23, 79.04, 78.01, 77.1, 76.27, 75.51, + 74.82, 74.17, 73.56, 72.98, 72.44, 71.92, 71.42, 70.95, 70.49, 70.05, 69.62, 69.21, 68.81, + 68.42, 68.04, 67.67, 67.31, 66.96, 66.61, 66.27, 65.94, 65.61, 65.29, 64.98, 64.66, 64.35, + 64.05, 63.75, 63.45, 63.16, 62.87, 62.58, 62.29, 62.01, 61.72, 61.44, 61.16, 60.89, 60.61, + 60.33, 60.06, 59.79, 59.51, 59.24, 58.97, 58.69, 58.42, 58.15, 57.87, 57.6, 57.32, 57.04, 56.77, + 56.49, 56.2, 55.92, 55.63, 55.35, 55.06, 54.76, 54.46, 54.16, 53.86, 53.55, 53.23, 52.91, 52.59, + 52.25, 51.91, 51.56, 51.21, 50.84, 50.46, 50.07, 49.66, 49.24, 48.8, 48.34, 47.86, 47.34, 46.79, + 46.2, 45.56, 44.84, 44.04, 43.11, 41.98, 40.51, 38.27, + ], + [ + 129.95, 116.85, 102.17, 90.8, 86.95, 84.57, 82.8, 81.38, 80.19, 79.15, 78.22, 77.39, 76.63, + 75.93, 75.27, 74.66, 74.08, 73.53, 73.01, 72.51, 72.03, 71.57, 71.13, 70.7, 70.28, 69.88, 69.49, + 69.1, 68.73, 68.37, 68.01, 67.66, 67.32, 66.99, 66.66, 66.33, 66.01, 65.7, 65.39, 65.08, 64.78, + 64.48, 64.18, 63.89, 63.6, 63.31, 63.02, 62.74, 62.45, 62.17, 61.89, 61.61, 61.33, 61.06, 60.78, + 60.51, 60.23, 59.95, 59.68, 59.4, 59.13, 58.85, 58.57, 58.3, 58.02, 57.74, 57.45, 57.17, 56.88, + 56.59, 56.3, 56.01, 55.71, 55.41, 55.11, 54.8, 54.49, 54.17, 53.85, 53.52, 53.18, 52.84, 52.49, + 52.13, 51.76, 51.37, 50.98, 50.57, 50.14, 49.7, 49.24, 48.75, 48.23, 47.67, 47.07, 46.42, 45.7, + 44.89, 43.95, 42.81, 41.33, 39.06, + ], + [ + 131.37, 118.2, 103.44, 92.01, 88.14, 85.74, 83.96, 82.53, 81.33, 80.28, 79.35, 78.51, 77.75, + 77.04, 76.38, 75.76, 75.18, 74.62, 74.1, 73.59, 73.11, 72.65, 72.2, 71.77, 71.35, 70.94, 70.55, + 70.16, 69.79, 69.42, 69.06, 68.71, 68.37, 68.03, 67.7, 67.37, 67.05, 66.73, 66.42, 66.11, 65.8, + 65.5, 65.2, 64.91, 64.61, 64.32, 64.03, 63.75, 63.46, 63.18, 62.9, 62.61, 62.33, 62.06, 61.78, + 61.5, 61.22, 60.94, 60.67, 60.39, 60.11, 59.83, 59.55, 59.27, 58.99, 58.71, 58.42, 58.13, 57.85, + 57.56, 57.26, 56.97, 56.67, 56.36, 56.06, 55.75, 55.43, 55.11, 54.78, 54.45, 54.11, 53.77, + 53.41, 53.05, 52.67, 52.29, 51.89, 51.48, 51.05, 50.6, 50.13, 49.64, 49.11, 48.55, 47.95, 47.29, + 46.56, 45.74, 44.79, 43.64, 42.14, 39.86, + ], + [ + 132.79, 119.55, 104.72, 93.22, 89.32, 86.9, 85.11, 83.68, 82.46, 81.41, 80.48, 79.63, 78.86, + 78.15, 77.48, 76.86, 76.27, 75.72, 75.19, 74.68, 74.19, 73.73, 73.28, 72.84, 72.42, 72.01, + 71.61, 71.23, 70.85, 70.48, 70.12, 69.76, 69.42, 69.08, 68.74, 68.41, 68.09, 67.77, 67.45, + 67.14, 66.83, 66.53, 66.23, 65.93, 65.63, 65.34, 65.05, 64.76, 64.47, 64.18, 63.9, 63.62, 63.33, + 63.05, 62.77, 62.49, 62.21, 61.93, 61.65, 61.37, 61.09, 60.81, 60.53, 60.25, 59.96, 59.68, + 59.39, 59.1, 58.81, 58.52, 58.22, 57.92, 57.62, 57.31, 57.0, 56.69, 56.37, 56.05, 55.72, 55.39, + 55.04, 54.69, 54.34, 53.97, 53.59, 53.2, 52.8, 52.38, 51.95, 51.5, 51.03, 50.53, 50.0, 49.43, + 48.82, 48.16, 47.42, 46.59, 45.63, 44.47, 42.96, 40.65, + ], + [ + 134.2, 120.9, 105.99, 94.42, 90.5, 88.07, 86.27, 84.82, 83.6, 82.54, 81.6, 80.75, 79.97, 79.26, + 78.59, 77.96, 77.37, 76.81, 76.27, 75.76, 75.27, 74.8, 74.35, 73.91, 73.49, 73.08, 72.68, 72.28, + 71.9, 71.53, 71.17, 70.81, 70.46, 70.12, 69.78, 69.45, 69.12, 68.8, 68.48, 68.17, 67.86, 67.55, + 67.25, 66.95, 66.65, 66.35, 66.06, 65.77, 65.48, 65.19, 64.9, 64.62, 64.33, 64.05, 63.77, 63.49, + 63.2, 62.92, 62.64, 62.36, 62.07, 61.79, 61.51, 61.22, 60.93, 60.65, 60.36, 60.07, 59.77, 59.48, + 59.18, 58.88, 58.57, 58.27, 57.95, 57.64, 57.32, 56.99, 56.66, 56.32, 55.98, 55.62, 55.26, + 54.89, 54.51, 54.12, 53.71, 53.29, 52.86, 52.4, 51.92, 51.42, 50.88, 50.31, 49.7, 49.03, 48.29, + 47.45, 46.48, 45.31, 43.78, 41.44, + ], + [ + 135.61, 122.25, 107.26, 95.63, 91.68, 89.23, 87.42, 85.96, 84.74, 83.67, 82.72, 81.87, 81.09, + 80.36, 79.69, 79.06, 78.46, 77.9, 77.36, 76.85, 76.35, 75.88, 75.42, 74.98, 74.56, 74.14, 73.74, + 73.34, 72.96, 72.59, 72.22, 71.86, 71.51, 71.16, 70.82, 70.49, 70.16, 69.83, 69.51, 69.2, 68.89, + 68.58, 68.27, 67.97, 67.67, 67.37, 67.07, 66.78, 66.49, 66.2, 65.91, 65.62, 65.33, 65.05, 64.76, + 64.48, 64.19, 63.91, 63.63, 63.34, 63.06, 62.77, 62.48, 62.2, 61.91, 61.62, 61.33, 61.03, 60.74, + 60.44, 60.14, 59.83, 59.53, 59.22, 58.9, 58.58, 58.26, 57.93, 57.6, 57.26, 56.91, 56.55, 56.19, + 55.81, 55.43, 55.03, 54.63, 54.2, 53.76, 53.3, 52.82, 52.31, 51.77, 51.19, 50.57, 49.9, 49.15, + 48.31, 47.33, 46.14, 44.6, 42.24, + ], + [ + 137.02, 123.6, 108.53, 96.83, 92.86, 90.4, 88.57, 87.11, 85.87, 84.8, 83.85, 82.98, 82.2, 81.47, + 80.79, 80.16, 79.56, 78.99, 78.45, 77.93, 77.43, 76.96, 76.5, 76.05, 75.62, 75.21, 74.8, 74.4, + 74.02, 73.64, 73.27, 72.91, 72.55, 72.21, 71.86, 71.53, 71.2, 70.87, 70.55, 70.23, 69.91, 69.6, + 69.29, 68.99, 68.69, 68.39, 68.09, 67.79, 67.5, 67.2, 66.91, 66.62, 66.33, 66.05, 65.76, 65.47, + 65.19, 64.9, 64.61, 64.33, 64.04, 63.75, 63.46, 63.17, 62.88, 62.59, 62.29, 62.0, 61.7, 61.4, + 61.1, 60.79, 60.48, 60.17, 59.85, 59.53, 59.2, 58.87, 58.53, 58.19, 57.84, 57.48, 57.11, 56.74, + 56.35, 55.95, 55.54, 55.11, 54.67, 54.2, 53.72, 53.2, 52.66, 52.08, 51.45, 50.77, 50.01, 49.16, + 48.17, 46.98, 45.42, 43.04, + ], + [ + 138.43, 124.94, 109.79, 98.03, 94.04, 91.56, 89.73, 88.25, 87.01, 85.93, 84.97, 84.1, 83.31, + 82.58, 81.89, 81.25, 80.65, 80.08, 79.53, 79.01, 78.51, 78.03, 77.57, 77.12, 76.69, 76.27, + 75.86, 75.46, 75.07, 74.69, 74.32, 73.96, 73.6, 73.25, 72.9, 72.57, 72.23, 71.9, 71.58, 71.26, + 70.94, 70.63, 70.32, 70.01, 69.7, 69.4, 69.1, 68.8, 68.51, 68.21, 67.92, 67.63, 67.33, 67.04, + 66.75, 66.47, 66.18, 65.89, 65.6, 65.31, 65.02, 64.73, 64.44, 64.15, 63.85, 63.56, 63.26, 62.97, + 62.66, 62.36, 62.06, 61.75, 61.44, 61.12, 60.8, 60.48, 60.15, 59.81, 59.47, 59.13, 58.77, 58.41, + 58.04, 57.66, 57.27, 56.87, 56.45, 56.02, 55.57, 55.11, 54.61, 54.1, 53.55, 52.96, 52.33, 51.64, + 50.88, 50.02, 49.02, 47.82, 46.24, 43.84, + ], + [ + 139.83, 126.28, 111.06, 99.23, 95.21, 92.72, 90.88, 89.39, 88.14, 87.05, 86.09, 85.22, 84.42, + 83.68, 82.99, 82.35, 81.74, 81.17, 80.62, 80.09, 79.59, 79.11, 78.64, 78.19, 77.76, 77.33, + 76.92, 76.52, 76.13, 75.75, 75.37, 75.0, 74.64, 74.29, 73.94, 73.6, 73.27, 72.93, 72.61, 72.28, + 71.97, 71.65, 71.34, 71.03, 70.72, 70.42, 70.11, 69.81, 69.51, 69.22, 68.92, 68.63, 68.33, + 68.04, 67.75, 67.46, 67.17, 66.88, 66.59, 66.29, 66.0, 65.71, 65.42, 65.12, 64.83, 64.53, 64.23, + 63.93, 63.63, 63.32, 63.02, 62.71, 62.39, 62.07, 61.75, 61.42, 61.09, 60.76, 60.41, 60.06, + 59.71, 59.34, 58.97, 58.59, 58.19, 57.79, 57.37, 56.93, 56.48, 56.01, 55.51, 54.99, 54.44, + 53.85, 53.21, 52.51, 51.75, 50.88, 49.87, 48.66, 47.07, 44.64, + ], + [ + 141.23, 127.62, 112.32, 100.43, 96.39, 93.88, 92.02, 90.53, 89.27, 88.18, 87.21, 86.33, 85.53, + 84.79, 84.09, 83.45, 82.83, 82.26, 81.7, 81.18, 80.67, 80.18, 79.71, 79.26, 78.82, 78.4, 77.98, + 77.58, 77.18, 76.8, 76.42, 76.05, 75.69, 75.33, 74.98, 74.64, 74.3, 73.97, 73.64, 73.31, 72.99, + 72.67, 72.36, 72.05, 71.74, 71.43, 71.13, 70.82, 70.52, 70.22, 69.93, 69.63, 69.33, 69.04, + 68.75, 68.45, 68.16, 67.87, 67.57, 67.28, 66.99, 66.69, 66.4, 66.1, 65.8, 65.5, 65.2, 64.9, + 64.59, 64.29, 63.98, 63.66, 63.35, 63.03, 62.7, 62.37, 62.04, 61.7, 61.35, 61.0, 60.64, 60.27, + 59.9, 59.51, 59.11, 58.71, 58.28, 57.84, 57.39, 56.91, 56.41, 55.89, 55.33, 54.73, 54.09, 53.39, + 52.61, 51.74, 50.72, 49.5, 47.89, 45.44, + ], + [ + 142.63, 128.95, 113.58, 101.62, 97.56, 95.04, 93.17, 91.67, 90.4, 89.3, 88.33, 87.44, 86.64, + 85.89, 85.19, 84.54, 83.93, 83.34, 82.79, 82.26, 81.75, 81.26, 80.79, 80.33, 79.89, 79.46, + 79.04, 78.63, 78.24, 77.85, 77.47, 77.1, 76.73, 76.38, 76.02, 75.68, 75.34, 75.0, 74.67, 74.34, + 74.02, 73.7, 73.38, 73.07, 72.75, 72.45, 72.14, 71.83, 71.53, 71.23, 70.93, 70.63, 70.33, 70.04, + 69.74, 69.45, 69.15, 68.86, 68.56, 68.26, 67.97, 67.67, 67.37, 67.08, 66.78, 66.47, 66.17, + 65.87, 65.56, 65.25, 64.94, 64.62, 64.3, 63.98, 63.65, 63.32, 62.98, 62.64, 62.29, 61.94, 61.58, + 61.21, 60.83, 60.44, 60.04, 59.62, 59.2, 58.76, 58.3, 57.82, 57.31, 56.78, 56.22, 55.62, 54.97, + 54.26, 53.48, 52.6, 51.58, 50.34, 48.72, 46.25, + ], + [ + 144.02, 130.29, 114.84, 102.82, 98.73, 96.2, 94.32, 92.81, 91.54, 90.43, 89.44, 88.56, 87.74, + 86.99, 86.29, 85.64, 85.02, 84.43, 83.87, 83.34, 82.82, 82.33, 81.86, 81.4, 80.95, 80.52, 80.1, + 79.69, 79.29, 78.9, 78.52, 78.14, 77.78, 77.42, 77.06, 76.71, 76.37, 76.03, 75.7, 75.37, 75.04, + 74.72, 74.4, 74.08, 73.77, 73.46, 73.15, 72.84, 72.54, 72.24, 71.93, 71.63, 71.33, 71.04, 70.74, + 70.44, 70.14, 69.85, 69.55, 69.25, 68.95, 68.65, 68.35, 68.05, 67.75, 67.45, 67.14, 66.83, + 66.52, 66.21, 65.9, 65.58, 65.26, 64.93, 64.6, 64.27, 63.93, 63.58, 63.23, 62.88, 62.51, 62.14, + 61.76, 61.36, 60.96, 60.54, 60.11, 59.67, 59.21, 58.72, 58.22, 57.68, 57.11, 56.51, 55.85, + 55.14, 54.35, 53.46, 52.43, 51.18, 49.55, 47.05, + ], + [ + 145.41, 131.62, 116.09, 104.01, 99.9, 97.35, 95.46, 93.95, 92.66, 91.55, 90.56, 89.67, 88.85, + 88.09, 87.39, 86.73, 86.11, 85.52, 84.95, 84.42, 83.9, 83.41, 82.93, 82.46, 82.02, 81.58, 81.16, + 80.75, 80.34, 79.95, 79.57, 79.19, 78.82, 78.46, 78.1, 77.75, 77.41, 77.06, 76.73, 76.4, 76.07, + 75.74, 75.42, 75.1, 74.79, 74.47, 74.16, 73.86, 73.55, 73.24, 72.94, 72.64, 72.33, 72.03, 71.73, + 71.43, 71.13, 70.83, 70.54, 70.24, 69.94, 69.63, 69.33, 69.03, 68.72, 68.42, 68.11, 67.8, 67.49, + 67.18, 66.86, 66.54, 66.21, 65.89, 65.55, 65.22, 64.88, 64.53, 64.17, 63.81, 63.45, 63.07, + 62.69, 62.29, 61.88, 61.47, 61.03, 60.58, 60.12, 59.63, 59.12, 58.58, 58.01, 57.4, 56.74, 56.02, + 55.22, 54.33, 53.28, 52.02, 50.38, 47.86, + ], + [ + 146.8, 132.94, 117.35, 105.2, 101.07, 98.51, 96.61, 95.08, 93.79, 92.67, 91.68, 90.78, 89.96, + 89.2, 88.49, 87.82, 87.2, 86.6, 86.04, 85.5, 84.98, 84.48, 84.0, 83.53, 83.08, 82.64, 82.22, + 81.8, 81.4, 81.0, 80.62, 80.24, 79.86, 79.5, 79.14, 78.79, 78.44, 78.1, 77.76, 77.42, 77.09, + 76.77, 76.44, 76.12, 75.8, 75.49, 75.18, 74.87, 74.56, 74.25, 73.94, 73.64, 73.33, 73.03, 72.73, + 72.43, 72.13, 71.82, 71.52, 71.22, 70.92, 70.62, 70.31, 70.01, 69.7, 69.39, 69.08, 68.77, 68.46, + 68.14, 67.82, 67.5, 67.17, 66.84, 66.51, 66.17, 65.82, 65.47, 65.12, 64.75, 64.38, 64.0, 63.62, + 63.22, 62.81, 62.39, 61.95, 61.5, 61.03, 60.54, 60.02, 59.48, 58.9, 58.28, 57.62, 56.9, 56.09, + 55.19, 54.14, 52.87, 51.21, 48.67, + ], + [ + 148.19, 134.27, 118.6, 106.39, 102.24, 99.66, 97.75, 96.22, 94.92, 93.79, 92.79, 91.89, 91.06, + 90.3, 89.58, 88.92, 88.29, 87.69, 87.12, 86.57, 86.05, 85.55, 85.07, 84.6, 84.14, 83.7, 83.28, + 82.86, 82.45, 82.05, 81.66, 81.28, 80.91, 80.54, 80.18, 79.82, 79.47, 79.13, 78.79, 78.45, + 78.12, 77.79, 77.46, 77.14, 76.82, 76.5, 76.19, 75.88, 75.56, 75.26, 74.95, 74.64, 74.33, 74.03, + 73.73, 73.42, 73.12, 72.81, 72.51, 72.21, 71.9, 71.6, 71.29, 70.98, 70.67, 70.36, 70.05, 69.74, + 69.42, 69.1, 68.78, 68.46, 68.13, 67.79, 67.46, 67.12, 66.77, 66.42, 66.06, 65.69, 65.32, 64.94, + 64.55, 64.15, 63.73, 63.31, 62.87, 62.41, 61.94, 61.44, 60.92, 60.38, 59.79, 59.17, 58.5, 57.77, + 56.97, 56.05, 55.0, 53.71, 52.04, 49.48, + ], + [ + 149.57, 135.6, 119.85, 107.58, 103.41, 100.82, 98.9, 97.35, 96.05, 94.92, 93.91, 93.0, 92.17, + 91.4, 90.68, 90.01, 89.37, 88.77, 88.2, 87.65, 87.13, 86.62, 86.13, 85.66, 85.21, 84.76, 84.33, + 83.91, 83.5, 83.1, 82.71, 82.33, 81.95, 81.58, 81.22, 80.86, 80.51, 80.16, 79.82, 79.48, 79.14, + 78.81, 78.48, 78.16, 77.84, 77.52, 77.2, 76.89, 76.57, 76.26, 75.95, 75.64, 75.33, 75.03, 74.72, + 74.41, 74.11, 73.8, 73.5, 73.19, 72.89, 72.58, 72.27, 71.96, 71.65, 71.34, 71.02, 70.71, 70.39, + 70.07, 69.74, 69.42, 69.08, 68.75, 68.41, 68.07, 67.72, 67.36, 67.0, 66.63, 66.26, 65.87, 65.48, + 65.07, 64.66, 64.23, 63.79, 63.33, 62.85, 62.35, 61.83, 61.28, 60.69, 60.06, 59.39, 58.65, + 57.84, 56.92, 55.85, 54.56, 52.87, 50.29, + ], + [ + 150.95, 136.92, 121.1, 108.77, 104.58, 101.97, 100.04, 98.48, 97.17, 96.03, 95.02, 94.11, 93.27, + 92.5, 91.78, 91.1, 90.46, 89.86, 89.28, 88.73, 88.2, 87.69, 87.2, 86.73, 86.27, 85.82, 85.39, + 84.97, 84.56, 84.15, 83.76, 83.37, 82.99, 82.62, 82.26, 81.9, 81.54, 81.19, 80.85, 80.51, 80.17, + 79.84, 79.51, 79.18, 78.85, 78.53, 78.21, 77.9, 77.58, 77.27, 76.96, 76.64, 76.33, 76.03, 75.72, + 75.41, 75.1, 74.79, 74.49, 74.18, 73.87, 73.56, 73.25, 72.94, 72.62, 72.31, 71.99, 71.68, 71.35, + 71.03, 70.7, 70.37, 70.04, 69.7, 69.36, 69.02, 68.66, 68.31, 67.94, 67.57, 67.19, 66.81, 66.41, + 66.0, 65.58, 65.15, 64.71, 64.24, 63.76, 63.26, 62.73, 62.18, 61.59, 60.96, 60.28, 59.53, 58.71, + 57.79, 56.71, 55.41, 53.71, 51.1, + ], + [ + 152.33, 138.24, 122.35, 109.96, 105.74, 103.12, 101.18, 99.62, 98.3, 97.15, 96.14, 95.22, 94.37, + 93.6, 92.87, 92.19, 91.55, 90.94, 90.36, 89.81, 89.28, 88.76, 88.27, 87.79, 87.33, 86.88, 86.45, + 86.02, 85.61, 85.2, 84.81, 84.42, 84.04, 83.66, 83.29, 82.93, 82.57, 82.22, 81.88, 81.53, 81.19, + 80.86, 80.53, 80.2, 79.87, 79.55, 79.23, 78.91, 78.59, 78.27, 77.96, 77.65, 77.33, 77.02, 76.71, + 76.4, 76.09, 75.78, 75.47, 75.16, 74.85, 74.54, 74.23, 73.91, 73.6, 73.28, 72.96, 72.64, 72.32, + 72.0, 71.67, 71.33, 71.0, 70.66, 70.32, 69.97, 69.61, 69.25, 68.89, 68.51, 68.13, 67.74, 67.34, + 66.93, 66.51, 66.07, 65.63, 65.16, 64.67, 64.17, 63.64, 63.08, 62.48, 61.85, 61.16, 60.42, + 59.59, 58.65, 57.57, 56.26, 54.54, 51.91, + ], + [ + 153.71, 139.55, 123.59, 111.14, 106.91, 104.27, 102.32, 100.75, 99.42, 98.27, 97.25, 96.32, + 95.48, 94.69, 93.96, 93.28, 92.64, 92.02, 91.44, 90.88, 90.35, 89.83, 89.34, 88.86, 88.39, + 87.94, 87.5, 87.08, 86.66, 86.25, 85.85, 85.46, 85.08, 84.7, 84.33, 83.97, 83.61, 83.25, 82.9, + 82.56, 82.22, 81.88, 81.55, 81.22, 80.89, 80.56, 80.24, 79.92, 79.6, 79.28, 78.96, 78.65, 78.33, + 78.02, 77.71, 77.4, 77.08, 76.77, 76.46, 76.15, 75.84, 75.52, 75.21, 74.89, 74.58, 74.26, 73.94, + 73.61, 73.29, 72.96, 72.63, 72.3, 71.96, 71.62, 71.27, 70.92, 70.56, 70.2, 69.83, 69.45, 69.07, + 68.68, 68.27, 67.86, 67.44, 67.0, 66.55, 66.08, 65.59, 65.08, 64.54, 63.98, 63.38, 62.74, 62.05, + 61.3, 60.46, 59.52, 58.43, 57.1, 55.38, 52.72, + ], + [ + 155.08, 140.87, 124.84, 112.33, 108.07, 105.42, 103.46, 101.88, 100.55, 99.39, 98.36, 97.43, + 96.58, 95.79, 95.06, 94.37, 93.72, 93.11, 92.52, 91.96, 91.42, 90.9, 90.41, 89.92, 89.46, 89.0, + 88.56, 88.13, 87.71, 87.3, 86.9, 86.51, 86.12, 85.74, 85.37, 85.0, 84.64, 84.28, 83.93, 83.59, + 83.24, 82.9, 82.57, 82.23, 81.9, 81.58, 81.25, 80.93, 80.61, 80.29, 79.97, 79.65, 79.33, 79.02, + 78.7, 78.39, 78.08, 77.76, 77.45, 77.13, 76.82, 76.5, 76.19, 75.87, 75.55, 75.23, 74.91, 74.58, + 74.26, 73.93, 73.59, 73.26, 72.92, 72.57, 72.22, 71.87, 71.51, 71.14, 70.77, 70.39, 70.01, + 69.61, 69.21, 68.79, 68.36, 67.92, 67.47, 66.99, 66.5, 65.99, 65.45, 64.88, 64.28, 63.63, 62.94, + 62.18, 61.34, 60.39, 59.29, 57.96, 56.21, 53.54, + ], + [ + 156.45, 142.18, 126.08, 113.51, 109.23, 106.57, 104.6, 103.01, 101.67, 100.51, 99.47, 98.54, + 97.68, 96.89, 96.15, 95.46, 94.81, 94.19, 93.6, 93.03, 92.49, 91.97, 91.47, 90.99, 90.52, 90.06, + 89.62, 89.18, 88.76, 88.35, 87.95, 87.55, 87.16, 86.78, 86.41, 86.04, 85.67, 85.31, 84.96, + 84.61, 84.27, 83.92, 83.59, 83.25, 82.92, 82.59, 82.26, 81.94, 81.61, 81.29, 80.97, 80.65, + 80.33, 80.02, 79.7, 79.38, 79.07, 78.75, 78.44, 78.12, 77.8, 77.49, 77.17, 76.85, 76.53, 76.2, + 75.88, 75.55, 75.22, 74.89, 74.55, 74.22, 73.87, 73.53, 73.18, 72.82, 72.46, 72.09, 71.72, + 71.34, 70.95, 70.55, 70.14, 69.72, 69.29, 68.85, 68.39, 67.91, 67.42, 66.9, 66.36, 65.78, 65.18, + 64.53, 63.83, 63.06, 62.22, 61.26, 60.15, 58.81, 57.05, 54.36, + ], + [ + 157.82, 143.5, 127.32, 114.69, 110.39, 107.72, 105.73, 104.14, 102.79, 101.62, 100.58, 99.64, + 98.78, 97.98, 97.24, 96.55, 95.89, 95.27, 94.68, 94.11, 93.57, 93.04, 92.54, 92.05, 91.58, + 91.12, 90.67, 90.24, 89.81, 89.4, 88.99, 88.59, 88.2, 87.82, 87.44, 87.07, 86.71, 86.34, 85.99, + 85.64, 85.29, 84.95, 84.61, 84.27, 83.93, 83.6, 83.27, 82.95, 82.62, 82.3, 81.98, 81.65, 81.33, + 81.02, 80.7, 80.38, 80.06, 79.74, 79.43, 79.11, 78.79, 78.47, 78.15, 77.83, 77.5, 77.18, 76.85, + 76.52, 76.19, 75.86, 75.52, 75.18, 74.83, 74.48, 74.13, 73.77, 73.41, 73.04, 72.66, 72.28, + 71.89, 71.48, 71.07, 70.65, 70.22, 69.77, 69.31, 68.83, 68.33, 67.81, 67.26, 66.69, 66.08, + 65.42, 64.72, 63.95, 63.09, 62.13, 61.01, 59.66, 57.89, 55.17, + ], + [ + 159.19, 144.81, 128.56, 115.88, 111.55, 108.87, 106.87, 105.27, 103.91, 102.74, 101.69, 100.75, + 99.88, 99.08, 98.34, 97.64, 96.98, 96.35, 95.75, 95.18, 94.64, 94.11, 93.6, 93.11, 92.64, 92.18, + 91.73, 91.29, 90.86, 90.44, 90.04, 89.64, 89.24, 88.86, 88.48, 88.11, 87.74, 87.37, 87.02, + 86.66, 86.31, 85.97, 85.63, 85.29, 84.95, 84.62, 84.29, 83.96, 83.63, 83.3, 82.98, 82.66, 82.33, + 82.01, 81.69, 81.37, 81.05, 80.73, 80.41, 80.09, 79.77, 79.45, 79.13, 78.8, 78.48, 78.15, 77.82, + 77.49, 77.16, 76.82, 76.48, 76.14, 75.79, 75.44, 75.08, 74.72, 74.36, 73.99, 73.61, 73.22, + 72.83, 72.42, 72.01, 71.58, 71.15, 70.7, 70.23, 69.75, 69.25, 68.72, 68.17, 67.59, 66.98, 66.32, + 65.61, 64.83, 63.97, 63.0, 61.88, 60.51, 58.73, 55.99, + ], + [ + 160.55, 146.11, 129.8, 117.06, 112.71, 110.01, 108.01, 106.39, 105.03, 103.85, 102.8, 101.85, + 100.98, 100.18, 99.43, 98.72, 98.06, 97.43, 96.83, 96.26, 95.71, 95.18, 94.67, 94.18, 93.7, + 93.23, 92.78, 92.34, 91.91, 91.49, 91.08, 90.68, 90.28, 89.9, 89.51, 89.14, 88.77, 88.4, 88.04, + 87.69, 87.34, 86.99, 86.65, 86.3, 85.97, 85.63, 85.3, 84.97, 84.64, 84.31, 83.98, 83.66, 83.33, + 83.01, 82.69, 82.37, 82.05, 81.72, 81.4, 81.08, 80.76, 80.43, 80.11, 79.78, 79.46, 79.13, 78.79, + 78.46, 78.13, 77.79, 77.45, 77.1, 76.75, 76.4, 76.04, 75.68, 75.31, 74.93, 74.55, 74.16, 73.77, + 73.36, 72.94, 72.52, 72.08, 71.62, 71.15, 70.67, 70.16, 69.63, 69.08, 68.5, 67.88, 67.21, 66.5, + 65.72, 64.85, 63.88, 62.74, 61.37, 59.57, 56.81, + ], + [ + 161.92, 147.42, 131.04, 118.24, 113.87, 111.16, 109.14, 107.52, 106.15, 104.97, 103.91, 102.95, + 102.08, 101.27, 100.52, 99.81, 99.14, 98.51, 97.91, 97.33, 96.78, 96.25, 95.73, 95.24, 94.76, + 94.29, 93.84, 93.39, 92.96, 92.54, 92.13, 91.72, 91.32, 90.93, 90.55, 90.17, 89.8, 89.43, 89.07, + 88.71, 88.36, 88.01, 87.67, 87.32, 86.98, 86.64, 86.31, 85.98, 85.64, 85.31, 84.99, 84.66, + 84.33, 84.01, 83.69, 83.36, 83.04, 82.71, 82.39, 82.07, 81.74, 81.42, 81.09, 80.76, 80.43, 80.1, + 79.77, 79.43, 79.09, 78.75, 78.41, 78.06, 77.71, 77.35, 76.99, 76.63, 76.26, 75.88, 75.5, 75.11, + 74.71, 74.3, 73.88, 73.45, 73.01, 72.55, 72.08, 71.59, 71.08, 70.55, 69.99, 69.4, 68.78, 68.11, + 67.39, 66.6, 65.73, 64.75, 63.61, 62.22, 60.41, 57.63, + ], + [ + 163.28, 148.73, 132.28, 119.41, 115.03, 112.3, 110.28, 108.65, 107.27, 106.08, 105.02, 104.06, + 103.18, 102.36, 101.61, 100.9, 100.23, 99.59, 98.98, 98.41, 97.85, 97.31, 96.8, 96.3, 95.82, + 95.35, 94.89, 94.45, 94.01, 93.59, 93.17, 92.76, 92.37, 91.97, 91.59, 91.21, 90.83, 90.46, 90.1, + 89.74, 89.38, 89.03, 88.68, 88.34, 88.0, 87.66, 87.32, 86.99, 86.65, 86.32, 85.99, 85.66, 85.33, + 85.01, 84.68, 84.36, 84.03, 83.7, 83.38, 83.05, 82.73, 82.4, 82.07, 81.74, 81.41, 81.07, 80.74, + 80.4, 80.06, 79.72, 79.37, 79.02, 78.67, 78.31, 77.95, 77.58, 77.21, 76.83, 76.44, 76.05, 75.65, + 75.23, 74.81, 74.38, 73.94, 73.48, 73.0, 72.51, 72.0, 71.46, 70.9, 70.31, 69.68, 69.01, 68.28, + 67.49, 66.61, 65.62, 64.47, 63.08, 61.25, 58.46, + ], + [ + 164.64, 150.03, 133.51, 120.59, 116.18, 113.44, 111.41, 109.77, 108.39, 107.19, 106.12, 105.16, + 104.28, 103.46, 102.7, 101.98, 101.31, 100.67, 100.06, 99.48, 98.92, 98.38, 97.86, 97.36, 96.88, + 96.4, 95.94, 95.5, 95.06, 94.63, 94.22, 93.81, 93.41, 93.01, 92.62, 92.24, 91.86, 91.49, 91.13, + 90.77, 90.41, 90.05, 89.7, 89.36, 89.01, 88.67, 88.33, 87.99, 87.66, 87.33, 86.99, 86.66, 86.33, + 86.01, 85.68, 85.35, 85.02, 84.69, 84.37, 84.04, 83.71, 83.38, 83.05, 82.72, 82.38, 82.05, + 81.71, 81.37, 81.03, 80.69, 80.34, 79.99, 79.63, 79.27, 78.91, 78.54, 78.16, 77.78, 77.39, + 76.99, 76.59, 76.17, 75.75, 75.31, 74.87, 74.4, 73.93, 73.43, 72.91, 72.38, 71.81, 71.21, 70.58, + 69.9, 69.17, 68.38, 67.49, 66.5, 65.34, 63.93, 62.1, 59.28, + ], + [ + 165.99, 151.33, 134.75, 121.77, 117.34, 114.59, 112.54, 110.9, 109.51, 108.3, 107.23, 106.26, + 105.37, 104.55, 103.79, 103.07, 102.39, 101.75, 101.14, 100.55, 99.99, 99.45, 98.93, 98.42, + 97.93, 97.46, 97.0, 96.55, 96.11, 95.68, 95.26, 94.85, 94.44, 94.05, 93.66, 93.27, 92.9, 92.52, + 92.15, 91.79, 91.43, 91.08, 90.72, 90.37, 90.03, 89.68, 89.34, 89.0, 88.67, 88.33, 88.0, 87.67, + 87.33, 87.0, 86.67, 86.34, 86.01, 85.69, 85.36, 85.03, 84.69, 84.36, 84.03, 83.7, 83.36, 83.02, + 82.69, 82.34, 82.0, 81.65, 81.3, 80.95, 80.59, 80.23, 79.86, 79.49, 79.11, 78.73, 78.33, 77.94, + 77.53, 77.11, 76.69, 76.25, 75.8, 75.33, 74.85, 74.35, 73.83, 73.29, 72.72, 72.12, 71.48, 70.8, + 70.07, 69.27, 68.38, 67.37, 66.21, 64.79, 62.94, 60.1, + ], + [ + 167.35, 152.63, 135.98, 122.94, 118.49, 115.73, 113.67, 112.02, 110.63, 109.41, 108.34, 107.36, + 106.47, 105.64, 104.88, 104.15, 103.47, 102.83, 102.21, 101.62, 101.06, 100.51, 99.99, 99.48, + 98.99, 98.52, 98.05, 97.6, 97.16, 96.73, 96.3, 95.89, 95.48, 95.09, 94.69, 94.31, 93.93, 93.55, + 93.18, 92.82, 92.45, 92.1, 91.74, 91.39, 91.04, 90.7, 90.35, 90.01, 89.68, 89.34, 89.0, 88.67, + 88.33, 88.0, 87.67, 87.34, 87.01, 86.68, 86.34, 86.01, 85.68, 85.35, 85.01, 84.68, 84.34, 84.0, + 83.66, 83.31, 82.97, 82.62, 82.27, 81.91, 81.55, 81.19, 80.82, 80.44, 80.06, 79.68, 79.28, + 78.88, 78.47, 78.05, 77.62, 77.18, 76.73, 76.26, 75.78, 75.27, 74.75, 74.21, 73.63, 73.03, + 72.39, 71.7, 70.96, 70.15, 69.26, 68.25, 67.07, 65.65, 63.79, 60.93, + ], + [ + 168.7, 153.93, 137.21, 124.12, 119.65, 116.87, 114.81, 113.15, 111.74, 110.53, 109.44, 108.46, + 107.57, 106.74, 105.96, 105.24, 104.55, 103.9, 103.29, 102.69, 102.13, 101.58, 101.05, 100.54, + 100.05, 99.57, 99.1, 98.65, 98.21, 97.77, 97.35, 96.93, 96.52, 96.12, 95.73, 95.34, 94.96, + 94.58, 94.21, 93.84, 93.48, 93.12, 92.76, 92.41, 92.06, 91.71, 91.37, 91.02, 90.68, 90.34, + 90.01, 89.67, 89.33, 89.0, 88.67, 88.33, 88.0, 87.67, 87.33, 87.0, 86.66, 86.33, 85.99, 85.65, + 85.32, 84.97, 84.63, 84.29, 83.94, 83.59, 83.23, 82.87, 82.51, 82.14, 81.77, 81.4, 81.01, 80.62, + 80.23, 79.82, 79.41, 78.99, 78.56, 78.11, 77.66, 77.19, 76.7, 76.2, 75.67, 75.12, 74.54, 73.94, + 73.29, 72.6, 71.86, 71.04, 70.14, 69.13, 67.94, 66.51, 64.63, 61.75, + ], + [ + 170.05, 155.22, 138.44, 125.29, 120.8, 118.01, 115.94, 114.27, 112.86, 111.64, 110.55, 109.56, + 108.66, 107.83, 107.05, 106.32, 105.63, 104.98, 104.36, 103.77, 103.19, 102.65, 102.12, 101.6, + 101.11, 100.63, 100.16, 99.7, 99.25, 98.82, 98.39, 97.97, 97.56, 97.16, 96.76, 96.37, 95.99, + 95.61, 95.24, 94.87, 94.5, 94.14, 93.78, 93.43, 93.07, 92.72, 92.38, 92.03, 91.69, 91.35, 91.01, + 90.67, 90.33, 90.0, 89.66, 89.33, 88.99, 88.66, 88.32, 87.99, 87.65, 87.31, 86.97, 86.63, 86.29, + 85.95, 85.6, 85.26, 84.91, 84.55, 84.2, 83.84, 83.47, 83.1, 82.73, 82.35, 81.97, 81.57, 81.18, + 80.77, 80.35, 79.93, 79.5, 79.05, 78.59, 78.12, 77.63, 77.12, 76.59, 76.04, 75.46, 74.84, 74.2, + 73.5, 72.75, 71.93, 71.03, 70.0, 68.81, 67.37, 65.48, 62.58, + ], + [ + 171.4, 156.52, 139.67, 126.46, 121.95, 119.15, 117.07, 115.39, 113.98, 112.74, 111.65, 110.66, + 109.76, 108.92, 108.14, 107.41, 106.71, 106.06, 105.43, 104.84, 104.26, 103.71, 103.18, 102.66, + 102.17, 101.68, 101.21, 100.75, 100.3, 99.86, 99.43, 99.01, 98.6, 98.2, 97.8, 97.41, 97.02, + 96.64, 96.26, 95.89, 95.52, 95.16, 94.8, 94.44, 94.09, 93.74, 93.39, 93.04, 92.7, 92.35, 92.01, + 91.67, 91.33, 91.0, 90.66, 90.32, 89.98, 89.65, 89.31, 88.97, 88.63, 88.3, 87.95, 87.61, 87.27, + 86.92, 86.58, 86.23, 85.88, 85.52, 85.16, 84.8, 84.43, 84.06, 83.69, 83.31, 82.92, 82.52, 82.12, + 81.71, 81.3, 80.87, 80.43, 79.98, 79.52, 79.05, 78.55, 78.04, 77.51, 76.95, 76.37, 75.75, 75.1, + 74.4, 73.65, 72.82, 71.91, 70.88, 69.68, 68.23, 66.33, 63.41, + ], + [ + 172.75, 157.81, 140.89, 127.63, 123.1, 120.29, 118.19, 116.51, 115.09, 113.85, 112.75, 111.76, + 110.85, 110.01, 109.22, 108.49, 107.79, 107.13, 106.51, 105.91, 105.33, 104.78, 104.24, 103.72, + 103.22, 102.74, 102.26, 101.8, 101.35, 100.91, 100.48, 100.06, 99.64, 99.23, 98.83, 98.44, + 98.05, 97.67, 97.29, 96.91, 96.55, 96.18, 95.82, 95.46, 95.1, 94.75, 94.4, 94.05, 93.7, 93.36, + 93.02, 92.68, 92.33, 91.99, 91.65, 91.32, 90.98, 90.64, 90.3, 89.96, 89.62, 89.28, 88.94, 88.59, + 88.25, 87.9, 87.55, 87.2, 86.85, 86.49, 86.13, 85.76, 85.39, 85.02, 84.64, 84.26, 83.87, 83.47, + 83.07, 82.66, 82.24, 81.81, 81.37, 80.92, 80.45, 79.97, 79.48, 78.96, 78.43, 77.87, 77.28, + 76.66, 76.01, 75.3, 74.54, 73.72, 72.8, 71.76, 70.55, 69.09, 67.18, 64.24, + ], + [ + 174.09, 159.1, 142.12, 128.8, 124.26, 121.42, 119.32, 117.63, 116.2, 114.96, 113.86, 112.86, + 111.94, 111.1, 110.31, 109.57, 108.87, 108.21, 107.58, 106.98, 106.4, 105.84, 105.3, 104.78, + 104.28, 103.79, 103.31, 102.85, 102.4, 101.95, 101.52, 101.1, 100.68, 100.27, 99.87, 99.47, + 99.08, 98.69, 98.31, 97.94, 97.57, 97.2, 96.84, 96.48, 96.12, 95.76, 95.41, 95.06, 94.71, 94.37, + 94.02, 93.68, 93.33, 92.99, 92.65, 92.31, 91.97, 91.63, 91.29, 90.95, 90.6, 90.26, 89.92, 89.57, + 89.22, 88.88, 88.52, 88.17, 87.81, 87.46, 87.09, 86.73, 86.36, 85.98, 85.6, 85.21, 84.82, 84.42, + 84.02, 83.61, 83.18, 82.75, 82.31, 81.85, 81.39, 80.9, 80.41, 79.89, 79.35, 78.79, 78.2, 77.57, + 76.91, 76.2, 75.44, 74.61, 73.68, 72.64, 71.43, 69.95, 68.03, 65.07, + ], + [ + 175.44, 160.39, 143.34, 129.97, 125.4, 122.56, 120.45, 118.75, 117.32, 116.07, 114.96, 113.96, + 113.04, 112.19, 111.4, 110.65, 109.95, 109.29, 108.65, 108.05, 107.46, 106.9, 106.36, 105.84, + 105.34, 104.84, 104.37, 103.9, 103.44, 103.0, 102.56, 102.14, 101.72, 101.31, 100.9, 100.5, + 100.11, 99.72, 99.34, 98.96, 98.59, 98.22, 97.85, 97.49, 97.13, 96.78, 96.42, 96.07, 95.72, + 95.37, 95.02, 94.68, 94.33, 93.99, 93.65, 93.3, 92.96, 92.62, 92.28, 91.93, 91.59, 91.24, 90.9, + 90.55, 90.2, 89.85, 89.5, 89.14, 88.78, 88.42, 88.06, 87.69, 87.32, 86.94, 86.56, 86.17, 85.78, + 85.38, 84.97, 84.55, 84.13, 83.69, 83.25, 82.79, 82.32, 81.84, 81.33, 80.81, 80.27, 79.71, + 79.11, 78.48, 77.82, 77.11, 76.34, 75.5, 74.57, 73.52, 72.3, 70.82, 68.88, 65.9, + ], + [ + 176.78, 161.68, 144.57, 131.14, 126.55, 123.7, 121.58, 119.87, 118.43, 117.18, 116.06, 115.05, + 114.13, 113.28, 112.48, 111.74, 111.03, 110.36, 109.72, 109.12, 108.53, 107.97, 107.43, 106.9, + 106.39, 105.9, 105.42, 104.95, 104.49, 104.04, 103.61, 103.18, 102.76, 102.34, 101.94, 101.53, + 101.14, 100.75, 100.37, 99.99, 99.61, 99.24, 98.87, 98.51, 98.15, 97.79, 97.43, 97.08, 96.73, + 96.38, 96.03, 95.68, 95.33, 94.99, 94.64, 94.3, 93.95, 93.61, 93.27, 92.92, 92.58, 92.23, 91.88, + 91.53, 91.18, 90.83, 90.47, 90.12, 89.75, 89.39, 89.02, 88.65, 88.28, 87.9, 87.52, 87.13, 86.73, + 86.33, 85.92, 85.5, 85.07, 84.63, 84.19, 83.73, 83.25, 82.77, 82.26, 81.74, 81.19, 80.62, 80.03, + 79.39, 78.73, 78.01, 77.24, 76.39, 75.46, 74.4, 73.17, 71.68, 69.73, 66.73, + ], + [ + 178.12, 162.97, 145.79, 132.31, 127.7, 124.83, 122.7, 120.99, 119.54, 118.28, 117.16, 116.15, + 115.22, 114.37, 113.57, 112.82, 112.11, 111.44, 110.8, 110.18, 109.6, 109.03, 108.49, 107.96, + 107.45, 106.95, 106.47, 106.0, 105.54, 105.09, 104.65, 104.22, 103.79, 103.38, 102.97, 102.57, + 102.17, 101.78, 101.39, 101.01, 100.63, 100.26, 99.89, 99.53, 99.16, 98.8, 98.44, 98.09, 97.73, + 97.38, 97.03, 96.68, 96.33, 95.99, 95.64, 95.29, 94.95, 94.6, 94.25, 93.91, 93.56, 93.21, 92.86, + 92.51, 92.16, 91.8, 91.45, 91.09, 90.73, 90.36, 89.99, 89.62, 89.24, 88.86, 88.47, 88.08, 87.68, + 87.28, 86.87, 86.44, 86.02, 85.58, 85.13, 84.66, 84.19, 83.7, 83.19, 82.66, 82.11, 81.54, 80.94, + 80.31, 79.63, 78.91, 78.13, 77.29, 76.35, 75.28, 74.05, 72.54, 70.58, 67.56, + ], + [ + 179.46, 164.25, 147.01, 133.48, 128.85, 125.97, 123.83, 122.11, 120.65, 119.39, 118.26, 117.25, + 116.32, 115.45, 114.65, 113.9, 113.19, 112.51, 111.87, 111.25, 110.66, 110.09, 109.55, 109.02, + 108.5, 108.0, 107.52, 107.05, 106.58, 106.13, 105.69, 105.26, 104.83, 104.41, 104.0, 103.6, + 103.2, 102.81, 102.42, 102.04, 101.66, 101.28, 100.91, 100.54, 100.18, 99.81, 99.45, 99.1, + 98.74, 98.39, 98.04, 97.68, 97.33, 96.98, 96.64, 96.29, 95.94, 95.59, 95.24, 94.9, 94.55, 94.2, + 93.84, 93.49, 93.14, 92.78, 92.42, 92.06, 91.7, 91.33, 90.96, 90.58, 90.2, 89.82, 89.43, 89.04, + 88.64, 88.23, 87.81, 87.39, 86.96, 86.52, 86.07, 85.6, 85.12, 84.63, 84.12, 83.59, 83.04, 82.46, + 81.86, 81.22, 80.54, 79.82, 79.03, 78.18, 77.23, 76.16, 74.92, 73.41, 71.43, 68.4, + ], + [ + 180.79, 165.54, 148.23, 134.64, 130.0, 127.1, 124.95, 123.23, 121.77, 120.49, 119.36, 118.34, + 117.41, 116.54, 115.74, 114.98, 114.26, 113.59, 112.94, 112.32, 111.73, 111.16, 110.61, 110.07, + 109.56, 109.06, 108.57, 108.09, 107.63, 107.18, 106.73, 106.3, 105.87, 105.45, 105.04, 104.63, + 104.23, 103.83, 103.44, 103.06, 102.68, 102.3, 101.93, 101.56, 101.19, 100.83, 100.47, 100.11, + 99.75, 99.39, 99.04, 98.69, 98.33, 97.98, 97.63, 97.28, 96.93, 96.58, 96.23, 95.88, 95.53, + 95.18, 94.83, 94.47, 94.11, 93.76, 93.4, 93.03, 92.67, 92.3, 91.92, 91.55, 91.17, 90.78, 90.39, + 89.99, 89.59, 89.18, 88.76, 88.34, 87.9, 87.46, 87.01, 86.54, 86.06, 85.56, 85.05, 84.51, 83.96, + 83.38, 82.77, 82.13, 81.45, 80.72, 79.93, 79.07, 78.12, 77.05, 75.79, 74.28, 72.29, 69.23, + ], +]; +export const SIGNIFICANCE_LEVELS = [ + 0.0, 0.0, 0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12, 0.13, 0.14, + 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3, + 0.31, 0.32, 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39, 0.4, 0.41, 0.42, 0.43, 0.44, 0.45, 0.46, + 0.47, 0.48, 0.49, 0.5, 0.51, 0.52, 0.53, 0.54, 0.55, 0.56, 0.57, 0.58, 0.59, 0.6, 0.61, 0.62, + 0.63, 0.64, 0.65, 0.66, 0.67, 0.68, 0.69, 0.7, 0.71, 0.72, 0.73, 0.74, 0.75, 0.76, 0.77, 0.78, + 0.79, 0.8, 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87, 0.88, 0.89, 0.9, 0.91, 0.92, 0.93, 0.94, + 0.95, 0.96, 0.97, 0.98, 0.99, +]; diff --git a/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_app_state.tsx b/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_app_state.tsx new file mode 100644 index 00000000000000..faf36e18725cda --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_app_state.tsx @@ -0,0 +1,101 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FC } from 'react'; +import { pick } from 'lodash'; + +import type { SavedSearch } from '@kbn/saved-search-plugin/public'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import { StorageContextProvider } from '@kbn/ml-local-storage'; +import { UrlStateProvider } from '@kbn/ml-url-state'; +import { Storage } from '@kbn/kibana-utils-plugin/public'; +import { DatePickerContextProvider } from '@kbn/ml-date-picker'; +import { UI_SETTINGS } from '@kbn/data-plugin/common'; +import { + KibanaContextProvider, + KibanaThemeProvider, + toMountPoint, + wrapWithTheme, +} from '@kbn/kibana-react-plugin/public'; + +import { DV_STORAGE_KEYS } from '../index_data_visualizer/types/storage'; +import { getCoreStart, getPluginsStart } from '../../kibana_services'; +import { DataComparisonPage } from './data_comparison_page'; +import { DataSourceContext } from '../common/hooks/data_source_context'; + +const localStorage = new Storage(window.localStorage); + +export interface DataComparisonDetectionAppStateProps { + /** The data view to analyze. */ + dataView: DataView; + /** The saved search to analyze. */ + savedSearch: SavedSearch | null; +} + +export type DataComparisonSpec = typeof DataComparisonDetectionAppState; + +export const DataComparisonDetectionAppState: FC = ({ + dataView, + savedSearch, +}) => { + if (!(dataView || savedSearch)) { + throw Error('No data view or saved search available.'); + } + + const coreStart = getCoreStart(); + const { + data, + maps, + embeddable, + discover, + share, + security, + fileUpload, + lens, + dataViewFieldEditor, + uiActions, + charts, + unifiedSearch, + } = getPluginsStart(); + const services = { + data, + maps, + embeddable, + discover, + share, + security, + fileUpload, + lens, + dataViewFieldEditor, + uiActions, + charts, + unifiedSearch, + ...coreStart, + }; + const datePickerDeps = { + ...pick(services, ['data', 'http', 'notifications', 'theme', 'uiSettings']), + toMountPoint, + wrapWithTheme, + uiSettingsKeys: UI_SETTINGS, + }; + + return ( + + + + + + + + + + + + + + ); +}; diff --git a/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_chart_tooltip_body.tsx b/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_chart_tooltip_body.tsx new file mode 100644 index 00000000000000..b867239884f7e1 --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_chart_tooltip_body.tsx @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + TooltipCellStyle, + TooltipSpec, + TooltipTable, + TooltipTableBody, + TooltipTableCell, + TooltipTableColorCell, + TooltipTableFooter, + TooltipTableHeader, + TooltipTableRow, +} from '@elastic/charts'; +import React from 'react'; + +const style: TooltipCellStyle = { textAlign: 'right' }; +export const DataComparisonChartTooltipBody: TooltipSpec['body'] = ({ items }) => { + return ( + + + + {} + + Count + Percent + + + + {items.map(({ label, datum, seriesIdentifier: { key }, color }) => ( + + {} + {label} + {datum.doc_count} + {`${(datum.percentage * 100).toFixed( + 1 + )}`} + + ))} + + + + {} + Diff + + + {items[1].datum.doc_count - items[0].datum.doc_count} + + + {`${((items[1].datum.percentage - items[0].datum.percentage) * 100).toFixed(1)}%`} + + + + + ); +}; diff --git a/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_overview_table.tsx b/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_overview_table.tsx new file mode 100644 index 00000000000000..46cd0510443f8f --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_overview_table.tsx @@ -0,0 +1,291 @@ +/* + * 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 { UseTableState } from '@kbn/ml-in-memory-table'; +import React, { ReactNode, useMemo, useState } from 'react'; +import { i18n } from '@kbn/i18n'; +import { + EuiBasicTableColumn, + EuiButtonIcon, + EuiIcon, + EuiInMemoryTable, + EuiScreenReaderOnly, + EuiTableFieldDataColumnType, + EuiToolTip, +} from '@elastic/eui'; +import { FieldTypeIcon } from '../common/components/field_type_icon'; +import { COLLAPSE_ROW, EXPAND_ROW } from '../../../common/i18n_constants'; +import { COMPARISON_LABEL, REFERENCE_LABEL } from './constants'; +import { useCurrentEuiTheme } from '../common/hooks/use_current_eui_theme'; +import { DataComparisonField, Feature, FETCH_STATUS } from './types'; +import { formatSignificanceLevel } from './data_comparison_utils'; +import { SingleDistributionChart } from './charts/single_distribution_chart'; +import { OverlapDistributionComparison } from './charts/overlap_distribution_chart'; +import { DataComparisonDistributionChart } from './charts/data_comparison_distribution_chart'; + +const dataComparisonYesLabel = i18n.translate( + 'xpack.dataVisualizer.dataComparison.fieldTypeYesLabel', + { + defaultMessage: 'Yes', + } +); +const dataComparisonNoLabel = i18n.translate( + 'xpack.dataVisualizer.dataComparison.driftDetectedNoLabel', + { + defaultMessage: 'No', + } +); + +export const DataComparisonOverviewTable = ({ + data, + onTableChange, + pagination, + sorting, + status, +}: { + data: Feature[]; + status: FETCH_STATUS; +} & UseTableState) => { + const euiTheme = useCurrentEuiTheme(); + const colors = { + referenceColor: euiTheme.euiColorVis2, + productionColor: euiTheme.euiColorVis1, + }; + const [itemIdToExpandedRowMap, setItemIdToExpandedRowMap] = useState>( + {} + ); + + const referenceDistributionLabel = i18n.translate( + 'xpack.dataVisualizer.dataComparison.dataComparisonDistributionLabel', + { + defaultMessage: '{label} distribution', + values: { label: REFERENCE_LABEL }, + } + ); + const comparisonDistributionLabel = i18n.translate( + 'xpack.dataVisualizer.dataComparison.dataComparisonDistributionLabel', + { + defaultMessage: '{label} distribution', + values: { label: COMPARISON_LABEL }, + } + ); + + const columns: Array> = [ + { + align: 'left', + width: '40px', + isExpander: true, + name: ( + + {EXPAND_ROW} + + ), + render: (item: Feature) => { + const itemIdToExpandedRowMapValues = { ...itemIdToExpandedRowMap }; + + return ( + toggleDetails(item)} + aria-label={itemIdToExpandedRowMapValues[item.featureName] ? COLLAPSE_ROW : EXPAND_ROW} + iconType={itemIdToExpandedRowMapValues[item.featureName] ? 'arrowDown' : 'arrowRight'} + /> + ); + }, + }, + + { + field: 'featureName', + name: i18n.translate('xpack.dataVisualizer.dataComparison.fieldNameLabel', { + defaultMessage: 'Name', + }), + 'data-test-subj': 'mlDataComparisonOverviewTableFeatureName', + sortable: true, + textOnly: true, + }, + { + field: 'secondaryType', + name: i18n.translate('xpack.dataVisualizer.dataComparison.fieldTypeLabel', { + defaultMessage: 'Type', + }), + 'data-test-subj': 'mlDataComparisonOverviewTableFeatureType', + sortable: true, + textOnly: true, + render: (secondaryType: DataComparisonField['secondaryType']) => { + return ; + }, + }, + { + field: 'driftDetected', + name: i18n.translate('xpack.dataVisualizer.dataComparison.driftDetectedLabel', { + defaultMessage: 'Drift detected', + }), + 'data-test-subj': 'mlDataComparisonOverviewTableDriftDetected', + sortable: true, + textOnly: true, + render: (driftDetected: boolean) => { + return {driftDetected ? dataComparisonYesLabel : dataComparisonNoLabel}; + }, + }, + { + field: 'similarityTestPValue', + name: ( + + + {i18n.translate('xpack.dataVisualizer.dataComparison.pValueLabel', { + defaultMessage: 'Similarity p-value', + })} + + + + ), + 'data-test-subj': 'mlDataComparisonOverviewTableSimilarityTestPValue', + sortable: true, + textOnly: true, + render: (similarityTestPValue: number) => { + return {formatSignificanceLevel(similarityTestPValue)}; + }, + }, + { + field: 'referenceHistogram', + name: referenceDistributionLabel, + 'data-test-subj': 'mlDataComparisonOverviewTableReferenceDistribution', + sortable: false, + render: (referenceHistogram: Feature['referenceHistogram'], item) => { + return ( +
+ +
+ ); + }, + }, + { + field: 'productionHistogram', + name: comparisonDistributionLabel, + 'data-test-subj': 'mlDataComparisonOverviewTableDataComparisonDistributionChart', + sortable: false, + render: (productionDistribution: Feature['productionHistogram'], item) => { + return ( +
+ +
+ ); + }, + }, + { + field: 'comparisonDistribution', + name: 'Comparison', + 'data-test-subj': 'mlDataComparisonOverviewTableDataComparisonDistributionChart', + sortable: false, + render: (comparisonDistribution: Feature['comparisonDistribution'], item) => { + return ( +
+ +
+ ); + }, + }, + ]; + + const getRowProps = (item: Feature) => { + return { + 'data-test-subj': `mlDataComparisonOverviewTableRow row-${item.featureName}`, + className: 'mlDataComparisonOverviewTableRow', + onClick: () => {}, + }; + }; + + const getCellProps = (item: Feature, column: EuiTableFieldDataColumnType) => { + const { field } = column; + return { + className: 'mlDataComparisonOverviewTableCell', + 'data-test-subj': `mlDataComparisonOverviewTableCell row-${item.featureName}-column-${String( + field + )}`, + textOnly: true, + }; + }; + + const toggleDetails = (item: Feature) => { + const itemIdToExpandedRowMapValues = { ...itemIdToExpandedRowMap }; + + if (itemIdToExpandedRowMapValues[item.featureName]) { + delete itemIdToExpandedRowMapValues[item.featureName]; + } else { + const { featureName, comparisonDistribution } = item; + itemIdToExpandedRowMapValues[item.featureName] = ( +
+ +
+ ); + } + setItemIdToExpandedRowMap(itemIdToExpandedRowMapValues); + }; + + const tableMessage = useMemo(() => { + switch (status) { + case FETCH_STATUS.NOT_INITIATED: + return i18n.translate('xpack.dataVisualizer.dataComparison.dataComparisonRunAnalysisMsg', { + defaultMessage: 'Run analysis to compare reference and comparison data', + }); + case FETCH_STATUS.LOADING: + return i18n.translate('xpack.dataVisualizer.dataComparison.dataComparisonLoadingMsg', { + defaultMessage: 'Analyzing', + }); + default: + return undefined; + } + }, [status]); + + return ( + + tableCaption={i18n.translate( + 'xpack.dataVisualizer.dataComparison.dataComparisonTableCaption', + { + defaultMessage: 'Data comparison overview', + } + )} + items={data} + rowHeader="featureName" + columns={columns} + rowProps={getRowProps} + cellProps={getCellProps} + itemId="featureName" + itemIdToExpandedRowMap={itemIdToExpandedRowMap} + isExpandable={true} + sorting={sorting} + onChange={onTableChange} + pagination={pagination} + loading={status === FETCH_STATUS.LOADING} + message={tableMessage} + /> + ); +}; diff --git a/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_page.tsx b/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_page.tsx new file mode 100644 index 00000000000000..801e3c1da7a4bf --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_page.tsx @@ -0,0 +1,395 @@ +/* + * 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, { useCallback, useEffect, useState, FC, useMemo } from 'react'; + +import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiPageBody, + EuiPageSection, + EuiPanel, + EuiSpacer, + EuiPageHeader, + EuiCallOut, +} from '@elastic/eui'; + +import type { WindowParameters } from '@kbn/aiops-utils'; +import type { Filter, Query } from '@kbn/es-query'; +import { useUrlState, usePageUrlState } from '@kbn/ml-url-state'; +import type { DataSeriesDatum } from '@elastic/charts/dist/chart_types/xy_chart/utils/series'; +import { useStorage } from '@kbn/ml-local-storage'; +import { + DatePickerWrapper, + FROZEN_TIER_PREFERENCE, + FullTimeRangeSelector, + FullTimeRangeSelectorProps, + useTimefilter, +} from '@kbn/ml-date-picker'; +import moment from 'moment'; +import { css } from '@emotion/react'; +import type { SearchQueryLanguage } from '@kbn/ml-query-utils'; +import { i18n } from '@kbn/i18n'; +import { RANDOM_SAMPLER_OPTION, RandomSampler } from '@kbn/ml-random-sampler-utils'; +import { MIN_SAMPLER_PROBABILITY } from '../index_data_visualizer/constants/random_sampler'; +import { useData } from '../common/hooks/use_data'; +import { + DV_FROZEN_TIER_PREFERENCE, + DV_RANDOM_SAMPLER_P_VALUE, + DV_RANDOM_SAMPLER_PREFERENCE, + DVKey, + DVStorageMapped, +} from '../index_data_visualizer/types/storage'; +import { useCurrentEuiTheme } from '../common/hooks/use_current_eui_theme'; +import { DataComparisonFullAppState, getDefaultDataComparisonState } from './types'; +import { useDataSource } from '../common/hooks/data_source_context'; +import { useDataVisualizerKibana } from '../kibana_context'; +import { DataComparisonView } from './data_comparison_view'; +import { COMPARISON_LABEL, REFERENCE_LABEL } from './constants'; +import { SearchPanelContent } from '../index_data_visualizer/components/search_panel/search_bar'; +import { useSearch } from '../common/hooks/use_search'; +import { DocumentCountWithDualBrush } from './document_count_with_dual_brush'; + +const dataViewTitleHeader = css({ + minWidth: '300px', +}); + +export const PageHeader: FC = () => { + const [, setGlobalState] = useUrlState('_g'); + const { dataView } = useDataSource(); + + const [frozenDataPreference, setFrozenDataPreference] = useStorage< + DVKey, + DVStorageMapped + >( + DV_FROZEN_TIER_PREFERENCE, + // By default we will exclude frozen data tier + FROZEN_TIER_PREFERENCE.EXCLUDE + ); + + const timefilter = useTimefilter({ + timeRangeSelector: dataView.timeFieldName !== undefined, + autoRefreshSelector: true, + }); + + const updateTimeState: FullTimeRangeSelectorProps['callback'] = useCallback( + (update) => { + setGlobalState({ + time: { + from: moment(update.start.epoch).toISOString(), + to: moment(update.end.epoch).toISOString(), + }, + }); + }, + [setGlobalState] + ); + + const hasValidTimeField = useMemo( + () => dataView.timeFieldName !== undefined && dataView.timeFieldName !== '', + [dataView.timeFieldName] + ); + + return ( + {dataView.getName()}
} + rightSideItems={[ + + {hasValidTimeField ? ( + + + + ) : null} + + , + ]} + /> + ); +}; + +export const DataComparisonPage: FC = () => { + const { + services: { data: dataService }, + } = useDataVisualizerKibana(); + const { dataView, savedSearch } = useDataSource(); + + const [dataComparisonListState, setAiopsListState] = usePageUrlState<{ + pageKey: 'DV_DATA_COMP'; + pageUrlState: DataComparisonFullAppState; + }>('DV_DATA_COMP', getDefaultDataComparisonState()); + + const [randomSamplerMode, setRandomSamplerMode] = useStorage< + DVKey, + DVStorageMapped + >(DV_RANDOM_SAMPLER_PREFERENCE, RANDOM_SAMPLER_OPTION.ON_AUTOMATIC); + + const [randomSamplerProbability, setRandomSamplerProbability] = useStorage< + DVKey, + DVStorageMapped + >(DV_RANDOM_SAMPLER_P_VALUE, MIN_SAMPLER_PROBABILITY); + const [lastRefresh, setLastRefresh] = useState(0); + + const forceRefresh = useCallback(() => setLastRefresh(Date.now()), [setLastRefresh]); + + const randomSampler = useMemo( + () => + new RandomSampler( + randomSamplerMode, + setRandomSamplerMode, + randomSamplerProbability, + setRandomSamplerProbability + ), + // eslint-disable-next-line react-hooks/exhaustive-deps + [] + ); + + const [globalState, setGlobalState] = useUrlState('_g'); + + const [selectedSavedSearch, setSelectedSavedSearch] = useState(savedSearch); + + useEffect(() => { + if (savedSearch) { + setSelectedSavedSearch(savedSearch); + } + }, [savedSearch]); + + const setSearchParams = useCallback( + (searchParams: { + searchQuery: estypes.QueryDslQueryContainer; + searchString: Query['query']; + queryLanguage: SearchQueryLanguage; + filters: Filter[]; + }) => { + // When the user loads a saved search and then clears or modifies the query + // we should remove the saved search and replace it with the index pattern id + if (selectedSavedSearch !== null) { + setSelectedSavedSearch(null); + } + + setAiopsListState({ + ...dataComparisonListState, + searchQuery: searchParams.searchQuery, + searchString: searchParams.searchString, + searchQueryLanguage: searchParams.queryLanguage, + filters: searchParams.filters, + }); + }, + [selectedSavedSearch, dataComparisonListState, setAiopsListState] + ); + + const { searchQueryLanguage, searchString, searchQuery } = useSearch( + { dataView, savedSearch }, + dataComparisonListState + ); + + const { documentStats, timefilter } = useData( + dataView, + 'data_drift', + searchQuery, + randomSampler, + setGlobalState, + undefined + ); + + const { sampleProbability, totalCount, documentCountStats, documentCountStatsCompare } = + documentStats; + + useEffect(() => { + randomSampler.setDocCount(totalCount); + }, [totalCount, randomSampler]); + + useEffect(() => { + if (globalState?.time !== undefined) { + timefilter.setTime({ + from: globalState.time.from, + to: globalState.time.to, + }); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [JSON.stringify(globalState?.time), timefilter]); + + useEffect(() => { + if (globalState?.refreshInterval !== undefined) { + timefilter.setRefreshInterval(globalState.refreshInterval); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [JSON.stringify(globalState?.refreshInterval), timefilter]); + + useEffect(() => { + // Update data query manager if input string is updated + dataService?.query.queryString.setQuery({ + query: searchString ?? '', + language: searchQueryLanguage, + }); + }, [dataService, searchQueryLanguage, searchString]); + + const euiTheme = useCurrentEuiTheme(); + const colors = { + referenceColor: euiTheme.euiColorVis2, + productionColor: euiTheme.euiColorVis1, + }; + + const [windowParameters, setWindowParameters] = useState(); + const [initialAnalysisStart, setInitialAnalysisStart] = useState< + number | WindowParameters | undefined + >(); + const [isBrushCleared, setIsBrushCleared] = useState(true); + + function brushSelectionUpdate(d: WindowParameters, force: boolean) { + if (!isBrushCleared || force) { + setWindowParameters(d); + } + if (force) { + setIsBrushCleared(false); + } + } + + function clearSelection() { + setWindowParameters(undefined); + setIsBrushCleared(true); + setInitialAnalysisStart(undefined); + } + + const barStyleAccessor = useCallback( + (datum: DataSeriesDatum) => { + if (!windowParameters) return null; + + const start = datum.x; + const end = + (typeof datum.x === 'string' ? parseInt(datum.x, 10) : datum.x) + + (documentCountStats?.interval ?? 0); + + if (start >= windowParameters.baselineMin && end <= windowParameters.baselineMax) { + return colors.referenceColor; + } + if (start >= windowParameters.deviationMin && end <= windowParameters.deviationMax) { + return colors.productionColor; + } + + return null; + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [JSON.stringify({ windowParameters, colors })] + ); + + return ( + + + + + + + + + {documentCountStats !== undefined && ( + + + + + + )} + + + + {!dataView?.isTimeBased() ? ( + +

+ {i18n.translate( + 'xpack.dataVisualizer.dataComparisonTimeSeriesWarning.description', + { + defaultMessage: 'Data comparison only runs over time-based indices.', + } + )} +

+
+ ) : ( + + )} +
+
+
+
+
+ ); +}; diff --git a/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_utils.test.ts b/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_utils.test.ts new file mode 100644 index 00000000000000..08f0305e4126a6 --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_utils.test.ts @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { computeChi2PValue } from './data_comparison_utils'; +import { Histogram } from './types'; + +describe('computeChi2PValue()', () => { + test('should return close to 1 if datasets are both empty or nearly identical', () => { + const referenceTerms: Histogram[] = [ + { + key: 'ap-northwest-1', + doc_count: 40348, + percentage: 0.2712470588235294, + }, + { + key: 'us-east-1', + doc_count: 15134, + percentage: 0.10174117647058824, + }, + { + key: 'eu-central-1', + doc_count: 12614, + percentage: 0.0848, + }, + { + key: 'sa-east-1', + doc_count: 80654, + percentage: 0.5422117647058824, + }, + ]; + const productionTerms: Histogram[] = [ + { + key: 'ap-northwest-1', + doc_count: 40320, + percentage: 0.2609691846654714, + }, + { + key: 'us-east-1', + doc_count: 15127, + percentage: 0.09790875139966732, + }, + { + key: 'eu-central-1', + doc_count: 12614, + percentage: 0.08164348450819088, + }, + { + key: 'sa-east-1', + doc_count: 86440, + percentage: 0.5594785794266703, + }, + ]; + expect(computeChi2PValue([], [])).toStrictEqual(1); + expect(computeChi2PValue(referenceTerms, productionTerms)).toStrictEqual(0.99); + }); + + test('should return close to 0 if datasets differ', () => { + const referenceTerms: Histogram[] = [ + { + key: 'jackson', + doc_count: 1, + percentage: 1, + }, + { + key: 'yahya', + doc_count: 0, + percentage: 0, + }, + ]; + const productionTerms: Histogram[] = [ + { + key: 'jackson', + doc_count: 0, + percentage: 0, + }, + { + key: 'yahya', + doc_count: 1, + percentage: 1, + }, + ]; + expect(computeChi2PValue(referenceTerms, productionTerms)).toStrictEqual(0); + }); +}); diff --git a/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_utils.ts b/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_utils.ts new file mode 100644 index 00000000000000..10ad33e87cd189 --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_utils.ts @@ -0,0 +1,82 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { CRITICAL_VALUES_TABLE, SIGNIFICANCE_LEVELS } from './constants'; +import { Histogram } from './types'; + +const criticalTableLookup = (chi2Statistic: number, df: number) => { + if (df < 1) return 1; + if (!Number.isInteger(df)) throw Error('Degrees of freedom must be a valid integer'); + + // Get the row index + const rowIndex: number = df - 1; + + // Get the column index + let minDiff: number = Math.abs(CRITICAL_VALUES_TABLE[rowIndex][0] - chi2Statistic); + let columnIndex: number = 0; + for (let j = 1; j < CRITICAL_VALUES_TABLE[rowIndex].length; j++) { + const diff: number = Math.abs(CRITICAL_VALUES_TABLE[rowIndex][j] - chi2Statistic); + if (diff < minDiff) { + minDiff = diff; + columnIndex = j; + } + } + + const significanceLevel: number = SIGNIFICANCE_LEVELS[columnIndex]; + return significanceLevel; +}; + +/** + * Compute the p-value for how similar the datasets are. + * Returned value ranges from 0 to 1, with 1 meaning the datasets are identical. + * @param normalizedBaselineTerms + * @param normalizedDriftedTerms + */ +export const computeChi2PValue = ( + normalizedBaselineTerms: Histogram[], + normalizedDriftedTerms: Histogram[] +) => { + // Get all unique keys from both arrays + const allKeys: string[] = Array.from( + new Set([ + ...normalizedBaselineTerms.map((term) => term.key.toString()), + ...normalizedDriftedTerms.map((term) => term.key.toString()), + ]) + ).slice(0, 100); + + // Calculate the chi-squared statistic and degrees of freedom + let chiSquared: number = 0; + const degreesOfFreedom: number = allKeys.length - 1; + + if (degreesOfFreedom === 0) return 1; + + allKeys.forEach((key) => { + const baselineTerm = normalizedBaselineTerms.find((term) => term.key === key); + const driftedTerm = normalizedDriftedTerms.find((term) => term.key === key); + + const observed: number = driftedTerm?.percentage ?? 0; + const expected: number = baselineTerm?.percentage ?? 0; + chiSquared += Math.pow(observed - expected, 2) / (expected > 0 ? expected : 1e-6); // Prevent divide by zero + }); + + return criticalTableLookup(chiSquared, degreesOfFreedom); +}; + +/** + * formatSignificanceLevel + * @param significanceLevel + */ +export const formatSignificanceLevel = (significanceLevel: number) => { + if (typeof significanceLevel !== 'number' || isNaN(significanceLevel)) return ''; + if (significanceLevel < 1e-6) { + return '< 0.000001'; + } else if (significanceLevel < 0.01) { + return significanceLevel.toExponential(0); + } else { + return significanceLevel.toFixed(2); + } +}; diff --git a/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_view.tsx b/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_view.tsx new file mode 100644 index 00000000000000..31134832ec56af --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/data_comparison/data_comparison_view.tsx @@ -0,0 +1,228 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { useCallback, useMemo, useState } from 'react'; +import { EuiEmptyPrompt, EuiFlexItem, EuiFormRow, EuiSwitch, EuiSpacer } from '@elastic/eui'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import type { WindowParameters } from '@kbn/aiops-utils'; +import { i18n } from '@kbn/i18n'; +import type { Query } from '@kbn/es-query'; +import { ProgressControls } from '@kbn/aiops-components'; +import { isEqual } from 'lodash'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { EuiSwitchEvent } from '@elastic/eui/src/components/form/switch/switch'; +import { useTableState } from '@kbn/ml-in-memory-table'; +import type { SearchQueryLanguage } from '@kbn/ml-query-utils'; +import { RandomSampler } from '@kbn/ml-random-sampler-utils'; +import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; +import { kbnTypeToSupportedType } from '../common/util/field_types_utils'; +import { getDataComparisonType, useFetchDataComparisonResult } from './use_data_drift_result'; +import type { DataComparisonField, Feature, TimeRange } from './types'; +import { DataComparisonOverviewTable } from './data_comparison_overview_table'; + +const showOnlyDriftedFieldsOptionLabel = i18n.translate( + 'xpack.dataVisualizer.dataComparison.showOnlyDriftedFieldsOptionLabel', + { defaultMessage: 'Show only fields with drifted data' } +); + +interface DataComparisonViewProps { + windowParameters?: WindowParameters; + dataView: DataView; + searchString: Query['query']; + searchQuery: QueryDslQueryContainer; + searchQueryLanguage: SearchQueryLanguage; + isBrushCleared: boolean; + runAnalysisDisabled?: boolean; + onReset: () => void; + lastRefresh: number; + forceRefresh: () => void; + randomSampler: RandomSampler; +} +// Data drift view +export const DataComparisonView = ({ + windowParameters, + dataView, + searchString, + searchQuery, + searchQueryLanguage, + onReset, + isBrushCleared, + lastRefresh, + forceRefresh, + randomSampler, +}: DataComparisonViewProps) => { + const [showDataComparisonOnly, setShowDataComparisonOnly] = useState(false); + + const [currentAnalysisWindowParameters, setCurrentAnalysisWindowParameters] = useState< + WindowParameters | undefined + >(windowParameters); + + const [fetchInfo, setFetchIno] = useState< + | { + fields: DataComparisonField[]; + currentDataView: DataView; + timeRanges?: { reference: TimeRange; production: TimeRange }; + } + | undefined + >(); + + const onRefresh = useCallback(() => { + setCurrentAnalysisWindowParameters(windowParameters); + const mergedFields: DataComparisonField[] = []; + if (dataView) { + mergedFields.push( + ...dataView.fields + .filter( + (f) => + f.aggregatable === true && + // @ts-ignore metadata does exist + f.spec.metadata_field! !== true && + getDataComparisonType(f.type) !== 'unsupported' && + mergedFields.findIndex((merged) => merged.field === f.name) === -1 + ) + .map((f) => ({ + field: f.name, + type: getDataComparisonType(f.type), + secondaryType: kbnTypeToSupportedType(f), + displayName: f.displayName, + })) + ); + } + setFetchIno({ + fields: mergedFields, + currentDataView: dataView, + ...(windowParameters + ? { + timeRanges: { + reference: { + start: windowParameters.baselineMin, + end: windowParameters.baselineMax, + }, + production: { + start: windowParameters.deviationMin, + end: windowParameters.deviationMax, + }, + }, + } + : {}), + }); + if (forceRefresh) { + forceRefresh(); + } + }, [dataView, windowParameters, forceRefresh]); + + const { result, cancelRequest } = useFetchDataComparisonResult({ + ...fetchInfo, + lastRefresh, + randomSampler, + searchString, + searchQueryLanguage, + searchQuery, + }); + + const filteredData = useMemo(() => { + if (!result?.data) return []; + + switch (showDataComparisonOnly) { + case true: + return result.data.filter((d) => d.driftDetected === true); + default: + return result.data; + } + }, [result.data, showDataComparisonOnly]); + + const { onTableChange, pagination, sorting, setPageIndex } = useTableState( + filteredData, + 'driftDetected', + 'desc' + ); + + const shouldRerunAnalysis = useMemo( + () => + currentAnalysisWindowParameters !== undefined && + !isEqual(currentAnalysisWindowParameters, windowParameters), + [currentAnalysisWindowParameters, windowParameters] + ); + + const onShowDataComparisonOnlyToggle = (e: EuiSwitchEvent) => { + setShowDataComparisonOnly(e.target.checked); + setPageIndex(0); + }; + + return windowParameters === undefined ? ( + + + + } + titleSize="xs" + body={ +

+ +

+ } + data-test-subj="dataVisualizerNoWindowParametersEmptyPrompt" + /> + ) : ( +
+ 0 && result.loaded < 1} + onRefresh={onRefresh} + onCancel={cancelRequest} + shouldRerunAnalysis={shouldRerunAnalysis} + runAnalysisDisabled={!dataView || !windowParameters} + > + + + + + + + + + {result.error ? ( + {result.error}} + titleSize="xs" + body={{result.errorBody}} + /> + ) : ( + + )} +
+ ); +}; diff --git a/x-pack/plugins/data_visualizer/public/application/data_comparison/document_count_with_dual_brush.tsx b/x-pack/plugins/data_visualizer/public/application/data_comparison/document_count_with_dual_brush.tsx new file mode 100644 index 00000000000000..cc4267be0087b7 --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/data_comparison/document_count_with_dual_brush.tsx @@ -0,0 +1,133 @@ +/* + * 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 { WindowParameters } from '@kbn/aiops-utils'; +import React, { FC } from 'react'; +import { DocumentCountChart, type DocumentCountChartPoint } from '@kbn/aiops-components'; +import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import type { DocumentCountChartProps } from '@kbn/aiops-components'; +import { RandomSampler } from '@kbn/ml-random-sampler-utils'; +import { useDataVisualizerKibana } from '../kibana_context'; +import { DocumentCountStats } from '../../../common/types/field_stats'; +import { TotalCountHeader } from '../common/components/document_count_content/total_count_header'; +import { SamplingMenu } from '../common/components/random_sampling_menu/random_sampling_menu'; + +export interface DocumentCountContentProps + extends Omit< + DocumentCountChartProps, + | 'dependencies' + | 'chartPoints' + | 'timeRangeEarliest' + | 'timeRangeLatest' + | 'interval' + | 'chartPointsSplitLabel' + > { + brushSelectionUpdateHandler: (d: WindowParameters, force: boolean) => void; + documentCountStats?: DocumentCountStats; + documentCountStatsSplit?: DocumentCountStats; + documentCountStatsSplitLabel?: string; + isBrushCleared: boolean; + totalCount: number; + sampleProbability: number; + initialAnalysisStart?: number | WindowParameters; + /** Optional color override for the default bar color for charts */ + barColorOverride?: string; + /** Optional color override for the highlighted bar color for charts */ + barHighlightColorOverride?: string; + windowParameters?: WindowParameters; + incomingInitialAnalysisStart?: number | WindowParameters; + randomSampler: RandomSampler; + reload: () => void; + approximate: boolean; +} + +export const DocumentCountWithDualBrush: FC = ({ + randomSampler, + reload, + brushSelectionUpdateHandler, + documentCountStats, + documentCountStatsSplit, + documentCountStatsSplitLabel = '', + isBrushCleared, + totalCount, + sampleProbability, + initialAnalysisStart, + barColorOverride, + barHighlightColorOverride, + windowParameters, + incomingInitialAnalysisStart, + approximate, + ...docCountChartProps +}) => { + const { + services: { data, uiSettings, fieldFormats, charts }, + } = useDataVisualizerKibana(); + + const bucketTimestamps = Object.keys(documentCountStats?.buckets ?? {}).map((time) => +time); + const splitBucketTimestamps = Object.keys(documentCountStatsSplit?.buckets ?? {}).map( + (time) => +time + ); + const timeRangeEarliest = Math.min(...[...bucketTimestamps, ...splitBucketTimestamps]); + const timeRangeLatest = Math.max(...[...bucketTimestamps, ...splitBucketTimestamps]); + + if ( + documentCountStats === undefined || + documentCountStats.buckets === undefined || + timeRangeEarliest === undefined || + timeRangeLatest === undefined + ) { + return totalCount !== undefined ? : null; + } + + const chartPoints: DocumentCountChartPoint[] = Object.entries(documentCountStats.buckets).map( + ([time, value]) => ({ + time: +time, + value, + }) + ); + + let chartPointsSplit: DocumentCountChartPoint[] | undefined; + if (documentCountStatsSplit?.buckets !== undefined) { + chartPointsSplit = Object.entries(documentCountStatsSplit?.buckets).map(([time, value]) => ({ + time: +time, + value, + })); + } + + return ( + + + + + + + + + + + {documentCountStats.interval !== undefined && ( + + + + )} + + ); +}; diff --git a/x-pack/plugins/data_visualizer/public/application/data_comparison/index.ts b/x-pack/plugins/data_visualizer/public/application/data_comparison/index.ts new file mode 100644 index 00000000000000..887f640da0d1af --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/data_comparison/index.ts @@ -0,0 +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. + */ + +import { + DataComparisonDetectionAppState, + type DataComparisonSpec, +} from './data_comparison_app_state'; +export { type DataComparisonSpec }; +// required for dynamic import using React.lazy() +// eslint-disable-next-line import/no-default-export +export default DataComparisonDetectionAppState; diff --git a/x-pack/plugins/data_visualizer/public/application/data_comparison/types.ts b/x-pack/plugins/data_visualizer/public/application/data_comparison/types.ts new file mode 100644 index 00000000000000..46272c045d51c5 --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/data_comparison/types.ts @@ -0,0 +1,115 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import { Filter, Query } from '@kbn/es-query'; +import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { SEARCH_QUERY_LANGUAGE, SearchQueryLanguage } from '@kbn/ml-query-utils'; +import { DATA_COMPARISON_TYPE } from './constants'; + +export interface DataComparisonAppState { + searchString?: Query['query']; + searchQuery?: estypes.QueryDslQueryContainer; + searchQueryLanguage: SearchQueryLanguage; + filters?: Filter[]; +} + +export type DataComparisonFullAppState = Required; +export type BasicAppState = DataComparisonFullAppState; + +const defaultSearchQuery = { + match_all: {}, +}; + +export const getDefaultDataComparisonState = ( + overrides?: Partial +): DataComparisonFullAppState => ({ + searchString: '', + searchQuery: defaultSearchQuery, + searchQueryLanguage: SEARCH_QUERY_LANGUAGE.KUERY, + filters: [], + ...overrides, +}); + +export interface Histogram { + doc_count: number; + key: string | number; + percentage?: number; +} + +export interface ComparisonHistogram extends Histogram { + g: string; +} + +// Show the overview table +export interface Feature { + featureName: string; + fieldType: DataComparisonField['type']; + driftDetected: boolean; + similarityTestPValue: number; + productionHistogram: Histogram[]; + referenceHistogram: Histogram[]; + comparisonDistribution: ComparisonHistogram[]; +} + +export interface DataComparisonField { + field: string; + type: DataComparisonType; + secondaryType: string; + displayName: string; +} +export enum FETCH_STATUS { + LOADING = 'loading', + SUCCESS = 'success', + FAILURE = 'failure', + NOT_INITIATED = 'not_initiated', +} + +export interface Result { + status: FETCH_STATUS; + data?: T; + error?: string; + errorBody?: string; +} + +export interface TimeRange { + start: string | number; + end: string | number; +} + +export interface Range { + min: number; + max: number; + interval: number; +} + +export interface NumericDriftData { + type: 'numeric'; + pValue: number; + range?: Range; + referenceHistogram: Histogram[]; + productionHistogram: Histogram[]; + secondaryType: string; +} +export interface CategoricalDriftData { + type: 'categorical'; + driftedTerms: Histogram[]; + driftedSumOtherDocCount: number; + baselineTerms: Histogram[]; + baselineSumOtherDocCount: number; + secondaryType: string; +} + +export const isNumericDriftData = (arg: any): arg is NumericDriftData => { + return isPopulatedObject(arg, ['type']) && arg.type === DATA_COMPARISON_TYPE.NUMERIC; +}; + +export const isCategoricalDriftData = (arg: any): arg is CategoricalDriftData => { + return isPopulatedObject(arg, ['type']) && arg.type === DATA_COMPARISON_TYPE.CATEGORICAL; +}; + +export type DataComparisonType = typeof DATA_COMPARISON_TYPE[keyof typeof DATA_COMPARISON_TYPE]; diff --git a/x-pack/plugins/data_visualizer/public/application/data_comparison/use_data_drift_result.ts b/x-pack/plugins/data_visualizer/public/application/data_comparison/use_data_drift_result.ts new file mode 100644 index 00000000000000..a8e145c3fee1ba --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/data_comparison/use_data_drift_result.ts @@ -0,0 +1,891 @@ +/* + * 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 { useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import type { IKibanaSearchRequest } from '@kbn/data-plugin/common'; +import { lastValueFrom } from 'rxjs'; +import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import type { Query } from '@kbn/data-plugin/common'; +import { chunk, cloneDeep, flatten } from 'lodash'; +import type { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import type { SearchQueryLanguage } from '@kbn/ml-query-utils'; +import { getDefaultDSLQuery } from '@kbn/ml-query-utils'; +import { i18n } from '@kbn/i18n'; +import { RandomSampler, RandomSamplerWrapper } from '@kbn/ml-random-sampler-utils'; +import { extractErrorMessage } from '@kbn/ml-error-utils'; +import { AggregationsAggregate } from '@elastic/elasticsearch/lib/api/types'; +import { QueryDslBoolQuery } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { isDefined } from '@kbn/ml-is-defined'; +import { useDataVisualizerKibana } from '../kibana_context'; +import { + REFERENCE_LABEL, + COMPARISON_LABEL, + DRIFT_P_VALUE_THRESHOLD, + DATA_COMPARISON_TYPE, +} from './constants'; + +import { + Histogram, + NumericDriftData, + CategoricalDriftData, + Range, + FETCH_STATUS, + Result, + isNumericDriftData, + Feature, + DataComparisonField, + TimeRange, +} from './types'; +import { computeChi2PValue } from './data_comparison_utils'; + +export const getDataComparisonType = (kibanaType: string): DataComparisonField['type'] => { + switch (kibanaType) { + case 'number': + return DATA_COMPARISON_TYPE.NUMERIC; + case 'boolean': + case 'string': + return DATA_COMPARISON_TYPE.CATEGORICAL; + default: + return DATA_COMPARISON_TYPE.UNSUPPORTED; + } +}; + +type UseDataSearch = ReturnType; + +export const useDataSearch = () => { + const { data } = useDataVisualizerKibana().services; + + return useCallback( + async (esSearchRequestParams: IKibanaSearchRequest['params'], abortSignal?: AbortSignal) => { + try { + const { rawResponse: resp } = await lastValueFrom( + data.search.search( + { + params: esSearchRequestParams, + }, + { abortSignal } + ) + ); + + return resp; + } catch (error) { + if (error.name === 'AbortError') { + // ignore abort errors + } else { + throw Error(error); + } + } + }, + [data] + ); +}; + +const percents = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]; + +const normalizeHistogram = (histogram: Histogram[]): Histogram[] => { + // Compute a total doc_count for all terms + const totalDocCount: number = histogram.reduce((acc, term) => acc + term.doc_count, 0); + // Iterate over the original array and update the doc_count of each term in the new array + return histogram.map((term) => ({ + ...term, + percentage: totalDocCount > 0 ? term.doc_count / totalDocCount : 0, + })); +}; + +const normalizeTerms = ( + terms: Histogram[], + keys: Array<{ key: string; relative_drift: number }>, + totalDocCount: number +): { normalizedTerms: Histogram[]; totalDocCount: number } => { + // Create a new array of terms with the same keys as the given array + const normalizedTerms: Array = keys.map((term) => ({ + ...term, + doc_count: 0, + percentage: 0, + })); + + // Iterate over the original array and update the doc_count of each term in the new array + terms.forEach((term) => { + const index: number = keys.findIndex((k) => k.key === term.key.toString()); + if (index !== -1) { + normalizedTerms[index].doc_count = term.doc_count; + normalizedTerms[index].percentage = term.doc_count / totalDocCount; + } + }); + + return { + normalizedTerms, + totalDocCount, + }; +}; + +const processDataComparisonResult = ( + result: Record +): Feature[] => { + return Object.entries(result).map(([featureName, data]) => { + if (isNumericDriftData(data)) { + // normalize data.referenceHistogram and data.productionHistogram to use frequencies instead of counts + const referenceHistogram: Histogram[] = normalizeHistogram(data.referenceHistogram); + const productionHistogram: Histogram[] = normalizeHistogram(data.productionHistogram); + + return { + featureName, + secondaryType: data.secondaryType, + fieldType: DATA_COMPARISON_TYPE.NUMERIC, + driftDetected: data.pValue < DRIFT_P_VALUE_THRESHOLD, + similarityTestPValue: data.pValue, + referenceHistogram: referenceHistogram ?? [], + productionHistogram: productionHistogram ?? [], + comparisonDistribution: [ + ...referenceHistogram.map((h) => ({ ...h, g: REFERENCE_LABEL })), + ...productionHistogram.map((h) => ({ ...h, g: COMPARISON_LABEL })), + ], + }; + } + + // normalize data.baselineTerms and data.driftedTerms to have same keys + // Get all unique keys from both arrays + const allKeys: string[] = Array.from( + new Set([ + ...data.baselineTerms.map((term) => term.key.toString()), + ...data.driftedTerms.map((term) => term.key.toString()), + ]) + ); + + // Compute a total doc_count for all terms + const referenceTotalDocCount: number = data.baselineTerms.reduce( + (acc, term) => acc + term.doc_count, + data.baselineSumOtherDocCount + ); + const productionTotalDocCount: number = data.driftedTerms.reduce( + (acc, term) => acc + term.doc_count, + data.driftedSumOtherDocCount + ); + + // Sort the categories (allKeys) by the following metric: Math.abs(productionDocCount-referenceDocCount)/referenceDocCount + const sortedKeys = allKeys + .map((k) => { + const key = k.toString(); + const baselineTerm = data.baselineTerms.find((t) => t.key === key); + const driftedTerm = data.driftedTerms.find((t) => t.key === key); + if (baselineTerm && driftedTerm) { + const referencePercentage = baselineTerm.doc_count / referenceTotalDocCount; + const productionPercentage = driftedTerm.doc_count / productionTotalDocCount; + return { + key, + relative_drift: + Math.abs(productionPercentage - referencePercentage) / referencePercentage, + }; + } + return { + key, + relative_drift: 0, + }; + }) + .sort((s1, s2) => s2.relative_drift - s1.relative_drift); + + // Normalize the baseline and drifted terms arrays + const { normalizedTerms: normalizedBaselineTerms } = normalizeTerms( + data.baselineTerms, + sortedKeys, + referenceTotalDocCount + ); + const { normalizedTerms: normalizedDriftedTerms } = normalizeTerms( + data.driftedTerms, + sortedKeys, + productionTotalDocCount + ); + + const pValue: number = computeChi2PValue(normalizedBaselineTerms, normalizedDriftedTerms); + return { + featureName, + secondaryType: data.secondaryType, + fieldType: DATA_COMPARISON_TYPE.CATEGORICAL, + driftDetected: pValue < DRIFT_P_VALUE_THRESHOLD, + similarityTestPValue: pValue, + referenceHistogram: normalizedBaselineTerms ?? [], + productionHistogram: normalizedDriftedTerms ?? [], + comparisonDistribution: [ + ...normalizedBaselineTerms.map((h) => ({ ...h, g: REFERENCE_LABEL })), + ...normalizedDriftedTerms.map((h) => ({ ...h, g: COMPARISON_LABEL })), + ], + }; + }); +}; + +const getDataComparisonQuery = ({ + runtimeFields, + searchQuery, + datetimeField, + timeRange, +}: { + runtimeFields: MappingRuntimeFields; + searchQuery?: estypes.QueryDslQueryContainer; + datetimeField?: string; + timeRange?: TimeRange; +}): NonNullable => { + let rangeFilter; + if (timeRange && datetimeField !== undefined && isPopulatedObject(timeRange, ['start', 'end'])) { + rangeFilter = { + range: { + [datetimeField]: { + gte: timeRange.start, + lte: timeRange.end, + format: 'epoch_millis', + }, + }, + }; + } + + const query = cloneDeep( + !searchQuery || isPopulatedObject(searchQuery, ['match_all']) + ? getDefaultDSLQuery() + : searchQuery + ); + + if (rangeFilter && isPopulatedObject(query, ['bool'])) { + if (Array.isArray(query.bool.filter)) { + // @ts-expect-error gte and lte can be numeric + query.bool.filter.push(rangeFilter); + } else { + // @ts-expect-error gte and lte can be numeric + query.bool.filter = [rangeFilter]; + } + } + + const refDataQuery: NonNullable = { + query, + }; + if (runtimeFields) { + refDataQuery.runtime_mappings = runtimeFields; + } + return refDataQuery; +}; + +const fetchReferenceBaselineData = async ({ + baseRequest, + fields, + randomSamplerWrapper, + dataSearch, + signal, +}: { + baseRequest: EsRequestParams; + dataSearch: UseDataSearch; + fields: DataComparisonField[]; + randomSamplerWrapper: RandomSamplerWrapper; + signal: AbortSignal; +}) => { + const baselineRequest = { ...baseRequest }; + const baselineRequestAggs: Record = {}; + + // for each field with type "numeric", add a percentiles agg to the request + for (const { field, type } of fields) { + // if the field is numeric, add a percentiles and stats aggregations to the request + if (type === DATA_COMPARISON_TYPE.NUMERIC) { + baselineRequestAggs[`${field}_percentiles`] = { + percentiles: { + field, + percents, + }, + }; + baselineRequestAggs[`${field}_stats`] = { + stats: { + field, + }, + }; + } + // if the field is categorical, add a terms aggregation to the request + if (type === DATA_COMPARISON_TYPE.CATEGORICAL) { + baselineRequestAggs[`${field}_terms`] = { + terms: { + field, + size: 100, // also DFA can potentially handle problems with 100 categories, for visualization purposes we will use top 10 + }, + }; + } + } + + const baselineResponse = await dataSearch( + { + ...baselineRequest, + body: { ...baselineRequest.body, aggs: randomSamplerWrapper.wrap(baselineRequestAggs) }, + }, + signal + ); + + return baselineResponse; +}; + +const fetchComparisonDriftedData = async ({ + dataSearch, + fields, + baselineResponseAggs, + baseRequest, + randomSamplerWrapper, + signal, +}: { + baseRequest: EsRequestParams; + dataSearch: UseDataSearch; + fields: DataComparisonField[]; + randomSamplerWrapper: RandomSamplerWrapper; + signal: AbortSignal; + baselineResponseAggs: object; +}) => { + const driftedRequest = { ...baseRequest }; + const driftedRequestAggs: Record = {}; + + for (const { field, type } of fields) { + if ( + isPopulatedObject(baselineResponseAggs, [`${field}_percentiles`]) && + type === DATA_COMPARISON_TYPE.NUMERIC + ) { + // create ranges based on percentiles + const percentiles = Object.values( + (baselineResponseAggs[`${field}_percentiles`] as Record).values + ); + const ranges: Array<{ from?: number; to?: number }> = []; + percentiles.forEach((val: number, idx) => { + if (idx === 0) { + ranges.push({ to: val }); + } else if (idx === percentiles.length - 1) { + ranges.push({ from: val }); + } else { + ranges.push({ from: percentiles[idx - 1], to: val }); + } + }); + // add range and bucket_count_ks_test to the request + driftedRequestAggs[`${field}_ranges`] = { + range: { + field, + ranges, + }, + }; + driftedRequestAggs[`${field}_ks_test`] = { + bucket_count_ks_test: { + buckets_path: `${field}_ranges>_count`, + alternative: ['two_sided'], + }, + }; + // add stats aggregation to the request + driftedRequestAggs[`${field}_stats`] = { + stats: { + field, + }, + }; + } + // if feature is categoric perform terms aggregation + if (type === DATA_COMPARISON_TYPE.CATEGORICAL) { + driftedRequestAggs[`${field}_terms`] = { + terms: { + field, + size: 100, // also DFA can potentially handle problems with 100 categories, for visualization purposes we will use top 10 + }, + }; + } + } + + const driftedResp = await dataSearch( + { + ...driftedRequest, + body: { ...driftedRequest.body, aggs: randomSamplerWrapper.wrap(driftedRequestAggs) }, + }, + signal + ); + return driftedResp; +}; + +const fetchHistogramData = async ({ + dataSearch, + fields, + driftedRespAggs, + baselineResponseAggs, + baseRequest, + randomSamplerWrapper, + signal, +}: { + baseRequest: EsRequestParams; + dataSearch: UseDataSearch; + fields: DataComparisonField[]; + randomSamplerWrapper: RandomSamplerWrapper; + signal: AbortSignal; + baselineResponseAggs: Record; + driftedRespAggs: Record; +}) => { + const histogramRequestAggs: Record = {}; + const fieldRange: { [field: string]: Range } = {}; + + for (const { field, type } of fields) { + // add histogram aggregation with min and max from baseline + if ( + type === DATA_COMPARISON_TYPE.NUMERIC && + baselineResponseAggs[`${field}_stats`] && + driftedRespAggs[`${field}_stats`] + ) { + const numBins = 10; + const min = Math.min( + baselineResponseAggs[`${field}_stats`].min!, + driftedRespAggs[`${field}_stats`].min! + ); + const max = Math.max( + baselineResponseAggs[`${field}_stats`].max!, + driftedRespAggs[`${field}_stats`].max! + ); + const interval = (max - min) / numBins; + + if (interval === 0) { + continue; + } + const offset = min; + fieldRange[field] = { min, max, interval }; + histogramRequestAggs[`${field}_histogram`] = { + histogram: { + field, + interval, + offset, + extended_bounds: { + min, + max, + }, + }, + }; + } + } + if (isPopulatedObject(histogramRequestAggs)) { + const histogramRequest = { + ...baseRequest, + body: { + ...baseRequest.body, + aggs: randomSamplerWrapper.wrap(histogramRequestAggs), + }, + }; + + return dataSearch(histogramRequest, signal); + } +}; + +const isFulfilled = ( + input: PromiseSettledResult> +): input is PromiseFulfilledResult> => input.status === 'fulfilled'; +const isRejected = (input: PromiseSettledResult>): input is PromiseRejectedResult => + input.status === 'rejected'; + +type EsRequestParams = NonNullable< + IKibanaSearchRequest>['params'] +>; + +interface ReturnedError { + error?: string; + errorBody?: string; +} + +function isReturnedError(arg: unknown): arg is ReturnedError { + return isPopulatedObject(arg, ['error']); +} + +/** + * Help split one big request into multiple requests (with max of 30 fields/request) + * to avoid too big of a data payload + * Returns a merged + * @param fields - list of fields to split + * @param randomSamplerWrapper - helper from randomSampler to pack and unpack 'sample' path from esResponse.aggregations + * @param asyncFetchFn - callback function with the divided fields + */ +export const fetchInParallelChunks = async < + ReturnedRespFromFetchFn extends { aggregations: Record } +>({ + fields, + randomSamplerWrapper, + asyncFetchFn, + errorMsg, +}: { + fields: DataComparisonField[]; + randomSamplerWrapper: RandomSamplerWrapper; + asyncFetchFn: (chunkedFields: DataComparisonField[]) => Promise; + errorMsg?: string; +}): Promise => { + const { unwrap } = randomSamplerWrapper; + const results = await Promise.allSettled( + chunk(fields, 30).map((chunkedFields: DataComparisonField[]) => asyncFetchFn(chunkedFields)) + ); + + const mergedResults = results + .filter(isFulfilled) + .filter((r) => r.value) + .map((r) => { + try { + return unwrap(r?.value.aggregations); + } catch (e) { + return undefined; + } + }) + .filter(isDefined); + + if (mergedResults.length === 0) { + const error = results.find(isRejected); + if (error) { + // eslint-disable-next-line no-console + console.error(error); + return { + error: errorMsg ?? 'An error occurred fetching data comparison data', + errorBody: error.reason.message, + }; + } + } + + const baselineResponseAggs = flatten(mergedResults).reduce( + (prev, acc) => ({ ...acc, ...prev }), + {} + ); + return baselineResponseAggs; +}; + +const initialState = { + data: undefined, + status: FETCH_STATUS.NOT_INITIATED, + error: undefined, + errorBody: undefined, +}; +export const useFetchDataComparisonResult = ( + { + fields, + currentDataView, + timeRanges, + searchQuery, + searchString, + lastRefresh, + randomSampler, + }: { + lastRefresh: number; + randomSampler?: RandomSampler; + fields?: DataComparisonField[]; + currentDataView?: DataView; + timeRanges?: { reference: TimeRange; production: TimeRange }; + searchQuery?: estypes.QueryDslQueryContainer; + searchString?: Query['query']; + searchQueryLanguage?: SearchQueryLanguage; + } = { lastRefresh: 0 } +) => { + const dataSearch = useDataSearch(); + const [result, setResult] = useState>(initialState); + const [loaded, setLoaded] = useState(0); + const [progressMessage, setProgressMessage] = useState(); + const abortController = useRef(new AbortController()); + + const cancelRequest = useCallback(() => { + abortController.current.abort(); + abortController.current = new AbortController(); + setResult(initialState); + setProgressMessage(undefined); + setLoaded(0); + }, []); + + useEffect( + () => { + const doFetchEsRequest = async function () { + if (!randomSampler) return; + + const randomSamplerWrapper = randomSampler.createRandomSamplerWrapper(); + + setLoaded(0); + setResult({ + data: undefined, + status: FETCH_STATUS.NOT_INITIATED, + error: undefined, + }); + + setProgressMessage( + i18n.translate('xpack.dataVisualizer.dataComparison.progress.started', { + defaultMessage: `Ready to fetch data for comparison.`, + }) + ); + + const signal = abortController.current.signal; + if (!fields || !currentDataView) return; + + setResult({ data: undefined, status: FETCH_STATUS.LOADING, error: undefined }); + + // Place holder for when there might be difference data views in the future + const referenceIndex = currentDataView?.getIndexPattern(); + const productionIndex = referenceIndex; + + const runtimeFields = currentDataView?.getRuntimeMappings(); + + setProgressMessage( + i18n.translate('xpack.dataVisualizer.dataComparison.progress.loadedFields', { + defaultMessage: `Loaded fields from index '{referenceIndex}' to analyze.`, + values: { referenceIndex }, + }) + ); + const refDataQuery = getDataComparisonQuery({ + searchQuery, + datetimeField: currentDataView?.timeFieldName, + runtimeFields, + timeRange: timeRanges?.reference, + }); + + try { + const fieldsCount = fields.length; + + setProgressMessage( + i18n.translate('xpack.dataVisualizer.dataComparison.progress.loadingReference', { + defaultMessage: `Loading reference data for {fieldsCount} fields.`, + values: { fieldsCount }, + }) + ); + + const baselineRequest: EsRequestParams = { + index: referenceIndex, + body: { + size: 0, + aggs: {} as Record, + ...refDataQuery, + }, + }; + + const baselineResponseAggs = await fetchInParallelChunks({ + fields, + randomSamplerWrapper, + + asyncFetchFn: (chunkedFields) => + fetchReferenceBaselineData({ + dataSearch, + baseRequest: baselineRequest, + fields: chunkedFields, + randomSamplerWrapper, + signal, + }), + }); + + if (isReturnedError(baselineResponseAggs)) { + setResult({ + data: undefined, + status: FETCH_STATUS.FAILURE, + error: baselineResponseAggs.error, + errorBody: baselineResponseAggs.errorBody, + }); + return; + } + + setProgressMessage( + i18n.translate('xpack.dataVisualizer.dataComparison.progress.loadedReference', { + defaultMessage: `Loaded reference data.`, + }) + ); + setLoaded(0.25); + + const prodDataQuery = getDataComparisonQuery({ + searchQuery, + datetimeField: currentDataView?.timeFieldName, + runtimeFields, + timeRange: timeRanges?.production, + }); + + setProgressMessage( + i18n.translate('xpack.dataVisualizer.dataComparison.progress.loadingComparison', { + defaultMessage: `Loading comparison data for {fieldsCount} fields.`, + values: { fieldsCount }, + }) + ); + + const driftedRequest: EsRequestParams = { + index: productionIndex, + body: { + size: 0, + aggs: {} as Record, + ...prodDataQuery, + }, + }; + const driftedRespAggs = await fetchInParallelChunks({ + fields, + randomSamplerWrapper, + + asyncFetchFn: (chunkedFields: DataComparisonField[]) => + fetchComparisonDriftedData({ + dataSearch, + baseRequest: driftedRequest, + baselineResponseAggs, + fields: chunkedFields, + randomSamplerWrapper, + signal, + }), + }); + if (isReturnedError(driftedRespAggs)) { + setResult({ + data: undefined, + status: FETCH_STATUS.FAILURE, + error: driftedRespAggs.error, + errorBody: driftedRespAggs.errorBody, + }); + return; + } + + setLoaded(0.5); + setProgressMessage( + i18n.translate('xpack.dataVisualizer.dataComparison.progress.loadedComparison', { + defaultMessage: `Loaded comparison data. Now loading histogram data.`, + }) + ); + + const referenceHistogramRequest: EsRequestParams = { + index: referenceIndex, + body: { + size: 0, + aggs: {} as Record, + ...refDataQuery, + }, + }; + + const referenceHistogramRespAggs = await fetchInParallelChunks({ + fields, + randomSamplerWrapper, + + asyncFetchFn: (chunkedFields: DataComparisonField[]) => + fetchHistogramData({ + dataSearch, + baseRequest: referenceHistogramRequest, + baselineResponseAggs, + driftedRespAggs, + fields: chunkedFields, + randomSamplerWrapper, + signal, + }), + }); + + if (isReturnedError(referenceHistogramRespAggs)) { + setResult({ + data: undefined, + status: FETCH_STATUS.FAILURE, + error: referenceHistogramRespAggs.error, + errorBody: referenceHistogramRespAggs.errorBody, + }); + return; + } + + setLoaded(0.75); + setProgressMessage( + i18n.translate( + 'xpack.dataVisualizer.dataComparison.progress.loadedReferenceHistogram', + { + defaultMessage: `Loaded histogram data for reference data set.`, + } + ) + ); + + const productionHistogramRequest: EsRequestParams = { + index: productionIndex, + body: { + size: 0, + aggs: {} as Record, + ...prodDataQuery, + }, + }; + + const productionHistogramRespAggs = await fetchInParallelChunks({ + fields, + randomSamplerWrapper, + + asyncFetchFn: (chunkedFields: DataComparisonField[]) => + fetchHistogramData({ + dataSearch, + baseRequest: productionHistogramRequest, + baselineResponseAggs, + driftedRespAggs, + fields: chunkedFields, + randomSamplerWrapper, + signal, + }), + }); + + if (isReturnedError(productionHistogramRespAggs)) { + setResult({ + data: undefined, + status: FETCH_STATUS.FAILURE, + error: productionHistogramRespAggs.error, + errorBody: productionHistogramRespAggs.errorBody, + }); + return; + } + + const data: Record = {}; + for (const { field, type, secondaryType } of fields) { + if ( + type === DATA_COMPARISON_TYPE.NUMERIC && + driftedRespAggs[`${field}_ks_test`] && + referenceHistogramRespAggs[`${field}_histogram`] && + productionHistogramRespAggs[`${field}_histogram`] + ) { + data[field] = { + secondaryType, + type: DATA_COMPARISON_TYPE.NUMERIC, + pValue: driftedRespAggs[`${field}_ks_test`].two_sided, + referenceHistogram: referenceHistogramRespAggs[`${field}_histogram`].buckets, + productionHistogram: productionHistogramRespAggs[`${field}_histogram`].buckets, + }; + } + if ( + type === DATA_COMPARISON_TYPE.CATEGORICAL && + driftedRespAggs[`${field}_terms`] && + baselineResponseAggs[`${field}_terms`] + ) { + data[field] = { + secondaryType, + type: DATA_COMPARISON_TYPE.CATEGORICAL, + driftedTerms: driftedRespAggs[`${field}_terms`].buckets ?? [], + driftedSumOtherDocCount: driftedRespAggs[`${field}_terms`].sum_other_doc_count, + baselineTerms: baselineResponseAggs[`${field}_terms`].buckets ?? [], + baselineSumOtherDocCount: + baselineResponseAggs[`${field}_terms`].sum_other_doc_count, + }; + } + } + + setProgressMessage( + i18n.translate('xpack.dataVisualizer.dataComparison.progress.loadedHistogramData', { + defaultMessage: `Loaded histogram data for comparison data set.`, + }) + ); + + setResult({ + data: processDataComparisonResult(data), + status: FETCH_STATUS.SUCCESS, + }); + setLoaded(1); + } catch (e) { + // eslint-disable-next-line no-console + console.error(e); + setResult({ + data: undefined, + status: FETCH_STATUS.FAILURE, + error: 'An error occurred while fetching data comparison data', + errorBody: extractErrorMessage(e), + }); + } + }; + + doFetchEsRequest(); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [ + dataSearch, + // eslint-disable-next-line react-hooks/exhaustive-deps + JSON.stringify({ + fields, + timeRanges, + currentDataView: currentDataView?.id, + searchString, + lastRefresh, + }), + ] + ); + const dataComparisonResult = useMemo( + () => ({ result: { ...result, loaded, progressMessage }, cancelRequest }), + [result, loaded, progressMessage, cancelRequest] + ); + return dataComparisonResult; +}; diff --git a/x-pack/plugins/data_visualizer/public/application/index.ts b/x-pack/plugins/data_visualizer/public/application/index.ts index 7e84bd84adf6f7..8a89702d5ea956 100644 --- a/x-pack/plugins/data_visualizer/public/application/index.ts +++ b/x-pack/plugins/data_visualizer/public/application/index.ts @@ -12,3 +12,4 @@ export type { IndexDataVisualizerViewProps, } from './index_data_visualizer'; export { IndexDataVisualizer } from './index_data_visualizer'; +export type { DataComparisonSpec } from './data_comparison'; diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx index 6d763b7fbbb936..0c420e7edc4532 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/index_data_visualizer_view/index_data_visualizer_view.tsx @@ -24,7 +24,6 @@ import { EuiTitle, } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; import { Filter, FilterStateStore, Query } from '@kbn/es-query'; import { generateFilters } from '@kbn/data-plugin/public'; import { DataView, DataViewField } from '@kbn/data-views-plugin/public'; @@ -37,6 +36,7 @@ import { import { useStorage } from '@kbn/ml-local-storage'; import type { SavedSearch } from '@kbn/saved-search-plugin/public'; +import { SEARCH_QUERY_LANGUAGE, SearchQueryLanguage } from '@kbn/ml-query-utils'; import { kbnTypeToSupportedType } from '../../../common/util/field_types_utils'; import { useCurrentEuiTheme } from '../../../common/hooks/use_current_eui_theme'; import { @@ -59,7 +59,6 @@ import { DataVisualizerIndexBasedAppState, DataVisualizerIndexBasedPageUrlState, } from '../../types/index_data_visualizer_state'; -import { SEARCH_QUERY_LANGUAGE, SearchQueryLanguage } from '../../types/combined_query'; import { useDataVisualizerKibana } from '../../../kibana_context'; import { FieldCountPanel } from '../../../common/components/field_count_panel'; import { DocumentCountContent } from '../../../common/components/document_count_content'; @@ -173,8 +172,7 @@ export const IndexDataVisualizerView: FC = (dataVi ); const { services } = useDataVisualizerKibana(); - const { notifications, uiSettings, data } = services; - const { toasts } = notifications; + const { uiSettings, data } = services; const [dataVisualizerListState, setDataVisualizerListState] = usePageUrlState( @@ -189,26 +187,6 @@ export const IndexDataVisualizerView: FC = (dataVi const { currentDataView, currentSessionId, getAdditionalLinks } = dataVisualizerProps; - useEffect(() => { - if (!currentDataView.isTimeBased()) { - toasts.addWarning({ - title: i18n.translate( - 'xpack.dataVisualizer.index.dataViewNotBasedOnTimeSeriesNotificationTitle', - { - defaultMessage: 'The data view {dataViewTitle} is not based on a time series', - values: { dataViewTitle: currentDataView.title }, - } - ), - text: i18n.translate( - 'xpack.dataVisualizer.index.dataViewNotBasedOnTimeSeriesNotificationDescription', - { - defaultMessage: 'Anomaly detection only runs over time-based indices', - } - ), - }); - } - }, [currentDataView, toasts]); - const dataViewFields: DataViewField[] = currentDataView.fields; const fieldTypes = useMemo(() => { diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_bar.tsx b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_bar.tsx new file mode 100644 index 00000000000000..9819d3f9d9e91b --- /dev/null +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_bar.tsx @@ -0,0 +1,115 @@ +/* + * 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 { Filter, Query, TimeRange } from '@kbn/es-query'; +import { i18n } from '@kbn/i18n'; +import React, { useEffect, useState } from 'react'; +import { isDefined } from '@kbn/ml-is-defined'; +import { DataView } from '@kbn/data-views-plugin/common'; +import { SearchQueryLanguage } from '@kbn/ml-query-utils'; +import { createMergedEsQuery } from '../../utils/saved_search_utils'; +import { useDataVisualizerKibana } from '../../../kibana_context'; + +export const SearchPanelContent = ({ + searchQuery, + searchString, + searchQueryLanguage, + dataView, + setSearchParams, +}: { + dataView: DataView; + searchQuery: Query['query']; + searchString: Query['query']; + searchQueryLanguage: SearchQueryLanguage; + setSearchParams({ + searchQuery, + searchString, + queryLanguage, + filters, + }: { + searchQuery: Query['query']; + searchString: Query['query']; + queryLanguage: SearchQueryLanguage; + filters: Filter[]; + }): void; +}) => { + const { + services: { + uiSettings, + notifications: { toasts }, + data: { query: queryManager }, + unifiedSearch: { + ui: { SearchBar }, + }, + }, + } = useDataVisualizerKibana(); + // The internal state of the input query bar updated on every key stroke. + const [searchInput, setSearchInput] = useState({ + query: searchString || '', + language: searchQueryLanguage, + }); + + useEffect(() => { + setSearchInput({ + query: searchString || '', + language: searchQueryLanguage, + }); + }, [searchQueryLanguage, searchString, queryManager.filterManager]); + + const searchHandler = ({ query, filters }: { query?: Query; filters?: Filter[] }) => { + const mergedQuery = isDefined(query) ? query : searchInput; + const mergedFilters = isDefined(filters) ? filters : queryManager.filterManager.getFilters(); + try { + if (mergedFilters) { + queryManager.filterManager.setFilters(mergedFilters); + } + + const combinedQuery = createMergedEsQuery( + mergedQuery, + queryManager.filterManager.getFilters() ?? [], + dataView, + uiSettings + ); + + setSearchParams({ + searchQuery: combinedQuery, + searchString: mergedQuery.query, + queryLanguage: mergedQuery.language as SearchQueryLanguage, + filters: mergedFilters, + }); + } catch (e) { + console.log('Invalid syntax', JSON.stringify(e, null, 2)); // eslint-disable-line no-console + toasts.addError(e, { + title: i18n.translate('xpack.dataVisualizer.searchPanel.invalidSyntax', { + defaultMessage: 'Invalid syntax', + }), + }); + } + }; + + return ( + + searchHandler({ query: params.query }) + } + onFiltersUpdated={(filters: Filter[]) => searchHandler({ filters })} + indexPatterns={[dataView]} + placeholder={i18n.translate('xpack.dataVisualizer.searchPanel.queryBarPlaceholderText', { + defaultMessage: 'Search… (e.g. status:200 AND extension:"PHP")', + })} + displayStyle={'inPage'} + isClearable={true} + customSubmitButton={
} + /> + ); +}; diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx index 7a4b97f4bf5a5f..2edb4280c9b077 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/components/search_panel/search_panel.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import React, { FC, useEffect, useState } from 'react'; +import React, { FC } from 'react'; import { css } from '@emotion/react'; import { useEuiBreakpoint, @@ -14,16 +14,12 @@ import { EuiFlexGroup, EuiSpacer, } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; import { Query, Filter } from '@kbn/es-query'; -import type { TimeRange } from '@kbn/es-query'; import { DataView, DataViewField } from '@kbn/data-views-plugin/public'; -import { isDefined } from '@kbn/ml-is-defined'; +import { SearchQueryLanguage } from '@kbn/ml-query-utils'; +import { SearchPanelContent } from './search_bar'; import { DataVisualizerFieldNamesFilter } from './field_name_filter'; import { DataVisualizerFieldTypeFilter } from './field_type_filter'; -import { SearchQueryLanguage } from '../../types/combined_query'; -import { useDataVisualizerKibana } from '../../../kibana_context'; -import { createMergedEsQuery } from '../../utils/saved_search_utils'; import { OverallStats } from '../../types/overall_stats'; interface Props { @@ -55,6 +51,7 @@ interface Props { export const SearchPanel: FC = ({ dataView, searchString, + searchQuery, searchQueryLanguage, overallStats, indexedFieldTypes, @@ -65,60 +62,6 @@ export const SearchPanel: FC = ({ setSearchParams, showEmptyFields, }) => { - const { - services: { - uiSettings, - notifications: { toasts }, - data: { query: queryManager }, - unifiedSearch: { - ui: { SearchBar }, - }, - }, - } = useDataVisualizerKibana(); - // The internal state of the input query bar updated on every key stroke. - const [searchInput, setSearchInput] = useState({ - query: searchString || '', - language: searchQueryLanguage, - }); - - useEffect(() => { - setSearchInput({ - query: searchString || '', - language: searchQueryLanguage, - }); - }, [searchQueryLanguage, searchString, queryManager.filterManager]); - - const searchHandler = ({ query, filters }: { query?: Query; filters?: Filter[] }) => { - const mergedQuery = isDefined(query) ? query : searchInput; - const mergedFilters = isDefined(filters) ? filters : queryManager.filterManager.getFilters(); - try { - if (mergedFilters) { - queryManager.filterManager.setFilters(mergedFilters); - } - - const combinedQuery = createMergedEsQuery( - mergedQuery, - queryManager.filterManager.getFilters() ?? [], - dataView, - uiSettings - ); - - setSearchParams({ - searchQuery: combinedQuery, - searchString: mergedQuery.query, - queryLanguage: mergedQuery.language as SearchQueryLanguage, - filters: mergedFilters, - }); - } catch (e) { - console.log('Invalid syntax', JSON.stringify(e, null, 2)); // eslint-disable-line no-console - toasts.addError(e, { - title: i18n.translate('xpack.dataVisualizer.searchPanel.invalidSyntax', { - defaultMessage: 'Invalid syntax', - }), - }); - } - }; - const dvSearchPanelControls = css({ marginLeft: '0px !important', paddingLeft: '0px !important', @@ -135,7 +78,6 @@ export const SearchPanel: FC = ({ flexDirection: 'column', }, }); - const dvSearchBar = css({ [useEuiBreakpoint(['xs', 's', 'm', 'l'])]: { minWidth: `max(100%, 300px)`, @@ -152,24 +94,12 @@ export const SearchPanel: FC = ({ responsive={false} > - - searchHandler({ query: params.query }) - } - onFiltersUpdated={(filters: Filter[]) => searchHandler({ filters })} - indexPatterns={[dataView]} - placeholder={i18n.translate('xpack.dataVisualizer.searchPanel.queryBarPlaceholderText', { - defaultMessage: 'Search… (e.g. status:200 AND extension:"PHP")', - })} - displayStyle={'inPage'} - isClearable={true} - customSubmitButton={
} + diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts index b948cab5ee1ed5..87e88e3555b18d 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_data_visualizer_grid_data.ts @@ -10,7 +10,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { merge } from 'rxjs'; import type { EuiTableActionsColumnType } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { type DataViewField, UI_SETTINGS } from '@kbn/data-plugin/common'; +import { type DataViewField } from '@kbn/data-plugin/common'; import { ES_FIELD_TYPES, KBN_FIELD_TYPES } from '@kbn/field-types'; import seedrandom from 'seedrandom'; import type { SamplingOption } from '@kbn/discover-plugin/public/application/main/components/field_stats_table/field_stats_table'; @@ -19,6 +19,7 @@ import { mlTimefilterRefresh$, useTimefilter } from '@kbn/ml-date-picker'; import useObservable from 'react-use/lib/useObservable'; import type { KibanaExecutionContext } from '@kbn/core-execution-context-common'; import { useExecutionContext } from '@kbn/kibana-react-plugin/public'; +import { useTimeBuckets } from '../../common/hooks/use_time_buckets'; import { DATA_VISUALIZER_GRID_EMBEDDABLE_TYPE } from '../embeddables/grid_embeddable/constants'; import { filterFields } from '../../common/components/fields_stats_grid/filter_fields'; import type { RandomSamplerOption } from '../constants/random_sampler'; @@ -26,7 +27,6 @@ import type { DataVisualizerIndexBasedAppState } from '../types/index_data_visua import { useDataVisualizerKibana } from '../../kibana_context'; import { getEsQueryFromSavedSearch } from '../utils/saved_search_utils'; import type { MetricFieldsStats } from '../../common/components/stats_table/components/field_count_stats'; -import { TimeBuckets } from '../../../../common/services/time_buckets'; import type { FieldVisConfig } from '../../common/components/stats_table/types'; import { NON_AGGREGATABLE_FIELD_TYPES, @@ -168,14 +168,7 @@ export const useDataVisualizerGridData = ( lastRefresh, ]); - const _timeBuckets = useMemo(() => { - return new TimeBuckets({ - [UI_SETTINGS.HISTOGRAM_MAX_BARS]: uiSettings.get(UI_SETTINGS.HISTOGRAM_MAX_BARS), - [UI_SETTINGS.HISTOGRAM_BAR_TARGET]: uiSettings.get(UI_SETTINGS.HISTOGRAM_BAR_TARGET), - dateFormat: uiSettings.get('dateFormat'), - 'dateFormat:scaled': uiSettings.get('dateFormat:scaled'), - }); - }, [uiSettings]); + const _timeBuckets = useTimeBuckets(); const timefilter = useTimefilter({ timeRangeSelector: currentDataView?.timeFieldName !== undefined, diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_overall_stats.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_overall_stats.ts index 3419b1674fddcb..ba07a4581223a4 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_overall_stats.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/hooks/use_overall_stats.ts @@ -8,8 +8,6 @@ import { useCallback, useEffect, useState, useRef, useMemo, useReducer } from 'react'; import { from, Subscription, Observable } from 'rxjs'; import { mergeMap, last, map, toArray } from 'rxjs/operators'; -import { i18n } from '@kbn/i18n'; -import type { ToastsStart } from '@kbn/core/public'; import { chunk } from 'lodash'; import type { IKibanaSearchRequest, @@ -38,6 +36,7 @@ import { import { getDocumentCountStats } from '../search_strategy/requests/get_document_stats'; import { getInitialProgress, getReducer } from '../progress_utils'; import { MAX_CONCURRENT_REQUESTS } from '../constants/index_data_visualizer_viewer'; +import { displayError } from '../../common/util/display_error'; /** * Helper function to run forkJoin @@ -63,32 +62,6 @@ export function rateLimitingForkJoin( ); } -function displayError(toastNotifications: ToastsStart, index: string, err: any) { - if (err.statusCode === 500) { - toastNotifications.addError(err, { - title: i18n.translate('xpack.dataVisualizer.index.dataLoader.internalServerErrorMessage', { - defaultMessage: - 'Error loading data in index {index}. {message}. ' + - 'The request may have timed out. Try using a smaller sample size or narrowing the time range.', - values: { - index, - message: err.error ?? err.message, - }, - }), - }); - } else { - toastNotifications.addError(err, { - title: i18n.translate('xpack.dataVisualizer.index.errorLoadingDataMessage', { - defaultMessage: 'Error loading data in index {index}. {message}.', - values: { - index, - message: err.error ?? err.message, - }, - }), - }); - } -} - export function useOverallStats( searchStrategyParams: TParams | undefined, lastRefresh: number, diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts index 4b53f815a986c2..6d2fffd09ac3b9 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/locator/locator.ts @@ -12,7 +12,7 @@ import type { RefreshInterval } from '@kbn/data-plugin/common'; import { LocatorDefinition, LocatorPublic } from '@kbn/share-plugin/common'; import { GlobalQueryStateFromUrl } from '@kbn/data-plugin/public'; import { type Dictionary, isRisonSerializationRequired } from '@kbn/ml-url-state'; -import { SearchQueryLanguage } from '../types/combined_query'; +import { SearchQueryLanguage } from '@kbn/ml-query-utils'; export const DATA_VISUALIZER_APP_LOCATOR = 'DATA_VISUALIZER_APP_LOCATOR'; diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/types/combined_query.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/types/combined_query.ts index 13590505a5d1a3..c79d3b7e521470 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/types/combined_query.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/types/combined_query.ts @@ -7,13 +7,6 @@ import { Query } from '@kbn/es-query'; -export const SEARCH_QUERY_LANGUAGE = { - KUERY: 'kuery', - LUCENE: 'lucene', -} as const; - -export type SearchQueryLanguage = typeof SEARCH_QUERY_LANGUAGE[keyof typeof SEARCH_QUERY_LANGUAGE]; - export interface CombinedQuery { searchString: Query['query']; searchQueryLanguage: string; diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/types/index_data_visualizer_state.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/types/index_data_visualizer_state.ts index 5b0bb046f25963..508d6e0015446e 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/types/index_data_visualizer_state.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/types/index_data_visualizer_state.ts @@ -7,8 +7,8 @@ import type { Filter } from '@kbn/es-query'; import type { Query } from '@kbn/data-plugin/common/query'; +import type { SearchQueryLanguage } from '@kbn/ml-query-utils'; import type { RandomSamplerOption } from '../constants/random_sampler'; -import type { SearchQueryLanguage } from './combined_query'; import type { DATA_VISUALIZER_INDEX_VIEWER } from '../constants/index_data_visualizer_viewer'; diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/types/storage.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/types/storage.ts index 372fa2a738a538..1ece302b8859e8 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/types/storage.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/types/storage.ts @@ -7,7 +7,7 @@ import { type FrozenTierPreference } from '@kbn/ml-date-picker'; -import { RandomSamplerOption } from '../constants/random_sampler'; +import { type RandomSamplerOption } from '../constants/random_sampler'; export const DV_FROZEN_TIER_PREFERENCE = 'dataVisualizer.frozenDataTierPreference'; export const DV_RANDOM_SAMPLER_PREFERENCE = 'dataVisualizer.randomSamplerPreference'; @@ -26,7 +26,7 @@ export type DVStorageMapped = T extends typeof DV_FROZEN_TIER_P : T extends typeof DV_RANDOM_SAMPLER_PREFERENCE ? RandomSamplerOption | undefined : T extends typeof DV_RANDOM_SAMPLER_P_VALUE - ? number | undefined + ? number | null : null; export const DV_STORAGE_KEYS = [ diff --git a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts index c3473c170b3707..6961c5d822a675 100644 --- a/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts +++ b/x-pack/plugins/data_visualizer/public/application/index_data_visualizer/utils/saved_search_utils.ts @@ -23,23 +23,10 @@ import { DataView } from '@kbn/data-views-plugin/public'; import type { SavedSearch } from '@kbn/saved-search-plugin/public'; import { getEsQueryConfig, isQuery, SearchSource } from '@kbn/data-plugin/common'; import { FilterManager, mapAndFlattenFilters } from '@kbn/data-plugin/public'; -import { SEARCH_QUERY_LANGUAGE, SearchQueryLanguage } from '../types/combined_query'; +import { getDefaultDSLQuery } from '@kbn/ml-query-utils'; +import { SEARCH_QUERY_LANGUAGE, SearchQueryLanguage } from '@kbn/ml-query-utils'; import { isSavedSearchSavedObject, SavedSearchSavedObject } from '../../../../common/types'; -const DEFAULT_QUERY = { - bool: { - must: [ - { - match_all: {}, - }, - ], - }, -}; - -export function getDefaultQuery() { - return cloneDeep(DEFAULT_QUERY); -} - /** * Parse the stringified searchSourceJSON * from a saved search or saved search object @@ -82,7 +69,7 @@ export function createMergedEsQuery( dataView?: DataView, uiSettings?: IUiSettingsClient ) { - let combinedQuery: QueryDslQueryContainer = getDefaultQuery(); + let combinedQuery = getDefaultDSLQuery() as QueryDslQueryContainer; if (isQuery(query) && query.language === SEARCH_QUERY_LANGUAGE.KUERY) { const ast = fromKueryExpression(query.query); @@ -158,7 +145,7 @@ export function getEsQueryFromSavedSearch({ // Flattened query from search source may contain a clause that narrows the time range // which might interfere with global time pickers so we need to remove const savedQuery = - cloneDeep(savedSearch.searchSource.getSearchRequestBody()?.query) ?? getDefaultQuery(); + cloneDeep(savedSearch.searchSource.getSearchRequestBody()?.query) ?? getDefaultDSLQuery(); const timeField = savedSearch.searchSource.getField('index')?.timeFieldName; if (Array.isArray(savedQuery.bool.filter) && timeField !== undefined) { diff --git a/x-pack/plugins/data_visualizer/public/index.ts b/x-pack/plugins/data_visualizer/public/index.ts index 7c4208106cb756..1312419797bb1b 100644 --- a/x-pack/plugins/data_visualizer/public/index.ts +++ b/x-pack/plugins/data_visualizer/public/index.ts @@ -17,6 +17,7 @@ export type { FileDataVisualizerSpec, IndexDataVisualizerSpec, IndexDataVisualizerViewProps, + DataComparisonSpec, } from './application'; export type { GetAdditionalLinksParams, diff --git a/x-pack/plugins/data_visualizer/public/lazy_load_bundle/component_wrapper.tsx b/x-pack/plugins/data_visualizer/public/lazy_load_bundle/component_wrapper.tsx index 028c0a402039d6..cbd897ac208113 100644 --- a/x-pack/plugins/data_visualizer/public/lazy_load_bundle/component_wrapper.tsx +++ b/x-pack/plugins/data_visualizer/public/lazy_load_bundle/component_wrapper.tsx @@ -5,7 +5,15 @@ * 2.0. */ -import React, { FC } from 'react'; +import React, { FC, Suspense } from 'react'; +import { EuiErrorBoundary, EuiSkeletonText } from '@elastic/eui'; +import type { DataComparisonDetectionAppStateProps } from '../application/data_comparison/data_comparison_app_state'; + +const LazyWrapper: FC = ({ children }) => ( + + }>{children} + +); const FileDataVisualizerComponent = React.lazy( () => import('../application/file_data_visualizer/file_data_visualizer') @@ -18,3 +26,15 @@ export const FileDataVisualizerWrapper: FC = () => { ); }; + +const DataComparisonLazy = React.lazy(() => import('../application/data_comparison')); + +/** + * Lazy-wrapped ExplainLogRateSpikesAppState React component + * @param {ExplainLogRateSpikesAppStateProps} props - properties specifying the data on which to run the analysis. + */ +export const DataComparison: FC = (props) => ( + + + +); diff --git a/x-pack/plugins/data_visualizer/public/lazy_load_bundle/index.ts b/x-pack/plugins/data_visualizer/public/lazy_load_bundle/index.ts index 0eddbbc248ed93..ba7cb83f784038 100644 --- a/x-pack/plugins/data_visualizer/public/lazy_load_bundle/index.ts +++ b/x-pack/plugins/data_visualizer/public/lazy_load_bundle/index.ts @@ -6,7 +6,11 @@ */ import { HttpSetup } from '@kbn/core/public'; -import type { FileDataVisualizerSpec, IndexDataVisualizerSpec } from '../application'; +import type { + DataComparisonSpec, + FileDataVisualizerSpec, + IndexDataVisualizerSpec, +} from '../application'; import { getCoreStart } from '../kibana_services'; let loadModulesPromise: Promise; @@ -14,6 +18,7 @@ let loadModulesPromise: Promise; interface LazyLoadedModules { FileDataVisualizer: FileDataVisualizerSpec; IndexDataVisualizer: IndexDataVisualizerSpec; + DataComparison: DataComparisonSpec; getHttp: () => HttpSetup; } diff --git a/x-pack/plugins/data_visualizer/public/lazy_load_bundle/lazy/index.ts b/x-pack/plugins/data_visualizer/public/lazy_load_bundle/lazy/index.tsx similarity index 88% rename from x-pack/plugins/data_visualizer/public/lazy_load_bundle/lazy/index.ts rename to x-pack/plugins/data_visualizer/public/lazy_load_bundle/lazy/index.tsx index 0001f912bff0db..181e15edc5fd30 100644 --- a/x-pack/plugins/data_visualizer/public/lazy_load_bundle/lazy/index.ts +++ b/x-pack/plugins/data_visualizer/public/lazy_load_bundle/lazy/index.tsx @@ -7,3 +7,4 @@ export type { FileDataVisualizerSpec, IndexDataVisualizerSpec } from '../../application'; export { FileDataVisualizer, IndexDataVisualizer } from '../../application'; +export { DataComparison } from '../component_wrapper'; diff --git a/x-pack/plugins/data_visualizer/public/plugin.ts b/x-pack/plugins/data_visualizer/public/plugin.ts index 08885dee8c7e89..38ebe18091e037 100644 --- a/x-pack/plugins/data_visualizer/public/plugin.ts +++ b/x-pack/plugins/data_visualizer/public/plugin.ts @@ -24,7 +24,11 @@ import type { LensPublicStart } from '@kbn/lens-plugin/public'; import type { IndexPatternFieldEditorStart } from '@kbn/data-view-field-editor-plugin/public'; import { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; import type { UiActionsStart } from '@kbn/ui-actions-plugin/public'; -import { getFileDataVisualizerComponent, getIndexDataVisualizerComponent } from './api'; +import { + getDataComparisonComponent, + getFileDataVisualizerComponent, + getIndexDataVisualizerComponent, +} from './api'; import { getMaxBytesFormatted } from './application/common/util/get_max_bytes'; import { registerHomeAddData, registerHomeFeatureCatalogue } from './register_home'; import { registerEmbeddables } from './application/index_data_visualizer/embeddables'; @@ -85,6 +89,7 @@ export class DataVisualizerPlugin return { getFileDataVisualizerComponent, getIndexDataVisualizerComponent, + getDataComparisonComponent, getMaxBytesFormatted, }; } diff --git a/x-pack/plugins/data_visualizer/tsconfig.json b/x-pack/plugins/data_visualizer/tsconfig.json index bfedf95733de53..75dd55b83e274a 100644 --- a/x-pack/plugins/data_visualizer/tsconfig.json +++ b/x-pack/plugins/data_visualizer/tsconfig.json @@ -13,6 +13,8 @@ ], "kbn_references": [ "@kbn/ace", + "@kbn/aiops-components", + "@kbn/aiops-utils", "@kbn/charts-plugin", "@kbn/cloud-chat-plugin", "@kbn/cloud-plugin", @@ -50,6 +52,7 @@ "@kbn/ml-data-grid", "@kbn/ml-error-utils", "@kbn/ml-kibana-theme", + "@kbn/ml-in-memory-table", "@kbn/react-field", "@kbn/rison", "@kbn/saved-search-plugin", @@ -60,7 +63,11 @@ "@kbn/unified-search-plugin", "@kbn/usage-collection-plugin", "@kbn/utility-types", - "@kbn/unified-field-list" + "@kbn/unified-field-list", + "@kbn/ml-string-hash", + "@kbn/ml-random-sampler-utils", + "@kbn/data-service", + "@kbn/core-notifications-browser" ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/enterprise_search/common/ml_inference_pipeline/index.test.ts b/x-pack/plugins/enterprise_search/common/ml_inference_pipeline/index.test.ts index 5cc0bdad3e121c..7af18f59e53a9b 100644 --- a/x-pack/plugins/enterprise_search/common/ml_inference_pipeline/index.test.ts +++ b/x-pack/plugins/enterprise_search/common/ml_inference_pipeline/index.test.ts @@ -65,34 +65,34 @@ describe('getMlModelTypesForModelConfig lib function', () => { }); describe('getRemoveProcessorForInferenceType lib function', () => { - const destinationField = 'dest'; + const targetField = 'ml.inference.target'; it('should return expected value for TEXT_CLASSIFICATION', () => { const inferenceType = SUPPORTED_PYTORCH_TASKS.TEXT_CLASSIFICATION; const expected: IngestRemoveProcessor = { - field: destinationField, + field: targetField, ignore_missing: true, }; - expect(getRemoveProcessorForInferenceType(destinationField, inferenceType)).toEqual(expected); + expect(getRemoveProcessorForInferenceType(targetField, inferenceType)).toEqual(expected); }); it('should return expected value for TEXT_EMBEDDING', () => { const inferenceType = SUPPORTED_PYTORCH_TASKS.TEXT_EMBEDDING; const expected: IngestRemoveProcessor = { - field: destinationField, + field: targetField, ignore_missing: true, }; - expect(getRemoveProcessorForInferenceType(destinationField, inferenceType)).toEqual(expected); + expect(getRemoveProcessorForInferenceType(targetField, inferenceType)).toEqual(expected); }); it('should return undefined for unknown inferenceType', () => { const inferenceType = 'wrongInferenceType'; - expect(getRemoveProcessorForInferenceType(destinationField, inferenceType)).toBeUndefined(); + expect(getRemoveProcessorForInferenceType(targetField, inferenceType)).toBeUndefined(); }); }); @@ -377,10 +377,9 @@ describe('parseMlInferenceParametersFromPipeline', () => { ], }) ).toEqual({ - destination_field: 'test', model_id: 'test-model', pipeline_name: 'unit-test', - source_field: 'body', + pipeline_definition: {}, field_mappings: [ { sourceField: 'body', @@ -414,10 +413,9 @@ describe('parseMlInferenceParametersFromPipeline', () => { ], }) ).toEqual({ - destination_field: 'body', model_id: 'test-model', pipeline_name: 'unit-test', - source_field: 'body', + pipeline_definition: {}, field_mappings: [ { sourceField: 'body', diff --git a/x-pack/plugins/enterprise_search/common/ml_inference_pipeline/index.ts b/x-pack/plugins/enterprise_search/common/ml_inference_pipeline/index.ts index 7870b22977a347..486e2fafbb081d 100644 --- a/x-pack/plugins/enterprise_search/common/ml_inference_pipeline/index.ts +++ b/x-pack/plugins/enterprise_search/common/ml_inference_pipeline/index.ts @@ -22,7 +22,7 @@ import { import { MlInferencePipeline, - CreateMlInferencePipelineParameters, + CreateMLInferencePipeline, TrainedModelState, InferencePipelineInferenceConfig, } from '../types/pipelines'; @@ -215,7 +215,7 @@ export const formatPipelineName = (rawName: string) => export const parseMlInferenceParametersFromPipeline = ( name: string, pipeline: IngestPipeline -): CreateMlInferencePipelineParameters | null => { +): CreateMLInferencePipeline | null => { const inferenceProcessors = pipeline?.processors ?.filter((p) => p.inference) .map((p) => p.inference) as IngestInferenceProcessor[]; @@ -239,12 +239,9 @@ export const parseMlInferenceParametersFromPipeline = ( return fieldMappings.length === 0 ? null : { - destination_field: fieldMappings[0].targetField // Backward compatibility - TODO: remove after multi-field selector is implemented for all inference types - ? stripMlInferencePrefix(fieldMappings[0].targetField) - : '', model_id: inferenceProcessors[0].model_id, pipeline_name: name, - source_field: fieldMappings[0].sourceField, // Backward compatibility - TODO: remove after multi-field selector is implemented for all inference types + pipeline_definition: {}, field_mappings: fieldMappings, }; }; @@ -278,8 +275,3 @@ export const parseModelStateReasonFromStats = (trainedModelStats?: Partial fieldName.startsWith(ML_INFERENCE_PREFIX) ? fieldName : `${ML_INFERENCE_PREFIX}${fieldName}`; - -const stripMlInferencePrefix = (fieldName: string) => - fieldName.startsWith(ML_INFERENCE_PREFIX) - ? fieldName.replace(ML_INFERENCE_PREFIX, '') - : fieldName; diff --git a/x-pack/plugins/enterprise_search/common/types/error_codes.ts b/x-pack/plugins/enterprise_search/common/types/error_codes.ts index db5e5d825128c8..de38fa1d24f163 100644 --- a/x-pack/plugins/enterprise_search/common/types/error_codes.ts +++ b/x-pack/plugins/enterprise_search/common/types/error_codes.ts @@ -22,6 +22,7 @@ export enum ErrorCode { SEARCH_APPLICATION_ALREADY_EXISTS = 'search_application_already_exists', SEARCH_APPLICATION_NAME_INVALID = 'search_application_name_invalid', SEARCH_APPLICATION_NOT_FOUND = 'search_application_not_found', + SEARCH_APPLICATION_ALIAS_NOT_FOUND = 'search_application_alias_not_found', UNAUTHORIZED = 'unauthorized', UNCAUGHT_EXCEPTION = 'uncaught_exception', } diff --git a/x-pack/plugins/enterprise_search/common/types/pipelines.ts b/x-pack/plugins/enterprise_search/common/types/pipelines.ts index b94249d33af2b7..6ea8e6c46e3f86 100644 --- a/x-pack/plugins/enterprise_search/common/types/pipelines.ts +++ b/x-pack/plugins/enterprise_search/common/types/pipelines.ts @@ -74,18 +74,8 @@ export interface DeleteMlInferencePipelineResponse { updated?: string; } -export interface CreateMlInferencePipelineParameters { - destination_field?: string; - inference_config?: InferencePipelineInferenceConfig; - model_id: string; - pipeline_name: string; - source_field: string; - field_mappings: FieldMapping[]; -} - -export interface CreateMLInferencePipelineDefinition { +export interface CreateMLInferencePipeline { field_mappings: FieldMapping[]; - inference_config?: InferencePipelineInferenceConfig; model_id: string; pipeline_definition: MlInferencePipeline; pipeline_name: string; diff --git a/x-pack/plugins/enterprise_search/public/applications/applications/components/search_applications/search_applications_list.tsx b/x-pack/plugins/enterprise_search/public/applications/applications/components/search_applications/search_applications_list.tsx index 7c385619729f2d..126c44b6b5dca8 100644 --- a/x-pack/plugins/enterprise_search/public/applications/applications/components/search_applications/search_applications_list.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/applications/components/search_applications/search_applications_list.tsx @@ -247,8 +247,7 @@ export const SearchApplicationsList: React.FC = ({ {i18n.translate( 'xpack.enterpriseSearch.searchApplications.list.searchBar.description', { - defaultMessage: - 'Locate a search application via name or by its included indices.', + defaultMessage: 'Locate a search application via name.', } )} diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/create_ml_inference_pipeline.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/create_ml_inference_pipeline.ts index 8b7c990a14fc04..2a3780d343a2e3 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/create_ml_inference_pipeline.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/api/pipelines/create_ml_inference_pipeline.ts @@ -7,9 +7,8 @@ import { FieldMapping } from '../../../../../common/ml_inference_pipeline'; import { - CreateMLInferencePipelineDefinition, + CreateMLInferencePipeline, MlInferencePipeline, - InferencePipelineInferenceConfig, } from '../../../../../common/types/pipelines'; import { createApiLogic } from '../../../shared/api_logic/create_api_logic'; import { HttpLogic } from '../../../shared/http'; @@ -17,7 +16,6 @@ import { HttpLogic } from '../../../shared/http'; export interface CreateMlInferencePipelineApiLogicArgs { fieldMappings: FieldMapping[]; indexName: string; - inferenceConfig?: InferencePipelineInferenceConfig; modelId: string; pipelineDefinition: MlInferencePipeline; pipelineName: string; @@ -31,9 +29,8 @@ export const createMlInferencePipeline = async ( args: CreateMlInferencePipelineApiLogicArgs ): Promise => { const route = `/internal/enterprise_search/indices/${args.indexName}/ml_inference/pipeline_processors`; - const params: CreateMLInferencePipelineDefinition = { + const params: CreateMLInferencePipeline = { field_mappings: args.fieldMappings, - inference_config: args.inferenceConfig, model_id: args.modelId, pipeline_definition: args.pipelineDefinition, pipeline_name: args.pipelineName, diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/__mocks__/ml_inference_logic.mock.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/__mocks__/ml_inference_logic.mock.ts index 65e3685ec9b425..6731dd0b96b787 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/__mocks__/ml_inference_logic.mock.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/__mocks__/ml_inference_logic.mock.ts @@ -8,10 +8,8 @@ export const mockMlInferenceValues: any = { addInferencePipelineModal: { configuration: { - destinationField: '', modelID: '', pipelineName: '', - sourceField: '', }, indexName: '', step: 0, diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/add_inference_pipeline_flyout.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/add_inference_pipeline_flyout.test.tsx index 807e2f56d451fd..340bd771602629 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/add_inference_pipeline_flyout.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/add_inference_pipeline_flyout.test.tsx @@ -488,11 +488,9 @@ describe('AddInferencePipelineFlyout', () => { ...DEFAULT_VALUES.addInferencePipelineModal, step: AddInferencePipelineSteps.Review, configuration: { - destinationField: 'test', existingPipeline: false, modelID: 'test-model', pipelineName: 'my-test-pipeline', - sourceField: 'body', }, }, }); @@ -514,11 +512,9 @@ describe('AddInferencePipelineFlyout', () => { ...DEFAULT_VALUES.addInferencePipelineModal, step: AddInferencePipelineSteps.Review, configuration: { - destinationField: 'test', existingPipeline: true, modelID: 'test-model', pipelineName: 'my-test-pipeline', - sourceField: 'body', }, }, }); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_fields.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_fields.test.tsx index ef2101c1de7da3..58cc3c3c5c7718 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_fields.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_fields.test.tsx @@ -13,7 +13,6 @@ import { shallow } from 'enzyme'; import { ConfigureFields } from './configure_fields'; import { MultiFieldMapping, SelectedFieldMappings } from './multi_field_selector'; -import { SingleFieldMapping } from './single_field_selector'; describe('ConfigureFields', () => { beforeEach(() => { @@ -26,20 +25,12 @@ describe('ConfigureFields', () => { addInferencePipelineModal: { configuration: { existingPipeline: false } }, }; - it('renders single field selector component if non-text expansion model is selected', () => { - setMockValues(mockValues); - const wrapper = shallow(); - expect(wrapper.find(SingleFieldMapping)).toHaveLength(1); - expect(wrapper.find(MultiFieldMapping)).toHaveLength(0); - expect(wrapper.find(SelectedFieldMappings)).toHaveLength(0); - }); - it('renders multi-field selector components if text expansion model is selected', () => { + it('renders multi-field selector components', () => { setMockValues({ ...mockValues, isTextExpansionModelSelected: true, }); const wrapper = shallow(); - expect(wrapper.find(SingleFieldMapping)).toHaveLength(0); expect(wrapper.find(MultiFieldMapping)).toHaveLength(1); expect(wrapper.find(SelectedFieldMappings)).toHaveLength(1); }); @@ -50,7 +41,6 @@ describe('ConfigureFields', () => { addInferencePipelineModal: { configuration: { existingPipeline: true } }, }); const wrapper = shallow(); - expect(wrapper.find(SingleFieldMapping)).toHaveLength(0); expect(wrapper.find(MultiFieldMapping)).toHaveLength(0); expect(wrapper.find(SelectedFieldMappings)).toHaveLength(1); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_fields.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_fields.tsx index c84266cc6cc032..18684b5b1637eb 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_fields.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/configure_fields.tsx @@ -16,11 +16,9 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { InferenceConfiguration } from './inference_config'; import { MLInferenceLogic } from './ml_inference_logic'; import { MultiFieldMapping, SelectedFieldMappings } from './multi_field_selector'; -import { SingleFieldMapping } from './single_field_selector'; export const ConfigureFields: React.FC = () => { const { - isTextExpansionModelSelected, addInferencePipelineModal: { configuration }, } = useValues(MLInferenceLogic); const areInputsDisabled = configuration.existingPipeline !== false; @@ -75,24 +73,9 @@ export const ConfigureFields: React.FC = () => { - {isTextExpansionModelSelected ? ( - <> - {areInputsDisabled ? ( - <> - ) : ( - <> - - - - )} - - - ) : ( - <> - - - - )} + {areInputsDisabled || } + + ); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.test.ts index 0d85cd3428c68f..a725371de02427 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.test.ts @@ -43,9 +43,9 @@ const DEFAULT_VALUES: MLInferenceProcessorsValues = { existingPipeline: undefined, existingInferencePipelines: [], formErrors: { + fieldMappings: 'Field is required.', modelID: 'Field is required.', pipelineName: 'Field is required.', - sourceField: 'Field is required.', }, index: null, isConfigureStepValid: false, @@ -336,11 +336,9 @@ describe('MlInferenceLogic', () => { describe('mlInferencePipeline', () => { it('returns undefined when configuration is invalid', () => { MLInferenceLogic.actions.setInferencePipelineConfiguration({ - destinationField: '', modelID: '', - pipelineName: 'unit-test', - sourceField: '', - fieldMappings: [], + pipelineName: '', // Invalid + fieldMappings: [], // Invalid targetField: '', }); @@ -349,11 +347,14 @@ describe('MlInferenceLogic', () => { it('generates inference pipeline', () => { MLModelsApiLogic.actions.apiSuccess([nerModel]); MLInferenceLogic.actions.setInferencePipelineConfiguration({ - destinationField: '', modelID: nerModel.model_id, pipelineName: 'unit-test', - sourceField: 'body', - fieldMappings: [], + fieldMappings: [ + { + sourceField: 'body', + targetField: 'ml.inference.body', + }, + ], targetField: '', }); @@ -362,10 +363,8 @@ describe('MlInferenceLogic', () => { it('returns undefined when existing pipeline not yet selected', () => { MLInferenceLogic.actions.setInferencePipelineConfiguration({ existingPipeline: true, - destinationField: '', modelID: '', pipelineName: '', - sourceField: '', fieldMappings: [], targetField: '', }); @@ -382,11 +381,14 @@ describe('MlInferenceLogic', () => { }); MLInferenceLogic.actions.setInferencePipelineConfiguration({ existingPipeline: true, - destinationField: '', modelID: '', pipelineName: 'unit-test', - sourceField: '', - fieldMappings: [], + fieldMappings: [ + { + sourceField: 'body', + targetField: 'ml.inference.body', + }, + ], targetField: '', }); expect(MLInferenceLogic.values.mlInferencePipeline).not.toBeUndefined(); @@ -494,8 +496,8 @@ describe('MlInferenceLogic', () => { it('has errors when configuration is empty', () => { expect(MLInferenceLogic.values.formErrors).toEqual({ modelID: 'Field is required.', + fieldMappings: 'Field is required.', pipelineName: 'Field is required.', - sourceField: 'Field is required.', }); }); it('has error for invalid pipeline names', () => { @@ -503,7 +505,12 @@ describe('MlInferenceLogic', () => { ...MLInferenceLogic.values.addInferencePipelineModal.configuration, modelID: 'unit-test-model', existingPipeline: false, - sourceField: 'body', + fieldMappings: [ + { + sourceField: 'body', + targetField: 'ml.inference.body', + }, + ], pipelineName: 'Invalid Pipeline Name', }); const expectedErrors = { @@ -528,7 +535,12 @@ describe('MlInferenceLogic', () => { pipelineName: 'unit-test-pipeline', modelID: 'unit-test-model', existingPipeline: false, - sourceField: 'body', + fieldMappings: [ + { + sourceField: 'body', + targetField: 'ml.inference.body', + }, + ], }); MLInferenceLogic.actions.fetchPipelineSuccess({ 'mock-pipeline': {}, @@ -546,10 +558,8 @@ describe('MlInferenceLogic', () => { const mockModelConfiguration = { ...DEFAULT_VALUES.addInferencePipelineModal, configuration: { - destinationField: 'mock_destination_field', modelID: 'mock-model-id', pipelineName: 'mock-pipeline-name', - sourceField: 'mock_text_field', }, indexName: 'my-index-123', }; @@ -561,6 +571,7 @@ describe('MlInferenceLogic', () => { configuration: { ...mockModelConfiguration.configuration, modelID: textExpansionModel.model_id, + fieldMappings: [], }, }, }); @@ -589,37 +600,6 @@ describe('MlInferenceLogic', () => { pipelineName: mockModelConfiguration.configuration.pipelineName, }); }); - - it('calls makeCreatePipelineRequest with passed pipelineDefinition and default fieldMappings', () => { - mount({ - ...DEFAULT_VALUES, - addInferencePipelineModal: { - ...mockModelConfiguration, - configuration: { - ...mockModelConfiguration.configuration, - modelID: nerModel.model_id, - }, - }, - }); - jest.spyOn(MLInferenceLogic.actions, 'makeCreatePipelineRequest'); - - MLModelsApiLogic.actions.apiSuccess([nerModel]); - MLInferenceLogic.actions.createPipeline(); - - expect(MLInferenceLogic.actions.makeCreatePipelineRequest).toHaveBeenCalledWith({ - indexName: mockModelConfiguration.indexName, - inferenceConfig: undefined, - fieldMappings: [ - { - sourceField: mockModelConfiguration.configuration.sourceField, - targetField: `ml.inference.${mockModelConfiguration.configuration.destinationField}`, - }, - ], - modelId: nerModel.model_id, - pipelineDefinition: expect.any(Object), // Generation logic is tested elsewhere - pipelineName: mockModelConfiguration.configuration.pipelineName, - }); - }); }); describe('startTextExpansionModelSuccess', () => { it('fetches ml models', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.ts index f67d764a97bb0c..4d3747f79adc1a 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/ml_inference_logic.ts @@ -89,10 +89,8 @@ import { } from './utils'; export const EMPTY_PIPELINE_CONFIGURATION: InferencePipelineConfiguration = { - destinationField: '', modelID: '', pipelineName: '', - sourceField: '', targetField: '', }; @@ -308,14 +306,7 @@ export const MLInferenceLogic = kea< actions.makeCreatePipelineRequest({ indexName, - inferenceConfig: configuration.inferenceConfig, - fieldMappings: configuration.fieldMappings || [ - // Temporary while we're using single fields for non-ELSER pipelines - { - sourceField: configuration.sourceField, - targetField: getMlInferencePrefixedFieldName(configuration.destinationField), - }, - ], + fieldMappings: configuration.fieldMappings ?? [], modelId: configuration.modelID, pipelineDefinition: mlInferencePipeline!, pipelineName: configuration.pipelineName, @@ -327,13 +318,11 @@ export const MLInferenceLogic = kea< const params = parseMlInferenceParametersFromPipeline(pipelineName, pipeline); if (params === null) return; actions.setInferencePipelineConfiguration({ - destinationField: params.destination_field ?? '', existingPipeline: true, modelID: params.model_id, pipelineName, - sourceField: params.source_field, fieldMappings: params.field_mappings, - targetField: params.destination_field ?? '', + targetField: '', }); }, setIndexName: ({ indexName }) => { @@ -545,13 +534,7 @@ export const MLInferenceLogic = kea< return generateMlInferencePipelineBody({ model, pipelineName: configuration.pipelineName, - fieldMappings: configuration.fieldMappings || [ - { - sourceField: configuration.sourceField, - targetField: - configuration.destinationField || formatPipelineName(configuration.pipelineName), - }, - ], + fieldMappings: configuration.fieldMappings ?? [], inferenceConfig: configuration.inferenceConfig, }); }, diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/single_field_selector.test.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/single_field_selector.test.tsx deleted file mode 100644 index ce4a9629c45420..00000000000000 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/single_field_selector.test.tsx +++ /dev/null @@ -1,87 +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 { setMockValues } from '../../../../../__mocks__/kea_logic'; - -import React from 'react'; - -import { shallow } from 'enzyme'; - -import { EuiFieldText, EuiSelect } from '@elastic/eui'; - -import { SingleFieldMapping } from './single_field_selector'; - -const DEFAULT_VALUES = { - addInferencePipelineModal: { - configuration: { - sourceField: 'my-source-field', - destinationField: 'my-target-field', - }, - }, - formErrors: {}, - sourceFields: ['my-source-field1', 'my-source-field2', 'my-source-field3'], - supportedMLModels: [], -}; - -describe('SingleFieldMapping', () => { - beforeEach(() => { - jest.clearAllMocks(); - setMockValues({}); - }); - it('renders source field selector and target field text field', () => { - setMockValues(DEFAULT_VALUES); - const wrapper = shallow(); - - expect(wrapper.find(EuiSelect)).toHaveLength(1); - const select = wrapper.find(EuiSelect); - expect(select.prop('options')).toEqual([ - { - disabled: true, - text: 'Select a schema field', - value: '', - }, - { - text: 'my-source-field1', - value: 'my-source-field1', - }, - { - text: 'my-source-field2', - value: 'my-source-field2', - }, - { - text: 'my-source-field3', - value: 'my-source-field3', - }, - ]); - expect(select.prop('value')).toEqual('my-source-field'); - - expect(wrapper.find(EuiFieldText)).toHaveLength(1); - const textField = wrapper.find(EuiFieldText); - expect(textField.prop('value')).toEqual('my-target-field'); - }); - it('disables inputs when selecting an existing pipeline', () => { - setMockValues({ - ...DEFAULT_VALUES, - addInferencePipelineModal: { - ...DEFAULT_VALUES.addInferencePipelineModal, - configuration: { - ...DEFAULT_VALUES.addInferencePipelineModal.configuration, - existingPipeline: true, - }, - }, - }); - const wrapper = shallow(); - - expect(wrapper.find(EuiSelect)).toHaveLength(1); - const select = wrapper.find(EuiSelect); - expect(select.prop('disabled')).toBe(true); - - expect(wrapper.find(EuiFieldText)).toHaveLength(1); - const textField = wrapper.find(EuiFieldText); - expect(textField.prop('disabled')).toBe(true); - }); -}); diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/single_field_selector.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/single_field_selector.tsx deleted file mode 100644 index 354db83afbc341..00000000000000 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/single_field_selector.tsx +++ /dev/null @@ -1,145 +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 React from 'react'; - -import { useValues, useActions } from 'kea'; - -import { - EuiFieldText, - EuiFlexGroup, - EuiFlexItem, - EuiFormRow, - EuiLink, - EuiSelect, -} from '@elastic/eui'; - -import { i18n } from '@kbn/i18n'; -import { FormattedMessage } from '@kbn/i18n-react'; - -import { docLinks } from '../../../../../shared/doc_links'; - -import { IndexViewLogic } from '../../index_view_logic'; - -import { MLInferenceLogic } from './ml_inference_logic'; -import { TargetFieldHelpText } from './target_field_help_text'; - -const NoSourceFieldsError: React.FC = () => ( - - {i18n.translate( - 'xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.error.docLink', - { defaultMessage: 'Learn more about field mapping' } - )} - - ), - }} - /> -); - -export const SingleFieldMapping: React.FC = () => { - const { - addInferencePipelineModal: { configuration }, - formErrors, - supportedMLModels, - sourceFields, - } = useValues(MLInferenceLogic); - const { setInferencePipelineConfiguration } = useActions(MLInferenceLogic); - const { ingestionMethod } = useValues(IndexViewLogic); - - const { destinationField, modelID, pipelineName, sourceField } = configuration; - const isEmptySourceFields = (sourceFields?.length ?? 0) === 0; - const areInputsDisabled = configuration.existingPipeline !== false; - const selectedModel = supportedMLModels.find((model) => model.model_id === modelID); - return ( - <> - - - } - isInvalid={isEmptySourceFields} - > - ({ - text: field, - value: field, - })) ?? []), - ]} - onChange={(e) => - setInferencePipelineConfiguration({ - ...configuration, - sourceField: e.target.value, - }) - } - /> - - - - - ) - } - error={formErrors.destinationField} - isInvalid={formErrors.destinationField !== undefined} - fullWidth - > - - setInferencePipelineConfiguration({ - ...configuration, - destinationField: e.target.value, - }) - } - fullWidth - /> - - - - - ); -}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/test_pipeline.tsx b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/test_pipeline.tsx index 5d6332b7c04759..d734d1bf9350b5 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/test_pipeline.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/test_pipeline.tsx @@ -34,7 +34,7 @@ import './add_inference_pipeline_flyout.scss'; export const TestPipeline: React.FC = () => { const { addInferencePipelineModal: { - configuration: { sourceField, fieldMappings }, + configuration: { fieldMappings }, indexName, }, getDocumentsErr, @@ -168,7 +168,7 @@ export const TestPipeline: React.FC = () => { `"${fieldMapping.sourceField}": "${sampleFieldValue}"` ) .join(', ') - : `"${sourceField}":"${sampleFieldValue}"` + : `"my_field": "${sampleFieldValue}"` }}}]` ), null, diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/test_pipeline_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/test_pipeline_logic.test.ts index 83bf8f7eef5459..61685bfeb04201 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/test_pipeline_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/test_pipeline_logic.test.ts @@ -21,10 +21,8 @@ import { AddInferencePipelineSteps } from './types'; const DEFAULT_VALUES: TestPipelineValues = { addInferencePipelineModal: { configuration: { - destinationField: '', modelID: '', pipelineName: '', - sourceField: '', targetField: '', }, indexName: '', @@ -67,10 +65,8 @@ describe('TestPipelineLogic', () => { jest.clearAllMocks(); mockMlInferenceValues.addInferencePipelineModal = { configuration: { - destinationField: '', modelID: '', pipelineName: '', - sourceField: '', targetField: '', }, indexName: '', @@ -123,10 +119,8 @@ describe('TestPipelineLogic', () => { describe('simulatePipeline', () => { const mockModelConfiguration = { configuration: { - destinationField: '', modelID: nerModel.model_id, pipelineName: 'mock-pipeline-name', - sourceField: 'mock_text_field', }, indexName: 'my-index-123', }; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/types.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/types.ts index 9754a378e7473e..4e680d7dfba409 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/types.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/types.ts @@ -10,21 +10,18 @@ import { FieldMapping } from '../../../../../../../common/ml_inference_pipeline' import { InferencePipelineInferenceConfig } from '../../../../../../../common/types/pipelines'; export interface InferencePipelineConfiguration { - destinationField: string; existingPipeline?: boolean; inferenceConfig?: InferencePipelineInferenceConfig; modelID: string; pipelineName: string; - sourceField: string; fieldMappings?: FieldMapping[]; targetField: string; } export interface AddInferencePipelineFormErrors { - destinationField?: string; modelID?: string; + fieldMappings?: string; pipelineName?: string; - sourceField?: string; } export enum AddInferencePipelineSteps { diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/utils.ts b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/utils.ts index 332f885a3543d3..e70468d6842799 100644 --- a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/utils.ts +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/components/search_index/pipelines/ml_inference/utils.ts @@ -71,16 +71,9 @@ export const validateInferencePipelineFields = ( config: InferencePipelineConfiguration ): AddInferencePipelineFormErrors => { const errors: AddInferencePipelineFormErrors = {}; - - // If there are field mappings, we don't need to validate the single source field - if (config.fieldMappings && Object.keys(config.fieldMappings).length > 0) { - return errors; + if ((config.fieldMappings ?? []).length === 0) { + errors.fieldMappings = FIELD_REQUIRED_ERROR; } - - if (config.sourceField.trim().length === 0) { - errors.sourceField = FIELD_REQUIRED_ERROR; - } - return errors; }; diff --git a/x-pack/plugins/enterprise_search/server/lib/analytics/fetch_analytics_collection.ts b/x-pack/plugins/enterprise_search/server/lib/analytics/fetch_analytics_collection.ts index 09d04caee0281e..34b188038bf4a5 100644 --- a/x-pack/plugins/enterprise_search/server/lib/analytics/fetch_analytics_collection.ts +++ b/x-pack/plugins/enterprise_search/server/lib/analytics/fetch_analytics_collection.ts @@ -18,7 +18,7 @@ export const fetchAnalyticsCollections = async ( ): Promise => { try { const collections = await client.asCurrentUser.searchApplication.getBehavioralAnalytics({ - name: query, + name: [query], }); return Object.keys(collections).map((value) => { diff --git a/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/pipeline_processors/create_ml_inference_pipeline.test.ts b/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/pipeline_processors/create_ml_inference_pipeline.test.ts index 1603cd05c54a55..62fc7935b169ae 100644 --- a/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/pipeline_processors/create_ml_inference_pipeline.test.ts +++ b/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/pipeline_processors/create_ml_inference_pipeline.test.ts @@ -23,9 +23,7 @@ const mockClient = { describe('createMlInferencePipeline lib function', () => { const pipelineName = 'my-pipeline'; - const modelId = 'my-model-id'; - const sourceField = 'my-source-field'; - const destinationField = 'my-dest-field'; + const pipelineDefinition = { processors: [] }; const inferencePipelineGeneratedName = getPrefixedInferencePipelineProcessorName(pipelineName); mockClient.ml.getTrainedModels.mockImplementation(() => @@ -58,11 +56,7 @@ describe('createMlInferencePipeline lib function', () => { const actualResult = await createMlInferencePipeline( pipelineName, - undefined, - modelId, - sourceField, - destinationField, - undefined, // Omitted inference config + pipelineDefinition, mockClient as unknown as ElasticsearchClient ); @@ -73,11 +67,7 @@ describe('createMlInferencePipeline lib function', () => { it('should convert spaces to underscores in the pipeline name', async () => { await createMlInferencePipeline( 'my pipeline with spaces ', - undefined, - modelId, - sourceField, - destinationField, - undefined, // Omitted inference config + pipelineDefinition, mockClient as unknown as ElasticsearchClient ); @@ -88,70 +78,6 @@ describe('createMlInferencePipeline lib function', () => { ); }); - it('should default the destination field to the pipeline name', async () => { - mockClient.ingest.getPipeline.mockImplementation(() => Promise.reject({ statusCode: 404 })); // Pipeline does not exist - mockClient.ingest.putPipeline.mockImplementation(() => Promise.resolve({ acknowledged: true })); - - await createMlInferencePipeline( - pipelineName, - undefined, - modelId, - sourceField, - undefined, // Omitted destination field - undefined, // Omitted inference config - mockClient as unknown as ElasticsearchClient - ); - - // Verify the object passed to pipeline creation contains the default target field name - expect(mockClient.ingest.putPipeline).toHaveBeenCalledWith( - expect.objectContaining({ - processors: expect.arrayContaining([ - expect.objectContaining({ - inference: expect.objectContaining({ - target_field: `ml.inference.${pipelineName}`, - }), - }), - ]), - }) - ); - }); - - it('should set inference config when provided', async () => { - mockClient.ingest.getPipeline.mockImplementation(() => Promise.reject({ statusCode: 404 })); // Pipeline does not exist - mockClient.ingest.putPipeline.mockImplementation(() => Promise.resolve({ acknowledged: true })); - - await createMlInferencePipeline( - pipelineName, - undefined, - modelId, - sourceField, - destinationField, - { - zero_shot_classification: { - labels: ['foo', 'bar'], - }, - }, - mockClient as unknown as ElasticsearchClient - ); - - // Verify the object passed to pipeline creation contains the default target field name - expect(mockClient.ingest.putPipeline).toHaveBeenCalledWith( - expect.objectContaining({ - processors: expect.arrayContaining([ - expect.objectContaining({ - inference: expect.objectContaining({ - inference_config: { - zero_shot_classification: { - labels: ['foo', 'bar'], - }, - }, - }), - }), - ]), - }) - ); - }); - it('should throw an error without creating the pipeline if it already exists', () => { mockClient.ingest.getPipeline.mockImplementation(() => Promise.resolve({ @@ -161,11 +87,7 @@ describe('createMlInferencePipeline lib function', () => { const actualResult = createMlInferencePipeline( pipelineName, - undefined, - modelId, - sourceField, - destinationField, - undefined, // Omitted inference config + pipelineDefinition, mockClient as unknown as ElasticsearchClient ); diff --git a/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/pipeline_processors/create_ml_inference_pipeline.ts b/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/pipeline_processors/create_ml_inference_pipeline.ts index 21091fec671673..bdcc4eb2932d95 100644 --- a/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/pipeline_processors/create_ml_inference_pipeline.ts +++ b/x-pack/plugins/enterprise_search/server/lib/indices/pipelines/ml_inference/pipeline_processors/create_ml_inference_pipeline.ts @@ -8,16 +8,14 @@ import { IngestGetPipelineResponse, IngestPipeline } from '@elastic/elasticsearch/lib/api/types'; import { ElasticsearchClient } from '@kbn/core/server'; -import { FieldMapping, formatPipelineName } from '../../../../../../common/ml_inference_pipeline'; +import { FieldMapping } from '../../../../../../common/ml_inference_pipeline'; import { ErrorCode } from '../../../../../../common/types/error_codes'; import type { PreparePipelineAndIndexForMlInferenceResult, - InferencePipelineInferenceConfig, CreatePipelineResult, } from '../../../../../../common/types/pipelines'; import { addSubPipelineToIndexSpecificMlPipeline } from '../../../../../utils/create_ml_inference_pipeline'; import { getPrefixedInferencePipelineProcessorName } from '../../../../../utils/ml_inference_pipeline_utils'; -import { formatMlPipelineBody } from '../../../../pipelines/create_pipeline_definitions'; import { updateMlInferenceMappings } from '../update_ml_inference_mappings'; /** @@ -28,10 +26,7 @@ import { updateMlInferenceMappings } from '../update_ml_inference_mappings'; * @param pipelineName pipeline name set by the user. * @param pipelineDefinition * @param modelId model ID selected by the user. - * @param sourceField The document field that model will read. - * @param destinationField The document field that the model will write to. * @param fieldMappings The array of objects representing the source field (text) names and target fields (ML output) names - * @param inferenceConfig The configuration for the model. * @param esClient the Elasticsearch Client to use when retrieving pipeline and model details. */ export const preparePipelineAndIndexForMlInference = async ( @@ -39,19 +34,12 @@ export const preparePipelineAndIndexForMlInference = async ( pipelineName: string, pipelineDefinition: IngestPipeline | undefined, modelId: string, - sourceField: string | undefined, - destinationField: string | null | undefined, fieldMappings: FieldMapping[] | undefined, - inferenceConfig: InferencePipelineInferenceConfig | undefined, esClient: ElasticsearchClient ): Promise => { const createPipelineResult = await createMlInferencePipeline( pipelineName, pipelineDefinition, - modelId, - sourceField, - destinationField, - inferenceConfig, esClient ); @@ -77,19 +65,11 @@ export const preparePipelineAndIndexForMlInference = async ( * Creates a Machine Learning Inference pipeline with the given settings, if it doesn't exist yet. * @param pipelineName pipeline name set by the user. * @param pipelineDefinition full definition of the pipeline - * @param modelId model ID selected by the user. - * @param sourceField The document field that model will read. - * @param destinationField The document field that the model will write to. - * @param inferenceConfig The configuration for the model. * @param esClient the Elasticsearch Client to use when retrieving pipeline and model details. */ export const createMlInferencePipeline = async ( pipelineName: string, pipelineDefinition: IngestPipeline | undefined, - modelId: string | undefined, - sourceField: string | undefined, - destinationField: string | null | undefined, - inferenceConfig: InferencePipelineInferenceConfig | undefined, esClient: ElasticsearchClient ): Promise => { const inferencePipelineGeneratedName = getPrefixedInferencePipelineProcessorName(pipelineName); @@ -107,24 +87,15 @@ export const createMlInferencePipeline = async ( throw new Error(ErrorCode.PIPELINE_ALREADY_EXISTS); } - if (!(modelId && sourceField) && !pipelineDefinition) { + // TODO: See if we can defer this error handling to putPipeline() + if (!pipelineDefinition) { throw new Error(ErrorCode.PARAMETER_CONFLICT); } - const mlInferencePipeline = - modelId && sourceField - ? await formatMlPipelineBody( - inferencePipelineGeneratedName, - modelId, - sourceField, - destinationField || formatPipelineName(pipelineName), - inferenceConfig, - esClient - ) - : { ...pipelineDefinition, version: 1 }; await esClient.ingest.putPipeline({ id: inferencePipelineGeneratedName, - ...mlInferencePipeline, + ...pipelineDefinition, + version: 1, }); return { diff --git a/x-pack/plugins/enterprise_search/server/lib/ml/start_ml_model_download.ts b/x-pack/plugins/enterprise_search/server/lib/ml/start_ml_model_download.ts index c5abfcf1f10358..4d7f3c21e12100 100644 --- a/x-pack/plugins/enterprise_search/server/lib/ml/start_ml_model_download.ts +++ b/x-pack/plugins/enterprise_search/server/lib/ml/start_ml_model_download.ts @@ -50,7 +50,6 @@ export const startMlModelDownload = async ( // we're not downloaded yet - let's initiate that... const putRequest: MlPutTrainedModelRequest = { - // @ts-expect-error @elastic-elasticsearch inference_config can be optional body: { input: { field_names: ['text_field'], 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 82dce66e0ed7df..863134080c0cdd 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 @@ -4,12 +4,9 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { merge } from 'lodash'; - import { ElasticsearchClient } from '@kbn/core/server'; import { createIndexPipelineDefinitions } from './create_pipeline_definitions'; -import { formatMlPipelineBody } from './create_pipeline_definitions'; describe('createIndexPipelineDefinitions util function', () => { const indexName = 'my-index'; @@ -30,159 +27,3 @@ describe('createIndexPipelineDefinitions util function', () => { expect(mockClient.ingest.putPipeline).toHaveBeenCalledTimes(3); }); }); - -describe('formatMlPipelineBody util function', () => { - const pipelineName = 'ml-inference-my-ml-proc'; - const modelId = 'my-model-id'; - const modelInputField = 'my-model-input-field'; - const modelType = 'pytorch'; - const inferenceConfigKey = 'my-model-type'; - const modelTypes = ['pytorch', 'my-model-type']; - const modelVersion = 3; - const sourceField = 'my-source-field'; - const destField = 'my-dest-field'; - - const expectedResult = { - description: '', - processors: [ - { - remove: { - field: `ml.inference.${destField}`, - ignore_missing: true, - }, - }, - { - inference: { - field_map: { - [sourceField]: modelInputField, - }, - model_id: modelId, - target_field: `ml.inference.${destField}`, - on_failure: [ - { - append: { - field: '_source._ingest.inference_errors', - allow_duplicates: false, - value: [ - { - pipeline: pipelineName, - message: `Processor 'inference' in pipeline '${pipelineName}' failed for field '${sourceField}' with message '{{ _ingest.on_failure_message }}'`, - timestamp: '{{{ _ingest.timestamp }}}', - }, - ], - }, - }, - ], - }, - }, - { - append: { - field: '_source._ingest.processors', - value: [ - { - model_version: modelVersion, - pipeline: pipelineName, - processed_timestamp: '{{{ _ingest.timestamp }}}', - types: modelTypes, - }, - ], - }, - }, - ], - version: 1, - }; - - const mockClient = { - ml: { - getTrainedModels: jest.fn(), - }, - }; - - beforeEach(() => { - jest.clearAllMocks(); - }); - - it('should return the pipeline body', async () => { - const mockResponse = { - count: 1, - trained_model_configs: [ - { - inference_config: { - [inferenceConfigKey]: {}, - }, - input: { field_names: [modelInputField] }, - model_id: modelId, - model_type: modelType, - version: modelVersion, - }, - ], - }; - mockClient.ml.getTrainedModels.mockImplementation(() => Promise.resolve(mockResponse)); - const actualResult = await formatMlPipelineBody( - pipelineName, - modelId, - sourceField, - destField, - undefined, - mockClient as unknown as ElasticsearchClient - ); - expect(actualResult).toEqual(expectedResult); - expect(mockClient.ml.getTrainedModels).toHaveBeenCalledTimes(1); - }); - - it('should raise an error if no model found', async () => { - const mockError = new Error('No known trained model with model_id [my-model-id]'); - mockClient.ml.getTrainedModels.mockImplementation(() => Promise.reject(mockError)); - const asyncCall = formatMlPipelineBody( - pipelineName, - modelId, - sourceField, - destField, - undefined, - mockClient as unknown as ElasticsearchClient - ); - await expect(asyncCall).rejects.toThrow(Error); - expect(mockClient.ml.getTrainedModels).toHaveBeenCalledTimes(1); - }); - - it('should insert a placeholder if model has no input fields', async () => { - const expectedResultWithNoInputField = merge({}, expectedResult, { - processors: [ - {}, // append - we'll leave it untouched - { - inference: { - field_map: { - [sourceField]: 'MODEL_INPUT_FIELD', - }, - }, - }, - ], - }); - - const mockResponse = { - count: 1, - trained_model_configs: [ - { - inference_config: { - [inferenceConfigKey]: {}, - }, - input: { field_names: [] }, - model_id: modelId, - model_type: modelType, - version: modelVersion, - }, - ], - }; - mockClient.ml.getTrainedModels.mockImplementation(() => Promise.resolve(mockResponse)); - const actualResult = await formatMlPipelineBody( - pipelineName, - modelId, - sourceField, - destField, - undefined, - mockClient as unknown as ElasticsearchClient - ); - expect(actualResult).toEqual(expectedResultWithNoInputField); - expect(mockClient.ml.getTrainedModels).toHaveBeenCalledTimes(1); - }); -}); 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 8655ee6959f854..7900e196fe6043 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 @@ -8,11 +8,6 @@ import { IngestPipeline } from '@elastic/elasticsearch/lib/api/types'; import { ElasticsearchClient } from '@kbn/core/server'; -import { generateMlInferencePipelineBody } from '../../../common/ml_inference_pipeline'; -import { - InferencePipelineInferenceConfig, - MlInferencePipeline, -} from '../../../common/types/pipelines'; import { getInferencePipelineNameFromIndexName } from '../../utils/ml_inference_pipeline_utils'; /** @@ -227,36 +222,3 @@ export const createIndexPipelineDefinitions = async ( throw error; } }; - -/** - * Format the body of an ML inference pipeline for a specified model. - * Does not create the pipeline, only returns JSON for the user to preview. - * @param modelId modelId selected by user. - * @param sourceField The document field that model will read. - * @param destinationField The document field that the model will write to. - * @param inferenceConfig The configuration for the model. - * @param esClient the Elasticsearch Client to use when retrieving model details. - */ -export const formatMlPipelineBody = async ( - pipelineName: string, - modelId: string, - sourceField: string, - destinationField: string, - inferenceConfig: InferencePipelineInferenceConfig | undefined, - esClient: ElasticsearchClient -): Promise => { - // This will raise a 404 if model doesn't exist - const models = await esClient.ml.getTrainedModels({ model_id: modelId }); - const model = models.trained_model_configs[0]; - return generateMlInferencePipelineBody({ - inferenceConfig, - model, - pipelineName, - fieldMappings: [ - { - sourceField, - targetField: destinationField, - }, - ], - }); -}; diff --git a/x-pack/plugins/enterprise_search/server/lib/search_applications/fetch_alias_indices.ts b/x-pack/plugins/enterprise_search/server/lib/search_applications/fetch_alias_indices.ts new file mode 100644 index 00000000000000..87e69f9ba3be97 --- /dev/null +++ b/x-pack/plugins/enterprise_search/server/lib/search_applications/fetch_alias_indices.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { IScopedClusterClient } from '@kbn/core-elasticsearch-server'; + +export const fetchAliasIndices = async (client: IScopedClusterClient, aliasName: string) => { + const aliasIndices = await client.asCurrentUser.indices.getAlias({ + name: aliasName, + }); + + return Object.keys(aliasIndices).sort(); +}; diff --git a/x-pack/plugins/enterprise_search/server/lib/search_applications/field_capabilities.test.ts b/x-pack/plugins/enterprise_search/server/lib/search_applications/field_capabilities.test.ts index ba7306b273be82..d338cc918620e3 100644 --- a/x-pack/plugins/enterprise_search/server/lib/search_applications/field_capabilities.test.ts +++ b/x-pack/plugins/enterprise_search/server/lib/search_applications/field_capabilities.test.ts @@ -22,7 +22,7 @@ describe('search applications field_capabilities', () => { const mockClient = { asCurrentUser: { fieldCaps: jest.fn(), - indices: { get: jest.fn() }, + indices: { get: jest.fn(), getAlias: jest.fn() }, }, asInternalUser: {}, }; @@ -56,6 +56,11 @@ describe('search applications field_capabilities', () => { 'index-001': { aliases: { unit_test_search_application: {} } }, }; + const getAliasIndicesResponse = { + 'index-001': { aliases: { unit_test_search_application: {} } }, + }; + + mockClient.asCurrentUser.indices.getAlias.mockResolvedValueOnce(getAliasIndicesResponse); mockClient.asCurrentUser.indices.get.mockResolvedValueOnce(getAllAvailableIndexResponse); mockClient.asCurrentUser.fieldCaps.mockResolvedValueOnce(fieldCapsResponse); diff --git a/x-pack/plugins/enterprise_search/server/lib/search_applications/field_capabilities.ts b/x-pack/plugins/enterprise_search/server/lib/search_applications/field_capabilities.ts index 838a0079cea5c9..0ef2d10950a488 100644 --- a/x-pack/plugins/enterprise_search/server/lib/search_applications/field_capabilities.ts +++ b/x-pack/plugins/enterprise_search/server/lib/search_applications/field_capabilities.ts @@ -15,12 +15,15 @@ import { } from '../../../common/types/search_applications'; import { availableIndices } from './available_indices'; +import { fetchAliasIndices } from './fetch_alias_indices'; export const fetchSearchApplicationFieldCapabilities = async ( client: IScopedClusterClient, searchApplication: EnterpriseSearchApplication ): Promise => { - const { name, updated_at_millis, indices } = searchApplication; + const { name, updated_at_millis } = searchApplication; + + const indices = await fetchAliasIndices(client, name); const availableIndicesList = await availableIndices(client, indices); diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.test.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.test.ts index 4b46eb8d5233a3..1a8412ba8703c0 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.test.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/indices.test.ts @@ -293,78 +293,6 @@ describe('Enterprise Search Managed Indices', () => { mockRouter.shouldThrow(request); }); - it('responds with 400 BAD REQUEST with both source/target AND pipeline_definition', async () => { - await mockRouter.callRoute({ - body: { - model_id: 'my-model-id', - pipeline_name: 'my-pipeline-name', - source_field: 'my-source-field', - destination_field: 'my-dest-field', - pipeline_definition: { - processors: [], - }, - }, - params: { indexName: 'my-index-name' }, - }); - - expect(mockRouter.response.customError).toHaveBeenCalledWith( - expect.objectContaining({ - statusCode: 400, - }) - ); - }); - - it('responds with 400 BAD REQUEST with none of source/target/model OR pipeline_definition', async () => { - await mockRouter.callRoute({ - body: { - pipeline_name: 'my-pipeline-name', - }, - params: { indexName: 'my-index-name' }, - }); - - expect(mockRouter.response.customError).toHaveBeenCalledWith( - expect.objectContaining({ - statusCode: 400, - }) - ); - }); - - it('creates an ML inference pipeline from model and source_field', async () => { - (preparePipelineAndIndexForMlInference as jest.Mock).mockImplementationOnce(() => { - return Promise.resolve({ - added_to_parent_pipeline: true, - created_pipeline: true, - mapping_updated: false, - pipeline_id: 'ml-inference-my-pipeline-name', - }); - }); - - await mockRouter.callRoute({ - params: { indexName: 'my-index-name' }, - body: mockRequestBody, - }); - - expect(preparePipelineAndIndexForMlInference).toHaveBeenCalledWith( - 'my-index-name', - mockRequestBody.pipeline_name, - undefined, - mockRequestBody.model_id, - mockRequestBody.source_field, - mockRequestBody.destination_field, - undefined, - undefined, - mockClient.asCurrentUser - ); - - expect(mockRouter.response.ok).toHaveBeenCalledWith({ - body: { - created: 'ml-inference-my-pipeline-name', - mapping_updated: false, - }, - headers: { 'content-type': 'application/json' }, - }); - }); - it('creates an ML inference pipeline from pipeline definition', async () => { (preparePipelineAndIndexForMlInference as jest.Mock).mockImplementationOnce(() => { return Promise.resolve({ @@ -379,10 +307,11 @@ describe('Enterprise Search Managed Indices', () => { params: { indexName: 'my-index-name' }, body: { field_mappings: [], + model_id: mockRequestBody.model_id, pipeline_definition: { processors: [], }, - pipeline_name: 'my-pipeline-name', + pipeline_name: mockRequestBody.pipeline_name, }, }); @@ -392,11 +321,8 @@ describe('Enterprise Search Managed Indices', () => { { processors: [], }, - undefined, - undefined, - undefined, + mockRequestBody.model_id, [], - undefined, mockClient.asCurrentUser ); 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 f2219b93919c91..b41f391fd66f69 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 @@ -394,21 +394,11 @@ export function registerIndexRoutes({ indexName: schema.string(), }), body: schema.object({ - destination_field: schema.maybe(schema.nullable(schema.string())), field_mappings: schema.maybe( schema.arrayOf( schema.object({ sourceField: schema.string(), targetField: schema.string() }) ) ), - inference_config: schema.maybe( - schema.object({ - zero_shot_classification: schema.maybe( - schema.object({ - labels: schema.arrayOf(schema.string()), - }) - ), - }) - ), model_id: schema.string(), pipeline_definition: schema.maybe( schema.object({ @@ -418,7 +408,6 @@ export function registerIndexRoutes({ }) ), pipeline_name: schema.string(), - source_field: schema.maybe(schema.string()), }), }, }, @@ -430,41 +419,9 @@ export function registerIndexRoutes({ model_id: modelId, pipeline_name: pipelineName, pipeline_definition: pipelineDefinition, - source_field: sourceField, - destination_field: destinationField, - inference_config: inferenceConfig, field_mappings: fieldMappings, } = request.body; - // additional validations - if ((pipelineDefinition || fieldMappings) && (sourceField || destinationField)) { - return createError({ - errorCode: ErrorCode.PARAMETER_CONFLICT, - message: i18n.translate( - 'xpack.enterpriseSearch.server.routes.createMlInferencePipeline.ParameterConflictError', - { - defaultMessage: - 'pipeline_definition and field_mappings should only be provided if source_field and destination_field are not provided', - } - ), - response, - statusCode: 400, - }); - } else if (!((pipelineDefinition && fieldMappings) || (sourceField && modelId))) { - return createError({ - errorCode: ErrorCode.PARAMETER_CONFLICT, - message: i18n.translate( - 'xpack.enterpriseSearch.server.routes.createMlInferencePipeline.ParameterMissingError', - { - defaultMessage: - 'either pipeline_definition AND fieldMappings or source_field AND model_id must be provided', - } - ), - response, - statusCode: 400, - }); - } - try { // Create the sub-pipeline for inference const createPipelineResult = await preparePipelineAndIndexForMlInference( @@ -472,10 +429,7 @@ export function registerIndexRoutes({ pipelineName, pipelineDefinition, modelId, - sourceField, - destinationField, fieldMappings, - inferenceConfig, client.asCurrentUser ); return response.ok({ diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/search_applications.test.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/search_applications.test.ts index 271b1045cd574e..37c6590e42166a 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/search_applications.test.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/search_applications.test.ts @@ -13,8 +13,13 @@ jest.mock('../../lib/search_applications/field_capabilities', () => ({ jest.mock('../../lib/search_applications/fetch_indices_stats', () => ({ fetchIndicesStats: jest.fn(), })); +jest.mock('../../lib/search_applications/fetch_alias_indices', () => ({ + fetchAliasIndices: jest.fn(), +})); + import { RequestHandlerContext } from '@kbn/core/server'; +import { fetchAliasIndices } from '../../lib/search_applications/fetch_alias_indices'; import { fetchIndicesStats } from '../../lib/search_applications/fetch_indices_stats'; import { fetchSearchApplicationFieldCapabilities } from '../../lib/search_applications/field_capabilities'; @@ -49,13 +54,11 @@ describe('engines routes', () => { }); it('GET search applications API creates request', async () => { - mockClient.asCurrentUser.searchApplication.list.mockImplementation(() => ({})); + mockClient.asCurrentUser.searchApplication.list.mockImplementation(() => ({ results: [] })); const request = { query: {} }; - await mockRouter.callRoute({}); + await mockRouter.callRoute(request); expect(mockClient.asCurrentUser.searchApplication.list).toHaveBeenCalledWith(request.query); - expect(mockRouter.response.ok).toHaveBeenCalledWith({ - body: {}, - }); + expect(mockRouter.response.ok).toHaveBeenCalled(); }); it('validates query parameters', () => { @@ -105,32 +108,40 @@ describe('engines routes', () => { }); it('GET search application API creates request', async () => { - mockClient.asCurrentUser.searchApplication.get.mockImplementation(() => ({})); - await mockRouter.callRoute({ - params: { engine_name: 'engine-name' }, - }); - - expect(mockClient.asCurrentUser.searchApplication.get).toHaveBeenCalledWith({ - name: 'engine-name', - }); - const mock = jest.fn(); - const fetchIndicesStatsResponse = [ { count: 5, health: 'green', name: 'test-index-name-1' }, { count: 10, health: 'yellow', name: 'test-index-name-2' }, { count: 0, health: 'red', name: 'test-index-name-3' }, ]; + const mock = jest.fn(); + const fetchAliasIndicesResponse = mock([ + 'test-index-name-1', + 'test-index-name-2', + 'test-index-name-3', + ]); + const engineResult = { - indices: mock(['test-index-name-1', 'test-index-name-2', 'test-index-name-3']), - name: 'test-engine-1', + indices: fetchAliasIndicesResponse, + name: 'engine-name', updated_at_millis: 1679847286355, }; + (mockClient.asCurrentUser.searchApplication.get as jest.Mock).mockResolvedValueOnce( + engineResult + ); + + await mockRouter.callRoute({ + params: { engine_name: engineResult.name }, + }); + + (fetchAliasIndices as jest.Mock).mockResolvedValueOnce(fetchAliasIndicesResponse); + expect(fetchAliasIndices).toHaveBeenCalledWith(mockClient, engineResult.name); + (fetchIndicesStats as jest.Mock).mockResolvedValueOnce(fetchIndicesStatsResponse); - expect(fetchIndicesStats).toHaveBeenCalledWith(mockClient, engineResult.indices); + expect(fetchIndicesStats).toHaveBeenCalledWith(mockClient, fetchAliasIndicesResponse); expect(mockRouter.response.ok).toHaveBeenCalledWith({ - body: {}, + body: engineResult, }); }); diff --git a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/search_applications.ts b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/search_applications.ts index 5b58fd1b9b4ecb..2004857b8c35ab 100644 --- a/x-pack/plugins/enterprise_search/server/routes/enterprise_search/search_applications.ts +++ b/x-pack/plugins/enterprise_search/server/routes/enterprise_search/search_applications.ts @@ -15,6 +15,7 @@ import { EnterpriseSearchApplicationUpsertResponse, } from '../../../common/types/search_applications'; import { createApiKey } from '../../lib/search_applications/create_api_key'; +import { fetchAliasIndices } from '../../lib/search_applications/fetch_alias_indices'; import { fetchIndicesStats } from '../../lib/search_applications/fetch_indices_stats'; import { fetchSearchApplicationFieldCapabilities } from '../../lib/search_applications/field_capabilities'; @@ -24,6 +25,7 @@ import { createError } from '../../utils/create_error'; import { elasticsearchErrorHandler } from '../../utils/elasticsearch_error_handler'; import { isInvalidSearchApplicationNameException, + isMissingAliasException, isNotFoundException, isVersionConflictEngineException, } from '../../utils/identify_exceptions'; @@ -46,6 +48,19 @@ export function registerSearchApplicationsRoutes({ log, router }: RouteDependenc request.query )) as EnterpriseSearchApplicationsResponse; + await Promise.all( + engines.results.map(async (searchApp) => { + try { + searchApp.indices = await fetchAliasIndices(client, searchApp.name); + } catch (error) { + if (isMissingAliasException(error)) { + searchApp.indices = []; + } else { + throw error; + } + } + }) + ); return response.ok({ body: engines }); }) ); @@ -64,7 +79,18 @@ export function registerSearchApplicationsRoutes({ log, router }: RouteDependenc const engine = (await client.asCurrentUser.searchApplication.get({ name: request.params.engine_name, })) as EnterpriseSearchApplication; - const indicesStats = await fetchIndicesStats(client, engine.indices); + + let indices: string[]; + try { + indices = await fetchAliasIndices(client, engine.name); + } catch (error) { + if (isMissingAliasException(error)) { + indices = []; + } else { + throw error; + } + } + const indicesStats = await fetchIndicesStats(client, indices); return response.ok({ body: { ...engine, indices: indicesStats } }); }) @@ -215,31 +241,47 @@ export function registerSearchApplicationsRoutes({ log, router }: RouteDependenc validate: { params: schema.object({ engine_name: schema.string() }) }, }, elasticsearchErrorHandler(log, async (context, request, response) => { - try { - const { client } = (await context.core).elasticsearch; + const { client } = (await context.core).elasticsearch; - const engine = (await client.asCurrentUser.searchApplication.get({ + let engine; + try { + engine = (await client.asCurrentUser.searchApplication.get({ name: request.params.engine_name, })) as EnterpriseSearchApplication; + } catch (error) { + if (isNotFoundException(error)) { + return createError({ + errorCode: ErrorCode.SEARCH_APPLICATION_NOT_FOUND, + message: i18n.translate( + 'xpack.enterpriseSearch.server.routes.fetchSearchApplicationFieldCapabilities.error', + { defaultMessage: 'Could not find search application' } + ), + response, + statusCode: 404, + }); + } + throw error; + } + try { const data = await fetchSearchApplicationFieldCapabilities(client, engine); return response.ok({ body: data, headers: { 'content-type': 'application/json' }, }); - } catch (e) { - if (isNotFoundException(e)) { + } catch (error) { + if (isMissingAliasException(error)) { return createError({ - errorCode: ErrorCode.SEARCH_APPLICATION_NOT_FOUND, + errorCode: ErrorCode.SEARCH_APPLICATION_ALIAS_NOT_FOUND, message: i18n.translate( - 'xpack.enterpriseSearch.server.routes.fetchSearchApplicationFieldCapabilities.error', - { defaultMessage: 'Could not find search application' } + 'xpack.enterpriseSearch.server.routes.fetchSearchApplicationFieldCapabilities.missingAliasError', + { defaultMessage: 'Search application alias is missing.' } ), response, statusCode: 404, }); } - throw e; + throw error; } }) ); diff --git a/x-pack/plugins/enterprise_search/server/utils/identify_exceptions.ts b/x-pack/plugins/enterprise_search/server/utils/identify_exceptions.ts index 48cc27fa9f03d4..415d81ee8cec7d 100644 --- a/x-pack/plugins/enterprise_search/server/utils/identify_exceptions.ts +++ b/x-pack/plugins/enterprise_search/server/utils/identify_exceptions.ts @@ -19,6 +19,8 @@ export interface ElasticsearchResponseError { name: 'ResponseError'; } +const MISSING_ALIAS_ERROR = new RegExp(/^alias \[.+\] missing/); + export const isIndexNotFoundException = (error: ElasticsearchResponseError) => error?.meta?.body?.error?.type === 'index_not_found_exception'; @@ -45,3 +47,8 @@ export const isVersionConflictEngineException = (error: ElasticsearchResponseErr export const isInvalidSearchApplicationNameException = (error: ElasticsearchResponseError) => error.meta?.body?.error?.type === 'invalid_alias_name_exception'; + +export const isMissingAliasException = (error: ElasticsearchResponseError) => + error.meta?.statusCode === 404 && + typeof error.meta?.body?.error === 'string' && + MISSING_ALIAS_ERROR.test(error.meta?.body?.error); diff --git a/x-pack/plugins/event_log/server/es/init.test.ts b/x-pack/plugins/event_log/server/es/init.test.ts index 154a98fcb194c6..30e220313b26bc 100644 --- a/x-pack/plugins/event_log/server/es/init.test.ts +++ b/x-pack/plugins/event_log/server/es/init.test.ts @@ -455,8 +455,7 @@ describe('parseIndexAliases', () => { }); }); -// FLAKY: https://github.com/elastic/kibana/issues/156061 -describe.skip('retries', () => { +describe('retries', () => { let esContext = contextMock.create(); // set up context APIs to return defaults indicating already created beforeEach(() => { @@ -474,7 +473,7 @@ describe.skip('retries', () => { const timeStart = performance.now(); await initializeEs(esContext); - const timeElapsed = performance.now() - timeStart; + const timeElapsed = Math.ceil(performance.now() - timeStart); expect(timeElapsed).toBeGreaterThanOrEqual(MOCK_RETRY_DELAY); diff --git a/x-pack/plugins/fleet/common/types/index.ts b/x-pack/plugins/fleet/common/types/index.ts index a35760e35ba177..a122c68c7ae781 100644 --- a/x-pack/plugins/fleet/common/types/index.ts +++ b/x-pack/plugins/fleet/common/types/index.ts @@ -50,6 +50,7 @@ export interface FleetConfigType { disableProxies: boolean; fleetServerStandalone: boolean; activeAgentsSoftLimit?: number; + capabilities: string[]; }; createArtifactsBulkBatchSize?: number; } diff --git a/x-pack/plugins/fleet/server/config.ts b/x-pack/plugins/fleet/server/config.ts index eaee8ec0cd3be2..14e5a86aa73ade 100644 --- a/x-pack/plugins/fleet/server/config.ts +++ b/x-pack/plugins/fleet/server/config.ts @@ -182,6 +182,18 @@ export const config: PluginConfigDescriptor = { min: 0, }) ), + capabilities: schema.arrayOf( + schema.oneOf([ + // See package-spec for the list of available capiblities https://github.com/elastic/package-spec/blob/dcc37b652690f8a2bca9cf8a12fc28fd015730a0/spec/integration/manifest.spec.yml#L113 + schema.literal('apm'), + schema.literal('enterprise_search'), + schema.literal('observability'), + schema.literal('security'), + schema.literal('serverless_search'), + schema.literal('uptime'), + ]), + { defaultValue: [] } + ), }) ), enabled: schema.boolean({ defaultValue: true }), diff --git a/x-pack/plugins/fleet/server/services/epm/archive/storage.ts b/x-pack/plugins/fleet/server/services/epm/archive/storage.ts index 08ee455323dc60..cfa110589a0102 100644 --- a/x-pack/plugins/fleet/server/services/epm/archive/storage.ts +++ b/x-pack/plugins/fleet/server/services/epm/archive/storage.ts @@ -215,12 +215,11 @@ export const getEsPackage = async ( setArchiveEntry(path, buffer); paths.push(path); } - paths.push(path); if (buffer && filterAssetPathForParseAndVerifyArchive(path)) { assetsMap[path] = buffer; } }); - // // Add asset references to cache + // Add asset references to cache setArchiveFilelist({ name: pkgName, version: pkgVersion }, paths); const packageInfo = parseAndVerifyArchive(paths, assetsMap); diff --git a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts index 6373b488953958..78e6249e6d816d 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/_install_package.test.ts @@ -124,6 +124,7 @@ describe('_installPackage', () => { disableILMPolicies: true, disableProxies: false, fleetServerStandalone: false, + capabilities: [], }, }) ); @@ -176,6 +177,7 @@ describe('_installPackage', () => { disableProxies: false, disableILMPolicies: false, fleetServerStandalone: false, + capabilities: [], }, }) ); diff --git a/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts b/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts index 445bc6fca67190..5d1101ecdf573a 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/get.test.ts @@ -325,6 +325,83 @@ owner: elastic`, ]); }); + it('should filter installed package that are not in registry and not valid packages', async () => { + const mockContract = createAppContextStartContractMock(); + appContextService.start(mockContract); + + const soClient = savedObjectsClientMock.create(); + soClient.find.mockResolvedValue({ + saved_objects: [ + { + id: 'invalidpackage', + attributes: { + name: 'invalidpackage', + version: '0.0.1', + install_source: 'upload', + install_version: '0.0.1', + }, + }, + ], + } as any); + soClient.get.mockImplementation((type) => { + if (type === 'epm-packages-assets') { + return Promise.resolve({ + attributes: { + data_utf8: ` +name: invalidpackage +version: 0.0.1 +test: invalid manifest`, + }, + } as any); + } else { + return Promise.resolve({ + id: 'invalidpackage', + attributes: { + name: 'invalidpackage', + version: '0.0.1', + install_source: 'upload', + package_assets: [], + data_utf8: ` + name: invalidpackage + version: 0.0.1 + title: Elastic + test: invalid manifest`, + }, + }); + } + }); + soClient.bulkGet.mockResolvedValue({ + saved_objects: [ + { + id: 'test', + references: [], + type: 'epm-package-assets', + attributes: { + asset_path: 'invalidpackage-0.0.1/manifest.yml', + data_utf8: ` +name: invalidpackage +version: 0.0.1 +title: Elastic +test: invalid manifest +`, + }, + }, + ], + }); + const packages = await getPackages({ + savedObjectsClient: soClient, + }); + expect(packages).toMatchObject([ + { id: 'fleet_server', name: 'fleet_server', title: 'Fleet Server', version: '1.0.0' }, + { id: 'nginx', name: 'nginx', title: 'Nginx', version: '1.0.0' }, + ]); + + expect(jest.mocked(appContextService.getLogger().warn)).toBeCalledTimes(1); + expect(jest.mocked(appContextService.getLogger().warn)).toBeCalledWith( + 'Installed package invalidpackage 0.0.1 is not a valid package anymore' + ); + }); + it('should call audit logger', async () => { const soClient = savedObjectsClientMock.create(); diff --git a/x-pack/plugins/fleet/server/services/epm/packages/get.ts b/x-pack/plugins/fleet/server/services/epm/packages/get.ts index 96113407222f6e..68a884fd5f1980 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/get.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/get.ts @@ -40,6 +40,7 @@ import type { RegistryPackage, EpmPackageAdditions, GetCategoriesRequest, + GetPackagesRequest, } from '../../../../common/types'; import type { Installation, PackageInfo, PackagePolicySOAttributes } from '../../../types'; import { @@ -47,6 +48,7 @@ import { PackageFailedVerificationError, PackageNotFoundError, RegistryResponseError, + PackageInvalidArchiveError, } from '../../../errors'; import { appContextService } from '../..'; import * as Registry from '../registry'; @@ -61,7 +63,6 @@ import { getFilteredSearchPackages } from '../filtered_packages'; import { createInstallableFrom } from '.'; -export type { SearchParams } from '../registry'; export { getFile } from '../registry'; function nameAsTitle(name: string) { @@ -76,8 +77,9 @@ export async function getPackages( options: { savedObjectsClient: SavedObjectsClientContract; excludeInstallStatus?: boolean; - } & Registry.SearchParams + } & GetPackagesRequest['query'] ) { + const logger = appContextService.getLogger(); const { savedObjectsClient, category, @@ -98,29 +100,41 @@ export async function getPackages( (pkg) => !registryItems.some((item) => item.name === pkg.id) ); - const uploadedPackagesNotInRegistry = await pMap( - packagesNotInRegistry.entries(), - async ([i, pkg]) => { - // fetching info of uploaded packages to populate title, description - // limit to 10 for performance - if (i < MAX_PKGS_TO_LOAD_TITLE) { - const packageInfo = await withSpan({ name: 'get-package-info', type: 'package' }, () => - getPackageInfo({ - savedObjectsClient, - pkgName: pkg.id, - pkgVersion: pkg.attributes.version, - }) - ); - return createInstallableFrom({ ...packageInfo, id: pkg.id }, pkg); - } else { - return createInstallableFrom( - { ...pkg.attributes, title: nameAsTitle(pkg.id), id: pkg.id }, - pkg - ); - } - }, - { concurrency: 10 } - ); + const uploadedPackagesNotInRegistry = ( + await pMap( + packagesNotInRegistry.entries(), + async ([i, pkg]) => { + // fetching info of uploaded packages to populate title, description + // limit to 10 for performance + if (i < MAX_PKGS_TO_LOAD_TITLE) { + try { + const packageInfo = await withSpan({ name: 'get-package-info', type: 'package' }, () => + getPackageInfo({ + savedObjectsClient, + pkgName: pkg.id, + pkgVersion: pkg.attributes.version, + }) + ); + return createInstallableFrom({ ...packageInfo, id: pkg.id }, pkg); + } catch (err) { + if (err instanceof PackageInvalidArchiveError) { + logger.warn( + `Installed package ${pkg.id} ${pkg.attributes.version} is not a valid package anymore` + ); + return null; + } + throw err; + } + } else { + return createInstallableFrom( + { ...pkg.attributes, title: nameAsTitle(pkg.id), id: pkg.id }, + pkg + ); + } + }, + { concurrency: 10 } + ) + ).filter((p): p is Installable => p !== null); const filteredPackages = getFilteredSearchPackages(); const packageList = registryItems diff --git a/x-pack/plugins/fleet/server/services/epm/packages/index.ts b/x-pack/plugins/fleet/server/services/epm/packages/index.ts index cbac974f497a27..5895d4a7819c66 100644 --- a/x-pack/plugins/fleet/server/services/epm/packages/index.ts +++ b/x-pack/plugins/fleet/server/services/epm/packages/index.ts @@ -13,7 +13,6 @@ import { KibanaAssetType } from '../../../types'; import type { AssetType, Installable, Installation } from '../../../types'; export { bulkInstallPackages, isBulkInstallError } from './bulk_install_packages'; -export type { SearchParams } from './get'; export { getCategories, getFile, diff --git a/x-pack/plugins/fleet/server/services/epm/registry/index.test.ts b/x-pack/plugins/fleet/server/services/epm/registry/index.test.ts index bf5fe89574b8a8..3336d158945068 100644 --- a/x-pack/plugins/fleet/server/services/epm/registry/index.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/registry/index.test.ts @@ -8,7 +8,6 @@ import { loggingSystemMock } from '@kbn/core-logging-server-mocks'; import { PackageNotFoundError, RegistryResponseError } from '../../../errors'; - import * as Archive from '../archive'; import { @@ -17,10 +16,13 @@ import { fetchFindLatestPackageOrThrow, fetchInfo, getLicensePath, + fetchCategories, + fetchList, } from '.'; const mockLoggerFactory = loggingSystemMock.create(); const mockLogger = mockLoggerFactory.get('mock logger'); +const mockGetConfig = jest.fn(); const mockGetBundledPackageByName = jest.fn(); const mockFetchUrl = jest.fn(); @@ -34,7 +36,7 @@ jest.mock('../..', () => ({ getLogger: () => mockLogger, getKibanaBranch: () => 'main', getKibanaVersion: () => '99.0.0', - getConfig: () => ({}), + getConfig: () => mockGetConfig(), getIsProductionMode: () => false, }, })); @@ -219,3 +221,57 @@ describe('fetchInfo', () => { } }); }); + +describe('fetchCategories', () => { + beforeEach(() => { + mockFetchUrl.mockReset(); + mockGetConfig.mockReset(); + }); + it('call registry with capabilities if configured', async () => { + mockGetConfig.mockReturnValue({ + internal: { + capabilities: ['apm', 'security'], + }, + }); + mockFetchUrl.mockResolvedValue(JSON.stringify([])); + await fetchCategories(); + expect(mockFetchUrl).toBeCalledTimes(1); + const callUrl = new URL(mockFetchUrl.mock.calls[0][0]); + expect(callUrl.searchParams.get('capabilities')).toBe('apm,security'); + }); + it('does not call registry with capabilities if none are configured', async () => { + mockGetConfig.mockReturnValue({}); + mockFetchUrl.mockResolvedValue(JSON.stringify([])); + await fetchCategories(); + expect(mockFetchUrl).toBeCalledTimes(1); + const callUrl = new URL(mockFetchUrl.mock.calls[0][0]); + expect(callUrl.searchParams.get('capabilities')).toBeNull(); + }); +}); + +describe('fetchList', () => { + beforeEach(() => { + mockFetchUrl.mockReset(); + mockGetConfig.mockReset(); + }); + it('call registry with capabilities if configured', async () => { + mockGetConfig.mockReturnValue({ + internal: { + capabilities: ['apm', 'security'], + }, + }); + mockFetchUrl.mockResolvedValue(JSON.stringify([])); + await fetchList(); + expect(mockFetchUrl).toBeCalledTimes(1); + const callUrl = new URL(mockFetchUrl.mock.calls[0][0]); + expect(callUrl.searchParams.get('capabilities')).toBe('apm,security'); + }); + it('does not call registry with capabilities if none are configured', async () => { + mockGetConfig.mockReturnValue({}); + mockFetchUrl.mockResolvedValue(JSON.stringify([])); + await fetchList(); + expect(mockFetchUrl).toBeCalledTimes(1); + const callUrl = new URL(mockFetchUrl.mock.calls[0][0]); + expect(callUrl.searchParams.get('capabilities')).toBeNull(); + }); +}); diff --git a/x-pack/plugins/fleet/server/services/epm/registry/index.ts b/x-pack/plugins/fleet/server/services/epm/registry/index.ts index 3b9b37f31d98f1..a9304f16562d15 100644 --- a/x-pack/plugins/fleet/server/services/epm/registry/index.ts +++ b/x-pack/plugins/fleet/server/services/epm/registry/index.ts @@ -18,11 +18,11 @@ import { splitPkgKey as split } from '../../../../common/services'; import { KibanaAssetType } from '../../../types'; import type { AssetsGroupedByServiceByType, - CategoryId, CategorySummaryList, RegistryPackage, RegistrySearchResults, GetCategoriesRequest, + GetPackagesRequest, PackageVerificationResult, ArchivePackage, BundledPackage, @@ -54,19 +54,14 @@ import { verifyPackageArchiveSignature } from '../packages/package_verification' import { fetchUrl, getResponse, getResponseStream } from './requests'; import { getRegistryUrl } from './registry_url'; -export interface SearchParams { - category?: CategoryId; - prerelease?: boolean; - // deprecated - experimental?: boolean; -} - export const splitPkgKey = split; export const pkgToPkgKey = ({ name, version }: { name: string; version: string }) => `${name}-${version}`; -export async function fetchList(params?: SearchParams): Promise { +export async function fetchList( + params?: GetPackagesRequest['query'] +): Promise { const registryUrl = getRegistryUrl(); const url = new URL(`${registryUrl}/search`); if (params) { @@ -79,6 +74,7 @@ export async function fetchList(params?: SearchParams): Promise 0) { + url.searchParams.set('capabilities', capabilities.join(',')); + } +} + export async function fetchCategories( params?: GetCategoriesRequest['query'] ): Promise { @@ -254,6 +258,7 @@ export async function fetchCategories( } setKibanaVersion(url); + setCapabilities(url); return fetchUrl(url.toString()).then(JSON.parse); } diff --git a/x-pack/plugins/fleet/server/types/index.tsx b/x-pack/plugins/fleet/server/types/index.tsx index 5144d48fbd6f83..d6b739ddb77c73 100644 --- a/x-pack/plugins/fleet/server/types/index.tsx +++ b/x-pack/plugins/fleet/server/types/index.tsx @@ -70,6 +70,7 @@ export type { InstallSource, InstallResult, GetCategoriesRequest, + GetPackagesRequest, DataType, FleetServerEnrollmentAPIKey, FleetServerAgent, diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/chart_loader.tsx b/x-pack/plugins/infra/public/common/visualizations/lens/chart_loader.tsx deleted file mode 100644 index 34ca3b87bdfdf7..00000000000000 --- a/x-pack/plugins/infra/public/common/visualizations/lens/chart_loader.tsx +++ /dev/null @@ -1,63 +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 React from 'react'; -import { EuiFlexGroup, EuiProgress, EuiFlexItem, EuiLoadingChart, useEuiTheme } from '@elastic/eui'; -import { css } from '@emotion/react'; -import { euiStyled } from '@kbn/kibana-react-plugin/common'; - -export const ChartLoader = ({ - children, - loading, - style, - loadedOnce = false, - hasTitle = false, -}: { - style?: React.CSSProperties; - children: React.ReactNode; - loadedOnce: boolean; - loading: boolean; - hasTitle?: boolean; -}) => { - const { euiTheme } = useEuiTheme(); - return ( - - {loading && ( - - )} - {loading && !loadedOnce ? ( - - - - - - ) : ( - children - )} - - ); -}; - -const LoaderContainer = euiStyled.div` - position: relative; - border-radius: ${({ theme }) => theme.eui.euiSizeS}; - overflow: hidden; - height: 100%; -`; diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/lens_wrapper.tsx b/x-pack/plugins/infra/public/common/visualizations/lens/lens_wrapper.tsx deleted file mode 100644 index 13579621dedc47..00000000000000 --- a/x-pack/plugins/infra/public/common/visualizations/lens/lens_wrapper.tsx +++ /dev/null @@ -1,144 +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 React, { useEffect, useState, useRef, useCallback } from 'react'; - -import { Action } from '@kbn/ui-actions-plugin/public'; -import { ViewMode } from '@kbn/embeddable-plugin/public'; -import type { TimeRange } from '@kbn/es-query'; -import { TypedLensByValueInput } from '@kbn/lens-plugin/public'; -import { css } from '@emotion/react'; -import { useKibanaContextForPlugin } from '../../../hooks/use_kibana'; -import { useIntersectedOnce } from '../../../hooks/use_intersection_once'; -import { ChartLoader } from './chart_loader'; -import type { LensAttributes } from '../types'; - -export type LensWrapperProps = Pick< - TypedLensByValueInput, - | 'id' - | 'filters' - | 'query' - | 'style' - | 'onBrushEnd' - | 'hidePanelTitles' - | 'overrides' - | 'hidePanelTitles' - | 'disabledActions' - | 'disableTriggers' -> & { - attributes: LensAttributes | null; - dateRange: TimeRange; - extraActions: Action[]; - lastReloadRequestTime?: number; - loading?: boolean; - hasTitle?: boolean; -}; - -export const LensWrapper = React.memo( - ({ - attributes, - dateRange, - filters, - id, - query, - extraActions, - style, - onBrushEnd, - lastReloadRequestTime, - overrides, - loading = false, - hasTitle = false, - disableTriggers = false, - }: LensWrapperProps) => { - const intersectionRef = useRef(null); - const [loadedOnce, setLoadedOnce] = useState(false); - - const [state, setState] = useState({ - attributes, - lastReloadRequestTime, - query, - filters, - dateRange, - }); - - const { - services: { lens }, - } = useKibanaContextForPlugin(); - const { intersectedOnce, intersection } = useIntersectedOnce(intersectionRef, { - threshold: 1, - }); - - const EmbeddableComponent = lens.EmbeddableComponent; - - useEffect(() => { - if ((intersection?.intersectionRatio ?? 0) === 1) { - setState({ - attributes, - lastReloadRequestTime, - query, - filters, - dateRange, - }); - } - }, [ - attributes, - dateRange, - filters, - intersection?.intersectionRatio, - lastReloadRequestTime, - query, - ]); - - const isReady = state.attributes && intersectedOnce; - - const onLoad = useCallback(() => { - if (!loadedOnce) { - setLoadedOnce(true); - } - }, [loadedOnce]); - - return ( -
- - {state.attributes && ( - - )} - -
- ); - } -); diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/visualization_types/layers/xy_data_layer.ts b/x-pack/plugins/infra/public/common/visualizations/lens/visualization_types/layers/xy_data_layer.ts index 294cf29701d2b5..f0babf519f19a5 100644 --- a/x-pack/plugins/infra/public/common/visualizations/lens/visualization_types/layers/xy_data_layer.ts +++ b/x-pack/plugins/infra/public/common/visualizations/lens/visualization_types/layers/xy_data_layer.ts @@ -45,7 +45,7 @@ export class XYDataLayer implements ChartLayer { return this.column[0].getFormulaConfig().label; } - getBaseColumnColumn(dataView: DataView, options?: XYLayerOptions) { + getBaseLayer(dataView: DataView, options?: XYLayerOptions) { return { ...getHistogramColumn({ columnName: HISTOGRAM_COLUMN_NAME, @@ -75,7 +75,7 @@ export class XYDataLayer implements ChartLayer { const baseLayer: PersistedIndexPatternLayer = { columnOrder: [BREAKDOWN_COLUMN_NAME, HISTOGRAM_COLUMN_NAME], columns: { - ...this.getBaseColumnColumn(dataView, this.layerConfig.options), + ...this.getBaseLayer(dataView, this.layerConfig.options), }, }; diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/kpi_grid.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/kpi_grid.tsx index ed0c2fc97d675a..b86201a29098ce 100644 --- a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/kpi_grid.tsx +++ b/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/kpi_grid.tsx @@ -12,12 +12,7 @@ import { KPI_CHARTS } from '../../../../../common/visualizations/lens/dashboards export const KPIGrid = React.memo(({ nodeName, dataView, timeRange: dateRange }: TileProps) => { return ( <> - + {KPI_CHARTS.map((chartProp, index) => ( diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/tile.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/tile.tsx index b670867f774c8b..9907b81d64fc0b 100644 --- a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/tile.tsx +++ b/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/tile.tsx @@ -12,11 +12,10 @@ import styled from 'styled-components'; import type { Action } from '@kbn/ui-actions-plugin/public'; import { TimeRange } from '@kbn/es-query'; import { FormattedMessage } from '@kbn/i18n-react'; +import { LensWrapper, TooltipContent } from '../../../../lens'; import type { KPIChartProps } from '../../../../../common/visualizations/lens/dashboards/host/kpi_grid_config'; import { useLensAttributes } from '../../../../../hooks/use_lens_attributes'; -import { LensWrapper } from '../../../../../common/visualizations/lens/lens_wrapper'; import { buildCombinedHostsFilter } from '../../../../../utils/filters/build'; -import { TooltipContent } from '../../../../../common/visualizations/metric_explanation/tooltip_content'; const MIN_HEIGHT = 150; @@ -72,7 +71,6 @@ export const Tile = ({ {error ? ( @@ -109,6 +107,7 @@ export const Tile = ({ dateRange={timeRange} filters={filters} loading={loading} + hidePanelTitles /> )} @@ -117,6 +116,7 @@ export const Tile = ({ }; const EuiPanelStyled = styled(EuiPanel)` + min-height: ${MIN_HEIGHT}px; .echMetric { border-radius: ${({ theme }) => theme.eui.euiBorderRadius}; pointer-events: none; diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/metrics/metric_chart.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/overview/metrics/metric_chart.tsx index fae393a3f0ff11..ad75734013a29d 100644 --- a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/metrics/metric_chart.tsx +++ b/x-pack/plugins/infra/public/components/asset_details/tabs/overview/metrics/metric_chart.tsx @@ -12,8 +12,8 @@ import { TypedLensByValueInput } from '@kbn/lens-plugin/public'; import type { DataView } from '@kbn/data-views-plugin/public'; import type { TimeRange } from '@kbn/es-query'; import { FormattedMessage } from '@kbn/i18n-react'; +import { LensWrapper } from '../../../../lens/lens_wrapper'; import { buildCombinedHostsFilter } from '../../../../../utils/filters/build'; -import { LensWrapper } from '../../../../../common/visualizations/lens/lens_wrapper'; import { useLensAttributes, type Layer } from '../../../../../hooks/use_lens_attributes'; import type { FormulaConfig, XYLayerOptions } from '../../../../../common/visualizations'; @@ -109,7 +109,6 @@ export const MetricChart = ({ overrides={overrides} loading={loading} disableTriggers - hasTitle /> )} diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/metrics/metrics_grid.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/overview/metrics/metrics_grid.tsx index aad7889ba75979..9a62fe1d2fe723 100644 --- a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/metrics/metrics_grid.tsx +++ b/x-pack/plugins/infra/public/components/asset_details/tabs/overview/metrics/metrics_grid.tsx @@ -11,7 +11,7 @@ import { i18n } from '@kbn/i18n'; import type { DataView } from '@kbn/data-views-plugin/public'; import { TimeRange } from '@kbn/es-query'; import { FormattedMessage } from '@kbn/i18n-react'; -import { HostMetricsDocsLink } from '../../../../../common/visualizations/metric_explanation/host_metrics_docs_link'; +import { HostMetricsDocsLink } from '../../../../lens'; import { MetricChart, type MetricChartProps } from './metric_chart'; import { hostLensFormulas } from '../../../../../common/visualizations'; diff --git a/x-pack/plugins/infra/public/components/lens/chart_placeholder.tsx b/x-pack/plugins/infra/public/components/lens/chart_placeholder.tsx new file mode 100644 index 00000000000000..7bf35f0e0392a7 --- /dev/null +++ b/x-pack/plugins/infra/public/components/lens/chart_placeholder.tsx @@ -0,0 +1,39 @@ +/* + * 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 { EuiFlexGroup, EuiProgress, EuiFlexItem, EuiLoadingChart } from '@elastic/eui'; +import { useEuiTheme } from '@elastic/eui'; +import { css } from '@emotion/react'; + +export const ChartLoadingProgress = ({ hasTopMargin = false }: { hasTopMargin?: boolean }) => { + const { euiTheme } = useEuiTheme(); + return ( + + ); +}; + +export const ChartPlaceholder = ({ style }: { style?: React.CSSProperties }) => { + return ( + <> + + + + + + + + ); +}; diff --git a/x-pack/plugins/infra/public/components/lens/index.tsx b/x-pack/plugins/infra/public/components/lens/index.tsx new file mode 100644 index 00000000000000..17a2f5b4804427 --- /dev/null +++ b/x-pack/plugins/infra/public/components/lens/index.tsx @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { ChartPlaceholder } from './chart_placeholder'; +export { LensWrapper } from './lens_wrapper'; + +export { TooltipContent } from './metric_explanation/tooltip_content'; +export { HostMetricsDocsLink } from './metric_explanation/host_metrics_docs_link'; diff --git a/x-pack/plugins/infra/public/components/lens/lens_wrapper.tsx b/x-pack/plugins/infra/public/components/lens/lens_wrapper.tsx new file mode 100644 index 00000000000000..dc3c11dccacc0f --- /dev/null +++ b/x-pack/plugins/infra/public/components/lens/lens_wrapper.tsx @@ -0,0 +1,154 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { useEffect, useState, useRef, useCallback, useMemo } from 'react'; +import type { Action } from '@kbn/ui-actions-plugin/public'; +import { ViewMode } from '@kbn/embeddable-plugin/public'; +import type { TimeRange } from '@kbn/es-query'; +import { TypedLensByValueInput } from '@kbn/lens-plugin/public'; +import { euiStyled } from '@kbn/kibana-react-plugin/common'; +import { useKibanaContextForPlugin } from '../../hooks/use_kibana'; +import { ChartLoadingProgress, ChartPlaceholder } from './chart_placeholder'; +import { parseDateRange } from '../../utils/datemath'; +import { LensAttributes } from '../../common/visualizations'; + +export type LensWrapperProps = Omit< + TypedLensByValueInput, + 'timeRange' | 'attributes' | 'viewMode' +> & { + attributes: LensAttributes | null; + dateRange: TimeRange; + extraActions: Action[]; + loading?: boolean; +}; + +export const LensWrapper = ({ + attributes, + dateRange, + filters, + lastReloadRequestTime, + loading, + query, + ...props +}: LensWrapperProps) => { + const [intersectionObserverEntry, setIntersectionObserverEntry] = + useState(); + const [embeddableLoaded, setEmbeddableLoaded] = useState(false); + const [state, setState] = useState({ + attributes, + dateRange, + filters, + lastReloadRequestTime, + query, + }); + + const ref = useRef(null); + const observerRef = useRef( + new IntersectionObserver(([value]) => setIntersectionObserverEntry(value), { + root: ref.current, + }) + ); + + useEffect(() => { + const { current: currentObserver } = observerRef; + currentObserver.disconnect(); + const { current } = ref; + + if (current) { + currentObserver.observe(current); + } + + return () => currentObserver.disconnect(); + }, [ref]); + + useEffect(() => { + if (intersectionObserverEntry?.isIntersecting) { + setState({ + attributes, + dateRange, + filters, + lastReloadRequestTime, + query, + }); + } + }, [ + attributes, + dateRange, + filters, + intersectionObserverEntry?.isIntersecting, + lastReloadRequestTime, + query, + ]); + + const onLoad = useCallback(() => { + if (!embeddableLoaded) { + setEmbeddableLoaded(true); + } + }, [embeddableLoaded]); + + const parsedDateRange: TimeRange = useMemo(() => { + const { from = state.dateRange.from, to = state.dateRange.to } = parseDateRange( + state.dateRange + ); + + return { from, to }; + }, [state.dateRange]); + + const isLoading = loading || !state.attributes; + + return ( + + <> + {isLoading && !embeddableLoaded ? ( + + ) : ( + <> + {isLoading && } + + + )} + + + ); +}; + +const EmbeddableComponentMemo = React.memo( + ({ + attributes, + ...props + }: Omit & { attributes: LensAttributes | null }) => { + const { + services: { lens }, + } = useKibanaContextForPlugin(); + + const EmbeddableComponent = lens.EmbeddableComponent; + + if (!attributes) { + return ; + } + + return ; + } +); + +const Container = euiStyled.div` + position: relative; + border-radius: ${({ theme }) => theme.eui.euiSizeS}; + overflow: hidden; + height: 100%; + .echLegend .echLegendList { + display: flex; + } +`; diff --git a/x-pack/plugins/infra/public/common/visualizations/metric_explanation/host_metrics_docs_link.tsx b/x-pack/plugins/infra/public/components/lens/metric_explanation/host_metrics_docs_link.tsx similarity index 90% rename from x-pack/plugins/infra/public/common/visualizations/metric_explanation/host_metrics_docs_link.tsx rename to x-pack/plugins/infra/public/components/lens/metric_explanation/host_metrics_docs_link.tsx index eefb88f0614407..347c2174b9077b 100644 --- a/x-pack/plugins/infra/public/common/visualizations/metric_explanation/host_metrics_docs_link.tsx +++ b/x-pack/plugins/infra/public/components/lens/metric_explanation/host_metrics_docs_link.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { EuiLink, EuiText } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { HOST_METRICS_DOC_HREF } from '../constants'; +import { HOST_METRICS_DOC_HREF } from '../../../common/visualizations/constants'; export const HostMetricsDocsLink = () => { return ( diff --git a/x-pack/plugins/infra/public/common/visualizations/metric_explanation/tooltip_content.tsx b/x-pack/plugins/infra/public/components/lens/metric_explanation/tooltip_content.tsx similarity index 96% rename from x-pack/plugins/infra/public/common/visualizations/metric_explanation/tooltip_content.tsx rename to x-pack/plugins/infra/public/components/lens/metric_explanation/tooltip_content.tsx index 1b7dc70c813aa2..fd46700130ee46 100644 --- a/x-pack/plugins/infra/public/common/visualizations/metric_explanation/tooltip_content.tsx +++ b/x-pack/plugins/infra/public/components/lens/metric_explanation/tooltip_content.tsx @@ -9,7 +9,7 @@ import React, { HTMLAttributes } from 'react'; import { EuiText, EuiLink } from '@elastic/eui'; import { css } from '@emotion/react'; import { FormattedMessage } from '@kbn/i18n-react'; -import { HOST_METRICS_DOC_HREF } from '../constants'; +import { HOST_METRICS_DOC_HREF } from '../../../common/visualizations/constants'; interface Props extends Pick, 'style'> { description: string; diff --git a/x-pack/plugins/infra/public/hooks/use_intersection_once.ts b/x-pack/plugins/infra/public/hooks/use_intersection_once.ts deleted file mode 100644 index 8894e9fec31765..00000000000000 --- a/x-pack/plugins/infra/public/hooks/use_intersection_once.ts +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { RefObject, useEffect, useState } from 'react'; -import useIntersection from 'react-use/lib/useIntersection'; - -export const useIntersectedOnce = ( - ref: RefObject, - options: IntersectionObserverInit -) => { - const [intersectedOnce, setIntersectedOnce] = useState(false); - const intersection = useIntersection(ref, options); - - useEffect(() => { - if (!intersectedOnce && (intersection?.intersectionRatio ?? 0) > 0) { - setIntersectedOnce(true); - } - }, [intersectedOnce, intersection?.intersectionRatio]); - - return { intersectedOnce, intersection }; -}; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/chart/metric_chart_wrapper.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/chart/metric_chart_wrapper.tsx index f25a26044fe251..97be988142aa0c 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/chart/metric_chart_wrapper.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/chart/metric_chart_wrapper.tsx @@ -8,7 +8,7 @@ import React, { useEffect, useRef, CSSProperties } from 'react'; import { Chart, Metric, type MetricWNumber, type MetricWTrend } from '@elastic/charts'; import { EuiPanel, EuiToolTip } from '@elastic/eui'; import styled from 'styled-components'; -import { ChartLoader } from '../../../../../common/visualizations/lens/chart_loader'; +import { ChartPlaceholder } from '../../../../../components/lens'; export interface Props extends Pick { id: string; @@ -43,7 +43,9 @@ export const MetricChartWrapper = React.memo( return ( - + {loading && !loadedOnce.current ? ( + + ) : ( - + )} ); } diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/hosts_tile.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/hosts_tile.tsx index 806570ebac349f..0571733b80034b 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/hosts_tile.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/hosts_tile.tsx @@ -13,7 +13,7 @@ import { useUnifiedSearchContext } from '../../hooks/use_unified_search'; import { TOOLTIP } from '../../../../../common/visualizations/lens/dashboards/host/translations'; import { type Props, MetricChartWrapper } from '../chart/metric_chart_wrapper'; -import { TooltipContent } from '../../../../../common/visualizations/metric_explanation/tooltip_content'; +import { TooltipContent } from '../../../../../components/lens'; const HOSTS_CHART: Omit = { id: `metric-hostCount`, diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/kpi_grid.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/kpi_grid.tsx index 01fd3ccef909f6..66eb84b4e46188 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/kpi_grid.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/kpi_grid.tsx @@ -8,7 +8,7 @@ import React, { CSSProperties } from 'react'; import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { EuiSpacer } from '@elastic/eui'; -import { HostMetricsDocsLink } from '../../../../../common/visualizations/metric_explanation/host_metrics_docs_link'; +import { HostMetricsDocsLink } from '../../../../../components/lens'; import { Tile } from './tile'; import { HostCountProvider } from '../../hooks/use_host_count'; import { HostsTile } from './hosts_tile'; @@ -24,12 +24,7 @@ export const KPIGrid = () => { - + diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/tile.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/tile.tsx index 8f5ee086cbd5ae..950e74478dd4bc 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/tile.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/tile.tsx @@ -12,19 +12,18 @@ import { EuiIcon, EuiPanel, EuiFlexGroup, EuiFlexItem, EuiText, EuiToolTip } fro import styled from 'styled-components'; import { Action } from '@kbn/ui-actions-plugin/public'; import { FormattedMessage } from '@kbn/i18n-react'; +import { LensWrapper, TooltipContent } from '../../../../../components/lens'; import { KPIChartProps } from '../../../../../common/visualizations/lens/dashboards/host/kpi_grid_config'; import { buildCombinedHostsFilter } from '../../../../../utils/filters/build'; import { useLensAttributes } from '../../../../../hooks/use_lens_attributes'; import { useMetricsDataViewContext } from '../../hooks/use_data_view'; import { useUnifiedSearchContext } from '../../hooks/use_unified_search'; import { useHostsViewContext } from '../../hooks/use_hosts_view'; -import { LensWrapper } from '../../../../../common/visualizations/lens/lens_wrapper'; import { useHostCountContext } from '../../hooks/use_host_count'; import { useAfterLoadedState } from '../../hooks/use_after_loaded_state'; -import { TooltipContent } from '../../../../../common/visualizations/metric_explanation/tooltip_content'; import { KPI_CHART_MIN_HEIGHT } from '../../constants'; -export const Tile = ({ id, title, layers, style, toolTip, ...props }: KPIChartProps) => { +export const Tile = ({ id, title, layers, style, toolTip }: KPIChartProps) => { const { searchCriteria, onSubmit } = useUnifiedSearchContext(); const { dataView } = useMetricsDataViewContext(); const { requestTs, hostNodes, loading: hostsLoading } = useHostsViewContext(); @@ -149,6 +148,7 @@ export const Tile = ({ id, title, layers, style, toolTip, ...props }: KPIChartPr query={shouldUseSearchCriteria ? afterLoadedState.query : undefined} onBrushEnd={handleBrushEnd} loading={loading} + hidePanelTitles />
@@ -158,7 +158,7 @@ export const Tile = ({ id, title, layers, style, toolTip, ...props }: KPIChartPr }; const EuiPanelStyled = styled(EuiPanel)` - min-height: ${KPI_CHART_MIN_HEIGHT}; + min-height: ${KPI_CHART_MIN_HEIGHT}px; .echMetric { border-radius: ${({ theme }) => theme.eui.euiBorderRadius}; pointer-events: none; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/table/column_header.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/table/column_header.tsx index e23275598f9908..e865fad0827312 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/table/column_header.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/table/column_header.tsx @@ -8,7 +8,7 @@ import React, { useState, useRef, useCallback, useLayoutEffect } from 'react'; import { EuiPopover, EuiIcon, EuiFlexGroup, useEuiTheme } from '@elastic/eui'; import { css } from '@emotion/react'; import { APP_WRAPPER_CLASS } from '@kbn/core/public'; -import { TooltipContent } from '../../../../../common/visualizations/metric_explanation/tooltip_content'; +import { TooltipContent } from '../../../../../components/lens/metric_explanation/tooltip_content'; import { useBoolean } from '../../../../../hooks/use_boolean'; interface Props { diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metric_chart.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metric_chart.tsx index c985df8512e8ae..b31e5c1cb08d2f 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metric_chart.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metric_chart.tsx @@ -11,7 +11,7 @@ import { EuiIcon, EuiPanel, EuiFlexGroup, EuiFlexItem, EuiText, useEuiTheme } fr import { css } from '@emotion/react'; import { TypedLensByValueInput } from '@kbn/lens-plugin/public'; import { FormattedMessage } from '@kbn/i18n-react'; -import { LensWrapper } from '../../../../../../common/visualizations/lens/lens_wrapper'; +import { LensWrapper } from '../../../../../../components/lens'; import { useLensAttributes, Layer } from '../../../../../../hooks/use_lens_attributes'; import { useMetricsDataViewContext } from '../../../hooks/use_data_view'; import { useUnifiedSearchContext } from '../../../hooks/use_unified_search'; @@ -130,7 +130,7 @@ export const MetricChart = ({ id, title, layers, overrides }: MetricChartProps) ) : ( )} diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metrics_grid.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metrics_grid.tsx index 33bad2803a4389..7dfa9b63b87b24 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metrics_grid.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metrics_grid.tsx @@ -10,7 +10,7 @@ import { EuiFlexGrid, EuiFlexItem } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { EuiSpacer } from '@elastic/eui'; import { hostLensFormulas, type XYLayerOptions } from '../../../../../../common/visualizations'; -import { HostMetricsDocsLink } from '../../../../../../common/visualizations/metric_explanation/host_metrics_docs_link'; +import { HostMetricsDocsLink } from '../../../../../../components/lens'; import { MetricChart, MetricChartProps } from './metric_chart'; const DEFAULT_BREAKDOWN_SIZE = 20; diff --git a/x-pack/plugins/lens/public/types.ts b/x-pack/plugins/lens/public/types.ts index d027f5c60558dc..efba612203c922 100644 --- a/x-pack/plugins/lens/public/types.ts +++ b/x-pack/plugins/lens/public/types.ts @@ -93,7 +93,7 @@ export type IndexPatternField = FieldSpec & { * Map of fields which can be used, but may fail partially (ranked lower than others) */ partiallyApplicableFunctions?: Partial>; - timeSeriesMetric?: 'histogram' | 'summary' | 'gauge' | 'counter'; + timeSeriesMetric?: 'histogram' | 'summary' | 'gauge' | 'counter' | 'position'; timeSeriesRollup?: boolean; meta?: boolean; runtime?: boolean; diff --git a/x-pack/plugins/logs_shared/kibana.jsonc b/x-pack/plugins/logs_shared/kibana.jsonc index e14b6ad8dc8373..406b399d6ed179 100644 --- a/x-pack/plugins/logs_shared/kibana.jsonc +++ b/x-pack/plugins/logs_shared/kibana.jsonc @@ -9,7 +9,6 @@ "browser": true, "configPath": ["xpack", "logs_shared"], "requiredPlugins": ["data", "dataViews", "usageCollection", "observabilityShared", "observabilityAIAssistant"], - "optionalPlugins": ["observability"], "requiredBundles": [ "kibanaUtils", "kibanaReact", diff --git a/x-pack/plugins/ml/common/constants/locator.ts b/x-pack/plugins/ml/common/constants/locator.ts index 99d3affa9dcb3a..265366a33ce412 100644 --- a/x-pack/plugins/ml/common/constants/locator.ts +++ b/x-pack/plugins/ml/common/constants/locator.ts @@ -15,6 +15,8 @@ export const ML_PAGES = { DATA_FRAME_ANALYTICS_SOURCE_SELECTION: 'data_frame_analytics/source_selection', DATA_FRAME_ANALYTICS_CREATE_JOB: 'data_frame_analytics/new_job', TRAINED_MODELS_MANAGE: 'trained_models', + DATA_COMPARISON_INDEX_SELECT: 'data_comparison_index_select', + DATA_COMPARISON: 'data_comparison', NODES: 'nodes', MEMORY_USAGE: 'memory_usage', DATA_FRAME_ANALYTICS_EXPLORATION: 'data_frame_analytics/exploration', diff --git a/x-pack/plugins/ml/common/constants/search.ts b/x-pack/plugins/ml/common/constants/search.ts index 8ff9b022c274f6..a5ff9c497843e2 100644 --- a/x-pack/plugins/ml/common/constants/search.ts +++ b/x-pack/plugins/ml/common/constants/search.ts @@ -7,10 +7,3 @@ export const ANNOTATIONS_TABLE_DEFAULT_QUERY_SIZE = 500; export const ANOMALIES_TABLE_DEFAULT_QUERY_SIZE = 500; - -export const SEARCH_QUERY_LANGUAGE = { - KUERY: 'kuery', - LUCENE: 'lucene', -} as const; - -export type SearchQueryLanguage = typeof SEARCH_QUERY_LANGUAGE[keyof typeof SEARCH_QUERY_LANGUAGE]; diff --git a/x-pack/plugins/ml/common/types/locator.ts b/x-pack/plugins/ml/common/types/locator.ts index 6f4a50837f7eff..31de127c560443 100644 --- a/x-pack/plugins/ml/common/types/locator.ts +++ b/x-pack/plugins/ml/common/types/locator.ts @@ -8,10 +8,10 @@ import type { SerializableRecord } from '@kbn/utility-types'; import type { LocatorPublic } from '@kbn/share-plugin/public'; import type { RefreshInterval, TimeRange } from '@kbn/data-plugin/common/query'; -import type { InfluencersFilterQuery } from '@kbn/ml-anomaly-utils'; import type { DataFrameAnalysisConfigType } from '@kbn/ml-data-frame-analytics-utils'; +import type { InfluencersFilterQuery } from '@kbn/ml-anomaly-utils'; +import type { SearchQueryLanguage } from '@kbn/ml-query-utils'; import type { JobId } from './anomaly_detection_jobs/job'; -import type { SearchQueryLanguage } from '../constants/search'; import type { ListingPageUrlState } from './common'; import { ML_PAGES } from '../constants/locator'; @@ -58,6 +58,8 @@ export type MlGenericUrlState = MLPageState< | typeof ML_PAGES.FILTER_LISTS_MANAGE | typeof ML_PAGES.FILTER_LISTS_NEW | typeof ML_PAGES.SETTINGS + | typeof ML_PAGES.DATA_COMPARISON + | typeof ML_PAGES.DATA_COMPARISON_INDEX_SELECT | typeof ML_PAGES.DATA_VISUALIZER | typeof ML_PAGES.DATA_VISUALIZER_FILE | typeof ML_PAGES.DATA_VISUALIZER_INDEX_SELECT @@ -70,7 +72,6 @@ export type MlGenericUrlState = MLPageState< | typeof ML_PAGES.AIOPS_CHANGE_POINT_DETECTION, MlGenericUrlPageState | undefined >; - export interface AnomalyDetectionQueryState { jobId?: JobId | string[]; groupIds?: string[]; diff --git a/x-pack/plugins/ml/public/application/capabilities/check_capabilities.ts b/x-pack/plugins/ml/public/application/capabilities/check_capabilities.ts index 68aae118936a12..72a6100c15a7c5 100644 --- a/x-pack/plugins/ml/public/application/capabilities/check_capabilities.ts +++ b/x-pack/plugins/ml/public/application/capabilities/check_capabilities.ts @@ -104,7 +104,6 @@ export function usePermissionCheck { return Array.isArray(requestedCapabilities.current) ? requestedCapabilities.current.map((c) => capabilities[c]) diff --git a/x-pack/plugins/ml/public/application/components/anomalies_table/links_menu.tsx b/x-pack/plugins/ml/public/application/components/anomalies_table/links_menu.tsx index 30e3686f7e123c..d65dd8955b8bc6 100644 --- a/x-pack/plugins/ml/public/application/components/anomalies_table/links_menu.tsx +++ b/x-pack/plugins/ml/public/application/components/anomalies_table/links_menu.tsx @@ -30,6 +30,7 @@ import { type MlAnomaliesTableRecord, } from '@kbn/ml-anomaly-utils'; import { formatHumanReadableDateTimeSeconds, timeFormatter } from '@kbn/ml-date-utils'; +import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils'; import { mlJobService } from '../../services/job_service'; import { getDataViewIdFromName } from '../../util/index_utils'; import { getInitialAnomaliesLayers, getInitialSourceIndexFieldLayers } from '../../../maps/util'; @@ -38,7 +39,6 @@ import { ml } from '../../services/ml_api_service'; import { escapeKueryForFieldValuePair, replaceStringTokens } from '../../util/string_utils'; import { getUrlForRecord, openCustomUrlWindow } from '../../util/custom_url_utils'; import { ML_APP_LOCATOR, ML_PAGES } from '../../../../common/constants/locator'; -import { SEARCH_QUERY_LANGUAGE } from '../../../../common/constants/search'; // @ts-ignore import { escapeDoubleQuotes, diff --git a/x-pack/plugins/ml/public/application/components/ml_page/side_nav.tsx b/x-pack/plugins/ml/public/application/components/ml_page/side_nav.tsx index 8c8e2840051965..a74dd6d061aad9 100644 --- a/x-pack/plugins/ml/public/application/components/ml_page/side_nav.tsx +++ b/x-pack/plugins/ml/public/application/components/ml_page/side_nav.tsx @@ -234,6 +234,15 @@ export function useSideNavItems(activeRoute: MlRoute | undefined) { disabled: false, testSubj: 'mlMainTab indexDataVisualizer', }, + { + id: 'data_comparison', + pathId: ML_PAGES.DATA_COMPARISON_INDEX_SELECT, + name: i18n.translate('xpack.ml.navMenu.dataComparisonText', { + defaultMessage: 'Data Comparison', + }), + disabled: disableLinks, + testSubj: 'mlMainTab dataComparison', + }, ], }, ]; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx index eed5d060d74de1..c574a6f661085b 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_form.tsx @@ -34,6 +34,7 @@ import { TRAINING_PERCENT_MAX, } from '@kbn/ml-data-frame-analytics-utils'; import { DataGrid } from '@kbn/ml-data-grid'; +import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils'; import { useMlKibana } from '../../../../../contexts/kibana'; import { EuiComboBoxWithFieldStats, @@ -62,7 +63,6 @@ import { fetchExplainData } from '../shared'; import { useIndexData } from '../../hooks'; import { ExplorationQueryBar } from '../../../analytics_exploration/components/exploration_query_bar'; import { useSavedSearch, SavedSearchQuery } from './use_saved_search'; -import { SEARCH_QUERY_LANGUAGE } from '../../../../../../../common/constants/search'; import { ExplorationQueryBarProps } from '../../../analytics_exploration/components/exploration_query_bar/exploration_query_bar'; import { ScatterplotMatrix } from '../../../../../components/scatterplot_matrix'; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts index ef0bc4beac776e..bb6867b62aac0e 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/use_saved_search.ts @@ -15,9 +15,9 @@ import { Query, toElasticsearchQuery, } from '@kbn/es-query'; +import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils'; import { useMlKibana } from '../../../../../contexts/kibana'; import { useDataSource } from '../../../../../contexts/ml'; -import { SEARCH_QUERY_LANGUAGE } from '../../../../../../../common/constants/search'; // `undefined` is used for a non-initialized state // `null` is set if no saved search is used diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/expandable_section/expandable_section_results.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/expandable_section/expandable_section_results.tsx index ecd4cc02b0a79f..4e89a2a0833a19 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/expandable_section/expandable_section_results.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/expandable_section/expandable_section_results.tsx @@ -43,7 +43,7 @@ import { } from '@kbn/ml-data-frame-analytics-utils'; import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { SEARCH_QUERY_LANGUAGE } from '../../../../../../../common/constants/search'; +import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils'; import { getToastNotifications } from '../../../../../util/dependency_cache'; import { useColorRange, ColorRangeLegend } from '../../../../../components/color_range_legend'; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx index 80f0f3dff08503..74ca6037f8a903 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/components/exploration_query_bar/exploration_query_bar.tsx @@ -18,11 +18,8 @@ import type { Query } from '@kbn/es-query'; import { QueryStringInput } from '@kbn/unified-search-plugin/public'; import { QueryErrorMessage } from '@kbn/ml-error-utils'; +import { SEARCH_QUERY_LANGUAGE, SearchQueryLanguage } from '@kbn/ml-query-utils'; import { Dictionary } from '../../../../../../../common/types/common'; -import { - SEARCH_QUERY_LANGUAGE, - SearchQueryLanguage, -} from '../../../../../../../common/constants/search'; import { removeFilterFromQueryString } from '../../../../../explorer/explorer_utils'; import { useMlKibana } from '../../../../../contexts/kibana'; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/hooks/use_exploration_url_state.ts b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/hooks/use_exploration_url_state.ts index 443b4c22989282..d0f66bcc63954f 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/hooks/use_exploration_url_state.ts +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_exploration/hooks/use_exploration_url_state.ts @@ -7,9 +7,9 @@ import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { usePageUrlState } from '@kbn/ml-url-state'; +import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils'; import { ML_PAGES } from '../../../../../../common/constants/locator'; import { ExplorationPageUrlState } from '../../../../../../common/types/locator'; -import { SEARCH_QUERY_LANGUAGE } from '../../../../../../common/constants/search'; export function getDefaultExplorationPageUrlState( overrides?: Partial diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/components/analytics_selector/analytics_id_selector.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/components/analytics_selector/analytics_id_selector.tsx index 88c2d7645df7f6..2f945eab5fc6b8 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/components/analytics_selector/analytics_id_selector.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/components/analytics_selector/analytics_id_selector.tsx @@ -206,6 +206,7 @@ export function AnalyticsIdSelector({ }, onSelectionChange: (selectedItem: TableItem[]) => { const item = selectedItem[0]; + if (!item) { setSelected(undefined); return; @@ -216,7 +217,7 @@ export function AnalyticsIdSelector({ setSelected({ model_id: isDFA ? undefined : item.model_id, - job_id: isDFA ? item.id : item.metadata?.analytics_config.id, + job_id: isDFA ? item.id : item.metadata?.analytics_config?.id, analysis_type: analysisType, }); }, diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/_legend.scss b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/_legend.scss index cdc217319014cb..5a3af985446c83 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/_legend.scss +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/_legend.scss @@ -11,6 +11,15 @@ display: 'inline-block'; } +.mlJobMapLegend__ingestPipeline { + height: $euiSizeM; + width: $euiSizeM; + background-color: $euiColorGhost; + border: $euiBorderWidthThick solid $euiColorVis7; + border-radius: $euiBorderRadiusSmall; + display: 'inline-block'; +} + .mlJobMapLegend__transform { height: $euiSizeM; width: $euiSizeM; diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/controls.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/controls.tsx index ca6bc65f656519..6f464bb0547f9c 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/controls.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/controls.tsx @@ -31,8 +31,13 @@ import { formatHumanReadableDateTimeSeconds } from '@kbn/ml-date-utils'; import { JOB_MAP_NODE_TYPES } from '@kbn/ml-data-frame-analytics-utils'; import { CytoscapeContext } from './cytoscape'; import { ML_PAGES } from '../../../../../../common/constants/locator'; -import { checkPermission } from '../../../../capabilities/check_capabilities'; -import { useMlLocator, useNotifications, useNavigateToPath } from '../../../../contexts/kibana'; +import { usePermissionCheck } from '../../../../capabilities/check_capabilities'; +import { + useMlLocator, + useNotifications, + useNavigateToPath, + useMlKibana, +} from '../../../../contexts/kibana'; import { getDataViewIdFromName } from '../../../../util/index_utils'; import { useNavigateToWizardWithClonedJob } from '../../analytics_management/components/action_clone/clone_action_name'; import { @@ -79,8 +84,8 @@ export const Controls: FC = React.memo( const [isPopoverOpen, setPopover] = useState(false); const [didUntag, setDidUntag] = useState(false); - const canCreateDataFrameAnalytics: boolean = checkPermission('canCreateDataFrameAnalytics'); - const canDeleteDataFrameAnalytics: boolean = checkPermission('canDeleteDataFrameAnalytics'); + const canCreateDataFrameAnalytics: boolean = usePermissionCheck('canCreateDataFrameAnalytics'); + const canDeleteDataFrameAnalytics: boolean = usePermissionCheck('canDeleteDataFrameAnalytics'); const deleteAction = useDeleteAction(canDeleteDataFrameAnalytics); const { closeDeleteJobCheckModal, @@ -93,6 +98,17 @@ export const Controls: FC = React.memo( openModal, openDeleteJobCheckModal, } = deleteAction; + + const { + services: { + share, + application: { navigateToUrl, capabilities }, + }, + } = useMlKibana(); + + const hasIngestPipelinesCapabilities = + capabilities.management?.ingest?.ingest_pipelines === true; + const { toasts } = useNotifications(); const mlLocator = useMlLocator()!; const navigateToPath = useNavigateToPath(); @@ -133,6 +149,19 @@ export const Controls: FC = React.memo( // eslint-disable-next-line react-hooks/exhaustive-deps }, [nodeLabel]); + const onManagePipeline = useCallback(async () => { + const ingestPipelineLocator = share.url.locators.get('INGEST_PIPELINES_APP_LOCATOR'); + if (ingestPipelineLocator && nodeLabel !== null) { + const path = await ingestPipelineLocator.getUrl({ + page: 'pipeline_list', + }); + + // Passing pipelineId here because pipeline_list is not recognizing pipelineId params + await navigateToUrl(`${path}/?pipeline=${nodeLabel}`); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [share.url.locators, nodeLabel]); + const onCloneJobClick = useCallback(async () => { navigateToWizardWithClonedJob({ config: details[nodeId], stats: details[nodeId]?.stats }); // eslint-disable-next-line react-hooks/exhaustive-deps @@ -262,6 +291,22 @@ export const Controls: FC = React.memo( , ] : []), + ...(modelId !== nodeLabel && + nodeType === JOB_MAP_NODE_TYPES.INGEST_PIPELINE && + hasIngestPipelinesCapabilities + ? [ + + + , + ] + : []), ]; return ( @@ -298,7 +343,7 @@ export const Controls: FC = React.memo( - {nodeType !== JOB_MAP_NODE_TYPES.TRAINED_MODEL && ( + {nodeType !== JOB_MAP_NODE_TYPES.TRAINED_MODEL && items.length > 0 ? ( = React.memo( > - )} + ) : null} {isDeleteJobCheckModalVisible && item && ( diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/cytoscape.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/cytoscape.tsx index c3d25f44a33940..697badbdec8ee3 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/cytoscape.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/cytoscape.tsx @@ -19,8 +19,8 @@ import { css } from '@emotion/react'; import cytoscape, { type Stylesheet } from 'cytoscape'; // @ts-ignore no declaration file import dagre from 'cytoscape-dagre'; -import { EuiThemeType } from '../../../../components/color_range_legend'; import { getCytoscapeOptions } from './cytoscape_options'; +import { EuiThemeType } from '../../../../components/color_range_legend'; cytoscape.use(dagre); @@ -98,8 +98,8 @@ export function Cytoscape({ // Add the height to the div style. The height is a separate prop because it // is required and can trigger rendering when changed. const divStyle = useMemo(() => { - return { ...style, height }; - }, [style, height]); + return { ...style, height, width }; + }, [style, height, width]); const dataHandler = useCallback( (event) => { @@ -144,8 +144,10 @@ export function Cytoscape({ useEffect(() => { if (cy) { cy.reset(); + // Refitting because it's possible the the width/height have changed + cy.fit(); } - }, [cy, resetCy]); + }, [cy, resetCy, width, height]); return ( diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/cytoscape_options.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/cytoscape_options.tsx index 4658fbd242f05b..9cdd41dfb9c88e 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/cytoscape_options.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/cytoscape_options.tsx @@ -19,6 +19,7 @@ const MAP_SHAPES = { RECTANGLE: 'rectangle', DIAMOND: 'diamond', TRIANGLE: 'triangle', + ROUND_RECTANGLE: 'round-rectangle', } as const; type MapShapes = typeof MAP_SHAPES[keyof typeof MAP_SHAPES]; @@ -33,6 +34,9 @@ function shapeForNode(el: cytoscape.NodeSingular, theme: EuiThemeType): MapShape return MAP_SHAPES.DIAMOND; case JOB_MAP_NODE_TYPES.TRAINED_MODEL: return MAP_SHAPES.TRIANGLE; + case JOB_MAP_NODE_TYPES.INGEST_PIPELINE: + return MAP_SHAPES.ROUND_RECTANGLE; + default: return MAP_SHAPES.ELLIPSE; } @@ -69,6 +73,9 @@ function borderColorForNode(el: cytoscape.NodeSingular, theme: EuiThemeType) { return theme.euiColorVis2; case JOB_MAP_NODE_TYPES.TRAINED_MODEL: return theme.euiColorVis3; + case JOB_MAP_NODE_TYPES.INGEST_PIPELINE: + return theme.euiColorVis7; + default: return theme.euiColorMediumShade; } diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/legend.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/legend.tsx index a941da17577847..9494f7fc08799b 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/legend.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/components/legend.tsx @@ -71,6 +71,21 @@ export const JobMapLegend: FC<{ theme: EuiThemeType }> = ({ theme }) => {
+ + + + + + + + + + + + diff --git a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/job_map.tsx b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/job_map.tsx index 2b2989dd9dcbd3..ae1adea9589593 100644 --- a/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/job_map.tsx +++ b/x-pack/plugins/ml/public/application/data_frame_analytics/pages/job_map/job_map.tsx @@ -34,17 +34,18 @@ linear-gradient( center, ${theme.euiColorLightShade}`, backgroundSize: `${theme.euiSizeL} ${theme.euiSizeL}`, - margin: `-${theme.euiSizeL}`, marginTop: 0, }); interface Props { + key?: string; + defaultHeight?: number; analyticsId?: string; modelId?: string; forceRefresh?: boolean; } -export const JobMap: FC = ({ analyticsId, modelId, forceRefresh }) => { +export const JobMap: FC = ({ defaultHeight, analyticsId, modelId, forceRefresh }) => { // itemsDeleted will reset to false when Controls component calls updateElements to remove nodes deleted from map const [itemsDeleted, setItemsDeleted] = useState(false); const [resetCyToggle, setResetCyToggle] = useState(false); @@ -150,6 +151,7 @@ export const JobMap: FC = ({ analyticsId, modelId, forceRefresh }) => { const refreshCallback = () => fetchAndSetElementsWrapper({ analyticsId, modelId }); + const h = defaultHeight ?? height; return (
@@ -171,10 +173,10 @@ export const JobMap: FC = ({ analyticsId, modelId, forceRefresh }) => { -
+
{ + const { + services: { dataVisualizer }, + } = useMlKibana(); + + const [DataComparisonView, setDataComparisonView] = useState(null); + + useEffect(() => { + if (dataVisualizer !== undefined) { + const { getDataComparisonComponent } = dataVisualizer; + getDataComparisonComponent().then(setDataComparisonView); + } + }, [dataVisualizer]); + + const { selectedDataView: dataView, selectedSavedSearch: savedSearch } = useDataSource(); + + return ( + <> + + + + + + + + + + + {dataView && DataComparisonView ? ( + + ) : null} + + ); +}; diff --git a/x-pack/plugins/ml/public/application/explorer/anomaly_context_menu.tsx b/x-pack/plugins/ml/public/application/explorer/anomaly_context_menu.tsx index f077d0f3dfd7f9..314221ca387731 100644 --- a/x-pack/plugins/ml/public/application/explorer/anomaly_context_menu.tsx +++ b/x-pack/plugins/ml/public/application/explorer/anomaly_context_menu.tsx @@ -21,9 +21,9 @@ import useObservable from 'react-use/lib/useObservable'; import type { Query, TimeRange } from '@kbn/es-query'; import { isDefined } from '@kbn/ml-is-defined'; import { useTimeRangeUpdates } from '@kbn/ml-date-picker'; +import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils'; import { useAnomalyExplorerContext } from './anomaly_explorer_context'; import { escapeKueryForFieldValuePair } from '../util/string_utils'; -import { SEARCH_QUERY_LANGUAGE } from '../../../common/constants/search'; import { useCasesModal } from '../contexts/kibana/use_cases_modal'; import { DEFAULT_MAX_SERIES_TO_PLOT } from '../services/anomaly_explorer_charts_service'; import { ANOMALY_EXPLORER_CHARTS_EMBEDDABLE_TYPE } from '../../embeddables'; diff --git a/x-pack/plugins/ml/public/application/explorer/anomaly_timeline.tsx b/x-pack/plugins/ml/public/application/explorer/anomaly_timeline.tsx index 8f3b8395e8ddeb..0ba024a9c5f4f3 100644 --- a/x-pack/plugins/ml/public/application/explorer/anomaly_timeline.tsx +++ b/x-pack/plugins/ml/public/application/explorer/anomaly_timeline.tsx @@ -30,7 +30,7 @@ import type { Query } from '@kbn/es-query'; import { formatHumanReadableDateTime } from '@kbn/ml-date-utils'; import { isDefined } from '@kbn/ml-is-defined'; import { useTimeRangeUpdates } from '@kbn/ml-date-picker'; -import { SEARCH_QUERY_LANGUAGE } from '../../../common/constants/search'; +import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils'; import { useCasesModal } from '../contexts/kibana/use_cases_modal'; import { ANOMALY_SWIMLANE_EMBEDDABLE_TYPE } from '../..'; import { diff --git a/x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx b/x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx index 412c9e8f3aa7db..aa5b752b1f4f8d 100644 --- a/x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx +++ b/x-pack/plugins/ml/public/application/explorer/components/explorer_query_bar/explorer_query_bar.tsx @@ -14,7 +14,7 @@ import { QueryStringInput } from '@kbn/unified-search-plugin/public'; import type { DataView } from '@kbn/data-views-plugin/common'; import type { QueryErrorMessage } from '@kbn/ml-error-utils'; import type { InfluencersFilterQuery } from '@kbn/ml-anomaly-utils'; -import { SEARCH_QUERY_LANGUAGE } from '../../../../../common/constants/search'; +import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils'; import { useAnomalyExplorerContext } from '../../anomaly_explorer_context'; import { useMlKibana } from '../../../contexts/kibana'; diff --git a/x-pack/plugins/ml/public/application/explorer/dashboard_controls/add_anomaly_charts_to_dashboard_controls.tsx b/x-pack/plugins/ml/public/application/explorer/dashboard_controls/add_anomaly_charts_to_dashboard_controls.tsx index 429138874238d9..9ca48863c16706 100644 --- a/x-pack/plugins/ml/public/application/explorer/dashboard_controls/add_anomaly_charts_to_dashboard_controls.tsx +++ b/x-pack/plugins/ml/public/application/explorer/dashboard_controls/add_anomaly_charts_to_dashboard_controls.tsx @@ -10,10 +10,10 @@ import { EuiFieldNumber, EuiFormRow, htmlIdGenerator } from '@elastic/eui'; import type { Query } from '@kbn/es-query'; import useObservable from 'react-use/lib/useObservable'; import { isDefined } from '@kbn/ml-is-defined'; +import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils'; import { getSelectionInfluencers } from '../explorer_utils'; import { useAnomalyExplorerContext } from '../anomaly_explorer_context'; import { escapeKueryForFieldValuePair } from '../../util/string_utils'; -import { SEARCH_QUERY_LANGUAGE } from '../../../../common/constants/search'; import { useDashboardTable } from './use_dashboards_table'; import { AddToDashboardControl } from './add_to_dashboard_controls'; import { useAddToDashboardActions } from './use_add_to_dashboard_actions'; diff --git a/x-pack/plugins/ml/public/application/explorer/dashboard_controls/add_swimlane_to_dashboard_controls.tsx b/x-pack/plugins/ml/public/application/explorer/dashboard_controls/add_swimlane_to_dashboard_controls.tsx index 93fa7e908f35ac..4dcfdbf826b1d9 100644 --- a/x-pack/plugins/ml/public/application/explorer/dashboard_controls/add_swimlane_to_dashboard_controls.tsx +++ b/x-pack/plugins/ml/public/application/explorer/dashboard_controls/add_swimlane_to_dashboard_controls.tsx @@ -17,7 +17,7 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { DashboardAttributes } from '@kbn/dashboard-plugin/common'; import type { Query } from '@kbn/es-query'; -import { SEARCH_QUERY_LANGUAGE } from '../../../../common/constants/search'; +import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils'; import { getDefaultSwimlanePanelTitle } from '../../../embeddables/anomaly_swimlane/anomaly_swimlane_embeddable'; import { SWIMLANE_TYPE, SwimlaneType } from '../explorer_constants'; import { JobId } from '../../../../common/types/anomaly_detection_jobs'; diff --git a/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container.js b/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container.js index eb419c1f09370b..4c9773e1674a8c 100644 --- a/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container.js +++ b/x-pack/plugins/ml/public/application/explorer/explorer_charts/explorer_charts_container.js @@ -29,7 +29,7 @@ import { ExplorerChartSingleMetric } from './explorer_chart_single_metric'; import { ExplorerChartLabel } from './components/explorer_chart_label'; import { CHART_TYPE } from '../explorer_constants'; -import { SEARCH_QUERY_LANGUAGE } from '../../../../common/constants/search'; +import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { MlTooltipComponent } from '../../components/chart_tooltip'; diff --git a/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts b/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts index 025905335f1e56..32fd17c9d1f109 100644 --- a/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts +++ b/x-pack/plugins/ml/public/application/jobs/new_job/utils/new_job_utils.ts @@ -19,7 +19,7 @@ import type { Filter } from '@kbn/es-query'; import type { IUiSettingsClient } from '@kbn/core/public'; import { getEsQueryConfig } from '@kbn/data-plugin/public'; import type { SavedSearch } from '@kbn/saved-search-plugin/public'; -import { SEARCH_QUERY_LANGUAGE } from '../../../../../common/constants/search'; +import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils'; import { getQueryFromSavedSearchObject } from '../../../util/index_utils'; // Provider for creating the items used for searching and job creation. diff --git a/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/space_management/space_management.tsx b/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/space_management/space_management.tsx index 69ea8f717a51f7..2564f7c55da1e6 100644 --- a/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/space_management/space_management.tsx +++ b/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/space_management/space_management.tsx @@ -20,6 +20,7 @@ import { } from '@elastic/eui'; import type { SpacesPluginStart } from '@kbn/spaces-plugin/public'; +import { useTableState } from '@kbn/ml-in-memory-table'; import type { JobType, MlSavedObjectType } from '../../../../../../../common/types/saved_objects'; import type { ManagementListResponse, @@ -29,7 +30,6 @@ import { useManagementApiService } from '../../../../../services/ml_api_service/ import { getColumns } from './columns'; import { MLSavedObjectsSpacesList } from '../../../../../components/ml_saved_objects_spaces_list'; import { getFilters } from './filters'; -import { useTableState } from './use_table_state'; interface Props { spacesApi?: SpacesPluginStart; diff --git a/x-pack/plugins/ml/public/application/model_management/expanded_row.tsx b/x-pack/plugins/ml/public/application/model_management/expanded_row.tsx index 3b262cc0b82229..c367f990b53219 100644 --- a/x-pack/plugins/ml/public/application/model_management/expanded_row.tsx +++ b/x-pack/plugins/ml/public/application/model_management/expanded_row.tsx @@ -27,6 +27,7 @@ import { FIELD_FORMAT_IDS } from '@kbn/field-formats-plugin/common'; import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { isDefined } from '@kbn/ml-is-defined'; import { TRAINED_MODEL_TYPE } from '@kbn/ml-trained-models-utils'; +import { JobMap } from '../data_frame_analytics/pages/job_map'; import type { ModelItemFull } from './models_list'; import { ModelPipelines } from './pipelines'; import { AllocatedModels } from '../memory_usage/nodes_overview/allocated_models'; @@ -419,6 +420,29 @@ export const ExpandedRow: FC = ({ item }) => { }, ] : []), + { + id: 'models_map', + 'data-test-subj': 'mlTrainedModelsMap', + name: ( + + ), + content: ( +
+ + + + +
+ ), + }, ]; }, [ analyticsConfig, @@ -430,6 +454,7 @@ export const ExpandedRow: FC = ({ item }) => { pipelines, restMetaData, stats, + item.model_id, ]); const initialSelectedTab = diff --git a/x-pack/plugins/ml/public/application/routing/breadcrumbs.ts b/x-pack/plugins/ml/public/application/routing/breadcrumbs.ts index 0ff6c61ec8c53d..2824b835f914a7 100644 --- a/x-pack/plugins/ml/public/application/routing/breadcrumbs.ts +++ b/x-pack/plugins/ml/public/application/routing/breadcrumbs.ts @@ -120,12 +120,20 @@ export const FILTER_LISTS_BREADCRUMB: ChromeBreadcrumb = Object.freeze({ href: '/settings/filter_lists', }); +export const DATA_COMPARISON_BREADCRUMB: ChromeBreadcrumb = Object.freeze({ + text: i18n.translate('xpack.ml.settings.breadcrumbs.dataComparisonLabel', { + defaultMessage: 'Data comparison', + }), + href: '/data_comparison_index_select', +}); + const breadcrumbs = { ML_BREADCRUMB, SETTINGS_BREADCRUMB, ANOMALY_DETECTION_BREADCRUMB, DATA_FRAME_ANALYTICS_BREADCRUMB, TRAINED_MODELS, + DATA_COMPARISON_BREADCRUMB, DATA_VISUALIZER_BREADCRUMB, AIOPS_BREADCRUMB_LOG_RATE_ANALYSIS, AIOPS_BREADCRUMB_LOG_PATTERN_ANALYSIS, diff --git a/x-pack/plugins/ml/public/application/routing/routes/datavisualizer/data_comparison.tsx b/x-pack/plugins/ml/public/application/routing/routes/datavisualizer/data_comparison.tsx new file mode 100644 index 00000000000000..b8efd6b7df5295 --- /dev/null +++ b/x-pack/plugins/ml/public/application/routing/routes/datavisualizer/data_comparison.tsx @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FC } from 'react'; +import { i18n } from '@kbn/i18n'; +import { DataSourceContextProvider } from '../../../contexts/ml'; +import { DataComparisonPage } from '../../../datavisualizer/data_comparison/data_comparison_page'; +import { ML_PAGES } from '../../../../locator'; +import { NavigateToPath } from '../../../contexts/kibana'; +import { createPath, MlRoute, PageLoader, PageProps } from '../../router'; +import { useRouteResolver } from '../../use_resolver'; +import { + breadcrumbOnClickFactory, + DATA_COMPARISON_BREADCRUMB, + DATA_VISUALIZER_BREADCRUMB, + getBreadcrumbWithUrlForApp, +} from '../../breadcrumbs'; +import { basicResolvers } from '../../resolvers'; + +export const dataComparisonRouteFactory = ( + navigateToPath: NavigateToPath, + basePath: string +): MlRoute => ({ + id: 'data_comparison', + path: createPath(ML_PAGES.DATA_COMPARISON), + title: i18n.translate('xpack.ml.dataVisualizer.dataComparison.docTitle', { + defaultMessage: 'Data Comparison', + }), + render: (props, deps) => , + breadcrumbs: [ + getBreadcrumbWithUrlForApp('ML_BREADCRUMB', navigateToPath, basePath), + { + text: DATA_VISUALIZER_BREADCRUMB.text, + ...(navigateToPath + ? { + href: `${basePath}/app/ml${DATA_COMPARISON_BREADCRUMB.href}`, + onClick: breadcrumbOnClickFactory(DATA_COMPARISON_BREADCRUMB.href, navigateToPath), + } + : {}), + }, + { + text: i18n.translate('xpack.ml.trainedModelsBreadcrumbs.dataComparisonLabel', { + defaultMessage: 'Data Comparison', + }), + }, + ], + 'data-test-subj': 'mlPageDataComparison', +}); + +const PageWrapper: FC = () => { + const { context } = useRouteResolver('basic', [], basicResolvers()); + + return ( + + + + + + ); +}; diff --git a/x-pack/plugins/ml/public/application/routing/routes/new_job/index_or_search.tsx b/x-pack/plugins/ml/public/application/routing/routes/new_job/index_or_search.tsx index 3337257b8754c9..087b1d7ccb35c8 100644 --- a/x-pack/plugins/ml/public/application/routing/routes/new_job/index_or_search.tsx +++ b/x-pack/plugins/ml/public/application/routing/routes/new_job/index_or_search.tsx @@ -183,6 +183,26 @@ export const changePointDetectionIndexOrSearchRouteFactory = ( breadcrumbs: getChangePointDetectionBreadcrumbs(navigateToPath, basePath), }); +export const dataComparisonIndexOrSearchRouteFactory = ( + navigateToPath: NavigateToPath, + basePath: string +): MlRoute => ({ + id: 'data_view_data_comparison', + path: createPath(ML_PAGES.DATA_COMPARISON_INDEX_SELECT), + title: i18n.translate('xpack.ml.selectDataViewLabel', { + defaultMessage: 'Select Data View', + }), + render: (props, deps) => ( + + ), + breadcrumbs: getDataVisBreadcrumbs(navigateToPath, basePath), +}); + const PageWrapper: FC = ({ nextStepPath, mode }) => { const { services: { diff --git a/x-pack/plugins/ml/public/application/routing/routes/trained_models/index.ts b/x-pack/plugins/ml/public/application/routing/routes/trained_models/index.ts index d69a2256335e38..0a1b1610e6f11d 100644 --- a/x-pack/plugins/ml/public/application/routing/routes/trained_models/index.ts +++ b/x-pack/plugins/ml/public/application/routing/routes/trained_models/index.ts @@ -6,3 +6,4 @@ */ export * from './models_list'; +export * from '../datavisualizer/data_comparison'; diff --git a/x-pack/plugins/ml/public/locator/ml_locator.ts b/x-pack/plugins/ml/public/locator/ml_locator.ts index 4b581e401b3eb0..6008741860d6d1 100644 --- a/x-pack/plugins/ml/public/locator/ml_locator.ts +++ b/x-pack/plugins/ml/public/locator/ml_locator.ts @@ -77,6 +77,8 @@ export class MlLocatorDefinition implements LocatorDefinition { case ML_PAGES.MEMORY_USAGE: path = formatMemoryUsageUrl('', params.pageState); break; + case ML_PAGES.DATA_COMPARISON_INDEX_SELECT: + case ML_PAGES.DATA_COMPARISON: case ML_PAGES.ANOMALY_DETECTION_CREATE_JOB: case ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_RECOGNIZER: case ML_PAGES.ANOMALY_DETECTION_CREATE_JOB_ADVANCED: diff --git a/x-pack/plugins/ml/public/maps/util.ts b/x-pack/plugins/ml/public/maps/util.ts index 342938bdff698d..f746ab5209963d 100644 --- a/x-pack/plugins/ml/public/maps/util.ts +++ b/x-pack/plugins/ml/public/maps/util.ts @@ -20,8 +20,8 @@ import { VectorSourceRequestMeta } from '@kbn/maps-plugin/common'; import { LAYER_TYPE, SOURCE_TYPES, SCALING_TYPES } from '@kbn/maps-plugin/common'; import { type MLAnomalyDoc, ML_SEVERITY_COLOR_RAMP } from '@kbn/ml-anomaly-utils'; import { formatHumanReadableDateTimeSeconds } from '@kbn/ml-date-utils'; +import { SEARCH_QUERY_LANGUAGE } from '@kbn/ml-query-utils'; import type { MlApiServices } from '../application/services/ml_api_service'; -import { SEARCH_QUERY_LANGUAGE } from '../../common/constants/search'; import { tabColor } from '../../common/util/group_color_utils'; import { getIndexPattern } from '../application/explorer/reducers/explorer_reducer/get_index_pattern'; import { AnomalySource } from './anomaly_source'; diff --git a/x-pack/plugins/ml/public/register_helper/register_search_links/search_deep_links.ts b/x-pack/plugins/ml/public/register_helper/register_search_links/search_deep_links.ts index 470c0259346493..dfe2b4bbaf200f 100644 --- a/x-pack/plugins/ml/public/register_helper/register_search_links/search_deep_links.ts +++ b/x-pack/plugins/ml/public/register_helper/register_search_links/search_deep_links.ts @@ -210,6 +210,17 @@ function getIndexDataVisualizerDeepLink(mlCapabilities: MlCapabilities): AppDeep }; } +function getDataComparisonDeepLink(mlCapabilities: MlCapabilities): AppDeepLink { + return { + id: 'dataComparison', + title: i18n.translate('xpack.ml.deepLink.dataComparison', { + defaultMessage: 'Data Comparison', + }), + path: `/${ML_PAGES.DATA_COMPARISON_INDEX_SELECT}`, + navLinkStatus: getNavStatus(mlCapabilities, false), + }; +} + function getSettingsDeepLink(mlCapabilities: MlCapabilities): AppDeepLink { const navLinkStatus = getNavStatus(mlCapabilities, mlCapabilities.isADEnabled); return { @@ -256,6 +267,7 @@ export function getDeepLinks(isFullLicense: boolean, mlCapabilities: MlCapabilit getDataVisualizerDeepLink(mlCapabilities), getFileUploadDeepLink(mlCapabilities), getIndexDataVisualizerDeepLink(mlCapabilities), + getDataComparisonDeepLink(mlCapabilities), ]; if (isFullLicense === true) { diff --git a/x-pack/plugins/ml/server/models/data_frame_analytics/analytics_manager.ts b/x-pack/plugins/ml/server/models/data_frame_analytics/analytics_manager.ts index 21e672c0c46ef9..b9e62fa02102da 100644 --- a/x-pack/plugins/ml/server/models/data_frame_analytics/analytics_manager.ts +++ b/x-pack/plugins/ml/server/models/data_frame_analytics/analytics_manager.ts @@ -18,6 +18,10 @@ import { type AnalyticsMapNodeElement, type MapElements, } from '@kbn/ml-data-frame-analytics-utils'; +import type { TransformGetTransformTransformSummary } from '@elastic/elasticsearch/lib/api/types'; +import { flatten } from 'lodash'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import { modelsProvider } from '../model_management'; import { ExtendAnalyticsMapArgs, GetAnalyticsMapArgs, @@ -29,12 +33,15 @@ import { isJobDataLinkReturnType, isTransformLinkReturnType, NextLinkReturnType, + GetAnalyticsJobIdArg, + GetAnalyticsModelIdArg, } from './types'; import type { MlClient } from '../../lib/ml_client'; export class AnalyticsManager { private _trainedModels: estypes.MlTrainedModelConfig[] = []; private _jobs: estypes.MlDataframeAnalyticsSummary[] = []; + private _transforms?: TransformGetTransformTransformSummary[]; constructor(private _mlClient: MlClient, private _client: IScopedClusterClient) {} @@ -47,6 +54,30 @@ export class AnalyticsManager { this._jobs = jobs.data_frame_analytics; } + private async initTransformData() { + if (!this._transforms) { + try { + const body = await this._client.asCurrentUser.transform.getTransform({ + size: 1000, + }); + this._transforms = body.transforms; + return body.transforms; + } catch (e) { + if (e.meta?.statusCode !== 403) { + // eslint-disable-next-line no-console + console.error(e); + } + } + } + } + + private getNodeId( + elementOriginalId: string, + nodeType: typeof JOB_MAP_NODE_TYPES[keyof typeof JOB_MAP_NODE_TYPES] + ): string { + return `${elementOriginalId}-${nodeType}`; + } + private isDuplicateElement(analyticsId: string, elements: MapElements[]): boolean { let isDuplicate = false; elements.forEach((elem) => { @@ -310,7 +341,7 @@ export class AnalyticsManager { * @param jobId (optional) * @param modelId (optional) */ - public async getAnalyticsMap({ + private async getAnalyticsMap({ analyticsId, modelId, }: GetAnalyticsMapArgs): Promise { @@ -527,6 +558,240 @@ export class AnalyticsManager { } } + /** + * Expanded wrapper of getAnalyticsMap, which also handles generic models that are not tied to an analytics job + * Retrieves info about model and ingest pipeline, index, and transforms associated with the model + * @param analyticsId + * @param modelId + */ + public async extendModelsMap({ + analyticsId, + modelId, + }: { + analyticsId?: string; + modelId?: string; + }): Promise { + const result: AnalyticsMapReturnType = { + elements: [], + details: {}, + error: null, + }; + try { + if (analyticsId && !modelId) { + return this.getAnalyticsMap({ + analyticsId, + modelId, + } as GetAnalyticsJobIdArg); + } + + await this.initData(); + + const modelNodeId = `${modelId}-${JOB_MAP_NODE_TYPES.TRAINED_MODEL}`; + const model = modelId ? this.findTrainedModel(modelId) : undefined; + + const isDFAModel = isPopulatedObject(model?.metadata, ['analytics_config']); + if (isDFAModel) { + return this.getAnalyticsMap({ + analyticsId, + modelId, + } as GetAnalyticsModelIdArg); + } + + if (modelId && model) { + // First, find information about the trained model + result.elements.push({ + data: { + id: modelNodeId, + label: modelId, + type: JOB_MAP_NODE_TYPES.TRAINED_MODEL, + isRoot: true, + }, + }); + result.details[modelNodeId] = model; + + let pipelinesResponse; + let indicesSettings; + try { + // Then, find the pipelines that have the trained model set as index.default_pipelines + pipelinesResponse = await modelsProvider(this._client).getModelsPipelines([modelId]); + } catch (e) { + // Possible that the user doesn't have permissions to view ingest pipelines + // If so, gracefully exit + if (e.meta?.statusCode !== 403) { + // eslint-disable-next-line no-console + console.error(e); + } + + return result; + } + + const pipelines = pipelinesResponse?.get(modelId); + + if (pipelines) { + const pipelineIds = new Set(Object.keys(pipelines)); + for (const pipelineId of pipelineIds) { + const pipelineNodeId = `${pipelineId}-${JOB_MAP_NODE_TYPES.INGEST_PIPELINE}`; + result.details[pipelineNodeId] = pipelines[pipelineId]; + + result.elements.push({ + data: { + id: pipelineNodeId, + label: pipelineId, + type: JOB_MAP_NODE_TYPES.INGEST_PIPELINE, + }, + }); + + result.elements.push({ + data: { + id: `${modelNodeId}~${pipelineNodeId}`, + source: modelNodeId, + target: pipelineNodeId, + }, + }); + } + const pipelineIdsToDestinationIndices: Record = {}; + + let indicesPermissions; + try { + indicesSettings = await this._client.asInternalUser.indices.getSettings(); + const hasPrivilegesResponse = await this._client.asCurrentUser.security.hasPrivileges({ + index: [ + { + names: Object.keys(indicesSettings), + privileges: ['read'], + }, + ], + }); + indicesPermissions = hasPrivilegesResponse.index; + } catch (e) { + // Possible that the user doesn't have permissions to view + // If so, gracefully exit + if (e.meta?.statusCode !== 403) { + // eslint-disable-next-line no-console + console.error(e); + } + return result; + } + + for (const [indexName, { settings }] of Object.entries(indicesSettings)) { + if ( + settings?.index?.default_pipeline && + pipelineIds.has(settings.index.default_pipeline) && + indicesPermissions[indexName]?.read === true + ) { + if (Array.isArray(pipelineIdsToDestinationIndices[settings.index.default_pipeline])) { + pipelineIdsToDestinationIndices[settings.index.default_pipeline].push(indexName); + } else { + pipelineIdsToDestinationIndices[settings.index.default_pipeline] = [indexName]; + } + } + } + + for (const [pipelineId, indexIds] of Object.entries(pipelineIdsToDestinationIndices)) { + const pipelineNodeId = this.getNodeId(pipelineId, JOB_MAP_NODE_TYPES.INGEST_PIPELINE); + + for (const destinationIndexId of indexIds) { + const destinationIndexNodeId = this.getNodeId( + destinationIndexId, + JOB_MAP_NODE_TYPES.INDEX + ); + + const destinationIndexDetails = await this.getIndexData(destinationIndexId); + result.details[destinationIndexNodeId] = { + ...destinationIndexDetails, + ml_inference_models: [modelId], + }; + + result.elements.push({ + data: { + id: destinationIndexNodeId, + label: destinationIndexId, + type: JOB_MAP_NODE_TYPES.INDEX, + }, + }); + + result.elements.push({ + data: { + id: `${pipelineNodeId}~${destinationIndexNodeId}`, + source: pipelineNodeId, + target: destinationIndexNodeId, + }, + }); + } + } + + const destinationIndices = flatten(Object.values(pipelineIdsToDestinationIndices)); + + // From these destination indices, see if there's any transforms that have the indexId as the source destination index + if (destinationIndices.length > 0) { + const transforms = await this.initTransformData(); + + if (!transforms) return result; + + for (const destinationIndex of destinationIndices) { + const destinationIndexNodeId = `${destinationIndex}-${JOB_MAP_NODE_TYPES.INDEX}`; + + const foundTransform = transforms?.find((t) => { + const transformSourceIndex = Array.isArray(t.source.index) + ? t.source.index[0] + : t.source.index; + return transformSourceIndex === destinationIndex; + }); + if (foundTransform) { + const transformDestIndex = foundTransform.dest.index; + const transformNodeId = `${foundTransform.id}-${JOB_MAP_NODE_TYPES.TRANSFORM}`; + const transformDestIndexNodeId = `${transformDestIndex}-${JOB_MAP_NODE_TYPES.INDEX}`; + + const destIndex = await this.getIndexData(transformDestIndex); + result.details[transformNodeId] = foundTransform; + result.details[transformDestIndexNodeId] = destIndex; + + result.elements.push( + { + data: { + id: transformNodeId, + label: foundTransform.id, + type: JOB_MAP_NODE_TYPES.TRANSFORM, + }, + }, + { + data: { + id: transformDestIndexNodeId, + label: transformDestIndex, + type: JOB_MAP_NODE_TYPES.INDEX, + }, + } + ); + + result.elements.push( + { + data: { + id: `${destinationIndexNodeId}~${transformNodeId}`, + source: destinationIndexNodeId, + target: transformNodeId, + }, + }, + { + data: { + id: `${transformNodeId}~${transformDestIndexNodeId}`, + source: transformNodeId, + target: transformDestIndexNodeId, + }, + } + ); + } + } + } + } + } + } catch (error) { + result.error = error.message || 'An error occurred fetching map'; + return result; + } + + return result; + } + public async extendAnalyticsMapForAnalyticsJob({ analyticsId, index, diff --git a/x-pack/plugins/ml/server/models/data_frame_analytics/types.ts b/x-pack/plugins/ml/server/models/data_frame_analytics/types.ts index 161b4afd200188..cf7e65e861e0fc 100644 --- a/x-pack/plugins/ml/server/models/data_frame_analytics/types.ts +++ b/x-pack/plugins/ml/server/models/data_frame_analytics/types.ts @@ -15,10 +15,10 @@ import type { interface AnalyticsMapArg { analyticsId: string; } -interface GetAnalyticsJobIdArg extends AnalyticsMapArg { +export interface GetAnalyticsJobIdArg extends AnalyticsMapArg { modelId?: never; } -interface GetAnalyticsModelIdArg { +export interface GetAnalyticsModelIdArg { analyticsId?: never; modelId: string; } diff --git a/x-pack/plugins/ml/server/routes/data_frame_analytics.ts b/x-pack/plugins/ml/server/routes/data_frame_analytics.ts index 1078d8d2dd1c74..56e4e4ee4f625a 100644 --- a/x-pack/plugins/ml/server/routes/data_frame_analytics.ts +++ b/x-pack/plugins/ml/server/routes/data_frame_analytics.ts @@ -30,10 +30,7 @@ import { analyticsNewJobCapsParamsSchema, analyticsNewJobCapsQuerySchema, } from './schemas/data_analytics_schema'; -import type { - GetAnalyticsMapArgs, - ExtendAnalyticsMapArgs, -} from '../models/data_frame_analytics/types'; +import type { ExtendAnalyticsMapArgs } from '../models/data_frame_analytics/types'; import { DataViewHandler } from '../models/data_frame_analytics/index_patterns'; import { AnalyticsManager } from '../models/data_frame_analytics/analytics_manager'; import { validateAnalyticsJob } from '../models/data_frame_analytics/validation'; @@ -51,22 +48,30 @@ function deleteDestDataViewById(dataViewsService: DataViewsService, dataViewId: return iph.deleteDataViewById(dataViewId); } -function getAnalyticsMap( +function getExtendedMap( mlClient: MlClient, client: IScopedClusterClient, - idOptions: GetAnalyticsMapArgs + idOptions: ExtendAnalyticsMapArgs ) { const analytics = new AnalyticsManager(mlClient, client); - return analytics.getAnalyticsMap(idOptions); + return analytics.extendAnalyticsMapForAnalyticsJob(idOptions); } -function getExtendedMap( +function getExtendedModelsMap( mlClient: MlClient, client: IScopedClusterClient, - idOptions: ExtendAnalyticsMapArgs + idOptions: { + analyticsId?: string; + modelId?: string; + } ) { const analytics = new AnalyticsManager(mlClient, client); - return analytics.extendAnalyticsMapForAnalyticsJob(idOptions); + return analytics.extendModelsMap(idOptions); +} + +export function getAnalyticsManager(mlClient: MlClient, client: IScopedClusterClient) { + const analytics = new AnalyticsManager(mlClient, client); + return analytics; } // replace the recursive field and agg references with a @@ -768,6 +773,9 @@ export function dataFrameAnalyticsRoutes({ router, mlLicense, routeGuard }: Rout .get({ path: `${ML_INTERNAL_BASE_PATH}/data_frame/analytics/map/{analyticsId}`, access: 'internal', + options: { + tags: ['access:ml:canGetDataFrameAnalytics'], + }, }) .addVersion( { @@ -793,8 +801,7 @@ export function dataFrameAnalyticsRoutes({ router, mlLicense, routeGuard }: Rout index: type === JOB_MAP_NODE_TYPES.INDEX ? analyticsId : undefined, }); } else { - // @ts-expect-error never used as analyticsId - results = await getAnalyticsMap(mlClient, client, { + results = await getExtendedModelsMap(mlClient, client, { analyticsId: type !== JOB_MAP_NODE_TYPES.TRAINED_MODEL ? analyticsId : undefined, modelId: type === JOB_MAP_NODE_TYPES.TRAINED_MODEL ? analyticsId : undefined, }); diff --git a/x-pack/plugins/ml/tsconfig.json b/x-pack/plugins/ml/tsconfig.json index 441d3814496bae..13560d5e0b9621 100644 --- a/x-pack/plugins/ml/tsconfig.json +++ b/x-pack/plugins/ml/tsconfig.json @@ -100,5 +100,6 @@ "@kbn/core-notifications-browser-mocks", "@kbn/unified-field-list", "@kbn/core-ui-settings-browser", + "@kbn/ml-in-memory-table", ], } diff --git a/x-pack/plugins/observability/docs/openapi/slo/bundled.json b/x-pack/plugins/observability/docs/openapi/slo/bundled.json index 05437b3e890283..2e9cec07f5e0ba 100644 --- a/x-pack/plugins/observability/docs/openapi/slo/bundled.json +++ b/x-pack/plugins/observability/docs/openapi/slo/bundled.json @@ -136,27 +136,13 @@ "$ref": "#/components/parameters/space_id" }, { - "name": "name", + "name": "kqlQuery", "in": "query", - "description": "Filter by name", + "description": "A valid kql query to filter the SLO with", "schema": { "type": "string" }, - "example": "awesome-service" - }, - { - "name": "indicatorTypes", - "in": "query", - "description": "Filter by indicator type", - "schema": { - "type": "array", - "items": { - "type": "string" - } - }, - "example": [ - "sli.kql.custom" - ] + "example": "slo.name:latency* and slo.tags : \"prod\"" }, { "name": "page", @@ -176,7 +162,7 @@ "type": "integer", "default": 25 }, - "example": 20 + "example": 25 }, { "name": "sortBy", @@ -185,12 +171,14 @@ "schema": { "type": "string", "enum": [ - "creationTime", - "indicatorType" + "sli_value", + "status", + "error_budget_consumed", + "error_budget_remaining" ], - "default": "creationTime" + "default": "status" }, - "example": "creationTime" + "example": "status" }, { "name": "sortDirection", @@ -1333,7 +1321,8 @@ "sli.apm.transactionErrorRate": "#/components/schemas/indicator_properties_apm_availability", "sli.kql.custom": "#/components/schemas/indicator_properties_custom_kql", "sli.apm.transactionDuration": "#/components/schemas/indicator_properties_apm_latency", - "sli.apm.sli.metric.custom": "#/components/schemas/indicator_properties_custom_metric" + "sli.metric.custom": "#/components/schemas/indicator_properties_custom_metric", + "sli.histogram.custom": "#/components/schemas/indicator_properties_histogram" } }, "oneOf": [ diff --git a/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml b/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml index 624c641aca5d37..075877796b31ba 100644 --- a/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml +++ b/x-pack/plugins/observability/docs/openapi/slo/bundled.yaml @@ -80,21 +80,12 @@ paths: parameters: - $ref: '#/components/parameters/kbn_xsrf' - $ref: '#/components/parameters/space_id' - - name: name + - name: kqlQuery in: query - description: Filter by name + description: A valid kql query to filter the SLO with schema: type: string - example: awesome-service - - name: indicatorTypes - in: query - description: Filter by indicator type - schema: - type: array - items: - type: string - example: - - sli.kql.custom + example: 'slo.name:latency* and slo.tags : "prod"' - name: page in: query description: The page number to return @@ -108,17 +99,19 @@ paths: schema: type: integer default: 25 - example: 20 + example: 25 - name: sortBy in: query description: Sort by field schema: type: string enum: - - creationTime - - indicatorType - default: creationTime - example: creationTime + - sli_value + - status + - error_budget_consumed + - error_budget_remaining + default: status + example: status - name: sortDirection in: query description: Sort order @@ -920,7 +913,8 @@ components: sli.apm.transactionErrorRate: '#/components/schemas/indicator_properties_apm_availability' sli.kql.custom: '#/components/schemas/indicator_properties_custom_kql' sli.apm.transactionDuration: '#/components/schemas/indicator_properties_apm_latency' - sli.apm.sli.metric.custom: '#/components/schemas/indicator_properties_custom_metric' + sli.metric.custom: '#/components/schemas/indicator_properties_custom_metric' + sli.histogram.custom: '#/components/schemas/indicator_properties_histogram' oneOf: - $ref: '#/components/schemas/indicator_properties_custom_kql' - $ref: '#/components/schemas/indicator_properties_apm_availability' diff --git a/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@slos.yaml b/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@slos.yaml index 36ac4cb27e3b7a..0c7559e41bb62e 100644 --- a/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@slos.yaml +++ b/x-pack/plugins/observability/docs/openapi/slo/paths/s@{spaceid}@api@slos.yaml @@ -60,20 +60,12 @@ get: parameters: - $ref: ../components/headers/kbn_xsrf.yaml - $ref: ../components/parameters/space_id.yaml - - name: name + - name: kqlQuery in: query - description: Filter by name + description: A valid kql query to filter the SLO with schema: type: string - example: awesome-service - - name: indicatorTypes - in: query - description: Filter by indicator type - schema: - type: array - items: - type: string - example: ['sli.kql.custom'] + example: 'slo.name:latency* and slo.tags : "prod"' - name: page in: query description: The page number to return @@ -87,15 +79,15 @@ get: schema: type: integer default: 25 - example: 20 + example: 25 - name: sortBy in: query description: Sort by field schema: type: string - enum: [creationTime, indicatorType] - default: creationTime - example: creationTime + enum: [sli_value, status, error_budget_consumed, error_budget_remaining] + default: status + example: status - name: sortDirection in: query description: Sort order diff --git a/x-pack/plugins/observability/public/components/burn_rate_rule_editor/slo_selector.test.tsx b/x-pack/plugins/observability/public/components/burn_rate_rule_editor/slo_selector.test.tsx index 9c40a23b02d466..12d837fafaba2d 100644 --- a/x-pack/plugins/observability/public/components/burn_rate_rule_editor/slo_selector.test.tsx +++ b/x-pack/plugins/observability/public/components/burn_rate_rule_editor/slo_selector.test.tsx @@ -30,7 +30,7 @@ describe('SLO Selector', () => { render(); expect(screen.getByTestId('sloSelector')).toBeTruthy(); - expect(useFetchSloListMock).toHaveBeenCalledWith({ name: '' }); + expect(useFetchSloListMock).toHaveBeenCalledWith({ kqlQuery: 'slo.name:*' }); }); it('searches SLOs when typing', async () => { @@ -42,6 +42,6 @@ describe('SLO Selector', () => { await wait(310); // debounce delay }); - expect(useFetchSloListMock).toHaveBeenCalledWith({ name: 'latency' }); + expect(useFetchSloListMock).toHaveBeenCalledWith({ kqlQuery: 'slo.name:latency*' }); }); }); diff --git a/x-pack/plugins/observability/public/components/burn_rate_rule_editor/slo_selector.tsx b/x-pack/plugins/observability/public/components/burn_rate_rule_editor/slo_selector.tsx index 4e92a864fa9986..4dd13c92fcfa33 100644 --- a/x-pack/plugins/observability/public/components/burn_rate_rule_editor/slo_selector.tsx +++ b/x-pack/plugins/observability/public/components/burn_rate_rule_editor/slo_selector.tsx @@ -23,7 +23,7 @@ function SloSelector({ initialSlo, onSelected, errors }: Props) { const [options, setOptions] = useState>>([]); const [selectedOptions, setSelectedOptions] = useState>>(); const [searchValue, setSearchValue] = useState(''); - const { isLoading, sloList } = useFetchSloList({ name: searchValue }); + const { isLoading, sloList } = useFetchSloList({ kqlQuery: `slo.name:${searchValue}*` }); const hasError = errors !== undefined && errors.length > 0; useEffect(() => { diff --git a/x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_status_badge.tsx b/x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_status_badge.tsx index 5872921fa652b0..5cb35d88ac77d4 100644 --- a/x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_status_badge.tsx +++ b/x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_status_badge.tsx @@ -6,7 +6,7 @@ */ import React from 'react'; -import { EuiBadge, EuiFlexItem } from '@elastic/eui'; +import { EuiBadge, EuiFlexItem, EuiToolTip } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { SLOWithSummaryResponse } from '@kbn/slo-schema'; @@ -19,11 +19,18 @@ export function SloStatusBadge({ slo }: SloStatusProps) { <> {slo.summary.status === 'NO_DATA' && ( - - {i18n.translate('xpack.observability.slo.sloStatusBadge.noData', { - defaultMessage: 'No data', + + > + + {i18n.translate('xpack.observability.slo.sloStatusBadge.noData', { + defaultMessage: 'No data', + })} + + )} {slo.summary.status === 'HEALTHY' && ( diff --git a/x-pack/plugins/observability/public/hooks/slo/query_key_factory.ts b/x-pack/plugins/observability/public/hooks/slo/query_key_factory.ts index 28cf100d97bc90..d0c893df2d2a00 100644 --- a/x-pack/plugins/observability/public/hooks/slo/query_key_factory.ts +++ b/x-pack/plugins/observability/public/hooks/slo/query_key_factory.ts @@ -8,10 +8,10 @@ import type { Indicator } from '@kbn/slo-schema'; interface SloListFilter { - name: string; + kqlQuery: string; page: number; sortBy: string; - indicatorTypes: string[]; + sortDirection: string; } interface CompositeSloKeyFilter { diff --git a/x-pack/plugins/observability/public/hooks/slo/use_clone_slo.ts b/x-pack/plugins/observability/public/hooks/slo/use_clone_slo.ts index 95fa7928ae2991..08a3c0520ca181 100644 --- a/x-pack/plugins/observability/public/hooks/slo/use_clone_slo.ts +++ b/x-pack/plugins/observability/public/hooks/slo/use_clone_slo.ts @@ -77,9 +77,6 @@ export function useCloneSlo() { }) ); }, - onSettled: () => { - queryClient.invalidateQueries({ queryKey: sloKeys.lists(), exact: false }); - }, } ); } diff --git a/x-pack/plugins/observability/public/hooks/slo/use_create_slo.ts b/x-pack/plugins/observability/public/hooks/slo/use_create_slo.ts index bcb97c6668f840..8debbc4b9eefd4 100644 --- a/x-pack/plugins/observability/public/hooks/slo/use_create_slo.ts +++ b/x-pack/plugins/observability/public/hooks/slo/use_create_slo.ts @@ -44,7 +44,7 @@ export function useCreateSlo() { const [queryKey, previousData] = queriesData?.at(0) ?? []; - const newItem = { ...slo, id: uuidv1() }; + const newItem = { ...slo, id: uuidv1(), summary: undefined }; const optimisticUpdate = { page: previousData?.page ?? 1, @@ -83,9 +83,6 @@ export function useCreateSlo() { http.basePath.prepend(paths.observability.sloCreateWithEncodedForm(encode(slo))) ); }, - onSettled: () => { - queryClient.invalidateQueries({ queryKey: sloKeys.lists(), exact: false }); - }, } ); } diff --git a/x-pack/plugins/observability/public/hooks/slo/use_delete_slo.ts b/x-pack/plugins/observability/public/hooks/slo/use_delete_slo.ts index 9da12e73979f60..7add4684426771 100644 --- a/x-pack/plugins/observability/public/hooks/slo/use_delete_slo.ts +++ b/x-pack/plugins/observability/public/hooks/slo/use_delete_slo.ts @@ -76,9 +76,6 @@ export function useDeleteSlo() { }) ); }, - onSettled: () => { - queryClient.invalidateQueries({ queryKey: sloKeys.lists(), exact: false }); - }, } ); } diff --git a/x-pack/plugins/observability/public/hooks/slo/use_fetch_slo_list.ts b/x-pack/plugins/observability/public/hooks/slo/use_fetch_slo_list.ts index f2d1627114a0d2..22a918eb231279 100644 --- a/x-pack/plugins/observability/public/hooks/slo/use_fetch_slo_list.ts +++ b/x-pack/plugins/observability/public/hooks/slo/use_fetch_slo_list.ts @@ -20,10 +20,10 @@ import { useKibana } from '../../utils/kibana_react'; import { sloKeys } from './query_key_factory'; interface SLOListParams { - name?: string; + kqlQuery?: string; page?: number; sortBy?: string; - indicatorTypes?: string[]; + sortDirection?: 'asc' | 'desc'; shouldRefetch?: boolean; } @@ -43,10 +43,10 @@ const SHORT_REFETCH_INTERVAL = 1000 * 5; // 5 seconds const LONG_REFETCH_INTERVAL = 1000 * 60; // 1 minute export function useFetchSloList({ - name = '', + kqlQuery = '', page = 1, - sortBy = 'creationTime', - indicatorTypes = [], + sortBy = 'status', + sortDirection = 'desc', shouldRefetch, }: SLOListParams | undefined = {}): UseFetchSloListResponse { const { @@ -61,18 +61,15 @@ export function useFetchSloList({ const { isInitialLoading, isLoading, isError, isSuccess, isRefetching, data, refetch } = useQuery( { - queryKey: sloKeys.list({ name, page, sortBy, indicatorTypes }), + queryKey: sloKeys.list({ kqlQuery, page, sortBy, sortDirection }), queryFn: async ({ signal }) => { try { const response = await http.get(`/api/observability/slos`, { query: { - ...(page && { page }), - ...(name && { name }), + ...(kqlQuery && { kqlQuery }), ...(sortBy && { sortBy }), - ...(indicatorTypes && - indicatorTypes.length > 0 && { - indicatorTypes: indicatorTypes.join(','), - }), + ...(sortDirection && { sortDirection }), + ...(page && { page }), }, signal, }); diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/common/data_preview_chart.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/common/data_preview_chart.tsx index 437bf89151555a..fe21c4c6c4402c 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/common/data_preview_chart.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/common/data_preview_chart.tsx @@ -13,12 +13,15 @@ import { EuiIcon, EuiLoadingChart, EuiPanel, + EuiSpacer, + EuiTitle, } from '@elastic/eui'; import numeral from '@elastic/numeral'; import { i18n } from '@kbn/i18n'; import moment from 'moment'; import React from 'react'; import { useFormContext } from 'react-hook-form'; +import { FormattedMessage } from '@kbn/i18n-react'; import { useKibana } from '../../../../utils/kibana_react'; import { useDebouncedGetPreviewData } from '../../hooks/use_preview'; import { useSectionFormValidation } from '../../hooks/use_section_form_validation'; @@ -45,14 +48,25 @@ export function DataPreviewChart() { const baseTheme = charts.theme.useChartsBaseTheme(); const dateFormat = uiSettings.get('dateFormat'); const percentFormat = uiSettings.get('format:percent:defaultPattern'); - const panelLabel = i18n.translate('xpack.observability.slo.sloEdit.dataPreviewChart.panelLabel', { - defaultMessage: 'SLI preview', - }); + const title = ( + <> + +

+ +

+
+ + + ); if (!isIndicatorSectionValid) { return ( - + {title} + @@ -73,7 +87,8 @@ export function DataPreviewChart() { return ( - + {title} + {(isPreviewLoading || isError) && ( diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/custom_metric_type_form.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/custom_metric_type_form.tsx index 74a2a8d701adfd..e9a96fbc0c9290 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/custom_metric_type_form.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/custom_metric_type_form.tsx @@ -11,12 +11,15 @@ import { EuiFlexGroup, EuiFlexItem, EuiFormRow, + EuiHorizontalRule, EuiIconTip, - EuiPanel, + EuiSpacer, + EuiTitle, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React from 'react'; import { Controller, useFormContext } from 'react-hook-form'; +import { FormattedMessage } from '@kbn/i18n-react'; import { useFetchIndexPatternFields } from '../../../../hooks/slo/use_fetch_index_pattern_fields'; import { createOptionsFromFields } from '../../helpers/create_options'; import { CreateSLOForm } from '../../types'; @@ -36,186 +39,150 @@ export function CustomMetricIndicatorTypeForm() { const timestampFields = (indexFields ?? []).filter((field) => field.type === 'date'); return ( - - - - - + <> + +

+ +

+
+ + + + + + + + + ( + { + if (selected.length) { + return field.onChange(selected[0].value); + } + + field.onChange(''); + }} + options={createOptionsFromFields(timestampFields)} + selectedOptions={ + !!watch('indicator.params.index') && + !!field.value && + timestampFields.some((timestampField) => timestampField.name === field.value) + ? [ + { + value: field.value, + label: field.value, + 'data-test-subj': `customMetricIndicatorFormTimestampFieldSelectedValue`, + }, + ] + : [] + } + singleSelection={{ asPlainText: true }} + /> + )} + /> + + + + - - ( - { - if (selected.length) { - return field.onChange(selected[0].value); - } - - field.onChange(''); - }} - options={createOptionsFromFields(timestampFields)} - selectedOptions={ - !!watch('indicator.params.index') && - !!field.value && - timestampFields.some((timestampField) => timestampField.name === field.value) - ? [ - { - value: field.value, - label: field.value, - 'data-test-subj': `customMetricIndicatorFormTimestampFieldSelectedValue`, - }, - ] - : [] + name="indicator.params.filter" + placeholder={i18n.translate( + 'xpack.observability.slo.sloEdit.sliType.customMetric.customFilter', + { defaultMessage: 'Custom filter to apply on the index' } + )} + tooltip={ + - )} - /> - + )} + position="top" + /> + } + /> - - - - } - /> - - - - } - equationTooltip={ - - } - /> - - - - } - equationTooltip={ - - } - /> - - -
+ + + + + + +

+ +

+
+ + +
+ + + + + + + +

+ +

+
+ + +
+ + + + + + +
+ ); } diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/metric_indicator.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/metric_indicator.tsx index cc6f935256516b..794726db2c711a 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/metric_indicator.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/metric_indicator.tsx @@ -19,7 +19,7 @@ import { import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { first, range, xor } from 'lodash'; -import React, { ReactNode } from 'react'; +import React from 'react'; import { Controller, useFieldArray, useFormContext } from 'react-hook-form'; import { Field } from '../../../../hooks/slo/use_fetch_index_pattern_fields'; import { createOptionsFromFields } from '../../helpers/create_options'; @@ -30,11 +30,6 @@ interface MetricIndicatorProps { type: 'good' | 'total'; indexFields: Field[] | undefined; isLoadingIndex: boolean; - metricLabel: string; - filterLabel: string; - equationLabel: string; - metricTooltip: ReactNode; - equationTooltip: ReactNode; } export const NEW_CUSTOM_METRIC = { name: 'A', aggregation: 'sum' as const, field: '' }; @@ -54,16 +49,47 @@ function createEquationFromMetric(names: string[]) { const SUPPORTED_FIELD_TYPES = ['number', 'histogram']; -export function MetricIndicator({ - type, - indexFields, - isLoadingIndex, - metricLabel, - filterLabel, - equationLabel, - metricTooltip, - equationTooltip, -}: MetricIndicatorProps) { +export function MetricIndicator({ type, indexFields, isLoadingIndex }: MetricIndicatorProps) { + const metricLabel = i18n.translate( + 'xpack.observability.slo.sloEdit.sliType.customMetric.metricLabel', + { defaultMessage: 'Metric' } + ); + + const filterLabel = i18n.translate( + 'xpack.observability.slo.sloEdit.sliType.customMetric.filterLabel', + { defaultMessage: 'Filter' } + ); + + const metricTooltip = ( + + ); + + const equationLabel = i18n.translate( + 'xpack.observability.slo.sloEdit.sliType.customMetric.equationLabel', + { defaultMessage: 'Equation' } + ); + + const equationTooltip = ( + + ); + const { control, watch, setValue, register } = useFormContext(); const metricFields = (indexFields ?? []).filter((field) => SUPPORTED_FIELD_TYPES.includes(field.type) diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/histogram/histogram_indicator_type_form.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/histogram/histogram_indicator_type_form.tsx index 36601b4a072db3..323cd48a67cc0f 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/histogram/histogram_indicator_type_form.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/histogram/histogram_indicator_type_form.tsx @@ -11,6 +11,7 @@ import { EuiFlexGroup, EuiFlexItem, EuiFormRow, + EuiHorizontalRule, EuiIconTip, EuiSpacer, EuiTitle, @@ -35,118 +36,135 @@ export function HistogramIndicatorTypeForm() { const timestampFields = (indexFields ?? []).filter((field) => field.type === 'date'); return ( - - - - - - - - ( - { - if (selected.length) { - return field.onChange(selected[0].value); + <> + +

+ +

+
+ + + + + + + + + ( + { + if (selected.length) { + return field.onChange(selected[0].value); + } + + field.onChange(''); + }} + options={createOptionsFromFields(timestampFields)} + selectedOptions={ + !!index && + !!field.value && + timestampFields.some((timestampField) => timestampField.name === field.value) + ? [{ value: field.value, label: field.value }] + : [] } + singleSelection={{ asPlainText: true }} + /> + )} + /> + + + - field.onChange(''); - }} - options={createOptionsFromFields(timestampFields)} - selectedOptions={ - !!index && - !!field.value && - timestampFields.some((timestampField) => timestampField.name === field.value) - ? [{ value: field.value, label: field.value }] - : [] + + - )} - /> -
+ )} + position="top" + /> + } + /> +
+ + + + + +

+ +

+
+ + +
+ + + + + +

+ +

+
+ + +
+ + +
- - - - } - /> - - - - -

- -

-
- - -
- - - -

- -

-
- - -
- - -
+ ); } 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 ac52e9f36bf764..d218eeda7f0ed2 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 @@ -11,7 +11,7 @@ import { rollingTimeWindowTypeSchema, SLOWithSummaryResponse } from '@kbn/slo-sc import { euiLightVars } from '@kbn/ui-theme'; import moment from 'moment'; import React from 'react'; -import { toMomentUnitOfTime } from '../../../../utils/slo/duration'; +import { toCalendarAlignedMomentUnitOfTime } from '../../../../utils/slo/duration'; import { toDurationLabel } from '../../../../utils/slo/labels'; export interface Props { @@ -34,11 +34,11 @@ export function SloTimeWindowBadge({ slo }: Props) { ); } - const unitMoment = toMomentUnitOfTime(unit); + const unitMoment = toCalendarAlignedMomentUnitOfTime(unit); const now = moment.utc(); - const periodStart = now.clone().startOf(unitMoment!); - const periodEnd = now.clone().endOf(unitMoment!); + const periodStart = now.clone().startOf(unitMoment); + const periodEnd = now.clone().endOf(unitMoment); const totalDurationInDays = periodEnd.diff(periodStart, 'days') + 1; const elapsedDurationInDays = now.diff(periodStart, 'days') + 1; diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_list.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_list.tsx index 0efab27b0ebdf7..9e1db8c019381f 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_list.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_list.tsx @@ -5,18 +5,12 @@ * 2.0. */ -import React, { useMemo, useState } from 'react'; import { EuiFlexGroup, EuiFlexItem, EuiPagination } from '@elastic/eui'; -import { debounce } from 'lodash'; import { useIsMutating } from '@tanstack/react-query'; - +import React, { useState } from 'react'; import { useFetchSloList } from '../../../hooks/slo/use_fetch_slo_list'; -import { - FilterType, - SloListSearchFilterSortBar, - SortType, -} from './slo_list_search_filter_sort_bar'; import { SloListItems } from './slo_list_items'; +import { SloListSearchFilterSortBar, SortField } from './slo_list_search_filter_sort_bar'; export interface Props { autoRefresh: boolean; @@ -24,16 +18,14 @@ export interface Props { export function SloList({ autoRefresh }: Props) { const [activePage, setActivePage] = useState(0); - const [query, setQuery] = useState(''); - const [sort, setSort] = useState('creationTime'); - const [indicatorTypeFilter, setIndicatorTypeFilter] = useState([]); + const [sort, setSort] = useState('status'); const { isInitialLoading, isLoading, isRefetching, isError, sloList, refetch } = useFetchSloList({ page: activePage + 1, - name: query, + kqlQuery: query, sortBy: sort, - indicatorTypes: indicatorTypeFilter, + sortDirection: 'desc', shouldRefetch: autoRefresh, }); @@ -49,20 +41,16 @@ export function SloList({ autoRefresh }: Props) { refetch(); }; - const handleChangeQuery = useMemo( - () => - debounce((e: React.ChangeEvent) => { - setQuery(e.target.value); - }, 300), - [] - ); - - const handleChangeSort = (newSort: SortType) => { - setSort(newSort); + const handleChangeQuery = (newQuery: string) => { + setActivePage(0); + setQuery(newQuery); + refetch(); }; - const handleChangeIndicatorTypeFilter = (newFilter: FilterType[]) => { - setIndicatorTypeFilter(newFilter); + const handleChangeSort = (newSort: SortField | undefined) => { + setActivePage(0); + setSort(newSort); + refetch(); }; return ( @@ -80,7 +68,6 @@ export function SloList({ autoRefresh }: Props) { } onChangeQuery={handleChangeQuery} onChangeSort={handleChangeSort} - onChangeIndicatorTypeFilter={handleChangeIndicatorTypeFilter} />
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 374b64b5674040..f352eef42794c0 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 @@ -5,8 +5,6 @@ * 2.0. */ -import React, { useState } from 'react'; -import { useQueryClient } from '@tanstack/react-query'; import { EuiButtonIcon, EuiContextMenuItem, @@ -19,27 +17,29 @@ import { EuiText, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; - import { HistoricalSummaryResponse, SLOWithSummaryResponse } from '@kbn/slo-schema'; import type { Rule } from '@kbn/triggers-actions-ui-plugin/public'; +import { useQueryClient } from '@tanstack/react-query'; +import React, { useState } from 'react'; +import { rulesLocatorID, sloFeatureId } from '../../../../common'; +import { SLO_BURN_RATE_RULE_TYPE_ID } from '../../../../common/constants'; import { sloKeys } from '../../../hooks/slo/query_key_factory'; import { useCapabilities } from '../../../hooks/slo/use_capabilities'; -import { useKibana } from '../../../utils/kibana_react'; import { useCloneSlo } from '../../../hooks/slo/use_clone_slo'; +import { useDeleteSlo } from '../../../hooks/slo/use_delete_slo'; +import type { ActiveAlerts } from '../../../hooks/slo/use_fetch_active_alerts'; +import type { SloRule } from '../../../hooks/slo/use_fetch_rules_for_slo'; import { useGetFilteredRuleTypes } from '../../../hooks/use_get_filtered_rule_types'; -import { SloSummary } from './slo_summary'; -import { SloDeleteConfirmationModal } from './slo_delete_confirmation_modal'; -import { SloBadges } from './badges/slo_badges'; +import type { RulesParams } from '../../../locators/rules'; +import { paths } from '../../../routes/paths'; +import { useKibana } from '../../../utils/kibana_react'; import { - transformSloResponseToCreateSloForm, transformCreateSLOFormToCreateSLOInput, + transformSloResponseToCreateSloForm, } from '../../slo_edit/helpers/process_slo_form_values'; -import { SLO_BURN_RATE_RULE_TYPE_ID } from '../../../../common/constants'; -import { rulesLocatorID, sloFeatureId } from '../../../../common'; -import { paths } from '../../../routes/paths'; -import type { ActiveAlerts } from '../../../hooks/slo/use_fetch_active_alerts'; -import type { SloRule } from '../../../hooks/slo/use_fetch_rules_for_slo'; -import type { RulesParams } from '../../../locators/rules'; +import { SloBadges } from './badges/slo_badges'; +import { SloDeleteConfirmationModal } from './slo_delete_confirmation_modal'; +import { SloSummary } from './slo_summary'; export interface SloListItemProps { slo: SLOWithSummaryResponse; @@ -47,7 +47,6 @@ export interface SloListItemProps { historicalSummary?: HistoricalSummaryResponse[]; historicalSummaryLoading: boolean; activeAlerts?: ActiveAlerts; - onConfirmDelete: (slo: SLOWithSummaryResponse) => void; } export function SloListItem({ @@ -56,7 +55,6 @@ export function SloListItem({ historicalSummary = [], historicalSummaryLoading, activeAlerts, - onConfirmDelete, }: SloListItemProps) { const { application: { navigateToUrl }, @@ -72,6 +70,7 @@ export function SloListItem({ const filteredRuleTypes = useGetFilteredRuleTypes(); const { mutate: cloneSlo } = useCloneSlo(); + const { mutate: deleteSlo } = useDeleteSlo(); const [isActionsPopoverOpen, setIsActionsPopoverOpen] = useState(false); const [isAddRuleFlyoutOpen, setIsAddRuleFlyoutOpen] = useState(false); @@ -100,15 +99,7 @@ export function SloListItem({ const handleNavigateToRules = async () => { const locator = locators.get(rulesLocatorID); - - locator?.navigate( - { - params: { sloId: slo.id }, - }, - { - replace: false, - } - ); + locator?.navigate({ params: { sloId: slo.id } }, { replace: false }); }; const handleClone = () => { @@ -127,7 +118,7 @@ export function SloListItem({ const handleDeleteConfirm = () => { setDeleteConfirmationModalOpen(false); - onConfirmDelete(slo); + deleteSlo({ id: slo.id, name: slo.name }); }; const handleDeleteCancel = () => { diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_list_items.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_list_items.tsx index 2eb790e404b30e..32828685faf620 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_list_items.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_list_items.tsx @@ -4,17 +4,15 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import React from 'react'; import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; - import type { SLOWithSummaryResponse } from '@kbn/slo-schema'; +import React from 'react'; import { useFetchActiveAlerts } from '../../../hooks/slo/use_fetch_active_alerts'; -import { useFetchRulesForSlo } from '../../../hooks/slo/use_fetch_rules_for_slo'; import { useFetchHistoricalSummary } from '../../../hooks/slo/use_fetch_historical_summary'; -import { useDeleteSlo } from '../../../hooks/slo/use_delete_slo'; -import { SloListItem } from './slo_list_item'; +import { useFetchRulesForSlo } from '../../../hooks/slo/use_fetch_rules_for_slo'; import { SloListEmpty } from './slo_list_empty'; import { SloListError } from './slo_list_error'; +import { SloListItem } from './slo_list_item'; export interface Props { sloList: SLOWithSummaryResponse[]; @@ -30,8 +28,6 @@ export function SloListItems({ sloList, loading, error }: Props) { const { isLoading: historicalSummaryLoading, data: historicalSummaryBySlo } = useFetchHistoricalSummary({ sloIds }); - const { mutate: deleteSlo } = useDeleteSlo(); - if (!loading && !error && sloList.length === 0) { return ; } @@ -39,10 +35,6 @@ export function SloListItems({ sloList, loading, error }: Props) { return ; } - const handleDelete = (slo: SLOWithSummaryResponse) => { - deleteSlo({ id: slo.id, name: slo.name }); - }; - return ( {sloList.map((slo) => ( @@ -53,7 +45,6 @@ export function SloListItems({ sloList, loading, error }: Props) { historicalSummary={historicalSummaryBySlo?.[slo.id]} historicalSummaryLoading={historicalSummaryLoading} slo={slo} - onConfirmDelete={handleDelete} />
))} diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_list_search_filter_sort_bar.stories.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_list_search_filter_sort_bar.stories.tsx index b5d7e26fe416bf..4b1c31209de3bc 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_list_search_filter_sort_bar.stories.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_list_search_filter_sort_bar.stories.tsx @@ -28,7 +28,6 @@ const defaultProps: SloListSearchFilterSortBarProps = { loading: false, onChangeQuery: () => {}, onChangeSort: () => {}, - onChangeIndicatorTypeFilter: () => {}, }; export const SloListSearchFilterSortBar = Template.bind({}); 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 89bc65a8da8e5c..8a9b22c6b5c7fc 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 @@ -6,7 +6,6 @@ */ import { - EuiFieldSearch, EuiFilterButton, EuiFilterGroup, EuiFlexGroup, @@ -18,29 +17,18 @@ import { } from '@elastic/eui'; import { EuiSelectableOptionCheckedType } from '@elastic/eui/src/components/selectable/selectable_option'; import { i18n } from '@kbn/i18n'; -import React, { useEffect, useState } from 'react'; -import { - INDICATOR_APM_AVAILABILITY, - INDICATOR_APM_LATENCY, - INDICATOR_CUSTOM_KQL, - INDICATOR_CUSTOM_METRIC, - INDICATOR_HISTOGRAM, -} from '../../../utils/slo/labels'; +import { QueryStringInput } from '@kbn/unified-search-plugin/public'; +import React, { useState } from 'react'; +import { useCreateDataView } from '../../../hooks/use_create_data_view'; +import { useKibana } from '../../../utils/kibana_react'; export interface SloListSearchFilterSortBarProps { loading: boolean; - onChangeQuery: (e: React.ChangeEvent) => void; - onChangeSort: (sort: SortType) => void; - onChangeIndicatorTypeFilter: (filter: FilterType[]) => void; + onChangeQuery: (query: string) => void; + onChangeSort: (sort: SortField | undefined) => void; } -export type SortType = 'creationTime' | 'indicatorType'; -export type FilterType = - | 'sli.apm.transactionDuration' - | 'sli.apm.transactionErrorRate' - | 'sli.kql.custom' - | 'sli.metric.custom' - | 'sli.histogram.custom'; +export type SortField = 'sli_value' | 'error_budget_consumed' | 'error_budget_remaining' | 'status'; export type Item = EuiSelectableOption & { label: string; @@ -48,42 +36,31 @@ export type Item = EuiSelectableOption & { checked?: EuiSelectableOptionCheckedType; }; -const SORT_OPTIONS: Array> = [ +const SORT_OPTIONS: Array> = [ { - label: i18n.translate('xpack.observability.slo.list.sortBy.creationTime', { - defaultMessage: 'Creation time', + label: i18n.translate('xpack.observability.slo.list.sortBy.sliValue', { + defaultMessage: 'SLI value', }), - type: 'creationTime', - checked: 'on', + type: 'sli_value', }, { - label: i18n.translate('xpack.observability.slo.list.sortBy.indicatorType', { - defaultMessage: 'Indicator type', + label: i18n.translate('xpack.observability.slo.list.sortBy.sloStatus', { + defaultMessage: 'SLO status', }), - type: 'indicatorType', - }, -]; - -const INDICATOR_TYPE_OPTIONS: Array> = [ - { - label: INDICATOR_APM_LATENCY, - type: 'sli.apm.transactionDuration', - }, - { - label: INDICATOR_APM_AVAILABILITY, - type: 'sli.apm.transactionErrorRate', - }, - { - label: INDICATOR_CUSTOM_KQL, - type: 'sli.kql.custom', + type: 'status', + checked: 'on', }, { - label: INDICATOR_CUSTOM_METRIC, - type: 'sli.metric.custom', + label: i18n.translate('xpack.observability.slo.list.sortBy.errorBudgetConsumed', { + defaultMessage: 'Error budget consumed', + }), + type: 'error_budget_consumed', }, { - label: INDICATOR_HISTOGRAM, - type: 'sli.histogram.custom', + label: i18n.translate('xpack.observability.slo.list.sortBy.errorBudgetRemaining', { + defaultMessage: 'Error budget remaining', + }), + type: 'error_budget_remaining', }, ]; @@ -91,96 +68,60 @@ export function SloListSearchFilterSortBar({ loading, onChangeQuery, onChangeSort, - onChangeIndicatorTypeFilter, }: SloListSearchFilterSortBarProps) { - const [isFilterPopoverOpen, setFilterPopoverOpen] = useState(false); - const [isSortPopoverOpen, setSortPopoverOpen] = useState(false); + const { data, dataViews, docLinks, http, notifications, storage, uiSettings, unifiedSearch } = + useKibana().services; + const { dataView } = useCreateDataView({ indexPatternString: '.slo-observability.summary-*' }); + const [isSortPopoverOpen, setSortPopoverOpen] = useState(false); const [sortOptions, setSortOptions] = useState(SORT_OPTIONS); - const [indicatorTypeOptions, setIndicatorTypeOptions] = useState(INDICATOR_TYPE_OPTIONS); + const [query, setQuery] = useState(''); const selectedSort = sortOptions.find((option) => option.checked === 'on'); - const selectedIndicatorTypeFilter = indicatorTypeOptions.filter( - (option) => option.checked === 'on' - ); - - const handleToggleFilterButton = () => setFilterPopoverOpen(!isFilterPopoverOpen); const handleToggleSortButton = () => setSortPopoverOpen(!isSortPopoverOpen); - const handleChangeSort = (newOptions: Array>) => { + const handleChangeSort = (newOptions: Array>) => { setSortOptions(newOptions); setSortPopoverOpen(false); + onChangeSort(newOptions.find((o) => o.checked)?.type); }; - const handleChangeIndicatorTypeOptions = (newOptions: Array>) => { - setIndicatorTypeOptions(newOptions); - onChangeIndicatorTypeFilter( - newOptions.filter((option) => option.checked === 'on').map((option) => option.type) - ); - }; - - useEffect(() => { - if (selectedSort?.type === 'creationTime' || selectedSort?.type === 'indicatorType') { - onChangeSort(selectedSort.type); - } - }, [onChangeSort, selectedSort]); - return ( - onChangeQuery(query)} + disableLanguageSwitcher + isDisabled={loading} + indexPatterns={dataView ? [dataView] : []} placeholder={i18n.translate('xpack.observability.slo.list.search', { - defaultMessage: 'Search', + defaultMessage: 'Search your SLOs...', })} + query={{ query: String(query), language: 'kuery' }} + size="s" + onChange={(value) => setQuery(String(value.query))} /> - - - - {i18n.translate('xpack.observability.slo.list.indicatorTypeFilter', { - defaultMessage: 'Indicator type', - })} - - } - isOpen={isFilterPopoverOpen} - closePopover={handleToggleFilterButton} - panelPaddingSize="none" - anchorPosition="downCenter" - > -
- - {i18n.translate('xpack.observability.slo.list.indicatorTypeFilter', { - defaultMessage: 'Indicator type', - })} - - > - options={indicatorTypeOptions} - onChange={handleChangeIndicatorTypeOptions} - > - {(list) => list} - -
-
-
-
- - + - > + > singleSelection options={sortOptions} onChange={handleChangeSort} + isLoading={loading} > {(list) => list} diff --git a/x-pack/plugins/observability/public/pages/slos/slos.test.tsx b/x-pack/plugins/observability/public/pages/slos/slos.test.tsx index 0435a66439222e..7f85774f69300d 100644 --- a/x-pack/plugins/observability/public/pages/slos/slos.test.tsx +++ b/x-pack/plugins/observability/public/pages/slos/slos.test.tsx @@ -69,6 +69,20 @@ const mockKibana = () => { services: { application: { navigateToUrl: mockNavigate }, charts: chartPluginMock.createSetupContract(), + data: { + dataViews: { + find: jest.fn().mockReturnValue([]), + get: jest.fn().mockReturnValue([]), + }, + }, + dataViews: { + create: jest.fn().mockResolvedValue(42), + }, + docLinks: { + links: { + query: {}, + }, + }, http: { basePath: { prepend: (url: string) => url, @@ -87,6 +101,9 @@ const mockKibana = () => { }, }, }, + storage: { + get: () => {}, + }, triggersActionsUi: { getAddRuleFlyout: mockGetAddRuleFlyout }, uiSettings: { get: (settings: string) => { @@ -95,6 +112,11 @@ const mockKibana = () => { return ''; }, }, + unifiedSearch: { + autocomplete: { + hasQuerySuggestions: () => {}, + }, + }, }, }); }; diff --git a/x-pack/plugins/observability/public/pages/slos/slos.tsx b/x-pack/plugins/observability/public/pages/slos/slos.tsx index c2a07a01e0fa15..613e10b862abf3 100644 --- a/x-pack/plugins/observability/public/pages/slos/slos.tsx +++ b/x-pack/plugins/observability/public/pages/slos/slos.tsx @@ -31,8 +31,7 @@ export function SlosPage() { const { hasAtLeast } = useLicense(); const { isInitialLoading, isLoading, isError, sloList } = useFetchSloList(); - - const { total } = sloList || {}; + const { total } = sloList || { total: 0 }; const [isAutoRefreshing, setIsAutoRefreshing] = useState(true); diff --git a/x-pack/plugins/observability/public/typings/slo/index.ts b/x-pack/plugins/observability/public/typings/slo/index.ts index 3b02b76ecacc29..1bc3d7f8de69db 100644 --- a/x-pack/plugins/observability/public/typings/slo/index.ts +++ b/x-pack/plugins/observability/public/typings/slo/index.ts @@ -7,7 +7,7 @@ import { RuleTypeParams } from '@kbn/alerting-plugin/common'; -type DurationUnit = 'm' | 'h' | 'd' | 'w' | 'M' | 'Y'; +type DurationUnit = 'm' | 'h' | 'd' | 'w' | 'M'; interface Duration { value: number; diff --git a/x-pack/plugins/observability/public/utils/slo/duration.ts b/x-pack/plugins/observability/public/utils/slo/duration.ts index 2be1a51a69eab8..4e643261169795 100644 --- a/x-pack/plugins/observability/public/utils/slo/duration.ts +++ b/x-pack/plugins/observability/public/utils/slo/duration.ts @@ -28,24 +28,17 @@ export function toMinutes(duration: Duration) { return duration.value * 7 * 24 * 60; case 'M': return duration.value * 30 * 24 * 60; - case 'Y': - return duration.value * 365 * 24 * 60; + default: + assertNever(duration.unit); } - - assertNever(duration.unit); } -export function toMomentUnitOfTime(unit: string): moment.unitOfTime.Diff | undefined { +export function toCalendarAlignedMomentUnitOfTime(unit: string): moment.unitOfTime.StartOf { switch (unit) { - case 'd': - return 'days'; + default: case 'w': - return 'weeks'; + return 'isoWeek'; case 'M': return 'months'; - case 'Q': - return 'quarters'; - case 'Y': - return 'years'; } } diff --git a/x-pack/plugins/observability/public/utils/slo/labels.ts b/x-pack/plugins/observability/public/utils/slo/labels.ts index 43384539f2a849..40c58e624bb2b9 100644 --- a/x-pack/plugins/observability/public/utils/slo/labels.ts +++ b/x-pack/plugins/observability/public/utils/slo/labels.ts @@ -112,13 +112,6 @@ export function toDurationLabel(durationStr: string): string { duration: duration.value, }, }); - case 'Y': - return i18n.translate('xpack.observability.slo.duration.year', { - defaultMessage: '{duration, plural, one {1 year} other {# years}}', - values: { - duration: duration.value, - }, - }); } } @@ -146,9 +139,5 @@ export function toDurationAdverbLabel(durationStr: string): string { return i18n.translate('xpack.observability.slo.duration.monthly', { defaultMessage: 'Monthly', }); - case 'Y': - return i18n.translate('xpack.observability.slo.duration.yearly', { - defaultMessage: 'Yearly', - }); } } diff --git a/x-pack/plugins/observability/server/assets/component_templates/slo_mappings_template.ts b/x-pack/plugins/observability/server/assets/component_templates/slo_mappings_template.ts index 6dec5baf58faf3..f790a1bfe0a543 100644 --- a/x-pack/plugins/observability/server/assets/component_templates/slo_mappings_template.ts +++ b/x-pack/plugins/observability/server/assets/component_templates/slo_mappings_template.ts @@ -5,6 +5,8 @@ * 2.0. */ +import { SLO_RESOURCES_VERSION } from '../constants'; + export const getSLOMappingsTemplate = (name: string) => ({ name, template: { @@ -14,6 +16,31 @@ export const getSLOMappingsTemplate = (name: string) => ({ type: 'date', format: 'date_optional_time||epoch_millis', }, + // APM service and transaction specific fields + service: { + properties: { + name: { + type: 'keyword', + ignore_above: 256, + }, + environment: { + type: 'keyword', + ignore_above: 256, + }, + }, + }, + transaction: { + properties: { + name: { + type: 'keyword', + ignore_above: 256, + }, + type: { + type: 'keyword', + ignore_above: 256, + }, + }, + }, slo: { properties: { id: { @@ -23,6 +50,53 @@ export const getSLOMappingsTemplate = (name: string) => ({ revision: { type: 'long', }, + instanceId: { + type: 'keyword', + ignore_above: 256, + }, + name: { + type: 'keyword', + ignore_above: 256, + }, + description: { + type: 'keyword', + ignore_above: 256, + }, + tags: { + type: 'keyword', + ignore_above: 256, + }, + indicator: { + properties: { + type: { + type: 'keyword', + ignore_above: 256, + }, + }, + }, + objective: { + properties: { + target: { + type: 'double', + }, + sliceDurationInSeconds: { + type: 'long', + }, + }, + }, + budgetingMethod: { + type: 'keyword', + }, + timeWindow: { + properties: { + duration: { + type: 'keyword', + }, + type: { + type: 'keyword', + }, + }, + }, numerator: { type: 'long', }, @@ -32,9 +106,6 @@ export const getSLOMappingsTemplate = (name: string) => ({ isGoodSlice: { type: 'byte', }, - context: { - type: 'flattened', - }, }, }, }, @@ -42,7 +113,7 @@ export const getSLOMappingsTemplate = (name: string) => ({ }, _meta: { description: 'Mappings for SLO rollup data', - version: 1, + version: SLO_RESOURCES_VERSION, managed: true, managed_by: 'observability', }, diff --git a/x-pack/plugins/observability/server/assets/component_templates/slo_settings_template.ts b/x-pack/plugins/observability/server/assets/component_templates/slo_settings_template.ts index f4e4c650031797..8832c51e030be0 100644 --- a/x-pack/plugins/observability/server/assets/component_templates/slo_settings_template.ts +++ b/x-pack/plugins/observability/server/assets/component_templates/slo_settings_template.ts @@ -5,6 +5,8 @@ * 2.0. */ +import { SLO_RESOURCES_VERSION } from '../constants'; + export const getSLOSettingsTemplate = (name: string) => ({ name, template: { @@ -14,7 +16,7 @@ export const getSLOSettingsTemplate = (name: string) => ({ }, _meta: { description: 'Settings for SLO rollup data', - version: 1, + version: SLO_RESOURCES_VERSION, managed: true, managed_by: 'observability', }, diff --git a/x-pack/plugins/observability/server/assets/component_templates/slo_summary_mappings_template.ts b/x-pack/plugins/observability/server/assets/component_templates/slo_summary_mappings_template.ts new file mode 100644 index 00000000000000..4a3a53a4725ef1 --- /dev/null +++ b/x-pack/plugins/observability/server/assets/component_templates/slo_summary_mappings_template.ts @@ -0,0 +1,128 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SLO_RESOURCES_VERSION } from '../constants'; + +export const getSLOSummaryMappingsTemplate = (name: string) => ({ + name, + template: { + mappings: { + properties: { + // APM service and transaction specific fields + service: { + properties: { + name: { + type: 'keyword', + ignore_above: 256, + }, + environment: { + type: 'keyword', + ignore_above: 256, + }, + }, + }, + transaction: { + properties: { + name: { + type: 'keyword', + ignore_above: 256, + }, + type: { + type: 'keyword', + ignore_above: 256, + }, + }, + }, + slo: { + properties: { + id: { + type: 'keyword', + ignore_above: 256, + }, + revision: { + type: 'long', + }, + instanceId: { + type: 'keyword', + ignore_above: 256, + }, + name: { + type: 'keyword', + ignore_above: 256, + }, + description: { + type: 'keyword', + ignore_above: 256, + }, + tags: { + type: 'keyword', + ignore_above: 256, + }, + indicator: { + properties: { + type: { + type: 'keyword', + ignore_above: 256, + }, + }, + }, + budgetingMethod: { + type: 'keyword', + }, + timeWindow: { + properties: { + duration: { + type: 'keyword', + }, + type: { + type: 'keyword', + }, + }, + }, + }, + }, + sliValue: { + type: 'double', + }, + goodEvents: { + type: 'long', + }, + totalEvents: { + type: 'long', + }, + errorBudgetInitial: { + type: 'double', + }, + errorBudgetConsumed: { + type: 'double', + }, + errorBudgetRemaining: { + type: 'double', + }, + errorBudgetEstimated: { + type: 'boolean', + }, + statusCode: { + type: 'byte', + }, + status: { + type: 'keyword', + ignore_above: 32, + }, + isTempDoc: { + type: 'boolean', + }, + }, + }, + }, + _meta: { + description: 'SLO summary mappings template', + version: SLO_RESOURCES_VERSION, + managed: true, + managed_by: 'observability', + }, +}); diff --git a/x-pack/plugins/observability/server/assets/component_templates/slo_summary_settings_template.ts b/x-pack/plugins/observability/server/assets/component_templates/slo_summary_settings_template.ts new file mode 100644 index 00000000000000..9224e532549dd8 --- /dev/null +++ b/x-pack/plugins/observability/server/assets/component_templates/slo_summary_settings_template.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SLO_RESOURCES_VERSION } from '../constants'; + +export const getSLOSummarySettingsTemplate = (name: string) => ({ + name, + template: { + settings: { + hidden: true, + }, + }, + _meta: { + description: 'SLO summary settings template', + version: SLO_RESOURCES_VERSION, + managed: true, + managed_by: 'observability', + }, +}); diff --git a/x-pack/plugins/observability/server/assets/constants.ts b/x-pack/plugins/observability/server/assets/constants.ts index 76543a27b62660..04161ba9303106 100644 --- a/x-pack/plugins/observability/server/assets/constants.ts +++ b/x-pack/plugins/observability/server/assets/constants.ts @@ -5,13 +5,32 @@ * 2.0. */ +export const SLO_RESOURCES_VERSION = 2; + export const SLO_COMPONENT_TEMPLATE_MAPPINGS_NAME = '.slo-observability.sli-mappings'; export const SLO_COMPONENT_TEMPLATE_SETTINGS_NAME = '.slo-observability.sli-settings'; + export const SLO_INDEX_TEMPLATE_NAME = '.slo-observability.sli'; -export const SLO_RESOURCES_VERSION = 1; -export const SLO_INGEST_PIPELINE_NAME = `${SLO_INDEX_TEMPLATE_NAME}.monthly`; -export const SLO_DESTINATION_INDEX_NAME = `${SLO_INDEX_TEMPLATE_NAME}-v${SLO_RESOURCES_VERSION}`; -export const SLO_DESTINATION_INDEX_PATTERN = `${SLO_DESTINATION_INDEX_NAME}*`; +export const SLO_INDEX_TEMPLATE_PATTERN = `.slo-observability.sli-*`; + +export const SLO_DESTINATION_INDEX_NAME = `.slo-observability.sli-v${SLO_RESOURCES_VERSION}`; +export const SLO_DESTINATION_INDEX_PATTERN = `.slo-observability.sli-v${SLO_RESOURCES_VERSION}*`; + +export const SLO_INGEST_PIPELINE_NAME = `.slo-observability.sli.pipeline`; +// slo-observability.sli-v.(YYYY-MM-DD) +export const SLO_INGEST_PIPELINE_INDEX_NAME_PREFIX = `.slo-observability.sli-v${SLO_RESOURCES_VERSION}.`; + +export const SLO_SUMMARY_COMPONENT_TEMPLATE_MAPPINGS_NAME = '.slo-observability.summary-mappings'; +export const SLO_SUMMARY_COMPONENT_TEMPLATE_SETTINGS_NAME = '.slo-observability.summary-settings'; +export const SLO_SUMMARY_INDEX_TEMPLATE_NAME = '.slo-observability.summary'; +export const SLO_SUMMARY_INDEX_TEMPLATE_PATTERN = `.slo-observability.summary-*`; + +export const SLO_SUMMARY_TRANSFORM_NAME_PREFIX = 'slo-summary-'; +export const SLO_SUMMARY_DESTINATION_INDEX_NAME = `.slo-observability.summary-v${SLO_RESOURCES_VERSION}`; // store the temporary summary document generated by transform +export const SLO_SUMMARY_TEMP_INDEX_NAME = `.slo-observability.summary-v${SLO_RESOURCES_VERSION}.temp`; // store the temporary summary document +export const SLO_SUMMARY_DESTINATION_INDEX_PATTERN = `.slo-observability.summary-v${SLO_RESOURCES_VERSION}*`; // include temp and non-temp summary indices + +export const SLO_SUMMARY_INGEST_PIPELINE_NAME = `.slo-observability.summary.pipeline`; export const getSLOTransformId = (sloId: string, sloRevision: number) => `slo-${sloId}-${sloRevision}`; diff --git a/x-pack/plugins/observability/server/assets/index_templates/slo_index_templates.ts b/x-pack/plugins/observability/server/assets/index_templates/slo_index_templates.ts index adc6c47a1e2599..fc9ed97f95cf8c 100644 --- a/x-pack/plugins/observability/server/assets/index_templates/slo_index_templates.ts +++ b/x-pack/plugins/observability/server/assets/index_templates/slo_index_templates.ts @@ -5,6 +5,8 @@ * 2.0. */ +import { SLO_RESOURCES_VERSION } from '../constants'; + export const getSLOIndexTemplate = (name: string, indexPattern: string, composedOf: string[]) => ({ name, index_patterns: [indexPattern], @@ -12,7 +14,7 @@ export const getSLOIndexTemplate = (name: string, indexPattern: string, composed priority: 500, _meta: { description: 'Template for SLO rollup data', - version: 1, + version: SLO_RESOURCES_VERSION, managed: true, managed_by: 'observability', }, diff --git a/x-pack/plugins/observability/server/assets/index_templates/slo_summary_index_templates.ts b/x-pack/plugins/observability/server/assets/index_templates/slo_summary_index_templates.ts new file mode 100644 index 00000000000000..a32c0d84169211 --- /dev/null +++ b/x-pack/plugins/observability/server/assets/index_templates/slo_summary_index_templates.ts @@ -0,0 +1,25 @@ +/* + * 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 { SLO_RESOURCES_VERSION } from '../constants'; + +export const getSLOSummaryIndexTemplate = ( + name: string, + indexPattern: string, + composedOf: string[] +) => ({ + name, + index_patterns: [indexPattern], + composed_of: composedOf, + priority: 500, + _meta: { + description: 'SLO summary index template', + version: SLO_RESOURCES_VERSION, + managed: true, + managed_by: 'observability', + }, +}); diff --git a/x-pack/plugins/observability/server/assets/ingest_templates/slo_pipeline_template.ts b/x-pack/plugins/observability/server/assets/ingest_templates/slo_pipeline_template.ts index c33e3400d60cdd..eafa7399a7c359 100644 --- a/x-pack/plugins/observability/server/assets/ingest_templates/slo_pipeline_template.ts +++ b/x-pack/plugins/observability/server/assets/ingest_templates/slo_pipeline_template.ts @@ -5,6 +5,8 @@ * 2.0. */ +import { SLO_RESOURCES_VERSION } from '../constants'; + export const getSLOPipelineTemplate = (id: string, indexNamePrefix: string) => ({ id, description: 'Monthly date-time index naming for SLO data', @@ -19,7 +21,7 @@ export const getSLOPipelineTemplate = (id: string, indexNamePrefix: string) => ( ], _meta: { description: 'SLO ingest pipeline', - version: 1, + version: SLO_RESOURCES_VERSION, managed: true, managed_by: 'observability', }, diff --git a/x-pack/plugins/observability/server/assets/ingest_templates/slo_summary_pipeline_template.ts b/x-pack/plugins/observability/server/assets/ingest_templates/slo_summary_pipeline_template.ts new file mode 100644 index 00000000000000..d3c8e04b93730f --- /dev/null +++ b/x-pack/plugins/observability/server/assets/ingest_templates/slo_summary_pipeline_template.ts @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { SLO_RESOURCES_VERSION } from '../constants'; + +export const getSLOSummaryPipelineTemplate = (id: string) => ({ + id, + description: 'SLO summary ingest pipeline', + processors: [ + { + split: { + description: 'Split comma separated list of tags into an array', + field: 'slo.tags', + separator: ',', + }, + }, + { + set: { + description: "if 'statusCode == 0', set status to NO_DATA", + if: 'ctx.statusCode == 0', + field: 'status', + value: 'NO_DATA', + }, + }, + { + set: { + description: "if 'statusCode == 1', set statusLabel to VIOLATED", + if: 'ctx.statusCode == 1', + field: 'status', + value: 'VIOLATED', + }, + }, + { + set: { + description: "if 'statusCode == 2', set status to DEGRADING", + if: 'ctx.statusCode == 2', + field: 'status', + value: 'DEGRADING', + }, + }, + { + set: { + description: "if 'statusCode == 4', set status to HEALTHY", + if: 'ctx.statusCode == 4', + field: 'status', + value: 'HEALTHY', + }, + }, + ], + _meta: { + description: 'SLO summary ingest pipeline', + version: SLO_RESOURCES_VERSION, + managed: true, + managed_by: 'observability', + }, +}); diff --git a/x-pack/plugins/observability/server/assets/transform_templates/slo_transform_template.ts b/x-pack/plugins/observability/server/assets/transform_templates/slo_transform_template.ts index daa049033ec476..8869780a969ce5 100644 --- a/x-pack/plugins/observability/server/assets/transform_templates/slo_transform_template.ts +++ b/x-pack/plugins/observability/server/assets/transform_templates/slo_transform_template.ts @@ -12,6 +12,7 @@ import { TransformSource, TransformTimeSync, } from '@elastic/elasticsearch/lib/api/types'; +import { SLO_RESOURCES_VERSION } from '../constants'; export interface TransformSettings { frequency: TransformPutTransformRequest['frequency']; @@ -47,7 +48,7 @@ export const getSLOTransformTemplate = ( aggregations, }, _meta: { - version: 1, + version: SLO_RESOURCES_VERSION, managed: true, managed_by: 'observability', }, diff --git a/x-pack/plugins/observability/server/domain/models/time_window.ts b/x-pack/plugins/observability/server/domain/models/time_window.ts index 30aa35cbd9f721..aa12aa70a8ae8b 100644 --- a/x-pack/plugins/observability/server/domain/models/time_window.ts +++ b/x-pack/plugins/observability/server/domain/models/time_window.ts @@ -5,10 +5,42 @@ * 2.0. */ +import { + calendarAlignedTimeWindowSchema, + rollingTimeWindowSchema, + timeWindowSchema, +} from '@kbn/slo-schema'; +import moment from 'moment'; import * as t from 'io-ts'; -import { rollingTimeWindowSchema, timeWindowSchema } from '@kbn/slo-schema'; type TimeWindow = t.TypeOf; type RollingTimeWindow = t.TypeOf; +type CalendarAlignedTimeWindow = t.TypeOf; -export type { RollingTimeWindow, TimeWindow }; +export type { RollingTimeWindow, TimeWindow, CalendarAlignedTimeWindow }; + +export function toCalendarAlignedTimeWindowMomentUnit( + timeWindow: CalendarAlignedTimeWindow +): moment.unitOfTime.StartOf { + const unit = timeWindow.duration.unit; + switch (unit) { + case 'w': + return 'isoWeeks'; + case 'M': + return 'months'; + default: + throw new Error(`Invalid calendar aligned time window duration unit: ${unit}`); + } +} + +export function toRollingTimeWindowMomentUnit( + timeWindow: RollingTimeWindow +): moment.unitOfTime.Diff { + const unit = timeWindow.duration.unit; + switch (unit) { + case 'd': + return 'days'; + default: + throw new Error(`Invalid rolling time window duration unit: ${unit}`); + } +} diff --git a/x-pack/plugins/observability/server/domain/services/compute_burn_rate.test.ts b/x-pack/plugins/observability/server/domain/services/compute_burn_rate.test.ts index 542766b6c65442..84fef850e096c1 100644 --- a/x-pack/plugins/observability/server/domain/services/compute_burn_rate.test.ts +++ b/x-pack/plugins/observability/server/domain/services/compute_burn_rate.test.ts @@ -8,7 +8,7 @@ import { computeBurnRate } from './compute_burn_rate'; import { toDateRange } from './date_range'; import { createSLO } from '../../services/slo/fixtures/slo'; -import { sixHoursRolling } from '../../services/slo/fixtures/time_window'; +import { ninetyDaysRolling } from '../../services/slo/fixtures/time_window'; describe('computeBurnRate', () => { it('computes 0 when total is 0', () => { @@ -16,7 +16,7 @@ describe('computeBurnRate', () => { computeBurnRate(createSLO(), { good: 10, total: 0, - dateRange: toDateRange(sixHoursRolling()), + dateRange: toDateRange(ninetyDaysRolling()), }) ).toEqual(0); }); @@ -26,7 +26,7 @@ describe('computeBurnRate', () => { computeBurnRate(createSLO(), { good: 9999, total: 1, - dateRange: toDateRange(sixHoursRolling()), + dateRange: toDateRange(ninetyDaysRolling()), }) ).toEqual(0); }); @@ -36,7 +36,7 @@ describe('computeBurnRate', () => { computeBurnRate(createSLO({ objective: { target: 0.9 } }), { good: 90, total: 100, - dateRange: toDateRange(sixHoursRolling()), + dateRange: toDateRange(ninetyDaysRolling()), }) ).toEqual(1); }); @@ -46,7 +46,7 @@ describe('computeBurnRate', () => { computeBurnRate(createSLO({ objective: { target: 0.99 } }), { good: 90, total: 100, - dateRange: toDateRange(sixHoursRolling()), + dateRange: toDateRange(ninetyDaysRolling()), }) ).toEqual(10); }); @@ -56,7 +56,7 @@ describe('computeBurnRate', () => { computeBurnRate(createSLO({ objective: { target: 0.8 } }), { good: 90, total: 100, - dateRange: toDateRange(sixHoursRolling()), + dateRange: toDateRange(ninetyDaysRolling()), }) ).toEqual(0.5); }); diff --git a/x-pack/plugins/observability/server/domain/services/date_range.test.ts b/x-pack/plugins/observability/server/domain/services/date_range.test.ts index ea04358e708c53..524aecbfab10f5 100644 --- a/x-pack/plugins/observability/server/domain/services/date_range.test.ts +++ b/x-pack/plugins/observability/server/domain/services/date_range.test.ts @@ -5,25 +5,29 @@ * 2.0. */ -import { TimeWindow } from '../models/time_window'; -import { Duration } from '../models'; +import { + monthlyCalendarAligned, + ninetyDaysRolling, + sevenDaysRolling, + thirtyDaysRolling, + weeklyCalendarAligned, +} from '../../services/slo/fixtures/time_window'; import { toDateRange } from './date_range'; -import { oneMonth, oneQuarter, oneWeek, thirtyDays } from '../../services/slo/fixtures/duration'; const NOW = new Date('2022-08-11T08:31:00.000Z'); describe('toDateRange', () => { describe('for calendar aligned time window', () => { it('computes the date range for weekly calendar', () => { - const timeWindow = aCalendarTimeWindow(oneWeek()); + const timeWindow = weeklyCalendarAligned(); expect(toDateRange(timeWindow, NOW)).toEqual({ - from: new Date('2022-08-07T00:00:00.000Z'), - to: new Date('2022-08-13T23:59:59.999Z'), + from: new Date('2022-08-08T00:00:00.000Z'), + to: new Date('2022-08-14T23:59:59.999Z'), }); }); it('computes the date range for monthly calendar', () => { - const timeWindow = aCalendarTimeWindow(oneMonth()); + const timeWindow = monthlyCalendarAligned(); expect(toDateRange(timeWindow, NOW)).toEqual({ from: new Date('2022-08-01T00:00:00.000Z'), to: new Date('2022-08-31T23:59:59.999Z'), @@ -33,42 +37,24 @@ describe('toDateRange', () => { describe('for rolling time window', () => { it("computes the date range using a '30days' rolling window", () => { - expect(toDateRange(aRollingTimeWindow(thirtyDays()), NOW)).toEqual({ + expect(toDateRange(thirtyDaysRolling(), NOW)).toEqual({ from: new Date('2022-07-12T08:31:00.000Z'), to: new Date('2022-08-11T08:31:00.000Z'), }); }); - it("computes the date range using a 'weekly' rolling window", () => { - expect(toDateRange(aRollingTimeWindow(oneWeek()), NOW)).toEqual({ + it("computes the date range using a '7days' rolling window", () => { + expect(toDateRange(sevenDaysRolling(), NOW)).toEqual({ from: new Date('2022-08-04T08:31:00.000Z'), to: new Date('2022-08-11T08:31:00.000Z'), }); }); - it("computes the date range using a 'monthly' rolling window", () => { - expect(toDateRange(aRollingTimeWindow(oneMonth()), NOW)).toEqual({ - from: new Date('2022-07-11T08:31:00.000Z'), - to: new Date('2022-08-11T08:31:00.000Z'), - }); - }); - - it("computes the date range using a 'quarterly' rolling window", () => { - expect(toDateRange(aRollingTimeWindow(oneQuarter()), NOW)).toEqual({ - from: new Date('2022-05-11T08:31:00.000Z'), + it("computes the date range using a '90days' rolling window", () => { + expect(toDateRange(ninetyDaysRolling(), NOW)).toEqual({ + from: new Date('2022-05-13T08:31:00.000Z'), to: new Date('2022-08-11T08:31:00.000Z'), }); }); }); }); - -function aCalendarTimeWindow(duration: Duration): TimeWindow { - return { - duration, - type: 'calendarAligned', - }; -} - -function aRollingTimeWindow(duration: Duration): TimeWindow { - return { duration, type: 'rolling' }; -} diff --git a/x-pack/plugins/observability/server/domain/services/date_range.ts b/x-pack/plugins/observability/server/domain/services/date_range.ts index 2d61498b4e8017..9c54197aa39e31 100644 --- a/x-pack/plugins/observability/server/domain/services/date_range.ts +++ b/x-pack/plugins/observability/server/domain/services/date_range.ts @@ -5,16 +5,19 @@ * 2.0. */ +import { calendarAlignedTimeWindowSchema, rollingTimeWindowSchema } from '@kbn/slo-schema'; import { assertNever } from '@kbn/std'; import moment from 'moment'; -import { calendarAlignedTimeWindowSchema, rollingTimeWindowSchema } from '@kbn/slo-schema'; - -import { DateRange, toMomentUnitOfTime } from '../models'; -import type { TimeWindow } from '../models/time_window'; +import { DateRange } from '../models'; +import { + TimeWindow, + toCalendarAlignedTimeWindowMomentUnit, + toRollingTimeWindowMomentUnit, +} from '../models/time_window'; export const toDateRange = (timeWindow: TimeWindow, currentDate: Date = new Date()): DateRange => { if (calendarAlignedTimeWindowSchema.is(timeWindow)) { - const unit = toMomentUnitOfTime(timeWindow.duration.unit); + const unit = toCalendarAlignedTimeWindowMomentUnit(timeWindow); const from = moment.utc(currentDate).startOf(unit); const to = moment.utc(currentDate).endOf(unit); @@ -22,12 +25,14 @@ export const toDateRange = (timeWindow: TimeWindow, currentDate: Date = new Date } if (rollingTimeWindowSchema.is(timeWindow)) { - const unit = toMomentUnitOfTime(timeWindow.duration.unit); + const unit = toRollingTimeWindowMomentUnit(timeWindow); const now = moment.utc(currentDate).startOf('minute'); + const from = now.clone().subtract(timeWindow.duration.value, unit); + const to = now.clone(); return { - from: now.clone().subtract(timeWindow.duration.value, unit).toDate(), - to: now.toDate(), + from: from.toDate(), + to: to.toDate(), }; } diff --git a/x-pack/plugins/observability/server/domain/services/validate_slo.test.ts b/x-pack/plugins/observability/server/domain/services/validate_slo.test.ts index 12d3ebe77b82b9..70cc408ceb175f 100644 --- a/x-pack/plugins/observability/server/domain/services/validate_slo.test.ts +++ b/x-pack/plugins/observability/server/domain/services/validate_slo.test.ts @@ -8,6 +8,7 @@ import { validateSLO } from '.'; import { oneMinute, sixHours } from '../../services/slo/fixtures/duration'; import { createSLO } from '../../services/slo/fixtures/slo'; +import { sevenDaysRolling } from '../../services/slo/fixtures/time_window'; import { Duration, DurationUnit } from '../models'; describe('validateSLO', () => { @@ -41,16 +42,12 @@ describe('validateSLO', () => { { duration: new Duration(2, DurationUnit.Hour), shouldThrow: true }, { duration: new Duration(1, DurationUnit.Day), shouldThrow: true }, { duration: new Duration(7, DurationUnit.Day), shouldThrow: true }, - { duration: new Duration(1, DurationUnit.Week), shouldThrow: false }, { duration: new Duration(2, DurationUnit.Week), shouldThrow: true }, - { duration: new Duration(1, DurationUnit.Month), shouldThrow: false }, { duration: new Duration(2, DurationUnit.Month), shouldThrow: true }, - { duration: new Duration(1, DurationUnit.Quarter), shouldThrow: true }, - { duration: new Duration(3, DurationUnit.Quarter), shouldThrow: true }, - { duration: new Duration(1, DurationUnit.Year), shouldThrow: true }, - { duration: new Duration(3, DurationUnit.Year), shouldThrow: true }, + { duration: new Duration(1, DurationUnit.Week), shouldThrow: false }, + { duration: new Duration(1, DurationUnit.Month), shouldThrow: false }, ])( - 'throws when time window calendar aligned is not 1 week or 1 month', + 'throws when calendar aligned time window is not 1 week or 1 month', ({ duration, shouldThrow }) => { if (shouldThrow) { expect(() => @@ -72,6 +69,34 @@ describe('validateSLO', () => { } ); + it.each([ + { duration: new Duration(7, DurationUnit.Day), shouldThrow: false }, + { duration: new Duration(30, DurationUnit.Day), shouldThrow: false }, + { duration: new Duration(90, DurationUnit.Day), shouldThrow: false }, + { duration: new Duration(1, DurationUnit.Hour), shouldThrow: true }, + { duration: new Duration(1, DurationUnit.Day), shouldThrow: true }, + { duration: new Duration(1, DurationUnit.Week), shouldThrow: true }, + { duration: new Duration(1, DurationUnit.Month), shouldThrow: true }, + ])('throws when rolling time window is not 7, 30 or 90days', ({ duration, shouldThrow }) => { + if (shouldThrow) { + expect(() => + validateSLO( + createSLO({ + timeWindow: { duration, type: 'rolling' }, + }) + ) + ).toThrowError('Invalid time_window.duration'); + } else { + expect(() => + validateSLO( + createSLO({ + timeWindow: { duration, type: 'rolling' }, + }) + ) + ).not.toThrowError(); + } + }); + describe('settings', () => { it("throws when frequency is longer or equal than '1h'", () => { const slo = createSLO({ @@ -173,25 +198,11 @@ describe('validateSLO', () => { objective: { ...slo.objective, timesliceWindow: new Duration(1, DurationUnit.Month) }, }) ).toThrowError('Invalid objective.timeslice_window'); - - expect(() => - validateSLO({ - ...slo, - objective: { ...slo.objective, timesliceWindow: new Duration(1, DurationUnit.Quarter) }, - }) - ).toThrowError('Invalid objective.timeslice_window'); - - expect(() => - validateSLO({ - ...slo, - objective: { ...slo.objective, timesliceWindow: new Duration(1, DurationUnit.Year) }, - }) - ).toThrowError('Invalid objective.timeslice_window'); }); it("throws when 'objective.timeslice_window' is longer than 'slo.time_window'", () => { const slo = createSLO({ - timeWindow: { duration: new Duration(1, DurationUnit.Week), type: 'rolling' }, + timeWindow: sevenDaysRolling(), budgetingMethod: 'timeslices', objective: { target: 0.95, diff --git a/x-pack/plugins/observability/server/domain/services/validate_slo.ts b/x-pack/plugins/observability/server/domain/services/validate_slo.ts index a1207b2c17f521..eb253f44cdf5ab 100644 --- a/x-pack/plugins/observability/server/domain/services/validate_slo.ts +++ b/x-pack/plugins/observability/server/domain/services/validate_slo.ts @@ -85,13 +85,8 @@ function isValidTargetNumber(value: number): boolean { } function isValidRollingTimeWindowDuration(duration: Duration): boolean { - return [ - DurationUnit.Day, - DurationUnit.Week, - DurationUnit.Month, - DurationUnit.Quarter, - DurationUnit.Year, - ].includes(duration.unit); + // 7, 30 or 90days accepted + return duration.unit === DurationUnit.Day && [7, 30, 90].includes(duration.value); } function isValidCalendarAlignedTimeWindowDuration(duration: Duration): boolean { diff --git a/x-pack/plugins/observability/server/plugin.ts b/x-pack/plugins/observability/server/plugin.ts index 02cc2f33cc9f59..0b0b7207d69ec8 100644 --- a/x-pack/plugins/observability/server/plugin.ts +++ b/x-pack/plugins/observability/server/plugin.ts @@ -5,47 +5,53 @@ * 2.0. */ -import { i18n } from '@kbn/i18n'; +import { PluginSetupContract, PluginStartContract } from '@kbn/alerting-plugin/server'; +import { + createUICapabilities as createCasesUICapabilities, + getApiTags as getCasesApiTags, +} from '@kbn/cases-plugin/common'; +import { CloudSetup } from '@kbn/cloud-plugin/server'; import { - PluginInitializerContext, - Plugin, CoreSetup, DEFAULT_APP_CATEGORIES, Logger, + Plugin, + PluginInitializerContext, } from '@kbn/core/server'; +import { PluginSetupContract as FeaturesSetup } from '@kbn/features-plugin/server'; import { hiddenTypes as filesSavedObjectTypes } from '@kbn/files-plugin/server/saved_objects'; -import { PluginSetupContract, PluginStartContract } from '@kbn/alerting-plugin/server'; +import type { GuidedOnboardingPluginSetup } from '@kbn/guided-onboarding-plugin/server'; +import { i18n } from '@kbn/i18n'; import { RuleRegistryPluginSetupContract } from '@kbn/rule-registry-plugin/server'; -import { PluginSetupContract as FeaturesSetup } from '@kbn/features-plugin/server'; -import { - createUICapabilities as createCasesUICapabilities, - getApiTags as getCasesApiTags, -} from '@kbn/cases-plugin/common'; import { SharePluginSetup } from '@kbn/share-plugin/server'; import { SpacesPluginSetup } from '@kbn/spaces-plugin/server'; -import type { GuidedOnboardingPluginSetup } from '@kbn/guided-onboarding-plugin/server'; import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server'; -import { CloudSetup } from '@kbn/cloud-plugin/server'; +import { ObservabilityConfig } from '.'; +import { casesFeatureId, observabilityFeatureId, sloFeatureId } from '../common'; +import { SLO_BURN_RATE_RULE_TYPE_ID } from '../common/constants'; import { - kubernetesGuideId, kubernetesGuideConfig, + kubernetesGuideId, } from '../common/guided_onboarding/kubernetes_guide_config'; -import { ObservabilityConfig } from '.'; +import { AlertsLocatorDefinition } from '../common/locators/alerts'; import { + AnnotationsAPI, bootstrapAnnotations, ScopedAnnotationsClientFactory, - AnnotationsAPI, } from './lib/annotations/bootstrap_annotations'; -import { uiSettings } from './ui_settings'; -import { registerRoutes } from './routes/register_routes'; +import { registerSloUsageCollector } from './lib/collectors/register'; +import { registerRuleTypes } from './lib/rules/register_rule_types'; import { getObservabilityServerRouteRepository } from './routes/get_global_observability_server_route_repository'; +import { registerRoutes } from './routes/register_routes'; import { compositeSlo, slo, SO_COMPOSITE_SLO_TYPE, SO_SLO_TYPE } from './saved_objects'; -import { AlertsLocatorDefinition } from '../common/locators/alerts'; -import { casesFeatureId, observabilityFeatureId, sloFeatureId } from '../common'; -import { registerRuleTypes } from './lib/rules/register_rule_types'; -import { SLO_BURN_RATE_RULE_TYPE_ID } from '../common/constants'; -import { registerSloUsageCollector } from './lib/collectors/register'; import { threshold } from './saved_objects/threshold'; +import { + DefaultResourceInstaller, + DefaultSLOInstaller, + DefaultSummaryTransformInstaller, +} from './services/slo'; + +import { uiSettings } from './ui_settings'; export type ObservabilityPluginSetup = ReturnType; @@ -258,6 +264,20 @@ export class ObservabilityPlugin implements Plugin { logger: this.logger, repository: getObservabilityServerRouteRepository(config), }); + + const esInternalClient = coreStart.elasticsearch.client.asInternalUser; + + const sloResourceInstaller = new DefaultResourceInstaller(esInternalClient, this.logger); + const sloSummaryInstaller = new DefaultSummaryTransformInstaller( + esInternalClient, + this.logger + ); + const sloInstaller = new DefaultSLOInstaller( + sloResourceInstaller, + sloSummaryInstaller, + this.logger + ); + sloInstaller.install(); }); /** diff --git a/x-pack/plugins/observability/server/routes/slo/route.ts b/x-pack/plugins/observability/server/routes/slo/route.ts index c98a1579d20420..3ff501c52bd004 100644 --- a/x-pack/plugins/observability/server/routes/slo/route.ts +++ b/x-pack/plugins/observability/server/routes/slo/route.ts @@ -5,22 +5,22 @@ * 2.0. */ -import { forbidden, failedDependency } from '@hapi/boom'; +import { failedDependency, forbidden } from '@hapi/boom'; import { createSLOParamsSchema, deleteSLOParamsSchema, fetchHistoricalSummaryParamsSchema, findSLOParamsSchema, - getSLOBurnRatesParamsSchema, getPreviewDataParamsSchema, + getSLOBurnRatesParamsSchema, getSLODiagnosisParamsSchema, getSLOParamsSchema, manageSLOParamsSchema, updateSLOParamsSchema, } from '@kbn/slo-schema'; +import type { IndicatorTypes } from '../../domain/models'; import { CreateSLO, - DefaultResourceInstaller, DefaultSummaryClient, DefaultTransformManager, DeleteSLO, @@ -29,6 +29,13 @@ import { KibanaSavedObjectsSLORepository, UpdateSLO, } from '../../services/slo'; +import { FetchHistoricalSummary } from '../../services/slo/fetch_historical_summary'; +import { getBurnRates } from '../../services/slo/get_burn_rates'; +import { getGlobalDiagnosis, getSloDiagnosis } from '../../services/slo/get_diagnosis'; +import { GetPreviewData } from '../../services/slo/get_preview_data'; +import { DefaultHistoricalSummaryClient } from '../../services/slo/historical_summary_client'; +import { ManageSLO } from '../../services/slo/manage_slo'; +import { DefaultSummarySearchClient } from '../../services/slo/summary_search_client'; import { ApmTransactionDurationTransformGenerator, ApmTransactionErrorRateTransformGenerator, @@ -37,15 +44,8 @@ import { MetricCustomTransformGenerator, TransformGenerator, } from '../../services/slo/transform_generators'; -import { createObservabilityServerRoute } from '../create_observability_server_route'; -import { DefaultHistoricalSummaryClient } from '../../services/slo/historical_summary_client'; -import { FetchHistoricalSummary } from '../../services/slo/fetch_historical_summary'; -import type { IndicatorTypes } from '../../domain/models'; import type { ObservabilityRequestHandlerContext } from '../../types'; -import { ManageSLO } from '../../services/slo/manage_slo'; -import { getGlobalDiagnosis, getSloDiagnosis } from '../../services/slo/get_diagnosis'; -import { getBurnRates } from '../../services/slo/get_burn_rates'; -import { GetPreviewData } from '../../services/slo/get_preview_data'; +import { createObservabilityServerRoute } from '../create_observability_server_route'; const transformGenerators: Record = { 'sli.apm.transactionDuration': new ApmTransactionDurationTransformGenerator(), @@ -75,11 +75,9 @@ const createSLORoute = createObservabilityServerRoute({ const esClient = (await context.core).elasticsearch.client.asCurrentUser; const soClient = (await context.core).savedObjects.client; - - const resourceInstaller = new DefaultResourceInstaller(esClient, logger); const repository = new KibanaSavedObjectsSLORepository(soClient); const transformManager = new DefaultTransformManager(transformGenerators, esClient, logger); - const createSLO = new CreateSLO(resourceInstaller, repository, transformManager); + const createSLO = new CreateSLO(esClient, repository, transformManager); const response = await createSLO.execute(params.body); @@ -228,7 +226,7 @@ const findSLORoute = createObservabilityServerRoute({ tags: ['access:slo_read'], }, params: findSLOParamsSchema, - handler: async ({ context, params }) => { + handler: async ({ context, params, logger }) => { const hasCorrectLicense = await isLicenseAtLeastPlatinum(context); if (!hasCorrectLicense) { @@ -238,8 +236,8 @@ const findSLORoute = createObservabilityServerRoute({ const soClient = (await context.core).savedObjects.client; const esClient = (await context.core).elasticsearch.client.asCurrentUser; const repository = new KibanaSavedObjectsSLORepository(soClient); - const summaryClient = new DefaultSummaryClient(esClient); - const findSLO = new FindSLO(repository, summaryClient); + const summarySearchClient = new DefaultSummarySearchClient(esClient, logger); + const findSLO = new FindSLO(repository, summarySearchClient); const response = await findSLO.execute(params?.query ?? {}); @@ -304,8 +302,9 @@ const getSloDiagnosisRoute = createObservabilityServerRoute({ handler: async ({ context, params }) => { const esClient = (await context.core).elasticsearch.client.asCurrentUser; const soClient = (await context.core).savedObjects.client; + const repository = new KibanaSavedObjectsSLORepository(soClient); - return getSloDiagnosis(params.path.id, { esClient, soClient }); + return getSloDiagnosis(params.path.id, { esClient, repository }); }, }); diff --git a/x-pack/plugins/observability/server/services/composite_slo/__snapshots__/summary_client.test.ts.snap b/x-pack/plugins/observability/server/services/composite_slo/__snapshots__/summary_client.test.ts.snap index 95f3a8c11fc658..ec4d29cba2f102 100644 --- a/x-pack/plugins/observability/server/services/composite_slo/__snapshots__/summary_client.test.ts.snap +++ b/x-pack/plugins/observability/server/services/composite_slo/__snapshots__/summary_client.test.ts.snap @@ -16,7 +16,7 @@ Object { exports[`SummaryClient fetchSummary with a rolling and occurrences composite SLO returns the summary 2`] = ` Array [ Object { - "index": ".slo-observability.sli-v1*", + "index": ".slo-observability.sli-v2*", }, Object { "aggs": Object { @@ -108,7 +108,7 @@ Object { exports[`SummaryClient with rolling and timeslices SLO returns the summary 2`] = ` Array [ Object { - "index": ".slo-observability.sli-v1*", + "index": ".slo-observability.sli-v2*", }, Object { "aggs": Object { diff --git a/x-pack/plugins/observability/server/services/slo/__snapshots__/create_slo.test.ts.snap b/x-pack/plugins/observability/server/services/slo/__snapshots__/create_slo.test.ts.snap new file mode 100644 index 00000000000000..096820bc3ea8a0 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/__snapshots__/create_slo.test.ts.snap @@ -0,0 +1,46 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`CreateSLO happy path calls the expected services 1`] = ` +Array [ + Object { + "document": Object { + "errorBudgetConsumed": 0, + "errorBudgetEstimated": false, + "errorBudgetInitial": 0.010000000000000009, + "errorBudgetRemaining": 1, + "goodEvents": 0, + "isTempDoc": true, + "service": Object { + "environment": null, + "name": null, + }, + "sliValue": -1, + "slo": Object { + "budgetingMethod": "occurrences", + "description": "irrelevant", + "id": "unique-id", + "indicator": Object { + "type": "sli.apm.transactionErrorRate", + }, + "instanceId": "*", + "name": "irrelevant", + "revision": 1, + "tags": Array [], + "timeWindow": Object { + "duration": "7d", + "type": "rolling", + }, + }, + "status": "NO_DATA", + "statusCode": 0, + "totalEvents": 0, + "transaction": Object { + "name": null, + "type": null, + }, + }, + "id": "slo-unique-id", + "index": ".slo-observability.summary-v2.temp", + }, +] +`; diff --git a/x-pack/plugins/observability/server/services/slo/__snapshots__/summary_search_client.test.ts.snap b/x-pack/plugins/observability/server/services/slo/__snapshots__/summary_search_client.test.ts.snap new file mode 100644 index 00000000000000..4f40feb98d8405 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/__snapshots__/summary_search_client.test.ts.snap @@ -0,0 +1,106 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Summary Search Client returns the summary documents without duplicate temporary summary documents 1`] = ` +Array [ + Object { + "index": ".slo-observability.summary-v2*", + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "terms": Object { + "slo.id": Array [ + "slo-one", + "slo_two", + "slo-three", + "slo-five", + ], + }, + }, + Object { + "term": Object { + "isTempDoc": true, + }, + }, + ], + }, + }, + "wait_for_completion": false, + }, +] +`; + +exports[`Summary Search Client returns the summary documents without duplicate temporary summary documents 2`] = ` +Object { + "page": 1, + "perPage": 20, + "results": Array [ + Object { + "id": "slo-one", + "summary": Object { + "errorBudget": Object { + "consumed": 0.4, + "initial": 0.02, + "isEstimated": false, + "remaining": 0.6, + }, + "sliValue": 0.9, + "status": "HEALTHY", + }, + }, + Object { + "id": "slo_two", + "summary": Object { + "errorBudget": Object { + "consumed": 0.4, + "initial": 0.02, + "isEstimated": false, + "remaining": 0.6, + }, + "sliValue": 0.9, + "status": "HEALTHY", + }, + }, + Object { + "id": "slo-three", + "summary": Object { + "errorBudget": Object { + "consumed": 0.4, + "initial": 0.02, + "isEstimated": false, + "remaining": 0.6, + }, + "sliValue": 0.9, + "status": "HEALTHY", + }, + }, + Object { + "id": "slo-five", + "summary": Object { + "errorBudget": Object { + "consumed": 0.4, + "initial": 0.02, + "isEstimated": false, + "remaining": 0.6, + }, + "sliValue": 0.9, + "status": "HEALTHY", + }, + }, + Object { + "id": "slo-four", + "summary": Object { + "errorBudget": Object { + "consumed": 0.4, + "initial": 0.02, + "isEstimated": false, + "remaining": 0.6, + }, + "sliValue": 0.9, + "status": "HEALTHY", + }, + }, + ], + "total": 5, +} +`; diff --git a/x-pack/plugins/observability/server/services/slo/__snapshots__/update_slo.test.ts.snap b/x-pack/plugins/observability/server/services/slo/__snapshots__/update_slo.test.ts.snap new file mode 100644 index 00000000000000..fcdc584a825c0a --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/__snapshots__/update_slo.test.ts.snap @@ -0,0 +1,49 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`UpdateSLO index a temporary summary document 1`] = ` +Array [ + Object { + "document": Object { + "errorBudgetConsumed": 0, + "errorBudgetEstimated": false, + "errorBudgetInitial": 0.0010000000000000009, + "errorBudgetRemaining": 1, + "goodEvents": 0, + "isTempDoc": true, + "service": Object { + "environment": null, + "name": null, + }, + "sliValue": -1, + "slo": Object { + "budgetingMethod": "occurrences", + "description": "irrelevant", + "id": "unique-id", + "indicator": Object { + "type": "sli.apm.transactionErrorRate", + }, + "instanceId": "*", + "name": "irrelevant", + "revision": 2, + "tags": Array [ + "critical", + "k8s", + ], + "timeWindow": Object { + "duration": "7d", + "type": "rolling", + }, + }, + "status": "NO_DATA", + "statusCode": 0, + "totalEvents": 0, + "transaction": Object { + "name": null, + "type": null, + }, + }, + "id": "slo-unique-id", + "index": ".slo-observability.summary-v2.temp", + }, +] +`; diff --git a/x-pack/plugins/observability/server/services/slo/create_slo.test.ts b/x-pack/plugins/observability/server/services/slo/create_slo.test.ts index 6b44fc10df3d31..0e690027b93b63 100644 --- a/x-pack/plugins/observability/server/services/slo/create_slo.test.ts +++ b/x-pack/plugins/observability/server/services/slo/create_slo.test.ts @@ -5,43 +5,41 @@ * 2.0. */ +import { ElasticsearchClientMock, elasticsearchServiceMock } from '@kbn/core/server/mocks'; import { CreateSLO } from './create_slo'; import { fiveMinute, oneMinute } from './fixtures/duration'; import { createAPMTransactionErrorRateIndicator, createSLOParams } from './fixtures/slo'; -import { - createResourceInstallerMock, - createSLORepositoryMock, - createTransformManagerMock, -} from './mocks'; -import { ResourceInstaller } from './resource_installer'; +import { createSLORepositoryMock, createTransformManagerMock } from './mocks'; import { SLORepository } from './slo_repository'; import { TransformManager } from './transform_manager'; describe('CreateSLO', () => { - let mockResourceInstaller: jest.Mocked; + let esClientMock: ElasticsearchClientMock; let mockRepository: jest.Mocked; let mockTransformManager: jest.Mocked; let createSLO: CreateSLO; beforeEach(() => { - mockResourceInstaller = createResourceInstallerMock(); + esClientMock = elasticsearchServiceMock.createElasticsearchClient(); mockRepository = createSLORepositoryMock(); mockTransformManager = createTransformManagerMock(); - createSLO = new CreateSLO(mockResourceInstaller, mockRepository, mockTransformManager); + createSLO = new CreateSLO(esClientMock, mockRepository, mockTransformManager); }); describe('happy path', () => { it('calls the expected services', async () => { - const sloParams = createSLOParams({ indicator: createAPMTransactionErrorRateIndicator() }); + const sloParams = createSLOParams({ + id: 'unique-id', + indicator: createAPMTransactionErrorRateIndicator(), + }); mockTransformManager.install.mockResolvedValue('slo-transform-id'); const response = await createSLO.execute(sloParams); - expect(mockResourceInstaller.ensureCommonResourcesInstalled).toHaveBeenCalled(); expect(mockRepository.save).toHaveBeenCalledWith( expect.objectContaining({ ...sloParams, - id: expect.any(String), + id: 'unique-id', settings: { syncDelay: oneMinute(), frequency: oneMinute(), @@ -55,10 +53,11 @@ describe('CreateSLO', () => { { throwOnConflict: true } ); expect(mockTransformManager.install).toHaveBeenCalledWith( - expect.objectContaining({ ...sloParams, id: expect.any(String) }) + expect.objectContaining({ ...sloParams, id: 'unique-id' }) ); expect(mockTransformManager.start).toHaveBeenCalledWith('slo-transform-id'); - expect(response).toEqual(expect.objectContaining({ id: expect.any(String) })); + expect(response).toEqual(expect.objectContaining({ id: 'unique-id' })); + expect(esClientMock.index.mock.calls[0]).toMatchSnapshot(); }); it('overrides the default values when provided', async () => { @@ -73,7 +72,6 @@ describe('CreateSLO', () => { await createSLO.execute(sloParams); - expect(mockResourceInstaller.ensureCommonResourcesInstalled).toHaveBeenCalled(); expect(mockRepository.save).toHaveBeenCalledWith( expect.objectContaining({ ...sloParams, diff --git a/x-pack/plugins/observability/server/services/slo/create_slo.ts b/x-pack/plugins/observability/server/services/slo/create_slo.ts index 7039e67329fc67..fe587c592dee89 100644 --- a/x-pack/plugins/observability/server/services/slo/create_slo.ts +++ b/x-pack/plugins/observability/server/services/slo/create_slo.ts @@ -5,19 +5,19 @@ * 2.0. */ -import { v1 as uuidv1 } from 'uuid'; - +import { ElasticsearchClient } from '@kbn/core/server'; import { CreateSLOParams, CreateSLOResponse } from '@kbn/slo-schema'; - +import { v1 as uuidv1 } from 'uuid'; +import { SLO_SUMMARY_TEMP_INDEX_NAME } from '../../assets/constants'; import { Duration, DurationUnit, SLO } from '../../domain/models'; -import { ResourceInstaller } from './resource_installer'; +import { validateSLO } from '../../domain/services'; import { SLORepository } from './slo_repository'; +import { createTempSummaryDocument } from './summary_transform/helpers/create_temp_summary'; import { TransformManager } from './transform_manager'; -import { validateSLO } from '../../domain/services'; export class CreateSLO { constructor( - private resourceInstaller: ResourceInstaller, + private esClient: ElasticsearchClient, private repository: SLORepository, private transformManager: TransformManager ) {} @@ -26,9 +26,7 @@ export class CreateSLO { const slo = this.toSLO(params); validateSLO(slo); - await this.resourceInstaller.ensureCommonResourcesInstalled(); await this.repository.save(slo, { throwOnConflict: true }); - let sloTransformId; try { sloTransformId = await this.transformManager.install(slo); @@ -48,6 +46,12 @@ export class CreateSLO { throw err; } + await this.esClient.index({ + index: SLO_SUMMARY_TEMP_INDEX_NAME, + id: `slo-${slo.id}`, + document: createTempSummaryDocument(slo), + }); + return this.toResponse(slo); } diff --git a/x-pack/plugins/observability/server/services/slo/delete_slo.test.ts b/x-pack/plugins/observability/server/services/slo/delete_slo.test.ts index e1e76fa56400d3..a136945edcd2c9 100644 --- a/x-pack/plugins/observability/server/services/slo/delete_slo.test.ts +++ b/x-pack/plugins/observability/server/services/slo/delete_slo.test.ts @@ -5,11 +5,15 @@ * 2.0. */ -import { RulesClientApi } from '@kbn/alerting-plugin/server/types'; import { rulesClientMock } from '@kbn/alerting-plugin/server/rules_client.mock'; +import { RulesClientApi } from '@kbn/alerting-plugin/server/types'; import { ElasticsearchClient } from '@kbn/core/server'; import { elasticsearchServiceMock } from '@kbn/core/server/mocks'; -import { getSLOTransformId, SLO_INDEX_TEMPLATE_NAME } from '../../assets/constants'; +import { + getSLOTransformId, + SLO_DESTINATION_INDEX_PATTERN, + SLO_SUMMARY_DESTINATION_INDEX_PATTERN, +} from '../../assets/constants'; import { DeleteSLO } from './delete_slo'; import { createAPMTransactionErrorRateIndicator, createSLO } from './fixtures/slo'; import { createSLORepositoryMock, createTransformManagerMock } from './mocks'; @@ -45,9 +49,22 @@ describe('DeleteSLO', () => { expect(mockTransformManager.uninstall).toHaveBeenCalledWith( getSLOTransformId(slo.id, slo.revision) ); - expect(mockEsClient.deleteByQuery).toHaveBeenCalledWith( + expect(mockEsClient.deleteByQuery).toHaveBeenCalledTimes(2); + expect(mockEsClient.deleteByQuery).toHaveBeenNthCalledWith( + 1, + expect.objectContaining({ + index: SLO_DESTINATION_INDEX_PATTERN, + query: { + match: { + 'slo.id': slo.id, + }, + }, + }) + ); + expect(mockEsClient.deleteByQuery).toHaveBeenNthCalledWith( + 2, expect.objectContaining({ - index: `${SLO_INDEX_TEMPLATE_NAME}*`, + index: SLO_SUMMARY_DESTINATION_INDEX_PATTERN, query: { match: { 'slo.id': slo.id, diff --git a/x-pack/plugins/observability/server/services/slo/delete_slo.ts b/x-pack/plugins/observability/server/services/slo/delete_slo.ts index dc812b1bd4f31f..508da3b4ae129d 100644 --- a/x-pack/plugins/observability/server/services/slo/delete_slo.ts +++ b/x-pack/plugins/observability/server/services/slo/delete_slo.ts @@ -7,8 +7,11 @@ import { RulesClientApi } from '@kbn/alerting-plugin/server/types'; import { ElasticsearchClient } from '@kbn/core/server'; -import { getSLOTransformId, SLO_INDEX_TEMPLATE_NAME } from '../../assets/constants'; - +import { + getSLOTransformId, + SLO_DESTINATION_INDEX_PATTERN, + SLO_SUMMARY_DESTINATION_INDEX_PATTERN, +} from '../../assets/constants'; import { SLORepository } from './slo_repository'; import { TransformManager } from './transform_manager'; @@ -28,13 +31,14 @@ export class DeleteSLO { await this.transformManager.uninstall(sloTransformId); await this.deleteRollupData(slo.id); + await this.deleteSummaryData(slo.id); await this.deleteAssociatedRules(slo.id); await this.repository.deleteById(slo.id); } private async deleteRollupData(sloId: string): Promise { await this.esClient.deleteByQuery({ - index: `${SLO_INDEX_TEMPLATE_NAME}*`, + index: SLO_DESTINATION_INDEX_PATTERN, wait_for_completion: false, query: { match: { @@ -44,6 +48,17 @@ export class DeleteSLO { }); } + private async deleteSummaryData(sloId: string): Promise { + await this.esClient.deleteByQuery({ + index: SLO_SUMMARY_DESTINATION_INDEX_PATTERN, + wait_for_completion: false, + query: { + match: { + 'slo.id': sloId, + }, + }, + }); + } private async deleteAssociatedRules(sloId: string): Promise { try { await this.rulesClient.bulkDeleteRules({ diff --git a/x-pack/plugins/observability/server/services/slo/find_slo.test.ts b/x-pack/plugins/observability/server/services/slo/find_slo.test.ts index 84f22c86a923cf..0c5f6ea037b591 100644 --- a/x-pack/plugins/observability/server/services/slo/find_slo.test.ts +++ b/x-pack/plugins/observability/server/services/slo/find_slo.test.ts @@ -5,37 +5,45 @@ * 2.0. */ -import { SLO, SLOId, Summary } from '../../domain/models'; +import { SLO } from '../../domain/models'; import { FindSLO } from './find_slo'; -import { createSLO, createPaginatedSLO } from './fixtures/slo'; -import { createSummaryClientMock, createSLORepositoryMock } from './mocks'; -import { SLORepository, SortField, SortDirection } from './slo_repository'; -import { SummaryClient } from './summary_client'; +import { createSLO } from './fixtures/slo'; +import { createSLORepositoryMock, createSummarySearchClientMock } from './mocks'; +import { SLORepository } from './slo_repository'; +import { Paginated, SLOSummary, SummarySearchClient } from './summary_search_client'; describe('FindSLO', () => { let mockRepository: jest.Mocked; - let mockSummaryClient: jest.Mocked; + let mockSummarySearchClient: jest.Mocked; let findSLO: FindSLO; beforeEach(() => { mockRepository = createSLORepositoryMock(); - mockSummaryClient = createSummaryClientMock(); - findSLO = new FindSLO(mockRepository, mockSummaryClient); + mockSummarySearchClient = createSummarySearchClientMock(); + findSLO = new FindSLO(mockRepository, mockSummarySearchClient); }); describe('happy path', () => { it('returns the results with pagination', async () => { const slo = createSLO(); - mockRepository.find.mockResolvedValueOnce(createPaginatedSLO(slo)); - mockSummaryClient.fetchSummary.mockResolvedValueOnce(someSummary(slo)); + mockSummarySearchClient.search.mockResolvedValueOnce(summarySearchResult(slo)); + mockRepository.findAllByIds.mockResolvedValueOnce([slo]); const result = await findSLO.execute({}); - expect(mockRepository.find).toHaveBeenCalledWith( - { name: undefined }, - { field: SortField.CreationTime, direction: SortDirection.Asc }, - { page: 1, perPage: 25 } - ); + expect(mockSummarySearchClient.search.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + "", + Object { + "direction": "asc", + "field": "status", + }, + Object { + "page": 1, + "perPage": 25, + }, + ] + `); expect(result).toEqual({ page: 1, @@ -89,131 +97,65 @@ describe('FindSLO', () => { }); }); - it('calls the repository with the default criteria and pagination', async () => { + it('calls the repository with all the summary slo ids', async () => { const slo = createSLO(); - mockRepository.find.mockResolvedValueOnce(createPaginatedSLO(slo)); - mockSummaryClient.fetchSummary.mockResolvedValueOnce(someSummary(slo)); + mockSummarySearchClient.search.mockResolvedValueOnce(summarySearchResult(slo)); + mockRepository.findAllByIds.mockResolvedValueOnce([slo]); await findSLO.execute({}); - expect(mockRepository.find).toHaveBeenCalledWith( - { name: undefined }, - { field: SortField.CreationTime, direction: SortDirection.Asc }, - { page: 1, perPage: 25 } - ); - }); - - it('calls the repository with the name filter criteria', async () => { - const slo = createSLO(); - mockRepository.find.mockResolvedValueOnce(createPaginatedSLO(slo)); - mockSummaryClient.fetchSummary.mockResolvedValueOnce(someSummary(slo)); - - await findSLO.execute({ name: 'Availability' }); - - expect(mockRepository.find).toHaveBeenCalledWith( - { name: 'Availability' }, - { field: SortField.CreationTime, direction: SortDirection.Asc }, - { page: 1, perPage: 25 } - ); + expect(mockRepository.findAllByIds).toHaveBeenCalledWith([slo.id]); }); - it('calls the repository with the indicatorType filter criteria', async () => { + it('searches with the provided criteria', async () => { const slo = createSLO(); - mockRepository.find.mockResolvedValueOnce(createPaginatedSLO(slo)); - mockSummaryClient.fetchSummary.mockResolvedValueOnce(someSummary(slo)); - - await findSLO.execute({ indicatorTypes: ['sli.kql.custom'] }); - - expect(mockRepository.find).toHaveBeenCalledWith( - { indicatorTypes: ['sli.kql.custom'] }, - { field: SortField.CreationTime, direction: SortDirection.Asc }, - { page: 1, perPage: 25 } - ); - }); - - it('calls the repository with the pagination', async () => { - const slo = createSLO(); - mockRepository.find.mockResolvedValueOnce(createPaginatedSLO(slo)); - mockSummaryClient.fetchSummary.mockResolvedValueOnce(someSummary(slo)); - - await findSLO.execute({ name: 'My SLO*', page: '2', perPage: '100' }); - - expect(mockRepository.find).toHaveBeenCalledWith( - { name: 'My SLO*' }, - { field: SortField.CreationTime, direction: SortDirection.Asc }, - { page: 2, perPage: 100 } - ); - }); - - it('uses default pagination values when invalid', async () => { - const slo = createSLO(); - mockRepository.find.mockResolvedValueOnce(createPaginatedSLO(slo)); - mockSummaryClient.fetchSummary.mockResolvedValueOnce(someSummary(slo)); - - await findSLO.execute({ page: '-1', perPage: '0' }); - - expect(mockRepository.find).toHaveBeenCalledWith( - { name: undefined }, - { field: SortField.CreationTime, direction: SortDirection.Asc }, - { page: 1, perPage: 25 } - ); - }); - - it('sorts by name by default when not specified', async () => { - const slo = createSLO(); - mockRepository.find.mockResolvedValueOnce(createPaginatedSLO(slo)); - mockSummaryClient.fetchSummary.mockResolvedValueOnce(someSummary(slo)); - - await findSLO.execute({ sortBy: undefined }); - - expect(mockRepository.find).toHaveBeenCalledWith( - { name: undefined }, - { field: SortField.CreationTime, direction: SortDirection.Asc }, - { page: 1, perPage: 25 } - ); - }); - - it('sorts by indicator type', async () => { - const slo = createSLO(); - mockRepository.find.mockResolvedValueOnce(createPaginatedSLO(slo)); - mockSummaryClient.fetchSummary.mockResolvedValueOnce(someSummary(slo)); - - await findSLO.execute({ sortBy: 'indicatorType' }); - - expect(mockRepository.find).toHaveBeenCalledWith( - { name: undefined }, - { field: SortField.IndicatorType, direction: SortDirection.Asc }, - { page: 1, perPage: 25 } - ); - }); - - it('sorts by indicator type in descending order', async () => { - const slo = createSLO(); - mockRepository.find.mockResolvedValueOnce(createPaginatedSLO(slo)); - mockSummaryClient.fetchSummary.mockResolvedValueOnce(someSummary(slo)); - - await findSLO.execute({ sortBy: 'indicatorType', sortDirection: 'desc' }); + mockSummarySearchClient.search.mockResolvedValueOnce(summarySearchResult(slo)); + mockRepository.findAllByIds.mockResolvedValueOnce([slo]); + + await findSLO.execute({ + kqlQuery: "slo.name:'Service*' and slo.indicator.type:'sli.kql.custom'", + page: '2', + perPage: '10', + sortBy: 'error_budget_consumed', + sortDirection: 'asc', + }); - expect(mockRepository.find).toHaveBeenCalledWith( - { name: undefined }, - { field: SortField.IndicatorType, direction: SortDirection.Desc }, - { page: 1, perPage: 25 } - ); + expect(mockSummarySearchClient.search.mock.calls[0]).toMatchInlineSnapshot(` + Array [ + "slo.name:'Service*' and slo.indicator.type:'sli.kql.custom'", + Object { + "direction": "asc", + "field": "error_budget_consumed", + }, + Object { + "page": 2, + "perPage": 10, + }, + ] + `); }); }); }); -function someSummary(slo: SLO): Record { +function summarySearchResult(slo: SLO): Paginated { return { - [slo.id]: { - status: 'HEALTHY', - sliValue: 0.9999, - errorBudget: { - initial: 0.001, - consumed: 0.1, - remaining: 0.9, - isEstimated: false, + total: 1, + perPage: 25, + page: 1, + results: [ + { + id: slo.id, + summary: { + status: 'HEALTHY', + sliValue: 0.9999, + errorBudget: { + initial: 0.001, + consumed: 0.1, + remaining: 0.9, + isEstimated: false, + }, + }, }, - }, + ], }; } diff --git a/x-pack/plugins/observability/server/services/slo/find_slo.ts b/x-pack/plugins/observability/server/services/slo/find_slo.ts index 1a21be1a416e85..ccbbe94a062266 100644 --- a/x-pack/plugins/observability/server/services/slo/find_slo.ts +++ b/x-pack/plugins/observability/server/services/slo/find_slo.ts @@ -6,55 +6,45 @@ */ import { FindSLOParams, FindSLOResponse, findSLOResponseSchema } from '@kbn/slo-schema'; -import { SLO, SLOId, SLOWithSummary, Summary } from '../../domain/models'; -import { - Criteria, - Paginated, - Pagination, - SLORepository, - Sort, - SortField, - SortDirection, -} from './slo_repository'; -import { SummaryClient } from './summary_client'; +import { SLO, SLOWithSummary } from '../../domain/models'; +import { SLORepository } from './slo_repository'; +import { Pagination, SLOSummary, Sort, SummarySearchClient } from './summary_search_client'; const DEFAULT_PAGE = 1; const DEFAULT_PER_PAGE = 25; export class FindSLO { - constructor(private repository: SLORepository, private summaryClient: SummaryClient) {} + constructor( + private repository: SLORepository, + private summarySearchClient: SummarySearchClient + ) {} public async execute(params: FindSLOParams): Promise { - const pagination: Pagination = toPagination(params); - const criteria: Criteria = toCriteria(params); - const sort: Sort = toSort(params); - - const { results: sloList, ...resultMeta }: Paginated = await this.repository.find( - criteria, - sort, - pagination + const sloSummaryList = await this.summarySearchClient.search( + params.kqlQuery ?? '', + toSort(params), + toPagination(params) ); - const summaryBySlo = await this.summaryClient.fetchSummary(sloList); - const sloListWithSummary = mergeSloWithSummary(sloList, summaryBySlo); + const sloList = await this.repository.findAllByIds(sloSummaryList.results.map((slo) => slo.id)); + const sloListWithSummary = mergeSloWithSummary(sloList, sloSummaryList.results); return findSLOResponseSchema.encode({ - page: resultMeta.page, - perPage: resultMeta.perPage, - total: resultMeta.total, + page: sloSummaryList.page, + perPage: sloSummaryList.perPage, + total: sloSummaryList.total, results: sloListWithSummary, }); } } -function mergeSloWithSummary( - sloList: SLO[], - summaryBySlo: Record -): SLOWithSummary[] { - return sloList.map((slo) => ({ - ...slo, - summary: summaryBySlo[slo.id], - })); +function mergeSloWithSummary(sloList: SLO[], sloSummaryList: SLOSummary[]): SLOWithSummary[] { + return sloSummaryList + .filter((sloSummary) => sloList.some((s) => s.id === sloSummary.id)) + .map((sloSummary) => ({ + ...sloList.find((s) => s.id === sloSummary.id)!, + summary: sloSummary.summary, + })); } function toPagination(params: FindSLOParams): Pagination { @@ -67,13 +57,9 @@ function toPagination(params: FindSLOParams): Pagination { }; } -function toCriteria(params: FindSLOParams): Criteria { - return { name: params.name, indicatorTypes: params.indicatorTypes }; -} - function toSort(params: FindSLOParams): Sort { return { - field: params.sortBy === 'indicatorType' ? SortField.IndicatorType : SortField.CreationTime, - direction: params.sortDirection === 'desc' ? SortDirection.Desc : SortDirection.Asc, + field: params.sortBy ?? 'status', + direction: params.sortDirection ?? 'asc', }; } diff --git a/x-pack/plugins/observability/server/services/slo/fixtures/duration.ts b/x-pack/plugins/observability/server/services/slo/fixtures/duration.ts index a07eab2642e91c..26690b6680f180 100644 --- a/x-pack/plugins/observability/server/services/slo/fixtures/duration.ts +++ b/x-pack/plugins/observability/server/services/slo/fixtures/duration.ts @@ -7,14 +7,14 @@ import { Duration, DurationUnit } from '../../../domain/models'; -export function oneQuarter(): Duration { - return new Duration(1, DurationUnit.Quarter); -} - export function thirtyDays(): Duration { return new Duration(30, DurationUnit.Day); } +export function ninetyDays(): Duration { + return new Duration(90, DurationUnit.Day); +} + export function oneMonth(): Duration { return new Duration(1, DurationUnit.Month); } diff --git a/x-pack/plugins/observability/server/services/slo/fixtures/slo.ts b/x-pack/plugins/observability/server/services/slo/fixtures/slo.ts index fc7cf292095c94..2f645f6879a631 100644 --- a/x-pack/plugins/observability/server/services/slo/fixtures/slo.ts +++ b/x-pack/plugins/observability/server/services/slo/fixtures/slo.ts @@ -5,12 +5,10 @@ * 2.0. */ +import { SavedObject } from '@kbn/core-saved-objects-server'; +import { CreateSLOParams, HistogramIndicator, sloSchema } from '@kbn/slo-schema'; import { cloneDeep } from 'lodash'; import { v1 as uuidv1 } from 'uuid'; -import { SavedObject } from '@kbn/core-saved-objects-server'; -import { sloSchema, CreateSLOParams, HistogramIndicator } from '@kbn/slo-schema'; - -import { SO_SLO_TYPE } from '../../../saved_objects'; import { APMTransactionDurationIndicator, APMTransactionErrorRateIndicator, @@ -22,9 +20,9 @@ import { SLO, StoredSLO, } from '../../../domain/models'; -import { Paginated } from '../slo_repository'; -import { oneWeek, twoMinute } from './duration'; -import { sevenDaysRolling } from './time_window'; +import { SO_SLO_TYPE } from '../../../saved_objects'; +import { twoMinute } from './duration'; +import { sevenDaysRolling, weeklyCalendarAligned } from './time_window'; export const createAPMTransactionErrorRateIndicator = ( params: Partial = {} @@ -184,23 +182,7 @@ export const createSLOWithTimeslicesBudgetingMethod = (params: Partial = {} export const createSLOWithCalendarTimeWindow = (params: Partial = {}): SLO => { return createSLO({ - timeWindow: { - duration: oneWeek(), - type: 'calendarAligned', - }, + timeWindow: weeklyCalendarAligned(), ...params, }); }; - -export const createPaginatedSLO = ( - slo: SLO, - params: Partial> = {} -): Paginated => { - return { - page: 1, - perPage: 25, - total: 1, - results: [slo], - ...params, - }; -}; diff --git a/x-pack/plugins/observability/server/services/slo/fixtures/summary_search_document.ts b/x-pack/plugins/observability/server/services/slo/fixtures/summary_search_document.ts new file mode 100644 index 00000000000000..2d2f1c262f8b47 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/fixtures/summary_search_document.ts @@ -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 { v1 as uuidv1 } from 'uuid'; + +export const aSummaryDocument = ({ + id = uuidv1(), + sliValue = 0.9, + consumed = 0.4, + isTempDoc = false, + status = 'HEALTHY', +} = {}) => { + return { + goodEvents: 96, + totalEvents: 100, + errorBudgetEstimated: false, + errorBudgetRemaining: 1 - consumed, + errorBudgetConsumed: consumed, + isTempDoc, + service: { + environment: null, + name: null, + }, + slo: { + indicator: { + type: 'sli.kql.custom', + }, + timeWindow: { + duration: '30d', + type: 'rolling', + }, + instanceId: '*', + name: 'irrelevant', + description: '', + id, + budgetingMethod: 'occurrences', + revision: 1, + tags: ['tag-one', 'tag-two', 'irrelevant'], + }, + errorBudgetInitial: 0.02, + transaction: { + name: null, + type: null, + }, + sliValue, + statusCode: 4, + status, + }; +}; + +export const aHitFromSummaryIndex = (_source: any) => { + return { + _index: '.slo-observability.summary-v2', + _id: uuidv1(), + _score: 1, + _source, + }; +}; + +export const aHitFromTempSummaryIndex = (_source: any) => { + return { + _index: '.slo-observability.summary-v2.temp', + _id: uuidv1(), + _score: 1, + _source, + }; +}; diff --git a/x-pack/plugins/observability/server/services/slo/fixtures/time_window.ts b/x-pack/plugins/observability/server/services/slo/fixtures/time_window.ts index e2ffa8459720a4..c8d1601a22e2bc 100644 --- a/x-pack/plugins/observability/server/services/slo/fixtures/time_window.ts +++ b/x-pack/plugins/observability/server/services/slo/fixtures/time_window.ts @@ -5,15 +5,12 @@ * 2.0. */ -import { RollingTimeWindow, TimeWindow } from '../../../domain/models/time_window'; -import { oneWeek, sevenDays, sixHours, thirtyDays } from './duration'; - -export function sixHoursRolling(): TimeWindow { - return { - duration: sixHours(), - type: 'rolling', - }; -} +import { + CalendarAlignedTimeWindow, + RollingTimeWindow, + TimeWindow, +} from '../../../domain/models/time_window'; +import { ninetyDays, oneMonth, oneWeek, sevenDays, thirtyDays } from './duration'; export function sevenDaysRolling(): RollingTimeWindow { return { @@ -28,9 +25,23 @@ export function thirtyDaysRolling(): RollingTimeWindow { }; } -export function weeklyCalendarAligned(): TimeWindow { +export function ninetyDaysRolling(): TimeWindow { + return { + duration: ninetyDays(), + type: 'rolling', + }; +} + +export function weeklyCalendarAligned(): CalendarAlignedTimeWindow { return { duration: oneWeek(), type: 'calendarAligned', }; } + +export function monthlyCalendarAligned(): CalendarAlignedTimeWindow { + return { + duration: oneMonth(), + type: 'calendarAligned', + }; +} diff --git a/x-pack/plugins/observability/server/services/slo/get_diagnosis.ts b/x-pack/plugins/observability/server/services/slo/get_diagnosis.ts index a70b65ab895024..028a8089658d1f 100644 --- a/x-pack/plugins/observability/server/services/slo/get_diagnosis.ts +++ b/x-pack/plugins/observability/server/services/slo/get_diagnosis.ts @@ -6,18 +6,20 @@ */ import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; -import { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import { LicensingApiRequestHandlerContext } from '@kbn/licensing-plugin/server'; - import { getSLOTransformId, SLO_COMPONENT_TEMPLATE_MAPPINGS_NAME, SLO_COMPONENT_TEMPLATE_SETTINGS_NAME, SLO_INDEX_TEMPLATE_NAME, SLO_INGEST_PIPELINE_NAME, + SLO_SUMMARY_COMPONENT_TEMPLATE_MAPPINGS_NAME, + SLO_SUMMARY_COMPONENT_TEMPLATE_SETTINGS_NAME, + SLO_SUMMARY_INDEX_TEMPLATE_NAME, + SLO_SUMMARY_TRANSFORM_NAME_PREFIX, } from '../../assets/constants'; -import { StoredSLO } from '../../domain/models'; -import { SO_SLO_TYPE } from '../../saved_objects'; +import { SLO } from '../../domain/models'; +import { SLORepository } from './slo_repository'; const OK = 'OK'; const NOT_OK = 'NOT_OK'; @@ -30,11 +32,19 @@ export async function getGlobalDiagnosis( const licenseInfo = licensing.license.toJSON(); const userPrivileges = await esClient.security.getUserPrivileges(); const sloResources = await getSloResourcesDiagnosis(esClient); + const sloSummaryResources = await getSloSummaryResourcesDiagnosis(esClient); + + const sloSummaryTransformsStats = await esClient.transform.getTransformStats({ + transform_id: `${SLO_SUMMARY_TRANSFORM_NAME_PREFIX}*`, + allow_no_match: true, + }); return { licenseAndFeatures: licenseInfo, userPrivileges, sloResources, + sloSummaryResources, + sloSummaryTransformsStats, }; } catch (error) { throw error; @@ -43,42 +53,36 @@ export async function getGlobalDiagnosis( export async function getSloDiagnosis( sloId: string, - services: { esClient: ElasticsearchClient; soClient: SavedObjectsClientContract } + services: { esClient: ElasticsearchClient; repository: SLORepository } ) { - const { esClient, soClient } = services; + const { esClient, repository } = services; const sloResources = await getSloResourcesDiagnosis(esClient); + const sloSummaryResources = await getSloSummaryResourcesDiagnosis(esClient); - let sloSavedObject; + let slo: SLO | undefined; try { - sloSavedObject = await soClient.get(SO_SLO_TYPE, sloId); + slo = await repository.findById(sloId); } catch (err) { // noop } const sloTransformStats = await esClient.transform.getTransformStats({ - transform_id: getSLOTransformId(sloId, sloSavedObject?.attributes.revision ?? 1), + transform_id: getSLOTransformId(sloId, slo?.revision ?? 1), + allow_no_match: true, }); - let dataSample; - if (sloSavedObject?.attributes.indicator.params.index) { - const slo = sloSavedObject.attributes; - const sortField = - 'timestampField' in slo.indicator.params - ? slo.indicator.params.timestampField ?? '@timestamp' - : '@timestamp'; - dataSample = await esClient.search({ - index: slo.indicator.params.index, - sort: { [sortField]: 'desc' }, - size: 5, - }); - } + const sloSummaryTransformsStats = await esClient.transform.getTransformStats({ + transform_id: `${SLO_SUMMARY_TRANSFORM_NAME_PREFIX}*`, + allow_no_match: true, + }); return { sloResources, - sloSavedObject: sloSavedObject ?? NOT_OK, + sloSummaryResources, + slo: slo ?? NOT_OK, sloTransformStats, - dataSample: dataSample ?? NOT_OK, + sloSummaryTransformsStats, }; } @@ -116,3 +120,29 @@ async function getSloResourcesDiagnosis(esClient: ElasticsearchClient) { } } } + +async function getSloSummaryResourcesDiagnosis(esClient: ElasticsearchClient) { + try { + const indexTemplateExists = await esClient.indices.existsIndexTemplate({ + name: SLO_SUMMARY_INDEX_TEMPLATE_NAME, + }); + + const mappingsTemplateExists = await esClient.cluster.existsComponentTemplate({ + name: SLO_SUMMARY_COMPONENT_TEMPLATE_MAPPINGS_NAME, + }); + + const settingsTemplateExists = await esClient.cluster.existsComponentTemplate({ + name: SLO_SUMMARY_COMPONENT_TEMPLATE_SETTINGS_NAME, + }); + + return { + [SLO_SUMMARY_INDEX_TEMPLATE_NAME]: indexTemplateExists ? OK : NOT_OK, + [SLO_SUMMARY_COMPONENT_TEMPLATE_MAPPINGS_NAME]: mappingsTemplateExists ? OK : NOT_OK, + [SLO_SUMMARY_COMPONENT_TEMPLATE_SETTINGS_NAME]: settingsTemplateExists ? OK : NOT_OK, + }; + } catch (err) { + if (err.meta.statusCode === 403) { + throw new Error('Insufficient permissions to access Elasticsearch Cluster', { cause: err }); + } + } +} diff --git a/x-pack/plugins/observability/server/services/slo/index.ts b/x-pack/plugins/observability/server/services/slo/index.ts index 9d7097d92fc031..b2d08c0261783b 100644 --- a/x-pack/plugins/observability/server/services/slo/index.ts +++ b/x-pack/plugins/observability/server/services/slo/index.ts @@ -12,6 +12,8 @@ export * from './find_slo'; export * from './get_slo'; export * from './historical_summary_client'; export * from './resource_installer'; +export * from './slo_installer'; +export * from './summary_transform/summary_transform_installer'; export * from './sli_client'; export * from './slo_repository'; export * from './transform_manager'; diff --git a/x-pack/plugins/observability/server/services/slo/mocks/index.ts b/x-pack/plugins/observability/server/services/slo/mocks/index.ts index bb8b66542b1db7..6c464a135a9729 100644 --- a/x-pack/plugins/observability/server/services/slo/mocks/index.ts +++ b/x-pack/plugins/observability/server/services/slo/mocks/index.ts @@ -9,6 +9,8 @@ import { ResourceInstaller } from '../resource_installer'; import { SLIClient } from '../sli_client'; import { SLORepository } from '../slo_repository'; import { SummaryClient } from '../summary_client'; +import { SummarySearchClient } from '../summary_search_client'; +import { SummaryTransformInstaller } from '../summary_transform/summary_transform_installer'; import { TransformManager } from '../transform_manager'; const createResourceInstallerMock = (): jest.Mocked => { @@ -17,6 +19,12 @@ const createResourceInstallerMock = (): jest.Mocked => { }; }; +const createSummaryTransformInstallerMock = (): jest.Mocked => { + return { + installAndStart: jest.fn(), + }; +}; + const createTransformManagerMock = (): jest.Mocked => { return { install: jest.fn(), @@ -32,7 +40,6 @@ const createSLORepositoryMock = (): jest.Mocked => { findById: jest.fn(), findAllByIds: jest.fn(), deleteById: jest.fn(), - find: jest.fn(), }; }; @@ -42,6 +49,12 @@ const createSummaryClientMock = (): jest.Mocked => { }; }; +const createSummarySearchClientMock = (): jest.Mocked => { + return { + search: jest.fn(), + }; +}; + const createSLIClientMock = (): jest.Mocked => { return { fetchSLIDataFrom: jest.fn(), @@ -50,8 +63,10 @@ const createSLIClientMock = (): jest.Mocked => { export { createResourceInstallerMock, + createSummaryTransformInstallerMock, createTransformManagerMock, createSLORepositoryMock, createSummaryClientMock, + createSummarySearchClientMock, createSLIClientMock, }; diff --git a/x-pack/plugins/observability/server/services/slo/resource_installer.test.ts b/x-pack/plugins/observability/server/services/slo/resource_installer.test.ts index 90749176513da8..42add5a5395662 100644 --- a/x-pack/plugins/observability/server/services/slo/resource_installer.test.ts +++ b/x-pack/plugins/observability/server/services/slo/resource_installer.test.ts @@ -5,28 +5,31 @@ * 2.0. */ -import { IngestGetPipelineResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { elasticsearchServiceMock } from '@kbn/core/server/mocks'; import { loggerMock } from '@kbn/logging-mocks'; import { - SLO_INGEST_PIPELINE_NAME, SLO_COMPONENT_TEMPLATE_MAPPINGS_NAME, SLO_COMPONENT_TEMPLATE_SETTINGS_NAME, SLO_INDEX_TEMPLATE_NAME, + SLO_INGEST_PIPELINE_NAME, SLO_RESOURCES_VERSION, + SLO_SUMMARY_COMPONENT_TEMPLATE_MAPPINGS_NAME, + SLO_SUMMARY_COMPONENT_TEMPLATE_SETTINGS_NAME, + SLO_SUMMARY_INDEX_TEMPLATE_NAME, + SLO_SUMMARY_INGEST_PIPELINE_NAME, } from '../../assets/constants'; import { DefaultResourceInstaller } from './resource_installer'; describe('resourceInstaller', () => { - describe("when the common resources don't exist", () => { + describe('when the common resources are not installed yet', () => { it('installs the common resources', async () => { const mockClusterClient = elasticsearchServiceMock.createElasticsearchClient(); - mockClusterClient.indices.existsIndexTemplate.mockResponseOnce(false); + mockClusterClient.indices.getIndexTemplate.mockResponseOnce({ index_templates: [] }); const installer = new DefaultResourceInstaller(mockClusterClient, loggerMock.create()); await installer.ensureCommonResourcesInstalled(); - expect(mockClusterClient.cluster.putComponentTemplate).toHaveBeenCalledTimes(2); + expect(mockClusterClient.cluster.putComponentTemplate).toHaveBeenCalledTimes(4); expect(mockClusterClient.cluster.putComponentTemplate).toHaveBeenNthCalledWith( 1, expect.objectContaining({ name: SLO_COMPONENT_TEMPLATE_MAPPINGS_NAME }) @@ -35,23 +38,71 @@ describe('resourceInstaller', () => { 2, expect.objectContaining({ name: SLO_COMPONENT_TEMPLATE_SETTINGS_NAME }) ); - expect(mockClusterClient.indices.putIndexTemplate).toHaveBeenCalledWith( + expect(mockClusterClient.cluster.putComponentTemplate).toHaveBeenNthCalledWith( + 3, + expect.objectContaining({ name: SLO_SUMMARY_COMPONENT_TEMPLATE_MAPPINGS_NAME }) + ); + expect(mockClusterClient.cluster.putComponentTemplate).toHaveBeenNthCalledWith( + 4, + expect.objectContaining({ name: SLO_SUMMARY_COMPONENT_TEMPLATE_SETTINGS_NAME }) + ); + expect(mockClusterClient.indices.putIndexTemplate).toHaveBeenCalledTimes(2); + expect(mockClusterClient.indices.putIndexTemplate).toHaveBeenNthCalledWith( + 1, expect.objectContaining({ name: SLO_INDEX_TEMPLATE_NAME }) ); - expect(mockClusterClient.ingest.putPipeline).toHaveBeenCalledWith( + expect(mockClusterClient.indices.putIndexTemplate).toHaveBeenNthCalledWith( + 2, + expect.objectContaining({ name: SLO_SUMMARY_INDEX_TEMPLATE_NAME }) + ); + + expect(mockClusterClient.ingest.putPipeline).toHaveBeenCalledTimes(2); + expect(mockClusterClient.ingest.putPipeline).toHaveBeenNthCalledWith( + 1, expect.objectContaining({ id: SLO_INGEST_PIPELINE_NAME }) ); + expect(mockClusterClient.ingest.putPipeline).toHaveBeenNthCalledWith( + 2, + expect.objectContaining({ id: SLO_SUMMARY_INGEST_PIPELINE_NAME }) + ); }); }); - describe('when the common resources exist', () => { - it('does not install the common resources', async () => { + describe('when the common resources are already installed', () => { + it('skips the installation', async () => { const mockClusterClient = elasticsearchServiceMock.createElasticsearchClient(); - mockClusterClient.indices.existsIndexTemplate.mockResponseOnce(true); + mockClusterClient.indices.getIndexTemplate.mockResponseOnce({ + index_templates: [ + { + name: SLO_INDEX_TEMPLATE_NAME, + index_template: { + index_patterns: [], + composed_of: [], + _meta: { version: SLO_RESOURCES_VERSION }, + }, + }, + ], + }); + mockClusterClient.indices.getIndexTemplate.mockResponseOnce({ + index_templates: [ + { + name: SLO_SUMMARY_INDEX_TEMPLATE_NAME, + index_template: { + index_patterns: [], + composed_of: [], + _meta: { version: SLO_RESOURCES_VERSION }, + }, + }, + ], + }); mockClusterClient.ingest.getPipeline.mockResponseOnce({ // @ts-ignore _meta not typed properly [SLO_INGEST_PIPELINE_NAME]: { _meta: { version: SLO_RESOURCES_VERSION } }, - } as IngestGetPipelineResponse); + }); + mockClusterClient.ingest.getPipeline.mockResponseOnce({ + // @ts-ignore _meta not typed properly + [SLO_SUMMARY_INGEST_PIPELINE_NAME]: { _meta: { version: SLO_RESOURCES_VERSION } }, + }); const installer = new DefaultResourceInstaller(mockClusterClient, loggerMock.create()); await installer.ensureCommonResourcesInstalled(); diff --git a/x-pack/plugins/observability/server/services/slo/resource_installer.ts b/x-pack/plugins/observability/server/services/slo/resource_installer.ts index abc02052097b5b..742b2a8e7202ea 100644 --- a/x-pack/plugins/observability/server/services/slo/resource_installer.ts +++ b/x-pack/plugins/observability/server/services/slo/resource_installer.ts @@ -11,18 +11,32 @@ import type { IngestPutPipelineRequest, } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import type { ElasticsearchClient, Logger } from '@kbn/core/server'; - +import { getSLOMappingsTemplate } from '../../assets/component_templates/slo_mappings_template'; +import { getSLOSettingsTemplate } from '../../assets/component_templates/slo_settings_template'; +import { getSLOSummaryMappingsTemplate } from '../../assets/component_templates/slo_summary_mappings_template'; +import { getSLOSummarySettingsTemplate } from '../../assets/component_templates/slo_summary_settings_template'; import { - SLO_INGEST_PIPELINE_NAME, SLO_COMPONENT_TEMPLATE_MAPPINGS_NAME, SLO_COMPONENT_TEMPLATE_SETTINGS_NAME, + SLO_DESTINATION_INDEX_NAME, SLO_INDEX_TEMPLATE_NAME, + SLO_INDEX_TEMPLATE_PATTERN, + SLO_INGEST_PIPELINE_INDEX_NAME_PREFIX, + SLO_INGEST_PIPELINE_NAME, SLO_RESOURCES_VERSION, + SLO_SUMMARY_COMPONENT_TEMPLATE_MAPPINGS_NAME, + SLO_SUMMARY_COMPONENT_TEMPLATE_SETTINGS_NAME, + SLO_SUMMARY_DESTINATION_INDEX_NAME, + SLO_SUMMARY_INDEX_TEMPLATE_NAME, + SLO_SUMMARY_INDEX_TEMPLATE_PATTERN, + SLO_SUMMARY_INGEST_PIPELINE_NAME, + SLO_SUMMARY_TEMP_INDEX_NAME, } from '../../assets/constants'; -import { getSLOMappingsTemplate } from '../../assets/component_templates/slo_mappings_template'; -import { getSLOSettingsTemplate } from '../../assets/component_templates/slo_settings_template'; import { getSLOIndexTemplate } from '../../assets/index_templates/slo_index_templates'; +import { getSLOSummaryIndexTemplate } from '../../assets/index_templates/slo_summary_index_templates'; import { getSLOPipelineTemplate } from '../../assets/ingest_templates/slo_pipeline_template'; +import { getSLOSummaryPipelineTemplate } from '../../assets/ingest_templates/slo_summary_pipeline_template'; +import { retryTransientEsErrors } from '../../utils/retry'; export interface ResourceInstaller { ensureCommonResourcesInstalled(): Promise; @@ -35,13 +49,12 @@ export class DefaultResourceInstaller implements ResourceInstaller { const alreadyInstalled = await this.areResourcesAlreadyInstalled(); if (alreadyInstalled) { - this.logger.debug( - `Skipping installation of resources shared for SLO since they already exist` - ); + this.logger.info('SLO resources already installed - skipping'); return; } try { + this.logger.info('Installing SLO shared resources'); await Promise.all([ this.createOrUpdateComponentTemplate( getSLOMappingsTemplate(SLO_COMPONENT_TEMPLATE_MAPPINGS_NAME) @@ -49,41 +62,90 @@ export class DefaultResourceInstaller implements ResourceInstaller { this.createOrUpdateComponentTemplate( getSLOSettingsTemplate(SLO_COMPONENT_TEMPLATE_SETTINGS_NAME) ), + this.createOrUpdateComponentTemplate( + getSLOSummaryMappingsTemplate(SLO_SUMMARY_COMPONENT_TEMPLATE_MAPPINGS_NAME) + ), + this.createOrUpdateComponentTemplate( + getSLOSummarySettingsTemplate(SLO_SUMMARY_COMPONENT_TEMPLATE_SETTINGS_NAME) + ), ]); await this.createOrUpdateIndexTemplate( - getSLOIndexTemplate(SLO_INDEX_TEMPLATE_NAME, `${SLO_INDEX_TEMPLATE_NAME}-*`, [ + getSLOIndexTemplate(SLO_INDEX_TEMPLATE_NAME, SLO_INDEX_TEMPLATE_PATTERN, [ SLO_COMPONENT_TEMPLATE_MAPPINGS_NAME, SLO_COMPONENT_TEMPLATE_SETTINGS_NAME, ]) ); - await this.createOrUpdateIngestPipelineTemplate( - getSLOPipelineTemplate( - SLO_INGEST_PIPELINE_NAME, - this.getPipelinePrefix(SLO_RESOURCES_VERSION) + await this.createOrUpdateIndexTemplate( + getSLOSummaryIndexTemplate( + SLO_SUMMARY_INDEX_TEMPLATE_NAME, + SLO_SUMMARY_INDEX_TEMPLATE_PATTERN, + [ + SLO_SUMMARY_COMPONENT_TEMPLATE_MAPPINGS_NAME, + SLO_SUMMARY_COMPONENT_TEMPLATE_SETTINGS_NAME, + ] ) ); + + await this.createIndex(SLO_DESTINATION_INDEX_NAME); + await this.createIndex(SLO_SUMMARY_DESTINATION_INDEX_NAME); + await this.createIndex(SLO_SUMMARY_TEMP_INDEX_NAME); + + await this.createOrUpdateIngestPipelineTemplate( + getSLOPipelineTemplate(SLO_INGEST_PIPELINE_NAME, SLO_INGEST_PIPELINE_INDEX_NAME_PREFIX) + ); + + await this.createOrUpdateIngestPipelineTemplate( + getSLOSummaryPipelineTemplate(SLO_SUMMARY_INGEST_PIPELINE_NAME) + ); } catch (err) { - this.logger.error(`Error installing resources shared for SLO - ${err.message}`); + this.logger.error(`Error installing resources shared for SLO: ${err.message}`); throw err; } } - private getPipelinePrefix(version: number): string { - // Following https://www.elastic.co/blog/an-introduction-to-the-elastic-data-stream-naming-scheme - // slo-observability.sli-. - return `${SLO_INDEX_TEMPLATE_NAME}-v${version}.`; - } - private async areResourcesAlreadyInstalled(): Promise { - const indexTemplateExists = await this.esClient.indices.existsIndexTemplate({ - name: SLO_INDEX_TEMPLATE_NAME, - }); + let indexTemplateExists = false; + try { + const { index_templates: indexTemplates } = await this.execute(() => + this.esClient.indices.getIndexTemplate({ + name: SLO_INDEX_TEMPLATE_NAME, + }) + ); + + const sloIndexTemplate = indexTemplates.find( + (template) => template.name === SLO_INDEX_TEMPLATE_NAME + ); + indexTemplateExists = + !!sloIndexTemplate && + sloIndexTemplate.index_template._meta?.version === SLO_RESOURCES_VERSION; + } catch (err) { + return false; + } + + let summaryIndexTemplateExists = false; + try { + const { index_templates: indexTemplates } = await this.execute(() => + this.esClient.indices.getIndexTemplate({ + name: SLO_SUMMARY_INDEX_TEMPLATE_NAME, + }) + ); + const sloSummaryIndexTemplate = indexTemplates.find( + (template) => template.name === SLO_SUMMARY_INDEX_TEMPLATE_NAME + ); + summaryIndexTemplateExists = + !!sloSummaryIndexTemplate && + sloSummaryIndexTemplate.index_template._meta?.version === SLO_RESOURCES_VERSION; + } catch (err) { + return false; + } let ingestPipelineExists = false; try { - const pipeline = await this.esClient.ingest.getPipeline({ id: SLO_INGEST_PIPELINE_NAME }); + const pipeline = await this.execute(() => + this.esClient.ingest.getPipeline({ id: SLO_INGEST_PIPELINE_NAME }) + ); ingestPipelineExists = // @ts-ignore _meta is not defined on the type @@ -92,21 +154,54 @@ export class DefaultResourceInstaller implements ResourceInstaller { return false; } - return indexTemplateExists && ingestPipelineExists; + let summaryIngestPipelineExists = false; + try { + const pipeline = await this.execute(() => + this.esClient.ingest.getPipeline({ id: SLO_SUMMARY_INGEST_PIPELINE_NAME }) + ); + + summaryIngestPipelineExists = + pipeline && + // @ts-ignore _meta is not defined on the type + pipeline[SLO_SUMMARY_INGEST_PIPELINE_NAME]._meta.version === SLO_RESOURCES_VERSION; + } catch (err) { + return false; + } + + return ( + indexTemplateExists && + summaryIndexTemplateExists && + ingestPipelineExists && + summaryIngestPipelineExists + ); } private async createOrUpdateComponentTemplate(template: ClusterPutComponentTemplateRequest) { - this.logger.debug(`Installing SLO component template ${template.name}`); - return this.esClient.cluster.putComponentTemplate(template); + this.logger.info(`Installing SLO component template [${template.name}]`); + return this.execute(() => this.esClient.cluster.putComponentTemplate(template)); } private async createOrUpdateIndexTemplate(template: IndicesPutIndexTemplateRequest) { - this.logger.debug(`Installing SLO index template ${template.name}`); - return this.esClient.indices.putIndexTemplate(template); + this.logger.info(`Installing SLO index template [${template.name}]`); + return this.execute(() => this.esClient.indices.putIndexTemplate(template)); } private async createOrUpdateIngestPipelineTemplate(template: IngestPutPipelineRequest) { - this.logger.debug(`Installing SLO ingest pipeline template ${template.id}`); - await this.esClient.ingest.putPipeline(template); + this.logger.info(`Installing SLO ingest pipeline [${template.id}]`); + return this.execute(() => this.esClient.ingest.putPipeline(template)); + } + + private async createIndex(indexName: string) { + try { + await this.execute(() => this.esClient.indices.create({ index: indexName })); + } catch (err) { + if (err?.meta?.body?.error?.type !== 'resource_already_exists_exception') { + throw err; + } + } + } + + private async execute(esCall: () => Promise): Promise { + return await retryTransientEsErrors(esCall, { logger: this.logger }); } } diff --git a/x-pack/plugins/observability/server/services/slo/sli_client.ts b/x-pack/plugins/observability/server/services/slo/sli_client.ts index c40ca6d216facf..1a9e6f46ec82cf 100644 --- a/x-pack/plugins/observability/server/services/slo/sli_client.ts +++ b/x-pack/plugins/observability/server/services/slo/sli_client.ts @@ -13,11 +13,15 @@ import { MsearchMultisearchBody, } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { ElasticsearchClient } from '@kbn/core/server'; -import { occurrencesBudgetingMethodSchema, timeslicesBudgetingMethodSchema } from '@kbn/slo-schema'; +import { + occurrencesBudgetingMethodSchema, + timeslicesBudgetingMethodSchema, + toMomentUnitOfTime, +} from '@kbn/slo-schema'; import { assertNever } from '@kbn/std'; +import moment from 'moment'; import { SLO_DESTINATION_INDEX_PATTERN } from '../../assets/constants'; import { DateRange, Duration, IndicatorData, SLO } from '../../domain/models'; -import { toDateRange } from '../../domain/services/date_range'; import { InternalQueryError } from '../../errors'; export interface SLIClient { @@ -47,10 +51,7 @@ export class DefaultSLIClient implements SLIClient { a.duration.isShorterThan(b.duration) ? 1 : -1 ); const longestLookbackWindow = sortedLookbackWindows[0]; - const longestDateRange = toDateRange({ - duration: longestLookbackWindow.duration, - type: 'rolling', - }); + const longestDateRange = getLookbackDateRange(longestLookbackWindow.duration); if (occurrencesBudgetingMethodSchema.is(slo.budgetingMethod)) { const result = await this.esClient.search({ @@ -179,3 +180,15 @@ function handleWindowedResult( return indicatorDataPerLookbackWindow; } + +function getLookbackDateRange(duration: Duration): { from: Date; to: Date } { + const unit = toMomentUnitOfTime(duration.unit); + const now = moment.utc().startOf('minute'); + const from = now.clone().subtract(duration.value, unit); + const to = now.clone(); + + return { + from: from.toDate(), + to: to.toDate(), + }; +} diff --git a/x-pack/plugins/observability/server/services/slo/slo_installer.test.ts b/x-pack/plugins/observability/server/services/slo/slo_installer.test.ts new file mode 100644 index 00000000000000..6bd9f798c62340 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/slo_installer.test.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 { loggingSystemMock } from '@kbn/core/server/mocks'; +import { MockedLogger } from '@kbn/logging-mocks'; +import { createResourceInstallerMock, createSummaryTransformInstallerMock } from './mocks'; +import { DefaultSLOInstaller } from './slo_installer'; + +describe('SLO Installer', () => { + let loggerMock: jest.Mocked; + + beforeEach(() => { + loggerMock = loggingSystemMock.createLogger(); + }); + + it.skip('handles concurrent installation', async () => { + const resourceInstaller = createResourceInstallerMock(); + const summaryTransformInstaller = createSummaryTransformInstallerMock(); + const service = new DefaultSLOInstaller( + resourceInstaller, + summaryTransformInstaller, + loggerMock + ); + + await Promise.all([service.install(), service.install()]); + + expect(resourceInstaller.ensureCommonResourcesInstalled).toHaveBeenCalledTimes(1); + expect(summaryTransformInstaller.installAndStart).toHaveBeenCalledTimes(1); + }); +}); diff --git a/x-pack/plugins/observability/server/services/slo/slo_installer.ts b/x-pack/plugins/observability/server/services/slo/slo_installer.ts new file mode 100644 index 00000000000000..b59612ca302531 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/slo_installer.ts @@ -0,0 +1,46 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Logger } from '@kbn/core/server'; +import { ResourceInstaller, SummaryTransformInstaller } from '.'; + +export interface SLOInstaller { + install(): Promise; +} + +export class DefaultSLOInstaller implements SLOInstaller { + private isInstalling: boolean = false; + + constructor( + private sloResourceInstaller: ResourceInstaller, + private sloSummaryInstaller: SummaryTransformInstaller, + private logger: Logger + ) {} + + public async install() { + if (this.isInstalling || process.env.CI) { + return; + } + this.isInstalling = true; + + let installTimeout; + try { + installTimeout = setTimeout(() => (this.isInstalling = false), 60000); + + await this.sloResourceInstaller.ensureCommonResourcesInstalled(); + await this.sloSummaryInstaller.installAndStart(); + } catch (error) { + this.logger.error('Failed to install SLO common resources and summary transforms', { + error, + }); + throw error; + } finally { + this.isInstalling = false; + clearTimeout(installTimeout); + } + } +} diff --git a/x-pack/plugins/observability/server/services/slo/slo_repository.test.ts b/x-pack/plugins/observability/server/services/slo/slo_repository.test.ts index 9149f58cc28c04..e303b759ea4ef3 100644 --- a/x-pack/plugins/observability/server/services/slo/slo_repository.test.ts +++ b/x-pack/plugins/observability/server/services/slo/slo_repository.test.ts @@ -8,23 +8,16 @@ import { SavedObjectsClientContract, SavedObjectsFindResponse } from '@kbn/core/server'; import { savedObjectsClientMock } from '@kbn/core/server/mocks'; import { sloSchema } from '@kbn/slo-schema'; - import { SLO, StoredSLO } from '../../domain/models'; -import { SO_SLO_TYPE } from '../../saved_objects'; -import { - KibanaSavedObjectsSLORepository, - Pagination, - Sort, - SortDirection, - SortField, -} from './slo_repository'; -import { createAPMTransactionDurationIndicator, createSLO, aStoredSLO } from './fixtures/slo'; import { SLOIdConflict, SLONotFound } from '../../errors'; +import { SO_SLO_TYPE } from '../../saved_objects'; +import { aStoredSLO, createAPMTransactionDurationIndicator, createSLO } from './fixtures/slo'; +import { KibanaSavedObjectsSLORepository } from './slo_repository'; const SOME_SLO = createSLO({ indicator: createAPMTransactionDurationIndicator() }); const ANOTHER_SLO = createSLO(); -function createFindResponse(sloList: SLO[]): SavedObjectsFindResponse { +function soFindResponse(sloList: SLO[]): SavedObjectsFindResponse { return { page: 1, per_page: 25, @@ -48,7 +41,7 @@ describe('KibanaSavedObjectsSLORepository', () => { describe('validation', () => { it('findById throws when an SLO is not found', async () => { - soClientMock.find.mockResolvedValueOnce(createFindResponse([])); + soClientMock.find.mockResolvedValueOnce(soFindResponse([])); const repository = new KibanaSavedObjectsSLORepository(soClientMock); await expect(repository.findById('inexistant-slo-id')).rejects.toThrowError( @@ -57,7 +50,7 @@ describe('KibanaSavedObjectsSLORepository', () => { }); it('deleteById throws when an SLO is not found', async () => { - soClientMock.find.mockResolvedValueOnce(createFindResponse([])); + soClientMock.find.mockResolvedValueOnce(soFindResponse([])); const repository = new KibanaSavedObjectsSLORepository(soClientMock); await expect(repository.deleteById('inexistant-slo-id')).rejects.toThrowError( @@ -69,7 +62,7 @@ describe('KibanaSavedObjectsSLORepository', () => { describe('saving an SLO', () => { it('saves the new SLO', async () => { const slo = createSLO({ id: 'my-id' }); - soClientMock.find.mockResolvedValueOnce(createFindResponse([])); + soClientMock.find.mockResolvedValueOnce(soFindResponse([])); soClientMock.create.mockResolvedValueOnce(aStoredSLO(slo)); const repository = new KibanaSavedObjectsSLORepository(soClientMock); @@ -90,7 +83,7 @@ describe('KibanaSavedObjectsSLORepository', () => { it('throws when the SLO id already exists and "throwOnConflict" is true', async () => { const slo = createSLO({ id: 'my-id' }); - soClientMock.find.mockResolvedValueOnce(createFindResponse([slo])); + soClientMock.find.mockResolvedValueOnce(soFindResponse([slo])); const repository = new KibanaSavedObjectsSLORepository(soClientMock); await expect(repository.save(slo, { throwOnConflict: true })).rejects.toThrowError( @@ -106,7 +99,7 @@ describe('KibanaSavedObjectsSLORepository', () => { it('updates the existing SLO', async () => { const slo = createSLO({ id: 'my-id' }); - soClientMock.find.mockResolvedValueOnce(createFindResponse([slo])); + soClientMock.find.mockResolvedValueOnce(soFindResponse([slo])); soClientMock.create.mockResolvedValueOnce(aStoredSLO(slo)); const repository = new KibanaSavedObjectsSLORepository(soClientMock); @@ -128,7 +121,7 @@ describe('KibanaSavedObjectsSLORepository', () => { it('finds an existing SLO', async () => { const repository = new KibanaSavedObjectsSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([SOME_SLO])); + soClientMock.find.mockResolvedValueOnce(soFindResponse([SOME_SLO])); const foundSLO = await repository.findById(SOME_SLO.id); @@ -143,7 +136,7 @@ describe('KibanaSavedObjectsSLORepository', () => { it('finds all SLOs by ids', async () => { const repository = new KibanaSavedObjectsSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([SOME_SLO, ANOTHER_SLO])); + soClientMock.find.mockResolvedValueOnce(soFindResponse([SOME_SLO, ANOTHER_SLO])); const results = await repository.findAllByIds([SOME_SLO.id, ANOTHER_SLO.id]); @@ -158,7 +151,7 @@ describe('KibanaSavedObjectsSLORepository', () => { it('deletes an SLO', async () => { const repository = new KibanaSavedObjectsSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([SOME_SLO])); + soClientMock.find.mockResolvedValueOnce(soFindResponse([SOME_SLO])); await repository.deleteById(SOME_SLO.id); @@ -170,238 +163,4 @@ describe('KibanaSavedObjectsSLORepository', () => { }); expect(soClientMock.delete).toHaveBeenCalledWith(SO_SLO_TYPE, SOME_SLO.id); }); - - describe('find', () => { - const DEFAULT_PAGINATION: Pagination = { page: 1, perPage: 25 }; - const DEFAULT_SORTING: Sort = { - field: SortField.CreationTime, - direction: SortDirection.Asc, - }; - - describe('Name search', () => { - it('includes the search on name with wildcard when provided', async () => { - const repository = new KibanaSavedObjectsSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([SOME_SLO])); - - const result = await repository.find( - { name: 'availability*' }, - DEFAULT_SORTING, - DEFAULT_PAGINATION - ); - - expect(result).toEqual({ - page: 1, - perPage: 25, - total: 1, - results: [SOME_SLO], - }); - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_SLO_TYPE, - page: 1, - perPage: 25, - filter: undefined, - search: '*availability*', - searchFields: ['name'], - sortField: 'created_at', - sortOrder: 'asc', - }); - }); - - it('includes the search on name with added wildcard when not provided', async () => { - const repository = new KibanaSavedObjectsSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([SOME_SLO])); - - const result = await repository.find( - { name: 'availa' }, - DEFAULT_SORTING, - DEFAULT_PAGINATION - ); - - expect(result).toEqual({ - page: 1, - perPage: 25, - total: 1, - results: [SOME_SLO], - }); - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_SLO_TYPE, - page: 1, - perPage: 25, - filter: undefined, - search: '*availa*', - searchFields: ['name'], - sortField: 'created_at', - sortOrder: 'asc', - }); - }); - }); - - describe('indicatorTypes filter', () => { - it('includes the filter on indicator types when provided', async () => { - const repository = new KibanaSavedObjectsSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([SOME_SLO])); - - const result = await repository.find( - { indicatorTypes: ['sli.kql.custom'] }, - DEFAULT_SORTING, - DEFAULT_PAGINATION - ); - - expect(result).toEqual({ - page: 1, - perPage: 25, - total: 1, - results: [SOME_SLO], - }); - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_SLO_TYPE, - page: 1, - perPage: 25, - filter: `(slo.attributes.indicator.type: sli.kql.custom)`, - search: undefined, - searchFields: undefined, - sortField: 'created_at', - sortOrder: 'asc', - }); - }); - - it('includes the filter on indicator types as logical OR when provided', async () => { - const repository = new KibanaSavedObjectsSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([SOME_SLO])); - - const result = await repository.find( - { indicatorTypes: ['sli.kql.custom', 'sli.apm.transactionDuration'] }, - DEFAULT_SORTING, - DEFAULT_PAGINATION - ); - - expect(result).toEqual({ - page: 1, - perPage: 25, - total: 1, - results: [SOME_SLO], - }); - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_SLO_TYPE, - page: 1, - perPage: 25, - filter: `(slo.attributes.indicator.type: sli.kql.custom or slo.attributes.indicator.type: sli.apm.transactionDuration)`, - search: undefined, - searchFields: undefined, - sortField: 'created_at', - sortOrder: 'asc', - }); - }); - }); - - it('includes search on name and filter on indicator types', async () => { - const repository = new KibanaSavedObjectsSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([SOME_SLO])); - - const result = await repository.find( - { name: 'latency', indicatorTypes: ['sli.kql.custom', 'sli.apm.transactionDuration'] }, - DEFAULT_SORTING, - DEFAULT_PAGINATION - ); - - expect(result).toEqual({ - page: 1, - perPage: 25, - total: 1, - results: [SOME_SLO], - }); - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_SLO_TYPE, - page: 1, - perPage: 25, - filter: `(slo.attributes.indicator.type: sli.kql.custom or slo.attributes.indicator.type: sli.apm.transactionDuration)`, - search: '*latency*', - searchFields: ['name'], - sortField: 'created_at', - sortOrder: 'asc', - }); - }); - - it('does not include the search or filter when no criteria provided', async () => { - const repository = new KibanaSavedObjectsSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([SOME_SLO])); - - const result = await repository.find({}, DEFAULT_SORTING, DEFAULT_PAGINATION); - - expect(result).toEqual({ - page: 1, - perPage: 25, - total: 1, - results: [SOME_SLO], - }); - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_SLO_TYPE, - page: 1, - perPage: 25, - search: undefined, - searchFields: undefined, - sortField: 'created_at', - sortOrder: 'asc', - }); - }); - - it('sorts by creation time ascending', async () => { - const repository = new KibanaSavedObjectsSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([SOME_SLO])); - - await repository.find({}, DEFAULT_SORTING, DEFAULT_PAGINATION); - - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_SLO_TYPE, - page: 1, - perPage: 25, - search: undefined, - searchFields: undefined, - sortField: 'created_at', - sortOrder: 'asc', - }); - }); - - it('sorts by creation time descending', async () => { - const repository = new KibanaSavedObjectsSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([SOME_SLO])); - - await repository.find( - {}, - { field: SortField.CreationTime, direction: SortDirection.Desc }, - DEFAULT_PAGINATION - ); - - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_SLO_TYPE, - page: 1, - perPage: 25, - search: undefined, - searchFields: undefined, - sortField: 'created_at', - sortOrder: 'desc', - }); - }); - - it('sorts by indicator type', async () => { - const repository = new KibanaSavedObjectsSLORepository(soClientMock); - soClientMock.find.mockResolvedValueOnce(createFindResponse([SOME_SLO])); - - await repository.find( - {}, - { field: SortField.IndicatorType, direction: SortDirection.Asc }, - DEFAULT_PAGINATION - ); - - expect(soClientMock.find).toHaveBeenCalledWith({ - type: SO_SLO_TYPE, - page: 1, - perPage: 25, - search: undefined, - searchFields: undefined, - sortField: 'indicator.type', - sortOrder: 'asc', - }); - }); - }); }); diff --git a/x-pack/plugins/observability/server/services/slo/slo_repository.ts b/x-pack/plugins/observability/server/services/slo/slo_repository.ts index b283dc05fca99e..6ab9a78dc49e3d 100644 --- a/x-pack/plugins/observability/server/services/slo/slo_repository.ts +++ b/x-pack/plugins/observability/server/services/slo/slo_repository.ts @@ -5,62 +5,21 @@ * 2.0. */ -import * as t from 'io-ts'; -import { fold } from 'fp-ts/lib/Either'; -import { pipe } from 'fp-ts/lib/pipeable'; - import { SavedObjectsClientContract } from '@kbn/core-saved-objects-api-server'; import { SavedObjectsErrorHelpers } from '@kbn/core-saved-objects-server'; import { sloSchema } from '@kbn/slo-schema'; - -import { StoredSLO, SLO } from '../../domain/models'; -import { SO_SLO_TYPE } from '../../saved_objects'; +import { fold } from 'fp-ts/lib/Either'; +import { pipe } from 'fp-ts/lib/pipeable'; +import * as t from 'io-ts'; +import { SLO, StoredSLO } from '../../domain/models'; import { SLOIdConflict, SLONotFound } from '../../errors'; - -type ObjectValues = T[keyof T]; - -export interface Criteria { - name?: string; - indicatorTypes?: string[]; -} - -export interface Pagination { - page: number; - perPage: number; -} - -export const SortDirection = { - Asc: 'Asc', - Desc: 'Desc', -} as const; - -type SortDirection = ObjectValues; - -export const SortField = { - CreationTime: 'CreationTime', - IndicatorType: 'IndicatorType', -}; - -type SortField = ObjectValues; - -export interface Sort { - field: SortField; - direction: SortDirection; -} - -export interface Paginated { - page: number; - perPage: number; - total: number; - results: T[]; -} +import { SO_SLO_TYPE } from '../../saved_objects'; export interface SLORepository { save(slo: SLO, options?: { throwOnConflict: boolean }): Promise; findAllByIds(ids: string[]): Promise; findById(id: string): Promise; deleteById(id: string): Promise; - find(criteria: Criteria, sort: Sort, pagination: Pagination): Promise>; } export class KibanaSavedObjectsSLORepository implements SLORepository { @@ -120,29 +79,6 @@ export class KibanaSavedObjectsSLORepository implements SLORepository { await this.soClient.delete(SO_SLO_TYPE, response.saved_objects[0].id); } - async find(criteria: Criteria, sort: Sort, pagination: Pagination): Promise> { - const { search, searchFields } = buildSearch(criteria); - const filterKuery = buildFilterKuery(criteria); - const { sortField, sortOrder } = buildSortQuery(sort); - const response = await this.soClient.find({ - type: SO_SLO_TYPE, - page: pagination.page, - perPage: pagination.perPage, - search, - searchFields, - filter: filterKuery, - sortField, - sortOrder, - }); - - return { - total: response.total, - page: response.page, - perPage: response.per_page, - results: response.saved_objects.map((so) => toSLO(so.attributes)), - }; - } - async findAllByIds(ids: string[]): Promise { if (ids.length === 0) return []; @@ -163,47 +99,6 @@ export class KibanaSavedObjectsSLORepository implements SLORepository { } } -function buildSearch(criteria: Criteria): { - search: string | undefined; - searchFields: string[] | undefined; -} { - if (!criteria.name) { - return { search: undefined, searchFields: undefined }; - } - - return { search: addWildcardsIfAbsent(criteria.name), searchFields: ['name'] }; -} - -function buildFilterKuery(criteria: Criteria): string | undefined { - const filters: string[] = []; - if (!!criteria.indicatorTypes) { - const indicatorTypesFilter: string[] = criteria.indicatorTypes.map( - (indicatorType) => `slo.attributes.indicator.type: ${indicatorType}` - ); - filters.push(`(${indicatorTypesFilter.join(' or ')})`); - } - - return filters.length > 0 ? filters.join(' and ') : undefined; -} - -function buildSortQuery(sort: Sort): { sortField: string; sortOrder: 'asc' | 'desc' } { - let sortField: string; - switch (sort.field) { - case SortField.IndicatorType: - sortField = 'indicator.type'; - break; - case SortField.CreationTime: - default: - sortField = 'created_at'; - break; - } - - return { - sortField, - sortOrder: sort.direction === SortDirection.Desc ? 'desc' : 'asc', - }; -} - function toStoredSLO(slo: SLO): StoredSLO { return sloSchema.encode(slo); } @@ -216,17 +111,3 @@ function toSLO(storedSLO: StoredSLO): SLO { }, t.identity) ); } - -const WILDCARD_CHAR = '*'; -function addWildcardsIfAbsent(value: string): string { - let updatedValue = value; - if (updatedValue.substring(0, 1) !== WILDCARD_CHAR) { - updatedValue = `${WILDCARD_CHAR}${updatedValue}`; - } - - if (value.substring(value.length - 1) !== WILDCARD_CHAR) { - updatedValue = `${updatedValue}${WILDCARD_CHAR}`; - } - - return updatedValue; -} diff --git a/x-pack/plugins/observability/server/services/slo/summary_search_client.test.ts b/x-pack/plugins/observability/server/services/slo/summary_search_client.test.ts new file mode 100644 index 00000000000000..fc53bf1e7181bf --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_search_client.test.ts @@ -0,0 +1,116 @@ +/* + * 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 { ElasticsearchClientMock, elasticsearchServiceMock } from '@kbn/core/server/mocks'; +import { loggerMock } from '@kbn/logging-mocks'; +import { + aHitFromSummaryIndex, + aHitFromTempSummaryIndex, + aSummaryDocument, +} from './fixtures/summary_search_document'; +import { + DefaultSummarySearchClient, + Pagination, + Sort, + SummarySearchClient, +} from './summary_search_client'; + +const defaultSort: Sort = { + field: 'sli_value', + direction: 'asc', +}; +const defaultPagination: Pagination = { + page: 1, + perPage: 20, +}; + +describe('Summary Search Client', () => { + let esClientMock: ElasticsearchClientMock; + let service: SummarySearchClient; + + beforeEach(() => { + esClientMock = elasticsearchServiceMock.createElasticsearchClient(); + service = new DefaultSummarySearchClient(esClientMock, loggerMock.create()); + }); + + it('returns an empty response on error', async () => { + esClientMock.count.mockRejectedValue(new Error('Cannot reach es')); + + await expect(service.search('', defaultSort, defaultPagination)).resolves + .toMatchInlineSnapshot(` + Object { + "page": 1, + "perPage": 20, + "results": Array [], + "total": 0, + } + `); + }); + + it('returns an empty response when the kql filter returns no document count', async () => { + esClientMock.count.mockResolvedValue({ + count: 0, + _shards: { failed: 0, successful: 1, total: 1 }, + }); + + await expect(service.search('', defaultSort, defaultPagination)).resolves + .toMatchInlineSnapshot(` + Object { + "page": 1, + "perPage": 20, + "results": Array [], + "total": 0, + } + `); + }); + + it('returns the summary documents without duplicate temporary summary documents', async () => { + const SLO_ID1 = 'slo-one'; + const SLO_ID2 = 'slo_two'; + const SLO_ID3 = 'slo-three'; + const SLO_ID4 = 'slo-four'; + const SLO_ID5 = 'slo-five'; + esClientMock.count.mockResolvedValue({ + count: 8, + _shards: { failed: 0, successful: 1, total: 1 }, + }); + esClientMock.search.mockResolvedValue({ + took: 0, + timed_out: false, + _shards: { + total: 2, + successful: 2, + skipped: 0, + failed: 0, + }, + hits: { + total: { + value: 6, + relation: 'eq', + }, + max_score: 1, + hits: [ + aHitFromSummaryIndex(aSummaryDocument({ id: SLO_ID1 })), + aHitFromSummaryIndex(aSummaryDocument({ id: SLO_ID2 })), + aHitFromSummaryIndex(aSummaryDocument({ id: SLO_ID3 })), + aHitFromSummaryIndex(aSummaryDocument({ id: SLO_ID5 })), // no related temp doc + aHitFromTempSummaryIndex(aSummaryDocument({ id: SLO_ID1, isTempDoc: true })), // removed as dup + aHitFromTempSummaryIndex(aSummaryDocument({ id: SLO_ID2, isTempDoc: true })), // removed as dup + aHitFromTempSummaryIndex(aSummaryDocument({ id: SLO_ID3, isTempDoc: true })), // removed as dup + aHitFromTempSummaryIndex(aSummaryDocument({ id: SLO_ID4, isTempDoc: true })), // kept + ], + }, + }); + + const results = await service.search('', defaultSort, defaultPagination); + + expect(esClientMock.deleteByQuery).toHaveBeenCalled(); + expect(esClientMock.deleteByQuery.mock.calls[0]).toMatchSnapshot(); + expect(results).toMatchSnapshot(); + expect(results.total).toBe(5); + }); +}); diff --git a/x-pack/plugins/observability/server/services/slo/summary_search_client.ts b/x-pack/plugins/observability/server/services/slo/summary_search_client.ts new file mode 100644 index 00000000000000..faf99af44838aa --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_search_client.ts @@ -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 { ElasticsearchClient, Logger } from '@kbn/core/server'; +import { assertNever } from '@kbn/std'; +import _ from 'lodash'; +import { SLO_SUMMARY_DESTINATION_INDEX_PATTERN } from '../../assets/constants'; +import { SLOId, Status, Summary } from '../../domain/models'; +import { toHighPrecision } from '../../utils/number'; +import { getElastichsearchQueryOrThrow } from './transform_generators'; + +interface EsSummaryDocument { + slo: { + id: string; + revision: number; + }; + sliValue: number; + errorBudgetConsumed: number; + errorBudgetRemaining: number; + errorBudgetInitial: number; + errorBudgetEstimated: boolean; + statusCode: number; + status: Status; + isTempDoc: boolean; +} + +export interface Paginated { + total: number; + page: number; + perPage: number; + results: T[]; +} + +export interface SLOSummary { + id: SLOId; + summary: Summary; +} + +export type SortField = 'error_budget_consumed' | 'error_budget_remaining' | 'sli_value' | 'status'; +export interface Sort { + field: SortField; + direction: 'asc' | 'desc'; +} + +export interface Pagination { + page: number; + perPage: number; +} + +export interface SummarySearchClient { + search(kqlQuery: string, sort: Sort, pagination: Pagination): Promise>; +} + +export class DefaultSummarySearchClient implements SummarySearchClient { + constructor(private esClient: ElasticsearchClient, private logger: Logger) {} + + async search( + kqlQuery: string, + sort: Sort, + pagination: Pagination + ): Promise> { + try { + const { count: total } = await this.esClient.count({ + index: SLO_SUMMARY_DESTINATION_INDEX_PATTERN, + query: getElastichsearchQueryOrThrow(kqlQuery), + }); + + if (total === 0) { + return { total: 0, perPage: pagination.perPage, page: pagination.page, results: [] }; + } + + const summarySearch = await this.esClient.search({ + index: SLO_SUMMARY_DESTINATION_INDEX_PATTERN, + query: getElastichsearchQueryOrThrow(kqlQuery), + sort: { + // non-temp first, then temp documents + isTempDoc: { + order: 'asc', + }, + [toDocumentSortField(sort.field)]: { + order: sort.direction, + }, + }, + from: (pagination.page - 1) * pagination.perPage, + size: pagination.perPage * 2, // twice as much as we return, in case they are all duplicate temp/non-temp summary + }); + + const [tempSummaryDocuments, summaryDocuments] = _.partition( + summarySearch.hits.hits, + (doc) => !!doc._source?.isTempDoc + ); + + // Always attempt to delete temporary summary documents with an existing non-temp summary document + // The temp summary documents are _eventually_ removed as we get through the real summary documents + const summarySloIds = summaryDocuments.map((doc) => doc._source?.slo.id); + await this.esClient.deleteByQuery({ + index: SLO_SUMMARY_DESTINATION_INDEX_PATTERN, + wait_for_completion: false, + query: { + bool: { + filter: [{ terms: { 'slo.id': summarySloIds } }, { term: { isTempDoc: true } }], + }, + }, + }); + + const tempSummaryDocumentsDeduped = tempSummaryDocuments.filter( + (doc) => !summarySloIds.includes(doc._source?.slo.id) + ); + + const finalResults = summaryDocuments + .concat(tempSummaryDocumentsDeduped) + .slice(0, pagination.perPage); + + const finalTotal = total - (tempSummaryDocuments.length - tempSummaryDocumentsDeduped.length); + return { + total: finalTotal, + perPage: pagination.perPage, + page: pagination.page, + results: finalResults.map((doc) => ({ + id: doc._source!.slo.id, + summary: { + errorBudget: { + initial: toHighPrecision(doc._source!.errorBudgetInitial), + consumed: toHighPrecision(doc._source!.errorBudgetConsumed), + remaining: toHighPrecision(doc._source!.errorBudgetRemaining), + isEstimated: doc._source!.errorBudgetEstimated, + }, + sliValue: toHighPrecision(doc._source!.sliValue), + status: doc._source!.status, + }, + })), + }; + } catch (err) { + this.logger.error(new Error('Summary search query error', { cause: err })); + return { total: 0, perPage: pagination.perPage, page: pagination.page, results: [] }; + } + } +} + +function toDocumentSortField(field: SortField) { + switch (field) { + case 'error_budget_consumed': + return 'errorBudgetConsumed'; + case 'error_budget_remaining': + return 'errorBudgetRemaining'; + case 'status': + return 'status'; + case 'sli_value': + return 'sliValue'; + default: + assertNever(field); + } +} diff --git a/x-pack/plugins/observability/server/services/slo/summary_transform/__snapshots__/summary_transform_installer.test.ts.snap b/x-pack/plugins/observability/server/services/slo/summary_transform/__snapshots__/summary_transform_installer.test.ts.snap new file mode 100644 index 00000000000000..15050254a24ee8 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_transform/__snapshots__/summary_transform_installer.test.ts.snap @@ -0,0 +1,1162 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Summary Transform Installer installs only the missing summary transforms 1`] = ` +Array [ + Array [ + Object { + "_meta": Object { + "managed": true, + "managed_by": "observability", + "version": 2, + }, + "description": "Summarize every SLO with timeslices budgeting method and a 7 days rolling time window", + "dest": Object { + "index": ".slo-observability.summary-v2", + "pipeline": ".slo-observability.summary.pipeline", + }, + "frequency": "1m", + "pivot": Object { + "aggregations": Object { + "_objectiveTarget": Object { + "max": Object { + "field": "slo.objective.target", + }, + }, + "errorBudgetConsumed": Object { + "bucket_script": Object { + "buckets_path": Object { + "errorBudgetInitial": "errorBudgetInitial", + "sliValue": "sliValue", + }, + "script": "if (params.sliValue == -1) { return 0 } else { return (1 - params.sliValue) / params.errorBudgetInitial }", + }, + }, + "errorBudgetInitial": Object { + "bucket_script": Object { + "buckets_path": Object { + "objectiveTarget": "_objectiveTarget", + }, + "script": "1 - params.objectiveTarget", + }, + }, + "errorBudgetRemaining": Object { + "bucket_script": Object { + "buckets_path": Object { + "errorBudgetConsummed": "errorBudgetConsumed", + }, + "script": "1 - params.errorBudgetConsummed", + }, + }, + "goodEvents": Object { + "sum": Object { + "field": "slo.isGoodSlice", + }, + }, + "sliValue": Object { + "bucket_script": Object { + "buckets_path": Object { + "goodEvents": "goodEvents", + "totalEvents": "totalEvents", + }, + "script": "if (params.totalEvents == 0) { return -1 } else { return params.goodEvents / params.totalEvents }", + }, + }, + "statusCode": Object { + "bucket_script": Object { + "buckets_path": Object { + "errorBudgetRemaining": "errorBudgetRemaining", + "objectiveTarget": "_objectiveTarget", + "sliValue": "sliValue", + }, + "script": Object { + "source": "if (params.sliValue == -1) { return 0 } else if (params.sliValue >= params.objectiveTarget) { return 4 } else if (params.errorBudgetRemaining > 0) { return 2 } else { return 1 }", + }, + }, + }, + "totalEvents": Object { + "value_count": Object { + "field": "slo.isGoodSlice", + }, + }, + }, + "group_by": Object { + "errorBudgetEstimated": Object { + "terms": Object { + "field": "errorBudgetEstimated", + }, + }, + "isTempDoc": Object { + "terms": Object { + "field": "isTempDoc", + }, + }, + "service.environment": Object { + "terms": Object { + "field": "service.environment", + "missing_bucket": true, + }, + }, + "service.name": Object { + "terms": Object { + "field": "service.name", + "missing_bucket": true, + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, + "slo.id": Object { + "terms": Object { + "field": "slo.id", + }, + }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.revision": Object { + "terms": Object { + "field": "slo.revision", + }, + }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, + "transaction.name": Object { + "terms": Object { + "field": "transaction.name", + "missing_bucket": true, + }, + }, + "transaction.type": Object { + "terms": Object { + "field": "transaction.type", + "missing_bucket": true, + }, + }, + }, + }, + "settings": Object { + "deduce_mappings": false, + }, + "source": Object { + "index": ".slo-observability.sli-v2*", + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "range": Object { + "@timestamp": Object { + "gte": "now-7d/m", + "lte": "now/m", + }, + }, + }, + Object { + "term": Object { + "slo.budgetingMethod": "timeslices", + }, + }, + Object { + "term": Object { + "slo.timeWindow.type": "rolling", + }, + }, + Object { + "term": Object { + "slo.timeWindow.duration": "7d", + }, + }, + ], + }, + }, + "runtime_mappings": Object { + "errorBudgetEstimated": Object { + "script": "emit(false)", + "type": "boolean", + }, + "isTempDoc": Object { + "script": "emit(false)", + "type": "boolean", + }, + }, + }, + "sync": Object { + "time": Object { + "delay": "125s", + "field": "@timestamp", + }, + }, + "transform_id": "slo-summary-timeslices-7d-rolling", + }, + Object { + "ignore": Array [ + 409, + ], + }, + ], + Array [ + Object { + "_meta": Object { + "managed": true, + "managed_by": "observability", + "version": 2, + }, + "description": "Summarize every SLO with timeslices budgeting method and a 30 days rolling time window", + "dest": Object { + "index": ".slo-observability.summary-v2", + "pipeline": ".slo-observability.summary.pipeline", + }, + "frequency": "1m", + "pivot": Object { + "aggregations": Object { + "_objectiveTarget": Object { + "max": Object { + "field": "slo.objective.target", + }, + }, + "errorBudgetConsumed": Object { + "bucket_script": Object { + "buckets_path": Object { + "errorBudgetInitial": "errorBudgetInitial", + "sliValue": "sliValue", + }, + "script": "if (params.sliValue == -1) { return 0 } else { return (1 - params.sliValue) / params.errorBudgetInitial }", + }, + }, + "errorBudgetInitial": Object { + "bucket_script": Object { + "buckets_path": Object { + "objectiveTarget": "_objectiveTarget", + }, + "script": "1 - params.objectiveTarget", + }, + }, + "errorBudgetRemaining": Object { + "bucket_script": Object { + "buckets_path": Object { + "errorBudgetConsummed": "errorBudgetConsumed", + }, + "script": "1 - params.errorBudgetConsummed", + }, + }, + "goodEvents": Object { + "sum": Object { + "field": "slo.isGoodSlice", + }, + }, + "sliValue": Object { + "bucket_script": Object { + "buckets_path": Object { + "goodEvents": "goodEvents", + "totalEvents": "totalEvents", + }, + "script": "if (params.totalEvents == 0) { return -1 } else { return params.goodEvents / params.totalEvents }", + }, + }, + "statusCode": Object { + "bucket_script": Object { + "buckets_path": Object { + "errorBudgetRemaining": "errorBudgetRemaining", + "objectiveTarget": "_objectiveTarget", + "sliValue": "sliValue", + }, + "script": Object { + "source": "if (params.sliValue == -1) { return 0 } else if (params.sliValue >= params.objectiveTarget) { return 4 } else if (params.errorBudgetRemaining > 0) { return 2 } else { return 1 }", + }, + }, + }, + "totalEvents": Object { + "value_count": Object { + "field": "slo.isGoodSlice", + }, + }, + }, + "group_by": Object { + "errorBudgetEstimated": Object { + "terms": Object { + "field": "errorBudgetEstimated", + }, + }, + "isTempDoc": Object { + "terms": Object { + "field": "isTempDoc", + }, + }, + "service.environment": Object { + "terms": Object { + "field": "service.environment", + "missing_bucket": true, + }, + }, + "service.name": Object { + "terms": Object { + "field": "service.name", + "missing_bucket": true, + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, + "slo.id": Object { + "terms": Object { + "field": "slo.id", + }, + }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.revision": Object { + "terms": Object { + "field": "slo.revision", + }, + }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, + "transaction.name": Object { + "terms": Object { + "field": "transaction.name", + "missing_bucket": true, + }, + }, + "transaction.type": Object { + "terms": Object { + "field": "transaction.type", + "missing_bucket": true, + }, + }, + }, + }, + "settings": Object { + "deduce_mappings": false, + }, + "source": Object { + "index": ".slo-observability.sli-v2*", + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "range": Object { + "@timestamp": Object { + "gte": "now-30d/m", + "lte": "now/m", + }, + }, + }, + Object { + "term": Object { + "slo.budgetingMethod": "timeslices", + }, + }, + Object { + "term": Object { + "slo.timeWindow.type": "rolling", + }, + }, + Object { + "term": Object { + "slo.timeWindow.duration": "30d", + }, + }, + ], + }, + }, + "runtime_mappings": Object { + "errorBudgetEstimated": Object { + "script": "emit(false)", + "type": "boolean", + }, + "isTempDoc": Object { + "script": "emit(false)", + "type": "boolean", + }, + }, + }, + "sync": Object { + "time": Object { + "delay": "125s", + "field": "@timestamp", + }, + }, + "transform_id": "slo-summary-timeslices-30d-rolling", + }, + Object { + "ignore": Array [ + 409, + ], + }, + ], + Array [ + Object { + "_meta": Object { + "managed": true, + "managed_by": "observability", + "version": 2, + }, + "description": "Summarize every SLO with timeslices budgeting method and a 90 days rolling time window", + "dest": Object { + "index": ".slo-observability.summary-v2", + "pipeline": ".slo-observability.summary.pipeline", + }, + "frequency": "1m", + "pivot": Object { + "aggregations": Object { + "_objectiveTarget": Object { + "max": Object { + "field": "slo.objective.target", + }, + }, + "errorBudgetConsumed": Object { + "bucket_script": Object { + "buckets_path": Object { + "errorBudgetInitial": "errorBudgetInitial", + "sliValue": "sliValue", + }, + "script": "if (params.sliValue == -1) { return 0 } else { return (1 - params.sliValue) / params.errorBudgetInitial }", + }, + }, + "errorBudgetInitial": Object { + "bucket_script": Object { + "buckets_path": Object { + "objectiveTarget": "_objectiveTarget", + }, + "script": "1 - params.objectiveTarget", + }, + }, + "errorBudgetRemaining": Object { + "bucket_script": Object { + "buckets_path": Object { + "errorBudgetConsummed": "errorBudgetConsumed", + }, + "script": "1 - params.errorBudgetConsummed", + }, + }, + "goodEvents": Object { + "sum": Object { + "field": "slo.isGoodSlice", + }, + }, + "sliValue": Object { + "bucket_script": Object { + "buckets_path": Object { + "goodEvents": "goodEvents", + "totalEvents": "totalEvents", + }, + "script": "if (params.totalEvents == 0) { return -1 } else { return params.goodEvents / params.totalEvents }", + }, + }, + "statusCode": Object { + "bucket_script": Object { + "buckets_path": Object { + "errorBudgetRemaining": "errorBudgetRemaining", + "objectiveTarget": "_objectiveTarget", + "sliValue": "sliValue", + }, + "script": Object { + "source": "if (params.sliValue == -1) { return 0 } else if (params.sliValue >= params.objectiveTarget) { return 4 } else if (params.errorBudgetRemaining > 0) { return 2 } else { return 1 }", + }, + }, + }, + "totalEvents": Object { + "value_count": Object { + "field": "slo.isGoodSlice", + }, + }, + }, + "group_by": Object { + "errorBudgetEstimated": Object { + "terms": Object { + "field": "errorBudgetEstimated", + }, + }, + "isTempDoc": Object { + "terms": Object { + "field": "isTempDoc", + }, + }, + "service.environment": Object { + "terms": Object { + "field": "service.environment", + "missing_bucket": true, + }, + }, + "service.name": Object { + "terms": Object { + "field": "service.name", + "missing_bucket": true, + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, + "slo.id": Object { + "terms": Object { + "field": "slo.id", + }, + }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.revision": Object { + "terms": Object { + "field": "slo.revision", + }, + }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, + "transaction.name": Object { + "terms": Object { + "field": "transaction.name", + "missing_bucket": true, + }, + }, + "transaction.type": Object { + "terms": Object { + "field": "transaction.type", + "missing_bucket": true, + }, + }, + }, + }, + "settings": Object { + "deduce_mappings": false, + }, + "source": Object { + "index": ".slo-observability.sli-v2*", + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "range": Object { + "@timestamp": Object { + "gte": "now-90d/m", + "lte": "now/m", + }, + }, + }, + Object { + "term": Object { + "slo.budgetingMethod": "timeslices", + }, + }, + Object { + "term": Object { + "slo.timeWindow.type": "rolling", + }, + }, + Object { + "term": Object { + "slo.timeWindow.duration": "90d", + }, + }, + ], + }, + }, + "runtime_mappings": Object { + "errorBudgetEstimated": Object { + "script": "emit(false)", + "type": "boolean", + }, + "isTempDoc": Object { + "script": "emit(false)", + "type": "boolean", + }, + }, + }, + "sync": Object { + "time": Object { + "delay": "125s", + "field": "@timestamp", + }, + }, + "transform_id": "slo-summary-timeslices-90d-rolling", + }, + Object { + "ignore": Array [ + 409, + ], + }, + ], + Array [ + Object { + "_meta": Object { + "managed": true, + "managed_by": "observability", + "version": 2, + }, + "description": "Summarize every SLO with timeslices budgeting method and a weekly calendar aligned time window", + "dest": Object { + "index": ".slo-observability.summary-v2", + "pipeline": ".slo-observability.summary.pipeline", + }, + "frequency": "1m", + "pivot": Object { + "aggregations": Object { + "_objectiveTarget": Object { + "max": Object { + "field": "slo.objective.target", + }, + }, + "_sliceDurationInSeconds": Object { + "max": Object { + "field": "slo.objective.sliceDurationInSeconds", + }, + }, + "_totalSlicesInPeriod": Object { + "bucket_script": Object { + "buckets_path": Object { + "sliceDurationInSeconds": "_sliceDurationInSeconds", + }, + "script": "Math.ceil(7 * 24 * 60 * 60 / params.sliceDurationInSeconds)", + }, + }, + "errorBudgetConsumed": Object { + "bucket_script": Object { + "buckets_path": Object { + "errorBudgetInitial": "errorBudgetInitial", + "goodEvents": "goodEvents", + "totalEvents": "totalEvents", + "totalSlicesInPeriod": "_totalSlicesInPeriod", + }, + "script": "if (params.totalEvents == 0) { return 0 } else { return (params.totalEvents - params.goodEvents) / (params.totalSlicesInPeriod * params.errorBudgetInitial) }", + }, + }, + "errorBudgetInitial": Object { + "bucket_script": Object { + "buckets_path": Object { + "objective": "_objectiveTarget", + }, + "script": "1 - params.objective", + }, + }, + "errorBudgetRemaining": Object { + "bucket_script": Object { + "buckets_path": Object { + "errorBudgetConsumed": "errorBudgetConsumed", + }, + "script": "1 - params.errorBudgetConsumed", + }, + }, + "goodEvents": Object { + "sum": Object { + "field": "slo.isGoodSlice", + }, + }, + "sliValue": Object { + "bucket_script": Object { + "buckets_path": Object { + "goodEvents": "goodEvents", + "totalEvents": "totalEvents", + }, + "script": "if (params.totalEvents == 0) { return -1 } else { return params.goodEvents / params.totalEvents }", + }, + }, + "statusCode": Object { + "bucket_script": Object { + "buckets_path": Object { + "errorBudgetRemaining": "errorBudgetRemaining", + "objective": "_objectiveTarget", + "sliValue": "sliValue", + }, + "script": "if (params.sliValue == -1) { return 0 } else if (params.sliValue >= params.objective) { return 4 } else if (params.errorBudgetRemaining > 0) { return 2 } else { return 1 }", + }, + }, + "totalEvents": Object { + "value_count": Object { + "field": "slo.isGoodSlice", + }, + }, + }, + "group_by": Object { + "errorBudgetEstimated": Object { + "terms": Object { + "field": "errorBudgetEstimated", + }, + }, + "isTempDoc": Object { + "terms": Object { + "field": "isTempDoc", + }, + }, + "service.environment": Object { + "terms": Object { + "field": "service.environment", + "missing_bucket": true, + }, + }, + "service.name": Object { + "terms": Object { + "field": "service.name", + "missing_bucket": true, + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, + "slo.id": Object { + "terms": Object { + "field": "slo.id", + }, + }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.revision": Object { + "terms": Object { + "field": "slo.revision", + }, + }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, + "transaction.name": Object { + "terms": Object { + "field": "transaction.name", + "missing_bucket": true, + }, + }, + "transaction.type": Object { + "terms": Object { + "field": "transaction.type", + "missing_bucket": true, + }, + }, + }, + }, + "settings": Object { + "deduce_mappings": false, + }, + "source": Object { + "index": ".slo-observability.sli-v2*", + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "range": Object { + "@timestamp": Object { + "gte": "now/w", + "lte": "now/m", + }, + }, + }, + Object { + "term": Object { + "slo.budgetingMethod": "timeslices", + }, + }, + Object { + "term": Object { + "slo.timeWindow.type": "calendarAligned", + }, + }, + Object { + "term": Object { + "slo.timeWindow.duration": "1w", + }, + }, + ], + }, + }, + "runtime_mappings": Object { + "errorBudgetEstimated": Object { + "script": "emit(false)", + "type": "boolean", + }, + "isTempDoc": Object { + "script": "emit(false)", + "type": "boolean", + }, + }, + }, + "sync": Object { + "time": Object { + "delay": "125s", + "field": "@timestamp", + }, + }, + "transform_id": "slo-summary-timeslices-weekly-aligned", + }, + Object { + "ignore": Array [ + 409, + ], + }, + ], + Array [ + Object { + "_meta": Object { + "managed": true, + "managed_by": "observability", + "version": 2, + }, + "description": "Summarize every SLO with timeslices budgeting method and a monthly calendar aligned time window", + "dest": Object { + "index": ".slo-observability.summary-v2", + "pipeline": ".slo-observability.summary.pipeline", + }, + "frequency": "1m", + "pivot": Object { + "aggregations": Object { + "_objectiveTarget": Object { + "max": Object { + "field": "slo.objective.target", + }, + }, + "_sliceDurationInSeconds": Object { + "max": Object { + "field": "slo.objective.sliceDurationInSeconds", + }, + }, + "_totalSlicesInPeriod": Object { + "bucket_script": Object { + "buckets_path": Object { + "sliceDurationInSeconds": "_sliceDurationInSeconds", + }, + "script": Object { + "source": " + Date d = new Date(); + Instant instant = Instant.ofEpochMilli(d.getTime()); + LocalDateTime now = LocalDateTime.ofInstant(instant, ZoneOffset.UTC); + LocalDateTime startOfMonth = now + .withDayOfMonth(1) + .withHour(0) + .withMinute(0) + .withSecond(0); + LocalDateTime startOfNextMonth = startOfMonth.plusMonths(1); + double sliceDurationInMinutes = params.sliceDurationInSeconds / 60; + + return Math.ceil(Duration.between(startOfMonth, startOfNextMonth).toMinutes() / sliceDurationInMinutes); + ", + }, + }, + }, + "errorBudgetConsumed": Object { + "bucket_script": Object { + "buckets_path": Object { + "errorBudgetInitial": "errorBudgetInitial", + "goodEvents": "goodEvents", + "totalEvents": "totalEvents", + "totalSlicesInPeriod": "_totalSlicesInPeriod", + }, + "script": "if (params.totalEvents == 0) { return 0 } else { return (params.totalEvents - params.goodEvents) / (params.totalSlicesInPeriod * params.errorBudgetInitial) }", + }, + }, + "errorBudgetInitial": Object { + "bucket_script": Object { + "buckets_path": Object { + "objective": "_objectiveTarget", + }, + "script": "1 - params.objective", + }, + }, + "errorBudgetRemaining": Object { + "bucket_script": Object { + "buckets_path": Object { + "errorBudgetConsumed": "errorBudgetConsumed", + }, + "script": "1 - params.errorBudgetConsumed", + }, + }, + "goodEvents": Object { + "sum": Object { + "field": "slo.isGoodSlice", + }, + }, + "sliValue": Object { + "bucket_script": Object { + "buckets_path": Object { + "goodEvents": "goodEvents", + "totalEvents": "totalEvents", + }, + "script": "if (params.totalEvents == 0) { return -1 } else { return params.goodEvents / params.totalEvents }", + }, + }, + "statusCode": Object { + "bucket_script": Object { + "buckets_path": Object { + "errorBudgetRemaining": "errorBudgetRemaining", + "objective": "_objectiveTarget", + "sliValue": "sliValue", + }, + "script": "if (params.sliValue == -1) { return 0 } else if (params.sliValue >= params.objective) { return 4 } else if (params.errorBudgetRemaining > 0) { return 2 } else { return 1 }", + }, + }, + "totalEvents": Object { + "value_count": Object { + "field": "slo.isGoodSlice", + }, + }, + }, + "group_by": Object { + "errorBudgetEstimated": Object { + "terms": Object { + "field": "errorBudgetEstimated", + }, + }, + "isTempDoc": Object { + "terms": Object { + "field": "isTempDoc", + }, + }, + "service.environment": Object { + "terms": Object { + "field": "service.environment", + "missing_bucket": true, + }, + }, + "service.name": Object { + "terms": Object { + "field": "service.name", + "missing_bucket": true, + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, + "slo.id": Object { + "terms": Object { + "field": "slo.id", + }, + }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.revision": Object { + "terms": Object { + "field": "slo.revision", + }, + }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, + "transaction.name": Object { + "terms": Object { + "field": "transaction.name", + "missing_bucket": true, + }, + }, + "transaction.type": Object { + "terms": Object { + "field": "transaction.type", + "missing_bucket": true, + }, + }, + }, + }, + "settings": Object { + "deduce_mappings": false, + }, + "source": Object { + "index": ".slo-observability.sli-v2*", + "query": Object { + "bool": Object { + "filter": Array [ + Object { + "range": Object { + "@timestamp": Object { + "gte": "now/M", + "lte": "now/m", + }, + }, + }, + Object { + "term": Object { + "slo.budgetingMethod": "timeslices", + }, + }, + Object { + "term": Object { + "slo.timeWindow.type": "calendarAligned", + }, + }, + Object { + "term": Object { + "slo.timeWindow.duration": "1M", + }, + }, + ], + }, + }, + "runtime_mappings": Object { + "errorBudgetEstimated": Object { + "script": "emit(false)", + "type": "boolean", + }, + "isTempDoc": Object { + "script": "emit(false)", + "type": "boolean", + }, + }, + }, + "sync": Object { + "time": Object { + "delay": "125s", + "field": "@timestamp", + }, + }, + "transform_id": "slo-summary-timeslices-monthly-aligned", + }, + Object { + "ignore": Array [ + 409, + ], + }, + ], +] +`; diff --git a/x-pack/plugins/observability/server/services/slo/summary_transform/helpers/create_temp_summary.ts b/x-pack/plugins/observability/server/services/slo/summary_transform/helpers/create_temp_summary.ts new file mode 100644 index 00000000000000..84d87418519efd --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_transform/helpers/create_temp_summary.ts @@ -0,0 +1,47 @@ +/* + * 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 { SLO } from '../../../../domain/models'; + +export function createTempSummaryDocument(slo: SLO) { + return { + service: { + environment: null, + name: null, + }, + transaction: { + name: null, + type: null, + }, + slo: { + indicator: { + type: slo.indicator.type, + }, + timeWindow: { + duration: slo.timeWindow.duration.format(), + type: slo.timeWindow.type, + }, + instanceId: '*', + name: slo.name, + description: slo.description, + id: slo.id, + budgetingMethod: slo.budgetingMethod, + revision: slo.revision, + tags: slo.tags, + }, + goodEvents: 0, + totalEvents: 0, + errorBudgetEstimated: false, + errorBudgetRemaining: 1, + errorBudgetConsumed: 0, + errorBudgetInitial: 1 - slo.objective.target, + sliValue: -1, + statusCode: 0, + status: 'NO_DATA', + isTempDoc: true, + }; +} diff --git a/x-pack/plugins/observability/server/services/slo/summary_transform/summary_transform_installer.test.ts b/x-pack/plugins/observability/server/services/slo/summary_transform/summary_transform_installer.test.ts new file mode 100644 index 00000000000000..be79f9d7961429 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_transform/summary_transform_installer.test.ts @@ -0,0 +1,103 @@ +/* + * 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 { + ElasticsearchClientMock, + elasticsearchServiceMock, + loggingSystemMock, +} from '@kbn/core/server/mocks'; +import { MockedLogger } from '@kbn/logging-mocks'; +import { DefaultSummaryTransformInstaller } from './summary_transform_installer'; +import { ALL_TRANSFORM_TEMPLATES } from './templates'; + +describe('Summary Transform Installer', () => { + let esClientMock: ElasticsearchClientMock; + let loggerMock: jest.Mocked; + + beforeEach(() => { + esClientMock = elasticsearchServiceMock.createElasticsearchClient(); + loggerMock = loggingSystemMock.createLogger(); + }); + + it('skips the installation when latest version already installed', async () => { + esClientMock.transform.getTransform.mockResolvedValue({ + count: ALL_TRANSFORM_TEMPLATES.length, + // @ts-ignore + transforms: ALL_TRANSFORM_TEMPLATES.map((transform) => ({ + id: transform.transform_id, + _meta: transform._meta, + })), + }); + const installer = new DefaultSummaryTransformInstaller(esClientMock, loggerMock); + + await installer.installAndStart(); + + expect(esClientMock.transform.stopTransform).not.toHaveBeenCalled(); + expect(esClientMock.transform.deleteTransform).not.toHaveBeenCalled(); + expect(esClientMock.transform.putTransform).not.toHaveBeenCalled(); + expect(esClientMock.transform.startTransform).not.toHaveBeenCalled(); + }); + + it('installs every summary transforms when none are already installed', async () => { + esClientMock.transform.getTransform.mockResolvedValue({ count: 0, transforms: [] }); + const installer = new DefaultSummaryTransformInstaller(esClientMock, loggerMock); + + await installer.installAndStart(); + + const nbOfTransforms = ALL_TRANSFORM_TEMPLATES.length; + + expect(esClientMock.transform.stopTransform).not.toHaveBeenCalled(); + expect(esClientMock.transform.deleteTransform).not.toHaveBeenCalled(); + expect(esClientMock.transform.putTransform).toHaveBeenCalledTimes(nbOfTransforms); + expect(esClientMock.transform.startTransform).toHaveBeenCalledTimes(nbOfTransforms); + }); + + it('desinstalls previous summary transforms prior to installing the new ones', async () => { + esClientMock.transform.getTransform.mockResolvedValue({ + count: ALL_TRANSFORM_TEMPLATES.length, + // @ts-ignore + transforms: ALL_TRANSFORM_TEMPLATES.map((transform) => ({ + id: transform.transform_id, + _meta: { ...transform._meta, version: -1 }, + })), + }); + const installer = new DefaultSummaryTransformInstaller(esClientMock, loggerMock); + + await installer.installAndStart(); + + const nbOfTransforms = ALL_TRANSFORM_TEMPLATES.length; + + expect(esClientMock.transform.stopTransform).toHaveBeenCalledTimes(nbOfTransforms); + expect(esClientMock.transform.deleteTransform).toHaveBeenCalledTimes(nbOfTransforms); + expect(esClientMock.transform.putTransform).toHaveBeenCalledTimes(nbOfTransforms); + expect(esClientMock.transform.startTransform).toHaveBeenCalledTimes(nbOfTransforms); + }); + + it('installs only the missing summary transforms', async () => { + const occurrencesSummaryTransforms = ALL_TRANSFORM_TEMPLATES.filter((transform) => + transform.transform_id.includes('-occurrences-') + ); + esClientMock.transform.getTransform.mockResolvedValue({ + count: occurrencesSummaryTransforms.length, + // @ts-ignore + transforms: occurrencesSummaryTransforms.map((transform) => ({ + id: transform.transform_id, + _meta: transform._meta, + })), + }); + const installer = new DefaultSummaryTransformInstaller(esClientMock, loggerMock); + + await installer.installAndStart(); + + const nbOfTransforms = ALL_TRANSFORM_TEMPLATES.length - occurrencesSummaryTransforms.length; + + expect(esClientMock.transform.stopTransform).not.toHaveBeenCalled(); + expect(esClientMock.transform.deleteTransform).not.toHaveBeenCalled(); + expect(esClientMock.transform.putTransform).toHaveBeenCalledTimes(nbOfTransforms); + expect(esClientMock.transform.startTransform).toHaveBeenCalledTimes(nbOfTransforms); + expect(esClientMock.transform.putTransform.mock.calls).toMatchSnapshot(); + }); +}); diff --git a/x-pack/plugins/observability/server/services/slo/summary_transform/summary_transform_installer.ts b/x-pack/plugins/observability/server/services/slo/summary_transform/summary_transform_installer.ts new file mode 100644 index 00000000000000..0fc7bb1b904d94 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_transform/summary_transform_installer.ts @@ -0,0 +1,105 @@ +/* + * 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 { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/types'; +import type { ElasticsearchClient, Logger } from '@kbn/core/server'; +import { + SLO_RESOURCES_VERSION, + SLO_SUMMARY_TRANSFORM_NAME_PREFIX, +} from '../../../assets/constants'; +import { retryTransientEsErrors } from '../../../utils/retry'; +import { ALL_TRANSFORM_TEMPLATES } from './templates'; + +export interface SummaryTransformInstaller { + installAndStart(): Promise; +} + +export class DefaultSummaryTransformInstaller implements SummaryTransformInstaller { + constructor(private esClient: ElasticsearchClient, private logger: Logger) {} + + public async installAndStart(): Promise { + const allTransformIds = ALL_TRANSFORM_TEMPLATES.map((transform) => transform.transform_id); + const summaryTransforms = await this.execute(() => + this.esClient.transform.getTransform( + { transform_id: `${SLO_SUMMARY_TRANSFORM_NAME_PREFIX}*`, allow_no_match: true }, + { ignore: [404] } + ) + ); + const alreadyInstalled = + summaryTransforms.count === allTransformIds.length && + summaryTransforms.transforms.every( + (transform) => transform._meta?.version === SLO_RESOURCES_VERSION + ) && + summaryTransforms.transforms.every((transform) => allTransformIds.includes(transform.id)); + + if (alreadyInstalled) { + this.logger.info(`SLO summary transforms already installed - skipping`); + return; + } + + for (const transformTemplate of ALL_TRANSFORM_TEMPLATES) { + const transformId = transformTemplate.transform_id; + const transform = summaryTransforms.transforms.find((t) => t.id === transformId); + + const transformAlreadyInstalled = + !!transform && transform._meta?.version === SLO_RESOURCES_VERSION; + const previousTransformAlreadyInstalled = + !!transform && transform._meta?.version !== SLO_RESOURCES_VERSION; + + if (transformAlreadyInstalled) { + this.logger.info(`SLO summary transform [${transformId}] already installed - skipping`); + continue; + } + + if (previousTransformAlreadyInstalled) { + await this.deletePreviousTransformVersion(transformId); + } + + await this.installTransform(transformId, transformTemplate); + await this.startTransform(transformId); + } + + this.logger.info(`SLO summary transforms installed and started`); + } + + private async installTransform( + transformId: string, + transformTemplate: TransformPutTransformRequest + ) { + this.logger.info(`Installing SLO summary transform [${transformId}]`); + await this.execute(() => + this.esClient.transform.putTransform(transformTemplate, { ignore: [409] }) + ); + } + + private async deletePreviousTransformVersion(transformId: string) { + this.logger.info(`Deleting previous SLO summary transform [${transformId}]`); + await this.execute(() => + this.esClient.transform.stopTransform( + { transform_id: transformId, allow_no_match: true, force: true }, + { ignore: [409, 404] } + ) + ); + await this.execute(() => + this.esClient.transform.deleteTransform( + { transform_id: transformId, force: true }, + { ignore: [409, 404] } + ) + ); + } + + private async startTransform(transformId: string) { + this.logger.info(`Starting SLO summary transform [${transformId}]`); + await this.execute(() => + this.esClient.transform.startTransform({ transform_id: transformId }, { ignore: [409] }) + ); + } + + private async execute(esCall: () => Promise): Promise { + return await retryTransientEsErrors(esCall, { logger: this.logger }); + } +} diff --git a/x-pack/plugins/observability/server/services/slo/summary_transform/templates/common.ts b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/common.ts new file mode 100644 index 00000000000000..b1df25c43a52bf --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/common.ts @@ -0,0 +1,95 @@ +/* + * 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 groupBy = { + 'slo.id': { + terms: { + field: 'slo.id', + }, + }, + 'slo.revision': { + terms: { + field: 'slo.revision', + }, + }, + 'slo.instanceId': { + terms: { + field: 'slo.instanceId', + }, + }, + 'slo.name': { + terms: { + field: 'slo.name', + }, + }, + 'slo.description': { + terms: { + field: 'slo.description', + }, + }, + 'slo.tags': { + terms: { + field: 'slo.tags', + }, + }, + 'slo.indicator.type': { + terms: { + field: 'slo.indicator.type', + }, + }, + 'slo.budgetingMethod': { + terms: { + field: 'slo.budgetingMethod', + }, + }, + 'slo.timeWindow.duration': { + terms: { + field: 'slo.timeWindow.duration', + }, + }, + 'slo.timeWindow.type': { + terms: { + field: 'slo.timeWindow.type', + }, + }, + errorBudgetEstimated: { + terms: { + field: 'errorBudgetEstimated', + }, + }, + // Differentiate the temporary document from the summary one + isTempDoc: { + terms: { + field: 'isTempDoc', + }, + }, + // optional fields: only specified for APM indicators. Must include missing_bucket:true + 'service.name': { + terms: { + field: 'service.name', + missing_bucket: true, + }, + }, + 'service.environment': { + terms: { + field: 'service.environment', + missing_bucket: true, + }, + }, + 'transaction.name': { + terms: { + field: 'transaction.name', + missing_bucket: true, + }, + }, + 'transaction.type': { + terms: { + field: 'transaction.type', + missing_bucket: true, + }, + }, +}; diff --git a/x-pack/plugins/observability/server/services/slo/summary_transform/templates/index.ts b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/index.ts new file mode 100644 index 00000000000000..68c42db91e923e --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/index.ts @@ -0,0 +1,30 @@ +/* + * 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 { SUMMARY_OCCURRENCES_7D_ROLLING } from './summary_occurrences_7d_rolling'; +import { SUMMARY_OCCURRENCES_30D_ROLLING } from './summary_occurrences_30d_rolling'; +import { SUMMARY_OCCURRENCES_90D_ROLLING } from './summary_occurrences_90d_rolling'; +import { SUMMARY_TIMESLICES_7D_ROLLING } from './summary_timeslices_7d_rolling'; +import { SUMMARY_TIMESLICES_30D_ROLLING } from './summary_timeslices_30d_rolling'; +import { SUMMARY_TIMESLICES_90D_ROLLING } from './summary_timeslices_90d_rolling'; +import { SUMMARY_OCCURRENCES_WEEKLY_ALIGNED } from './summary_occurrences_weekly_aligned'; +import { SUMMARY_OCCURRENCES_MONTHLY_ALIGNED } from './summary_occurrences_monthly_aligned'; +import { SUMMARY_TIMESLICES_WEEKLY_ALIGNED } from './summary_timeslices_weekly_aligned'; +import { SUMMARY_TIMESLICES_MONTHLY_ALIGNED } from './summary_timeslices_monthly_aligned'; + +export const ALL_TRANSFORM_TEMPLATES = [ + SUMMARY_OCCURRENCES_7D_ROLLING, + SUMMARY_OCCURRENCES_30D_ROLLING, + SUMMARY_OCCURRENCES_90D_ROLLING, + SUMMARY_OCCURRENCES_WEEKLY_ALIGNED, + SUMMARY_OCCURRENCES_MONTHLY_ALIGNED, + SUMMARY_TIMESLICES_7D_ROLLING, + SUMMARY_TIMESLICES_30D_ROLLING, + SUMMARY_TIMESLICES_90D_ROLLING, + SUMMARY_TIMESLICES_WEEKLY_ALIGNED, + SUMMARY_TIMESLICES_MONTHLY_ALIGNED, +]; diff --git a/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_occurrences_30d_rolling.ts b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_occurrences_30d_rolling.ts new file mode 100644 index 00000000000000..49a9313f0ca9f3 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_occurrences_30d_rolling.ts @@ -0,0 +1,153 @@ +/* + * 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 { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/types'; +import { + SLO_DESTINATION_INDEX_PATTERN, + SLO_RESOURCES_VERSION, + SLO_SUMMARY_DESTINATION_INDEX_NAME, + SLO_SUMMARY_INGEST_PIPELINE_NAME, + SLO_SUMMARY_TRANSFORM_NAME_PREFIX, +} from '../../../../assets/constants'; +import { groupBy } from './common'; + +export const SUMMARY_OCCURRENCES_30D_ROLLING: TransformPutTransformRequest = { + transform_id: `${SLO_SUMMARY_TRANSFORM_NAME_PREFIX}occurrences-30d-rolling`, + dest: { + index: SLO_SUMMARY_DESTINATION_INDEX_NAME, + pipeline: SLO_SUMMARY_INGEST_PIPELINE_NAME, + }, + source: { + index: SLO_DESTINATION_INDEX_PATTERN, + runtime_mappings: { + errorBudgetEstimated: { + type: 'boolean', + script: 'emit(false)', + }, + isTempDoc: { + type: 'boolean', + script: 'emit(false)', + }, + }, + query: { + bool: { + filter: [ + { + range: { + '@timestamp': { + gte: 'now-30d/m', + lte: 'now/m', + }, + }, + }, + { + term: { + 'slo.budgetingMethod': 'occurrences', + }, + }, + { + term: { + 'slo.timeWindow.type': 'rolling', + }, + }, + { + term: { + 'slo.timeWindow.duration': '30d', + }, + }, + ], + }, + }, + }, + pivot: { + group_by: groupBy, + aggregations: { + goodEvents: { + sum: { + field: 'slo.numerator', + }, + }, + totalEvents: { + sum: { + field: 'slo.denominator', + }, + }, + _objectiveTarget: { + max: { + field: 'slo.objective.target', + }, + }, + sliValue: { + bucket_script: { + buckets_path: { + goodEvents: 'goodEvents', + totalEvents: 'totalEvents', + }, + script: + 'if (params.totalEvents == 0) { return -1 } else { return params.goodEvents / params.totalEvents }', + }, + }, + errorBudgetInitial: { + bucket_script: { + buckets_path: { + objectiveTarget: '_objectiveTarget', + }, + script: '1 - params.objectiveTarget', + }, + }, + errorBudgetConsumed: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + errorBudgetInitial: 'errorBudgetInitial', + }, + script: + 'if (params.sliValue == -1) { return 0 } else { return (1 - params.sliValue) / params.errorBudgetInitial }', + }, + }, + errorBudgetRemaining: { + bucket_script: { + buckets_path: { + errorBudgetConsummed: 'errorBudgetConsumed', + }, + script: '1 - params.errorBudgetConsummed', + }, + }, + statusCode: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + objectiveTarget: '_objectiveTarget', + errorBudgetRemaining: 'errorBudgetRemaining', + }, + script: { + source: + 'if (params.sliValue == -1) { return 0 } else if (params.sliValue >= params.objectiveTarget) { return 4 } else if (params.errorBudgetRemaining > 0) { return 2 } else { return 1 }', + }, + }, + }, + }, + }, + description: + 'Summarize every SLO with occurrences budgeting method and a 30 days rolling time window', + frequency: '1m', + sync: { + time: { + field: '@timestamp', + delay: '125s', + }, + }, + settings: { + deduce_mappings: false, + max_page_search_size: 8000, + }, + _meta: { + version: SLO_RESOURCES_VERSION, + managed: true, + managed_by: 'observability', + }, +}; diff --git a/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_occurrences_7d_rolling.ts b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_occurrences_7d_rolling.ts new file mode 100644 index 00000000000000..b515e4ead626f4 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_occurrences_7d_rolling.ts @@ -0,0 +1,152 @@ +/* + * 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 { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/types'; +import { + SLO_DESTINATION_INDEX_PATTERN, + SLO_RESOURCES_VERSION, + SLO_SUMMARY_DESTINATION_INDEX_NAME, + SLO_SUMMARY_INGEST_PIPELINE_NAME, + SLO_SUMMARY_TRANSFORM_NAME_PREFIX, +} from '../../../../assets/constants'; +import { groupBy } from './common'; + +export const SUMMARY_OCCURRENCES_7D_ROLLING: TransformPutTransformRequest = { + transform_id: `${SLO_SUMMARY_TRANSFORM_NAME_PREFIX}occurrences-7d-rolling`, + dest: { + pipeline: SLO_SUMMARY_INGEST_PIPELINE_NAME, + index: SLO_SUMMARY_DESTINATION_INDEX_NAME, + }, + source: { + index: SLO_DESTINATION_INDEX_PATTERN, + runtime_mappings: { + errorBudgetEstimated: { + type: 'boolean', + script: 'emit(false)', + }, + isTempDoc: { + type: 'boolean', + script: 'emit(false)', + }, + }, + query: { + bool: { + filter: [ + { + range: { + '@timestamp': { + gte: 'now-7d/m', + lte: 'now/m', + }, + }, + }, + { + term: { + 'slo.budgetingMethod': 'occurrences', + }, + }, + { + term: { + 'slo.timeWindow.type': 'rolling', + }, + }, + { + term: { + 'slo.timeWindow.duration': '7d', + }, + }, + ], + }, + }, + }, + pivot: { + group_by: groupBy, + aggregations: { + goodEvents: { + sum: { + field: 'slo.numerator', + }, + }, + totalEvents: { + sum: { + field: 'slo.denominator', + }, + }, + _objectiveTarget: { + max: { + field: 'slo.objective.target', + }, + }, + sliValue: { + bucket_script: { + buckets_path: { + goodEvents: 'goodEvents', + totalEvents: 'totalEvents', + }, + script: + 'if (params.totalEvents == 0) { return -1 } else { return params.goodEvents / params.totalEvents }', + }, + }, + errorBudgetInitial: { + bucket_script: { + buckets_path: { + objectiveTarget: '_objectiveTarget', + }, + script: '1 - params.objectiveTarget', + }, + }, + errorBudgetConsumed: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + errorBudgetInitial: 'errorBudgetInitial', + }, + script: + 'if (params.sliValue == -1) { return 0 } else { return (1 - params.sliValue) / params.errorBudgetInitial }', + }, + }, + errorBudgetRemaining: { + bucket_script: { + buckets_path: { + errorBudgetConsummed: 'errorBudgetConsumed', + }, + script: '1 - params.errorBudgetConsummed', + }, + }, + statusCode: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + objectiveTarget: '_objectiveTarget', + errorBudgetRemaining: 'errorBudgetRemaining', + }, + script: { + source: + 'if (params.sliValue == -1) { return 0 } else if (params.sliValue >= params.objectiveTarget) { return 4 } else if (params.errorBudgetRemaining > 0) { return 2 } else { return 1 }', + }, + }, + }, + }, + }, + description: + 'Summarize every SLO with occurrences budgeting method and a 7 days rolling time window', + frequency: '1m', + sync: { + time: { + field: '@timestamp', + delay: '125s', + }, + }, + settings: { + deduce_mappings: false, + }, + _meta: { + version: SLO_RESOURCES_VERSION, + managed: true, + managed_by: 'observability', + }, +}; diff --git a/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_occurrences_90d_rolling.ts b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_occurrences_90d_rolling.ts new file mode 100644 index 00000000000000..3ae7d6c96f054b --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_occurrences_90d_rolling.ts @@ -0,0 +1,152 @@ +/* + * 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 { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/types'; +import { + SLO_DESTINATION_INDEX_PATTERN, + SLO_RESOURCES_VERSION, + SLO_SUMMARY_DESTINATION_INDEX_NAME, + SLO_SUMMARY_INGEST_PIPELINE_NAME, + SLO_SUMMARY_TRANSFORM_NAME_PREFIX, +} from '../../../../assets/constants'; +import { groupBy } from './common'; + +export const SUMMARY_OCCURRENCES_90D_ROLLING: TransformPutTransformRequest = { + transform_id: `${SLO_SUMMARY_TRANSFORM_NAME_PREFIX}occurrences-90d-rolling`, + dest: { + index: SLO_SUMMARY_DESTINATION_INDEX_NAME, + pipeline: SLO_SUMMARY_INGEST_PIPELINE_NAME, + }, + source: { + index: SLO_DESTINATION_INDEX_PATTERN, + runtime_mappings: { + errorBudgetEstimated: { + type: 'boolean', + script: 'emit(false)', + }, + isTempDoc: { + type: 'boolean', + script: 'emit(false)', + }, + }, + query: { + bool: { + filter: [ + { + range: { + '@timestamp': { + gte: 'now-90d/m', + lte: 'now/m', + }, + }, + }, + { + term: { + 'slo.budgetingMethod': 'occurrences', + }, + }, + { + term: { + 'slo.timeWindow.type': 'rolling', + }, + }, + { + term: { + 'slo.timeWindow.duration': '90d', + }, + }, + ], + }, + }, + }, + pivot: { + group_by: groupBy, + aggregations: { + goodEvents: { + sum: { + field: 'slo.numerator', + }, + }, + totalEvents: { + sum: { + field: 'slo.denominator', + }, + }, + _objectiveTarget: { + max: { + field: 'slo.objective.target', + }, + }, + sliValue: { + bucket_script: { + buckets_path: { + goodEvents: 'goodEvents', + totalEvents: 'totalEvents', + }, + script: + 'if (params.totalEvents == 0) { return -1 } else { return params.goodEvents / params.totalEvents }', + }, + }, + errorBudgetInitial: { + bucket_script: { + buckets_path: { + objectiveTarget: '_objectiveTarget', + }, + script: '1 - params.objectiveTarget', + }, + }, + errorBudgetConsumed: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + errorBudgetInitial: 'errorBudgetInitial', + }, + script: + 'if (params.sliValue == -1) { return 0 } else { return (1 - params.sliValue) / params.errorBudgetInitial }', + }, + }, + errorBudgetRemaining: { + bucket_script: { + buckets_path: { + errorBudgetConsummed: 'errorBudgetConsumed', + }, + script: '1 - params.errorBudgetConsummed', + }, + }, + statusCode: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + objectiveTarget: '_objectiveTarget', + errorBudgetRemaining: 'errorBudgetRemaining', + }, + script: { + source: + 'if (params.sliValue == -1) { return 0 } else if (params.sliValue >= params.objectiveTarget) { return 4 } else if (params.errorBudgetRemaining > 0) { return 2 } else { return 1 }', + }, + }, + }, + }, + }, + description: + 'Summarize every SLO with occurrences budgeting method and a 90 days rolling time window', + frequency: '1m', + sync: { + time: { + field: '@timestamp', + delay: '125s', + }, + }, + settings: { + deduce_mappings: false, + }, + _meta: { + version: SLO_RESOURCES_VERSION, + managed: true, + managed_by: 'observability', + }, +}; diff --git a/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_occurrences_monthly_aligned.ts b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_occurrences_monthly_aligned.ts new file mode 100644 index 00000000000000..7a5a8083630cbd --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_occurrences_monthly_aligned.ts @@ -0,0 +1,150 @@ +/* + * 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 { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/types'; +import { + SLO_DESTINATION_INDEX_PATTERN, + SLO_RESOURCES_VERSION, + SLO_SUMMARY_DESTINATION_INDEX_NAME, + SLO_SUMMARY_INGEST_PIPELINE_NAME, + SLO_SUMMARY_TRANSFORM_NAME_PREFIX, +} from '../../../../assets/constants'; +import { groupBy } from './common'; + +export const SUMMARY_OCCURRENCES_MONTHLY_ALIGNED: TransformPutTransformRequest = { + transform_id: `${SLO_SUMMARY_TRANSFORM_NAME_PREFIX}occurrences-monthly-aligned`, + dest: { + index: SLO_SUMMARY_DESTINATION_INDEX_NAME, + pipeline: SLO_SUMMARY_INGEST_PIPELINE_NAME, + }, + source: { + index: SLO_DESTINATION_INDEX_PATTERN, + runtime_mappings: { + errorBudgetEstimated: { + type: 'boolean', + script: 'emit(true)', + }, + isTempDoc: { + type: 'boolean', + script: 'emit(false)', + }, + }, + query: { + bool: { + filter: [ + { + range: { + '@timestamp': { + gte: 'now/M', + lte: 'now/m', + }, + }, + }, + { + term: { + 'slo.budgetingMethod': 'occurrences', + }, + }, + { + term: { + 'slo.timeWindow.type': 'calendarAligned', + }, + }, + { + term: { + 'slo.timeWindow.duration': '1M', + }, + }, + ], + }, + }, + }, + pivot: { + group_by: groupBy, + aggregations: { + _objectiveTarget: { + max: { + field: 'slo.objective.target', + }, + }, + goodEvents: { + sum: { + field: 'slo.numerator', + }, + }, + totalEvents: { + sum: { + field: 'slo.denominator', + }, + }, + sliValue: { + bucket_script: { + buckets_path: { + goodEvents: 'goodEvents', + totalEvents: 'totalEvents', + }, + script: + 'if (params.totalEvents == 0) { return -1 } else { return params.goodEvents / params.totalEvents }', + }, + }, + errorBudgetInitial: { + bucket_script: { + buckets_path: { + objective: '_objectiveTarget', + }, + script: '1 - params.objective', + }, + }, + errorBudgetConsumed: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + errorBudgetInitial: 'errorBudgetInitial', + }, + script: + 'if (params.sliValue == -1) { return 0 } else { return (1 - params.sliValue) / params.errorBudgetInitial }', + }, + }, + errorBudgetRemaining: { + bucket_script: { + buckets_path: { + errorBudgetConsumed: 'errorBudgetConsumed', + }, + script: '1 - params.errorBudgetConsumed', + }, + }, + statusCode: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + objective: '_objectiveTarget', + errorBudgetRemaining: 'errorBudgetRemaining', + }, + script: + 'if (params.sliValue == -1) { return 0 } else if (params.sliValue >= params.objective) { return 4 } else if (params.errorBudgetRemaining > 0) { return 2 } else { return 1 }', + }, + }, + }, + }, + description: + 'Summarize every SLO with occurrences budgeting method and a monthly calendar aligned time window', + frequency: '1m', + sync: { + time: { + field: '@timestamp', + delay: '125s', + }, + }, + settings: { + deduce_mappings: false, + }, + _meta: { + version: SLO_RESOURCES_VERSION, + managed: true, + managed_by: 'observability', + }, +}; diff --git a/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_occurrences_weekly_aligned.ts b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_occurrences_weekly_aligned.ts new file mode 100644 index 00000000000000..cc897dc84c5072 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_occurrences_weekly_aligned.ts @@ -0,0 +1,150 @@ +/* + * 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 { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/types'; +import { + SLO_DESTINATION_INDEX_PATTERN, + SLO_RESOURCES_VERSION, + SLO_SUMMARY_DESTINATION_INDEX_NAME, + SLO_SUMMARY_INGEST_PIPELINE_NAME, + SLO_SUMMARY_TRANSFORM_NAME_PREFIX, +} from '../../../../assets/constants'; +import { groupBy } from './common'; + +export const SUMMARY_OCCURRENCES_WEEKLY_ALIGNED: TransformPutTransformRequest = { + transform_id: `${SLO_SUMMARY_TRANSFORM_NAME_PREFIX}occurrences-weekly-aligned`, + dest: { + index: SLO_SUMMARY_DESTINATION_INDEX_NAME, + pipeline: SLO_SUMMARY_INGEST_PIPELINE_NAME, + }, + source: { + index: SLO_DESTINATION_INDEX_PATTERN, + runtime_mappings: { + errorBudgetEstimated: { + type: 'boolean', + script: 'emit(true)', + }, + isTempDoc: { + type: 'boolean', + script: 'emit(false)', + }, + }, + query: { + bool: { + filter: [ + { + range: { + '@timestamp': { + gte: 'now/w', + lte: 'now/m', + }, + }, + }, + { + term: { + 'slo.budgetingMethod': 'occurrences', + }, + }, + { + term: { + 'slo.timeWindow.type': 'calendarAligned', + }, + }, + { + term: { + 'slo.timeWindow.duration': '1w', + }, + }, + ], + }, + }, + }, + pivot: { + group_by: groupBy, + aggregations: { + _objectiveTarget: { + max: { + field: 'slo.objective.target', + }, + }, + goodEvents: { + sum: { + field: 'slo.numerator', + }, + }, + totalEvents: { + sum: { + field: 'slo.denominator', + }, + }, + sliValue: { + bucket_script: { + buckets_path: { + goodEvents: 'goodEvents', + totalEvents: 'totalEvents', + }, + script: + 'if (params.totalEvents == 0) { return -1 } else { return params.goodEvents / params.totalEvents }', + }, + }, + errorBudgetInitial: { + bucket_script: { + buckets_path: { + objective: '_objectiveTarget', + }, + script: '1 - params.objective', + }, + }, + errorBudgetConsumed: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + errorBudgetInitial: 'errorBudgetInitial', + }, + script: + 'if (params.sliValue == -1) { return 0 } else { return (1 - params.sliValue) / params.errorBudgetInitial }', + }, + }, + errorBudgetRemaining: { + bucket_script: { + buckets_path: { + errorBudgetConsumed: 'errorBudgetConsumed', + }, + script: '1 - params.errorBudgetConsumed', + }, + }, + statusCode: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + objective: '_objectiveTarget', + errorBudgetRemaining: 'errorBudgetRemaining', + }, + script: + 'if (params.sliValue == -1) { return 0 } else if (params.sliValue >= params.objective) { return 4 } else if (params.errorBudgetRemaining > 0) { return 2 } else { return 1 }', + }, + }, + }, + }, + description: + 'Summarize every SLO with occurrences budgeting method and a weekly calendar aligned time window', + frequency: '1m', + sync: { + time: { + field: '@timestamp', + delay: '125s', + }, + }, + settings: { + deduce_mappings: false, + }, + _meta: { + version: SLO_RESOURCES_VERSION, + managed: true, + managed_by: 'observability', + }, +}; diff --git a/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_timeslices_30d_rolling.ts b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_timeslices_30d_rolling.ts new file mode 100644 index 00000000000000..f5dea3efcf8793 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_timeslices_30d_rolling.ts @@ -0,0 +1,152 @@ +/* + * 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 { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/types'; +import { + SLO_DESTINATION_INDEX_PATTERN, + SLO_RESOURCES_VERSION, + SLO_SUMMARY_DESTINATION_INDEX_NAME, + SLO_SUMMARY_INGEST_PIPELINE_NAME, + SLO_SUMMARY_TRANSFORM_NAME_PREFIX, +} from '../../../../assets/constants'; +import { groupBy } from './common'; + +export const SUMMARY_TIMESLICES_30D_ROLLING: TransformPutTransformRequest = { + transform_id: `${SLO_SUMMARY_TRANSFORM_NAME_PREFIX}timeslices-30d-rolling`, + dest: { + index: SLO_SUMMARY_DESTINATION_INDEX_NAME, + pipeline: SLO_SUMMARY_INGEST_PIPELINE_NAME, + }, + source: { + index: SLO_DESTINATION_INDEX_PATTERN, + runtime_mappings: { + errorBudgetEstimated: { + type: 'boolean', + script: 'emit(false)', + }, + isTempDoc: { + type: 'boolean', + script: 'emit(false)', + }, + }, + query: { + bool: { + filter: [ + { + range: { + '@timestamp': { + gte: 'now-30d/m', + lte: 'now/m', + }, + }, + }, + { + term: { + 'slo.budgetingMethod': 'timeslices', + }, + }, + { + term: { + 'slo.timeWindow.type': 'rolling', + }, + }, + { + term: { + 'slo.timeWindow.duration': '30d', + }, + }, + ], + }, + }, + }, + pivot: { + group_by: groupBy, + aggregations: { + goodEvents: { + sum: { + field: 'slo.isGoodSlice', + }, + }, + totalEvents: { + value_count: { + field: 'slo.isGoodSlice', + }, + }, + _objectiveTarget: { + max: { + field: 'slo.objective.target', + }, + }, + sliValue: { + bucket_script: { + buckets_path: { + goodEvents: 'goodEvents', + totalEvents: 'totalEvents', + }, + script: + 'if (params.totalEvents == 0) { return -1 } else { return params.goodEvents / params.totalEvents }', + }, + }, + errorBudgetInitial: { + bucket_script: { + buckets_path: { + objectiveTarget: '_objectiveTarget', + }, + script: '1 - params.objectiveTarget', + }, + }, + errorBudgetConsumed: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + errorBudgetInitial: 'errorBudgetInitial', + }, + script: + 'if (params.sliValue == -1) { return 0 } else { return (1 - params.sliValue) / params.errorBudgetInitial }', + }, + }, + errorBudgetRemaining: { + bucket_script: { + buckets_path: { + errorBudgetConsummed: 'errorBudgetConsumed', + }, + script: '1 - params.errorBudgetConsummed', + }, + }, + statusCode: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + objectiveTarget: '_objectiveTarget', + errorBudgetRemaining: 'errorBudgetRemaining', + }, + script: { + source: + 'if (params.sliValue == -1) { return 0 } else if (params.sliValue >= params.objectiveTarget) { return 4 } else if (params.errorBudgetRemaining > 0) { return 2 } else { return 1 }', + }, + }, + }, + }, + }, + description: + 'Summarize every SLO with timeslices budgeting method and a 30 days rolling time window', + frequency: '1m', + sync: { + time: { + field: '@timestamp', + delay: '125s', + }, + }, + settings: { + deduce_mappings: false, + }, + _meta: { + version: SLO_RESOURCES_VERSION, + managed: true, + managed_by: 'observability', + }, +}; diff --git a/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_timeslices_7d_rolling.ts b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_timeslices_7d_rolling.ts new file mode 100644 index 00000000000000..3bd1e333515296 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_timeslices_7d_rolling.ts @@ -0,0 +1,152 @@ +/* + * 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 { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/types'; +import { + SLO_DESTINATION_INDEX_PATTERN, + SLO_RESOURCES_VERSION, + SLO_SUMMARY_DESTINATION_INDEX_NAME, + SLO_SUMMARY_INGEST_PIPELINE_NAME, + SLO_SUMMARY_TRANSFORM_NAME_PREFIX, +} from '../../../../assets/constants'; +import { groupBy } from './common'; + +export const SUMMARY_TIMESLICES_7D_ROLLING: TransformPutTransformRequest = { + transform_id: `${SLO_SUMMARY_TRANSFORM_NAME_PREFIX}timeslices-7d-rolling`, + dest: { + index: SLO_SUMMARY_DESTINATION_INDEX_NAME, + pipeline: SLO_SUMMARY_INGEST_PIPELINE_NAME, + }, + source: { + index: SLO_DESTINATION_INDEX_PATTERN, + runtime_mappings: { + errorBudgetEstimated: { + type: 'boolean', + script: 'emit(false)', + }, + isTempDoc: { + type: 'boolean', + script: 'emit(false)', + }, + }, + query: { + bool: { + filter: [ + { + range: { + '@timestamp': { + gte: 'now-7d/m', + lte: 'now/m', + }, + }, + }, + { + term: { + 'slo.budgetingMethod': 'timeslices', + }, + }, + { + term: { + 'slo.timeWindow.type': 'rolling', + }, + }, + { + term: { + 'slo.timeWindow.duration': '7d', + }, + }, + ], + }, + }, + }, + pivot: { + group_by: groupBy, + aggregations: { + goodEvents: { + sum: { + field: 'slo.isGoodSlice', + }, + }, + totalEvents: { + value_count: { + field: 'slo.isGoodSlice', + }, + }, + _objectiveTarget: { + max: { + field: 'slo.objective.target', + }, + }, + sliValue: { + bucket_script: { + buckets_path: { + goodEvents: 'goodEvents', + totalEvents: 'totalEvents', + }, + script: + 'if (params.totalEvents == 0) { return -1 } else { return params.goodEvents / params.totalEvents }', + }, + }, + errorBudgetInitial: { + bucket_script: { + buckets_path: { + objectiveTarget: '_objectiveTarget', + }, + script: '1 - params.objectiveTarget', + }, + }, + errorBudgetConsumed: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + errorBudgetInitial: 'errorBudgetInitial', + }, + script: + 'if (params.sliValue == -1) { return 0 } else { return (1 - params.sliValue) / params.errorBudgetInitial }', + }, + }, + errorBudgetRemaining: { + bucket_script: { + buckets_path: { + errorBudgetConsummed: 'errorBudgetConsumed', + }, + script: '1 - params.errorBudgetConsummed', + }, + }, + statusCode: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + objectiveTarget: '_objectiveTarget', + errorBudgetRemaining: 'errorBudgetRemaining', + }, + script: { + source: + 'if (params.sliValue == -1) { return 0 } else if (params.sliValue >= params.objectiveTarget) { return 4 } else if (params.errorBudgetRemaining > 0) { return 2 } else { return 1 }', + }, + }, + }, + }, + }, + description: + 'Summarize every SLO with timeslices budgeting method and a 7 days rolling time window', + frequency: '1m', + sync: { + time: { + field: '@timestamp', + delay: '125s', + }, + }, + settings: { + deduce_mappings: false, + }, + _meta: { + version: SLO_RESOURCES_VERSION, + managed: true, + managed_by: 'observability', + }, +}; diff --git a/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_timeslices_90d_rolling.ts b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_timeslices_90d_rolling.ts new file mode 100644 index 00000000000000..7e9d572d77d157 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_timeslices_90d_rolling.ts @@ -0,0 +1,152 @@ +/* + * 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 { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/types'; +import { + SLO_DESTINATION_INDEX_PATTERN, + SLO_RESOURCES_VERSION, + SLO_SUMMARY_DESTINATION_INDEX_NAME, + SLO_SUMMARY_INGEST_PIPELINE_NAME, + SLO_SUMMARY_TRANSFORM_NAME_PREFIX, +} from '../../../../assets/constants'; +import { groupBy } from './common'; + +export const SUMMARY_TIMESLICES_90D_ROLLING: TransformPutTransformRequest = { + transform_id: `${SLO_SUMMARY_TRANSFORM_NAME_PREFIX}timeslices-90d-rolling`, + dest: { + index: SLO_SUMMARY_DESTINATION_INDEX_NAME, + pipeline: SLO_SUMMARY_INGEST_PIPELINE_NAME, + }, + source: { + index: SLO_DESTINATION_INDEX_PATTERN, + runtime_mappings: { + errorBudgetEstimated: { + type: 'boolean', + script: 'emit(false)', + }, + isTempDoc: { + type: 'boolean', + script: 'emit(false)', + }, + }, + query: { + bool: { + filter: [ + { + range: { + '@timestamp': { + gte: 'now-90d/m', + lte: 'now/m', + }, + }, + }, + { + term: { + 'slo.budgetingMethod': 'timeslices', + }, + }, + { + term: { + 'slo.timeWindow.type': 'rolling', + }, + }, + { + term: { + 'slo.timeWindow.duration': '90d', + }, + }, + ], + }, + }, + }, + pivot: { + group_by: groupBy, + aggregations: { + goodEvents: { + sum: { + field: 'slo.isGoodSlice', + }, + }, + totalEvents: { + value_count: { + field: 'slo.isGoodSlice', + }, + }, + _objectiveTarget: { + max: { + field: 'slo.objective.target', + }, + }, + sliValue: { + bucket_script: { + buckets_path: { + goodEvents: 'goodEvents', + totalEvents: 'totalEvents', + }, + script: + 'if (params.totalEvents == 0) { return -1 } else { return params.goodEvents / params.totalEvents }', + }, + }, + errorBudgetInitial: { + bucket_script: { + buckets_path: { + objectiveTarget: '_objectiveTarget', + }, + script: '1 - params.objectiveTarget', + }, + }, + errorBudgetConsumed: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + errorBudgetInitial: 'errorBudgetInitial', + }, + script: + 'if (params.sliValue == -1) { return 0 } else { return (1 - params.sliValue) / params.errorBudgetInitial }', + }, + }, + errorBudgetRemaining: { + bucket_script: { + buckets_path: { + errorBudgetConsummed: 'errorBudgetConsumed', + }, + script: '1 - params.errorBudgetConsummed', + }, + }, + statusCode: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + objectiveTarget: '_objectiveTarget', + errorBudgetRemaining: 'errorBudgetRemaining', + }, + script: { + source: + 'if (params.sliValue == -1) { return 0 } else if (params.sliValue >= params.objectiveTarget) { return 4 } else if (params.errorBudgetRemaining > 0) { return 2 } else { return 1 }', + }, + }, + }, + }, + }, + description: + 'Summarize every SLO with timeslices budgeting method and a 90 days rolling time window', + frequency: '1m', + sync: { + time: { + field: '@timestamp', + delay: '125s', + }, + }, + settings: { + deduce_mappings: false, + }, + _meta: { + version: SLO_RESOURCES_VERSION, + managed: true, + managed_by: 'observability', + }, +}; diff --git a/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_timeslices_monthly_aligned.ts b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_timeslices_monthly_aligned.ts new file mode 100644 index 00000000000000..cd7f7e4f36a965 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_timeslices_monthly_aligned.ts @@ -0,0 +1,180 @@ +/* + * 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 { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/types'; +import { + SLO_DESTINATION_INDEX_PATTERN, + SLO_RESOURCES_VERSION, + SLO_SUMMARY_DESTINATION_INDEX_NAME, + SLO_SUMMARY_INGEST_PIPELINE_NAME, + SLO_SUMMARY_TRANSFORM_NAME_PREFIX, +} from '../../../../assets/constants'; +import { groupBy } from './common'; + +export const SUMMARY_TIMESLICES_MONTHLY_ALIGNED: TransformPutTransformRequest = { + transform_id: `${SLO_SUMMARY_TRANSFORM_NAME_PREFIX}timeslices-monthly-aligned`, + dest: { + index: SLO_SUMMARY_DESTINATION_INDEX_NAME, + pipeline: SLO_SUMMARY_INGEST_PIPELINE_NAME, + }, + source: { + index: SLO_DESTINATION_INDEX_PATTERN, + runtime_mappings: { + errorBudgetEstimated: { + type: 'boolean', + script: 'emit(false)', + }, + isTempDoc: { + type: 'boolean', + script: 'emit(false)', + }, + }, + query: { + bool: { + filter: [ + { + range: { + '@timestamp': { + gte: 'now/M', + lte: 'now/m', + }, + }, + }, + { + term: { + 'slo.budgetingMethod': 'timeslices', + }, + }, + { + term: { + 'slo.timeWindow.type': 'calendarAligned', + }, + }, + { + term: { + 'slo.timeWindow.duration': '1M', + }, + }, + ], + }, + }, + }, + pivot: { + group_by: groupBy, + aggregations: { + _sliceDurationInSeconds: { + max: { + field: 'slo.objective.sliceDurationInSeconds', + }, + }, + _totalSlicesInPeriod: { + bucket_script: { + buckets_path: { + sliceDurationInSeconds: '_sliceDurationInSeconds', + }, + script: { + source: ` + Date d = new Date(); + Instant instant = Instant.ofEpochMilli(d.getTime()); + LocalDateTime now = LocalDateTime.ofInstant(instant, ZoneOffset.UTC); + LocalDateTime startOfMonth = now + .withDayOfMonth(1) + .withHour(0) + .withMinute(0) + .withSecond(0); + LocalDateTime startOfNextMonth = startOfMonth.plusMonths(1); + double sliceDurationInMinutes = params.sliceDurationInSeconds / 60; + + return Math.ceil(Duration.between(startOfMonth, startOfNextMonth).toMinutes() / sliceDurationInMinutes); + `, + }, + }, + }, + _objectiveTarget: { + max: { + field: 'slo.objective.target', + }, + }, + goodEvents: { + sum: { + field: 'slo.isGoodSlice', + }, + }, + totalEvents: { + value_count: { + field: 'slo.isGoodSlice', + }, + }, + sliValue: { + bucket_script: { + buckets_path: { + goodEvents: 'goodEvents', + totalEvents: 'totalEvents', + }, + script: + 'if (params.totalEvents == 0) { return -1 } else { return params.goodEvents / params.totalEvents }', + }, + }, + errorBudgetInitial: { + bucket_script: { + buckets_path: { + objective: '_objectiveTarget', + }, + script: '1 - params.objective', + }, + }, + errorBudgetConsumed: { + bucket_script: { + buckets_path: { + goodEvents: 'goodEvents', + totalEvents: 'totalEvents', + totalSlicesInPeriod: '_totalSlicesInPeriod', + errorBudgetInitial: 'errorBudgetInitial', + }, + script: + 'if (params.totalEvents == 0) { return 0 } else { return (params.totalEvents - params.goodEvents) / (params.totalSlicesInPeriod * params.errorBudgetInitial) }', + }, + }, + errorBudgetRemaining: { + bucket_script: { + buckets_path: { + errorBudgetConsumed: 'errorBudgetConsumed', + }, + script: '1 - params.errorBudgetConsumed', + }, + }, + statusCode: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + objective: '_objectiveTarget', + errorBudgetRemaining: 'errorBudgetRemaining', + }, + script: + 'if (params.sliValue == -1) { return 0 } else if (params.sliValue >= params.objective) { return 4 } else if (params.errorBudgetRemaining > 0) { return 2 } else { return 1 }', + }, + }, + }, + }, + description: + 'Summarize every SLO with timeslices budgeting method and a monthly calendar aligned time window', + frequency: '1m', + sync: { + time: { + field: '@timestamp', + delay: '125s', + }, + }, + settings: { + deduce_mappings: false, + }, + _meta: { + version: SLO_RESOURCES_VERSION, + managed: true, + managed_by: 'observability', + }, +}; diff --git a/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_timeslices_weekly_aligned.ts b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_timeslices_weekly_aligned.ts new file mode 100644 index 00000000000000..f4808cffac7844 --- /dev/null +++ b/x-pack/plugins/observability/server/services/slo/summary_transform/templates/summary_timeslices_weekly_aligned.ts @@ -0,0 +1,165 @@ +/* + * 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 { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/types'; +import { + SLO_DESTINATION_INDEX_PATTERN, + SLO_RESOURCES_VERSION, + SLO_SUMMARY_DESTINATION_INDEX_NAME, + SLO_SUMMARY_INGEST_PIPELINE_NAME, + SLO_SUMMARY_TRANSFORM_NAME_PREFIX, +} from '../../../../assets/constants'; +import { groupBy } from './common'; + +export const SUMMARY_TIMESLICES_WEEKLY_ALIGNED: TransformPutTransformRequest = { + transform_id: `${SLO_SUMMARY_TRANSFORM_NAME_PREFIX}timeslices-weekly-aligned`, + dest: { + index: SLO_SUMMARY_DESTINATION_INDEX_NAME, + pipeline: SLO_SUMMARY_INGEST_PIPELINE_NAME, + }, + source: { + index: SLO_DESTINATION_INDEX_PATTERN, + runtime_mappings: { + errorBudgetEstimated: { + type: 'boolean', + script: 'emit(false)', + }, + isTempDoc: { + type: 'boolean', + script: 'emit(false)', + }, + }, + query: { + bool: { + filter: [ + { + range: { + '@timestamp': { + gte: 'now/w', + lte: 'now/m', + }, + }, + }, + { + term: { + 'slo.budgetingMethod': 'timeslices', + }, + }, + { + term: { + 'slo.timeWindow.type': 'calendarAligned', + }, + }, + { + term: { + 'slo.timeWindow.duration': '1w', + }, + }, + ], + }, + }, + }, + pivot: { + group_by: groupBy, + aggregations: { + _sliceDurationInSeconds: { + max: { + field: 'slo.objective.sliceDurationInSeconds', + }, + }, + _totalSlicesInPeriod: { + bucket_script: { + buckets_path: { + sliceDurationInSeconds: '_sliceDurationInSeconds', + }, + script: 'Math.ceil(7 * 24 * 60 * 60 / params.sliceDurationInSeconds)', + }, + }, + _objectiveTarget: { + max: { + field: 'slo.objective.target', + }, + }, + goodEvents: { + sum: { + field: 'slo.isGoodSlice', + }, + }, + totalEvents: { + value_count: { + field: 'slo.isGoodSlice', + }, + }, + sliValue: { + bucket_script: { + buckets_path: { + goodEvents: 'goodEvents', + totalEvents: 'totalEvents', + }, + script: + 'if (params.totalEvents == 0) { return -1 } else { return params.goodEvents / params.totalEvents }', + }, + }, + errorBudgetInitial: { + bucket_script: { + buckets_path: { + objective: '_objectiveTarget', + }, + script: '1 - params.objective', + }, + }, + errorBudgetConsumed: { + bucket_script: { + buckets_path: { + goodEvents: 'goodEvents', + totalEvents: 'totalEvents', + totalSlicesInPeriod: '_totalSlicesInPeriod', + errorBudgetInitial: 'errorBudgetInitial', + }, + script: + 'if (params.totalEvents == 0) { return 0 } else { return (params.totalEvents - params.goodEvents) / (params.totalSlicesInPeriod * params.errorBudgetInitial) }', + }, + }, + errorBudgetRemaining: { + bucket_script: { + buckets_path: { + errorBudgetConsumed: 'errorBudgetConsumed', + }, + script: '1 - params.errorBudgetConsumed', + }, + }, + statusCode: { + bucket_script: { + buckets_path: { + sliValue: 'sliValue', + objective: '_objectiveTarget', + errorBudgetRemaining: 'errorBudgetRemaining', + }, + script: + 'if (params.sliValue == -1) { return 0 } else if (params.sliValue >= params.objective) { return 4 } else if (params.errorBudgetRemaining > 0) { return 2 } else { return 1 }', + }, + }, + }, + }, + description: + 'Summarize every SLO with timeslices budgeting method and a weekly calendar aligned time window', + frequency: '1m', + sync: { + time: { + field: '@timestamp', + delay: '125s', + }, + }, + settings: { + deduce_mappings: false, + }, + _meta: { + version: SLO_RESOURCES_VERSION, + managed: true, + managed_by: 'observability', + }, +}; diff --git a/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/apm_transaction_duration.test.ts.snap b/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/apm_transaction_duration.test.ts.snap index 5fd17391645edb..d3d0143c3e0753 100644 --- a/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/apm_transaction_duration.test.ts.snap +++ b/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/apm_transaction_duration.test.ts.snap @@ -139,17 +139,453 @@ Object { } `; +exports[`APM Transaction Duration Transform Generator groups by the 'service.environment' 1`] = ` +Object { + "bool": Object { + "filter": Array [ + Object { + "terms": Object { + "processor.event": Array [ + "metric", + ], + }, + }, + Object { + "term": Object { + "metricset.name": "transaction", + }, + }, + Object { + "exists": Object { + "field": "transaction.duration.histogram", + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "gte": "now-7d", + }, + }, + }, + Object { + "match": Object { + "service.environment": "production", + }, + }, + ], + }, +} +`; + +exports[`APM Transaction Duration Transform Generator groups by the 'service.environment' 2`] = ` +Object { + "@timestamp": Object { + "date_histogram": Object { + "field": "@timestamp", + "fixed_interval": "1m", + }, + }, + "service.environment": Object { + "terms": Object { + "field": "service.environment", + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, + "slo.id": Object { + "terms": Object { + "field": "slo.id", + }, + }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, + "slo.revision": Object { + "terms": Object { + "field": "slo.revision", + }, + }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, +} +`; + +exports[`APM Transaction Duration Transform Generator groups by the 'service.name' 1`] = ` +Object { + "bool": Object { + "filter": Array [ + Object { + "terms": Object { + "processor.event": Array [ + "metric", + ], + }, + }, + Object { + "term": Object { + "metricset.name": "transaction", + }, + }, + Object { + "exists": Object { + "field": "transaction.duration.histogram", + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "gte": "now-7d", + }, + }, + }, + Object { + "match": Object { + "service.name": "my-service", + }, + }, + ], + }, +} +`; + +exports[`APM Transaction Duration Transform Generator groups by the 'service.name' 2`] = ` +Object { + "@timestamp": Object { + "date_histogram": Object { + "field": "@timestamp", + "fixed_interval": "1m", + }, + }, + "service.name": Object { + "terms": Object { + "field": "service.name", + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, + "slo.id": Object { + "terms": Object { + "field": "slo.id", + }, + }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, + "slo.revision": Object { + "terms": Object { + "field": "slo.revision", + }, + }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, +} +`; + +exports[`APM Transaction Duration Transform Generator groups by the 'transaction.name' 1`] = ` +Object { + "bool": Object { + "filter": Array [ + Object { + "terms": Object { + "processor.event": Array [ + "metric", + ], + }, + }, + Object { + "term": Object { + "metricset.name": "transaction", + }, + }, + Object { + "exists": Object { + "field": "transaction.duration.histogram", + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "gte": "now-7d", + }, + }, + }, + Object { + "match": Object { + "transaction.name": "GET /foo", + }, + }, + ], + }, +} +`; + +exports[`APM Transaction Duration Transform Generator groups by the 'transaction.name' 2`] = ` +Object { + "@timestamp": Object { + "date_histogram": Object { + "field": "@timestamp", + "fixed_interval": "1m", + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, + "slo.id": Object { + "terms": Object { + "field": "slo.id", + }, + }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, + "slo.revision": Object { + "terms": Object { + "field": "slo.revision", + }, + }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, + "transaction.name": Object { + "terms": Object { + "field": "transaction.name", + }, + }, +} +`; + +exports[`APM Transaction Duration Transform Generator groups by the 'transaction.type' 1`] = ` +Object { + "bool": Object { + "filter": Array [ + Object { + "terms": Object { + "processor.event": Array [ + "metric", + ], + }, + }, + Object { + "term": Object { + "metricset.name": "transaction", + }, + }, + Object { + "exists": Object { + "field": "transaction.duration.histogram", + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "gte": "now-7d", + }, + }, + }, + Object { + "match": Object { + "transaction.type": "request", + }, + }, + ], + }, +} +`; + +exports[`APM Transaction Duration Transform Generator groups by the 'transaction.type' 2`] = ` +Object { + "@timestamp": Object { + "date_histogram": Object { + "field": "@timestamp", + "fixed_interval": "1m", + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, + "slo.id": Object { + "terms": Object { + "field": "slo.id", + }, + }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, + "slo.revision": Object { + "terms": Object { + "field": "slo.revision", + }, + }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, + "transaction.type": Object { + "terms": Object { + "field": "transaction.type", + }, + }, +} +`; + exports[`APM Transaction Duration Transform Generator returns the expected transform params for timeslices slo 1`] = ` Object { "_meta": Object { "managed": true, "managed_by": "observability", - "version": 1, + "version": 2, }, "description": "Rolled-up SLI data for SLO: irrelevant", "dest": Object { - "index": ".slo-observability.sli-v1", - "pipeline": ".slo-observability.sli.monthly", + "index": ".slo-observability.sli-v2", + "pipeline": ".slo-observability.sli.pipeline", }, "frequency": "1m", "pivot": Object { @@ -194,16 +630,86 @@ Object { "fixed_interval": "2m", }, }, + "service.environment": Object { + "terms": Object { + "field": "service.environment", + }, + }, + "service.name": Object { + "terms": Object { + "field": "service.name", + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, "slo.id": Object { "terms": Object { "field": "slo.id", }, }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.sliceDurationInSeconds": Object { + "terms": Object { + "field": "slo.objective.sliceDurationInSeconds", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, "slo.revision": Object { "terms": Object { "field": "slo.revision", }, }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, + "transaction.name": Object { + "terms": Object { + "field": "transaction.name", + }, + }, + "transaction.type": Object { + "terms": Object { + "field": "transaction.type", + }, + }, }, }, "settings": Object { @@ -262,18 +768,78 @@ Object { }, }, "runtime_mappings": Object { + "slo.budgetingMethod": Object { + "script": Object { + "source": "emit('timeslices')", + }, + "type": "keyword", + }, + "slo.description": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, "slo.id": Object { "script": Object { "source": Any, }, "type": "keyword", }, + "slo.indicator.type": Object { + "script": Object { + "source": "emit('sli.apm.transactionDuration')", + }, + "type": "keyword", + }, + "slo.instanceId": Object { + "script": Object { + "source": "emit('*')", + }, + "type": "keyword", + }, + "slo.name": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, + "slo.objective.sliceDurationInSeconds": Object { + "script": Object { + "source": "emit(120)", + }, + "type": "long", + }, + "slo.objective.target": Object { + "script": Object { + "source": "emit(0.98)", + }, + "type": "double", + }, "slo.revision": Object { "script": Object { "source": "emit(1)", }, "type": "long", }, + "slo.tags": Object { + "script": Object { + "source": "emit('critical,k8s')", + }, + "type": "keyword", + }, + "slo.timeWindow.duration": Object { + "script": Object { + "source": "emit('7d')", + }, + "type": "keyword", + }, + "slo.timeWindow.type": Object { + "script": Object { + "source": "emit('rolling')", + }, + "type": "keyword", + }, }, }, "sync": Object { @@ -291,12 +857,12 @@ Object { "_meta": Object { "managed": true, "managed_by": "observability", - "version": 1, + "version": 2, }, "description": "Rolled-up SLI data for SLO: irrelevant", "dest": Object { - "index": ".slo-observability.sli-v1", - "pipeline": ".slo-observability.sli.monthly", + "index": ".slo-observability.sli-v2", + "pipeline": ".slo-observability.sli.pipeline", }, "frequency": "1m", "pivot": Object { @@ -332,16 +898,81 @@ Object { "fixed_interval": "1m", }, }, + "service.environment": Object { + "terms": Object { + "field": "service.environment", + }, + }, + "service.name": Object { + "terms": Object { + "field": "service.name", + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, "slo.id": Object { "terms": Object { "field": "slo.id", }, }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, "slo.revision": Object { "terms": Object { "field": "slo.revision", }, }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, + "transaction.name": Object { + "terms": Object { + "field": "transaction.name", + }, + }, + "transaction.type": Object { + "terms": Object { + "field": "transaction.type", + }, + }, }, }, "settings": Object { @@ -400,18 +1031,72 @@ Object { }, }, "runtime_mappings": Object { + "slo.budgetingMethod": Object { + "script": Object { + "source": "emit('occurrences')", + }, + "type": "keyword", + }, + "slo.description": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, "slo.id": Object { "script": Object { "source": Any, }, "type": "keyword", }, + "slo.indicator.type": Object { + "script": Object { + "source": "emit('sli.apm.transactionDuration')", + }, + "type": "keyword", + }, + "slo.instanceId": Object { + "script": Object { + "source": "emit('*')", + }, + "type": "keyword", + }, + "slo.name": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, + "slo.objective.target": Object { + "script": Object { + "source": "emit(0.999)", + }, + "type": "double", + }, "slo.revision": Object { "script": Object { "source": "emit(1)", }, "type": "long", }, + "slo.tags": Object { + "script": Object { + "source": "emit('critical,k8s')", + }, + "type": "keyword", + }, + "slo.timeWindow.duration": Object { + "script": Object { + "source": "emit('7d')", + }, + "type": "keyword", + }, + "slo.timeWindow.type": Object { + "script": Object { + "source": "emit('rolling')", + }, + "type": "keyword", + }, }, }, "sync": Object { diff --git a/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/apm_transaction_error_rate.test.ts.snap b/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/apm_transaction_error_rate.test.ts.snap index eb5ae7388d0e90..bde756ae7ecfa4 100644 --- a/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/apm_transaction_error_rate.test.ts.snap +++ b/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/apm_transaction_error_rate.test.ts.snap @@ -131,17 +131,437 @@ Object { } `; +exports[`APM Transaction Error Rate Transform Generator groups by the 'service.environment' 1`] = ` +Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "metricset.name": "transaction", + }, + }, + Object { + "terms": Object { + "event.outcome": Array [ + "success", + "failure", + ], + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "gte": "now-7d", + }, + }, + }, + Object { + "match": Object { + "service.environment": "production", + }, + }, + ], + }, +} +`; + +exports[`APM Transaction Error Rate Transform Generator groups by the 'service.environment' 2`] = ` +Object { + "@timestamp": Object { + "date_histogram": Object { + "field": "@timestamp", + "fixed_interval": "1m", + }, + }, + "service.environment": Object { + "terms": Object { + "field": "service.environment", + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, + "slo.id": Object { + "terms": Object { + "field": "slo.id", + }, + }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, + "slo.revision": Object { + "terms": Object { + "field": "slo.revision", + }, + }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, +} +`; + +exports[`APM Transaction Error Rate Transform Generator groups by the 'service.name' 1`] = ` +Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "metricset.name": "transaction", + }, + }, + Object { + "terms": Object { + "event.outcome": Array [ + "success", + "failure", + ], + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "gte": "now-7d", + }, + }, + }, + Object { + "match": Object { + "service.name": "my-service", + }, + }, + ], + }, +} +`; + +exports[`APM Transaction Error Rate Transform Generator groups by the 'service.name' 2`] = ` +Object { + "@timestamp": Object { + "date_histogram": Object { + "field": "@timestamp", + "fixed_interval": "1m", + }, + }, + "service.name": Object { + "terms": Object { + "field": "service.name", + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, + "slo.id": Object { + "terms": Object { + "field": "slo.id", + }, + }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, + "slo.revision": Object { + "terms": Object { + "field": "slo.revision", + }, + }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, +} +`; + +exports[`APM Transaction Error Rate Transform Generator groups by the 'transaction.name' 1`] = ` +Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "metricset.name": "transaction", + }, + }, + Object { + "terms": Object { + "event.outcome": Array [ + "success", + "failure", + ], + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "gte": "now-7d", + }, + }, + }, + Object { + "match": Object { + "transaction.name": "GET /foo", + }, + }, + ], + }, +} +`; + +exports[`APM Transaction Error Rate Transform Generator groups by the 'transaction.name' 2`] = ` +Object { + "@timestamp": Object { + "date_histogram": Object { + "field": "@timestamp", + "fixed_interval": "1m", + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, + "slo.id": Object { + "terms": Object { + "field": "slo.id", + }, + }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, + "slo.revision": Object { + "terms": Object { + "field": "slo.revision", + }, + }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, + "transaction.name": Object { + "terms": Object { + "field": "transaction.name", + }, + }, +} +`; + +exports[`APM Transaction Error Rate Transform Generator groups by the 'transaction.type' 1`] = ` +Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "metricset.name": "transaction", + }, + }, + Object { + "terms": Object { + "event.outcome": Array [ + "success", + "failure", + ], + }, + }, + Object { + "range": Object { + "@timestamp": Object { + "gte": "now-7d", + }, + }, + }, + Object { + "match": Object { + "transaction.type": "request", + }, + }, + ], + }, +} +`; + +exports[`APM Transaction Error Rate Transform Generator groups by the 'transaction.type' 2`] = ` +Object { + "@timestamp": Object { + "date_histogram": Object { + "field": "@timestamp", + "fixed_interval": "1m", + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, + "slo.id": Object { + "terms": Object { + "field": "slo.id", + }, + }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, + "slo.revision": Object { + "terms": Object { + "field": "slo.revision", + }, + }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, + "transaction.type": Object { + "terms": Object { + "field": "transaction.type", + }, + }, +} +`; + exports[`APM Transaction Error Rate Transform Generator returns the expected transform params for timeslices slo 1`] = ` Object { "_meta": Object { "managed": true, "managed_by": "observability", - "version": 1, + "version": 2, }, "description": "Rolled-up SLI data for SLO: irrelevant", "dest": Object { - "index": ".slo-observability.sli-v1", - "pipeline": ".slo-observability.sli.monthly", + "index": ".slo-observability.sli-v2", + "pipeline": ".slo-observability.sli.pipeline", }, "frequency": "1m", "pivot": Object { @@ -179,16 +599,86 @@ Object { "fixed_interval": "2m", }, }, + "service.environment": Object { + "terms": Object { + "field": "service.environment", + }, + }, + "service.name": Object { + "terms": Object { + "field": "service.name", + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, "slo.id": Object { "terms": Object { "field": "slo.id", }, }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.sliceDurationInSeconds": Object { + "terms": Object { + "field": "slo.objective.sliceDurationInSeconds", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, "slo.revision": Object { "terms": Object { "field": "slo.revision", }, }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, + "transaction.name": Object { + "terms": Object { + "field": "transaction.name", + }, + }, + "transaction.type": Object { + "terms": Object { + "field": "transaction.type", + }, + }, }, }, "settings": Object { @@ -243,18 +733,78 @@ Object { }, }, "runtime_mappings": Object { + "slo.budgetingMethod": Object { + "script": Object { + "source": "emit('timeslices')", + }, + "type": "keyword", + }, + "slo.description": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, "slo.id": Object { "script": Object { "source": Any, }, "type": "keyword", }, + "slo.indicator.type": Object { + "script": Object { + "source": "emit('sli.apm.transactionErrorRate')", + }, + "type": "keyword", + }, + "slo.instanceId": Object { + "script": Object { + "source": "emit('*')", + }, + "type": "keyword", + }, + "slo.name": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, + "slo.objective.sliceDurationInSeconds": Object { + "script": Object { + "source": "emit(120)", + }, + "type": "long", + }, + "slo.objective.target": Object { + "script": Object { + "source": "emit(0.98)", + }, + "type": "double", + }, "slo.revision": Object { "script": Object { "source": "emit(1)", }, "type": "long", }, + "slo.tags": Object { + "script": Object { + "source": "emit('critical,k8s')", + }, + "type": "keyword", + }, + "slo.timeWindow.duration": Object { + "script": Object { + "source": "emit('7d')", + }, + "type": "keyword", + }, + "slo.timeWindow.type": Object { + "script": Object { + "source": "emit('rolling')", + }, + "type": "keyword", + }, }, }, "sync": Object { @@ -272,12 +822,12 @@ Object { "_meta": Object { "managed": true, "managed_by": "observability", - "version": 1, + "version": 2, }, "description": "Rolled-up SLI data for SLO: irrelevant", "dest": Object { - "index": ".slo-observability.sli-v1", - "pipeline": ".slo-observability.sli.monthly", + "index": ".slo-observability.sli-v2", + "pipeline": ".slo-observability.sli.pipeline", }, "frequency": "1m", "pivot": Object { @@ -306,16 +856,81 @@ Object { "fixed_interval": "1m", }, }, + "service.environment": Object { + "terms": Object { + "field": "service.environment", + }, + }, + "service.name": Object { + "terms": Object { + "field": "service.name", + }, + }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, "slo.id": Object { "terms": Object { "field": "slo.id", }, }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, "slo.revision": Object { "terms": Object { "field": "slo.revision", }, }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, + "transaction.name": Object { + "terms": Object { + "field": "transaction.name", + }, + }, + "transaction.type": Object { + "terms": Object { + "field": "transaction.type", + }, + }, }, }, "settings": Object { @@ -370,18 +985,72 @@ Object { }, }, "runtime_mappings": Object { + "slo.budgetingMethod": Object { + "script": Object { + "source": "emit('occurrences')", + }, + "type": "keyword", + }, + "slo.description": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, "slo.id": Object { "script": Object { "source": Any, }, "type": "keyword", }, + "slo.indicator.type": Object { + "script": Object { + "source": "emit('sli.apm.transactionErrorRate')", + }, + "type": "keyword", + }, + "slo.instanceId": Object { + "script": Object { + "source": "emit('*')", + }, + "type": "keyword", + }, + "slo.name": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, + "slo.objective.target": Object { + "script": Object { + "source": "emit(0.999)", + }, + "type": "double", + }, "slo.revision": Object { "script": Object { "source": "emit(1)", }, "type": "long", }, + "slo.tags": Object { + "script": Object { + "source": "emit('critical,k8s')", + }, + "type": "keyword", + }, + "slo.timeWindow.duration": Object { + "script": Object { + "source": "emit('7d')", + }, + "type": "keyword", + }, + "slo.timeWindow.type": Object { + "script": Object { + "source": "emit('rolling')", + }, + "type": "keyword", + }, }, }, "sync": Object { diff --git a/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/histogram.test.ts.snap b/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/histogram.test.ts.snap index 81ad6c77c9564f..2d71f69f9b6b32 100644 --- a/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/histogram.test.ts.snap +++ b/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/histogram.test.ts.snap @@ -64,12 +64,12 @@ Object { "_meta": Object { "managed": true, "managed_by": "observability", - "version": 1, + "version": 2, }, "description": "Rolled-up SLI data for SLO: irrelevant", "dest": Object { - "index": ".slo-observability.sli-v1", - "pipeline": ".slo-observability.sli.monthly", + "index": ".slo-observability.sli-v2", + "pipeline": ".slo-observability.sli.pipeline", }, "frequency": "1m", "pivot": Object { @@ -138,16 +138,66 @@ Object { "fixed_interval": "2m", }, }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, "slo.id": Object { "terms": Object { "field": "slo.id", }, }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.sliceDurationInSeconds": Object { + "terms": Object { + "field": "slo.objective.sliceDurationInSeconds", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, "slo.revision": Object { "terms": Object { "field": "slo.revision", }, }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, }, }, "settings": Object { @@ -168,18 +218,78 @@ Object { }, }, "runtime_mappings": Object { + "slo.budgetingMethod": Object { + "script": Object { + "source": "emit('timeslices')", + }, + "type": "keyword", + }, + "slo.description": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, "slo.id": Object { "script": Object { "source": Any, }, "type": "keyword", }, + "slo.indicator.type": Object { + "script": Object { + "source": "emit('sli.histogram.custom')", + }, + "type": "keyword", + }, + "slo.instanceId": Object { + "script": Object { + "source": "emit('*')", + }, + "type": "keyword", + }, + "slo.name": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, + "slo.objective.sliceDurationInSeconds": Object { + "script": Object { + "source": "emit(120)", + }, + "type": "long", + }, + "slo.objective.target": Object { + "script": Object { + "source": "emit(0.98)", + }, + "type": "double", + }, "slo.revision": Object { "script": Object { "source": "emit(1)", }, "type": "long", }, + "slo.tags": Object { + "script": Object { + "source": "emit('critical,k8s')", + }, + "type": "keyword", + }, + "slo.timeWindow.duration": Object { + "script": Object { + "source": "emit('7d')", + }, + "type": "keyword", + }, + "slo.timeWindow.type": Object { + "script": Object { + "source": "emit('rolling')", + }, + "type": "keyword", + }, }, }, "sync": Object { @@ -197,12 +307,12 @@ Object { "_meta": Object { "managed": true, "managed_by": "observability", - "version": 1, + "version": 2, }, "description": "Rolled-up SLI data for SLO: irrelevant", "dest": Object { - "index": ".slo-observability.sli-v1", - "pipeline": ".slo-observability.sli.monthly", + "index": ".slo-observability.sli-v2", + "pipeline": ".slo-observability.sli.pipeline", }, "frequency": "1m", "pivot": Object { @@ -262,16 +372,61 @@ Object { "fixed_interval": "1m", }, }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, "slo.id": Object { "terms": Object { "field": "slo.id", }, }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, "slo.revision": Object { "terms": Object { "field": "slo.revision", }, }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, }, }, "settings": Object { @@ -292,18 +447,72 @@ Object { }, }, "runtime_mappings": Object { + "slo.budgetingMethod": Object { + "script": Object { + "source": "emit('occurrences')", + }, + "type": "keyword", + }, + "slo.description": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, "slo.id": Object { "script": Object { "source": Any, }, "type": "keyword", }, + "slo.indicator.type": Object { + "script": Object { + "source": "emit('sli.histogram.custom')", + }, + "type": "keyword", + }, + "slo.instanceId": Object { + "script": Object { + "source": "emit('*')", + }, + "type": "keyword", + }, + "slo.name": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, + "slo.objective.target": Object { + "script": Object { + "source": "emit(0.999)", + }, + "type": "double", + }, "slo.revision": Object { "script": Object { "source": "emit(1)", }, "type": "long", }, + "slo.tags": Object { + "script": Object { + "source": "emit('critical,k8s')", + }, + "type": "keyword", + }, + "slo.timeWindow.duration": Object { + "script": Object { + "source": "emit('7d')", + }, + "type": "keyword", + }, + "slo.timeWindow.type": Object { + "script": Object { + "source": "emit('rolling')", + }, + "type": "keyword", + }, }, }, "sync": Object { diff --git a/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/kql_custom.test.ts.snap b/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/kql_custom.test.ts.snap index 011dfd9fe34382..277f8ebf43f78e 100644 --- a/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/kql_custom.test.ts.snap +++ b/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/kql_custom.test.ts.snap @@ -105,12 +105,12 @@ Object { "_meta": Object { "managed": true, "managed_by": "observability", - "version": 1, + "version": 2, }, "description": "Rolled-up SLI data for SLO: irrelevant", "dest": Object { - "index": ".slo-observability.sli-v1", - "pipeline": ".slo-observability.sli.monthly", + "index": ".slo-observability.sli-v2", + "pipeline": ".slo-observability.sli.pipeline", }, "frequency": "1m", "pivot": Object { @@ -153,16 +153,66 @@ Object { "fixed_interval": "2m", }, }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, "slo.id": Object { "terms": Object { "field": "slo.id", }, }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.sliceDurationInSeconds": Object { + "terms": Object { + "field": "slo.objective.sliceDurationInSeconds", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, "slo.revision": Object { "terms": Object { "field": "slo.revision", }, }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, }, }, "settings": Object { @@ -183,18 +233,78 @@ Object { }, }, "runtime_mappings": Object { + "slo.budgetingMethod": Object { + "script": Object { + "source": "emit('timeslices')", + }, + "type": "keyword", + }, + "slo.description": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, "slo.id": Object { "script": Object { "source": Any, }, "type": "keyword", }, + "slo.indicator.type": Object { + "script": Object { + "source": "emit('sli.kql.custom')", + }, + "type": "keyword", + }, + "slo.instanceId": Object { + "script": Object { + "source": "emit('*')", + }, + "type": "keyword", + }, + "slo.name": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, + "slo.objective.sliceDurationInSeconds": Object { + "script": Object { + "source": "emit(120)", + }, + "type": "long", + }, + "slo.objective.target": Object { + "script": Object { + "source": "emit(0.98)", + }, + "type": "double", + }, "slo.revision": Object { "script": Object { "source": "emit(1)", }, "type": "long", }, + "slo.tags": Object { + "script": Object { + "source": "emit('critical,k8s')", + }, + "type": "keyword", + }, + "slo.timeWindow.duration": Object { + "script": Object { + "source": "emit('7d')", + }, + "type": "keyword", + }, + "slo.timeWindow.type": Object { + "script": Object { + "source": "emit('rolling')", + }, + "type": "keyword", + }, }, }, "sync": Object { @@ -212,12 +322,12 @@ Object { "_meta": Object { "managed": true, "managed_by": "observability", - "version": 1, + "version": 2, }, "description": "Rolled-up SLI data for SLO: irrelevant", "dest": Object { - "index": ".slo-observability.sli-v1", - "pipeline": ".slo-observability.sli.monthly", + "index": ".slo-observability.sli-v2", + "pipeline": ".slo-observability.sli.pipeline", }, "frequency": "1m", "pivot": Object { @@ -251,16 +361,61 @@ Object { "fixed_interval": "1m", }, }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, "slo.id": Object { "terms": Object { "field": "slo.id", }, }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, "slo.revision": Object { "terms": Object { "field": "slo.revision", }, }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, }, }, "settings": Object { @@ -281,18 +436,72 @@ Object { }, }, "runtime_mappings": Object { + "slo.budgetingMethod": Object { + "script": Object { + "source": "emit('occurrences')", + }, + "type": "keyword", + }, + "slo.description": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, "slo.id": Object { "script": Object { "source": Any, }, "type": "keyword", }, + "slo.indicator.type": Object { + "script": Object { + "source": "emit('sli.kql.custom')", + }, + "type": "keyword", + }, + "slo.instanceId": Object { + "script": Object { + "source": "emit('*')", + }, + "type": "keyword", + }, + "slo.name": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, + "slo.objective.target": Object { + "script": Object { + "source": "emit(0.999)", + }, + "type": "double", + }, "slo.revision": Object { "script": Object { "source": "emit(1)", }, "type": "long", }, + "slo.tags": Object { + "script": Object { + "source": "emit('critical,k8s')", + }, + "type": "keyword", + }, + "slo.timeWindow.duration": Object { + "script": Object { + "source": "emit('7d')", + }, + "type": "keyword", + }, + "slo.timeWindow.type": Object { + "script": Object { + "source": "emit('rolling')", + }, + "type": "keyword", + }, }, }, "sync": Object { diff --git a/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/metric_custom.test.ts.snap b/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/metric_custom.test.ts.snap index 14afc32122d6f8..e94b52cf497a3e 100644 --- a/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/metric_custom.test.ts.snap +++ b/x-pack/plugins/observability/server/services/slo/transform_generators/__snapshots__/metric_custom.test.ts.snap @@ -76,12 +76,12 @@ Object { "_meta": Object { "managed": true, "managed_by": "observability", - "version": 1, + "version": 2, }, "description": "Rolled-up SLI data for SLO: irrelevant", "dest": Object { - "index": ".slo-observability.sli-v1", - "pipeline": ".slo-observability.sli.monthly", + "index": ".slo-observability.sli-v2", + "pipeline": ".slo-observability.sli.pipeline", }, "frequency": "1m", "pivot": Object { @@ -162,16 +162,66 @@ Object { "fixed_interval": "2m", }, }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, "slo.id": Object { "terms": Object { "field": "slo.id", }, }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.sliceDurationInSeconds": Object { + "terms": Object { + "field": "slo.objective.sliceDurationInSeconds", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, "slo.revision": Object { "terms": Object { "field": "slo.revision", }, }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, }, }, "settings": Object { @@ -192,18 +242,78 @@ Object { }, }, "runtime_mappings": Object { + "slo.budgetingMethod": Object { + "script": Object { + "source": "emit('timeslices')", + }, + "type": "keyword", + }, + "slo.description": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, "slo.id": Object { "script": Object { "source": Any, }, "type": "keyword", }, + "slo.indicator.type": Object { + "script": Object { + "source": "emit('sli.metric.custom')", + }, + "type": "keyword", + }, + "slo.instanceId": Object { + "script": Object { + "source": "emit('*')", + }, + "type": "keyword", + }, + "slo.name": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, + "slo.objective.sliceDurationInSeconds": Object { + "script": Object { + "source": "emit(120)", + }, + "type": "long", + }, + "slo.objective.target": Object { + "script": Object { + "source": "emit(0.98)", + }, + "type": "double", + }, "slo.revision": Object { "script": Object { "source": "emit(1)", }, "type": "long", }, + "slo.tags": Object { + "script": Object { + "source": "emit('critical,k8s')", + }, + "type": "keyword", + }, + "slo.timeWindow.duration": Object { + "script": Object { + "source": "emit('7d')", + }, + "type": "keyword", + }, + "slo.timeWindow.type": Object { + "script": Object { + "source": "emit('rolling')", + }, + "type": "keyword", + }, }, }, "sync": Object { @@ -221,12 +331,12 @@ Object { "_meta": Object { "managed": true, "managed_by": "observability", - "version": 1, + "version": 2, }, "description": "Rolled-up SLI data for SLO: irrelevant", "dest": Object { - "index": ".slo-observability.sli-v1", - "pipeline": ".slo-observability.sli.monthly", + "index": ".slo-observability.sli-v2", + "pipeline": ".slo-observability.sli.pipeline", }, "frequency": "1m", "pivot": Object { @@ -298,16 +408,61 @@ Object { "fixed_interval": "1m", }, }, + "slo.budgetingMethod": Object { + "terms": Object { + "field": "slo.budgetingMethod", + }, + }, + "slo.description": Object { + "terms": Object { + "field": "slo.description", + }, + }, "slo.id": Object { "terms": Object { "field": "slo.id", }, }, + "slo.indicator.type": Object { + "terms": Object { + "field": "slo.indicator.type", + }, + }, + "slo.instanceId": Object { + "terms": Object { + "field": "slo.instanceId", + }, + }, + "slo.name": Object { + "terms": Object { + "field": "slo.name", + }, + }, + "slo.objective.target": Object { + "terms": Object { + "field": "slo.objective.target", + }, + }, "slo.revision": Object { "terms": Object { "field": "slo.revision", }, }, + "slo.tags": Object { + "terms": Object { + "field": "slo.tags", + }, + }, + "slo.timeWindow.duration": Object { + "terms": Object { + "field": "slo.timeWindow.duration", + }, + }, + "slo.timeWindow.type": Object { + "terms": Object { + "field": "slo.timeWindow.type", + }, + }, }, }, "settings": Object { @@ -328,18 +483,72 @@ Object { }, }, "runtime_mappings": Object { + "slo.budgetingMethod": Object { + "script": Object { + "source": "emit('occurrences')", + }, + "type": "keyword", + }, + "slo.description": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, "slo.id": Object { "script": Object { "source": Any, }, "type": "keyword", }, + "slo.indicator.type": Object { + "script": Object { + "source": "emit('sli.metric.custom')", + }, + "type": "keyword", + }, + "slo.instanceId": Object { + "script": Object { + "source": "emit('*')", + }, + "type": "keyword", + }, + "slo.name": Object { + "script": Object { + "source": "emit('irrelevant')", + }, + "type": "keyword", + }, + "slo.objective.target": Object { + "script": Object { + "source": "emit(0.999)", + }, + "type": "double", + }, "slo.revision": Object { "script": Object { "source": "emit(1)", }, "type": "long", }, + "slo.tags": Object { + "script": Object { + "source": "emit('critical,k8s')", + }, + "type": "keyword", + }, + "slo.timeWindow.duration": Object { + "script": Object { + "source": "emit('7d')", + }, + "type": "keyword", + }, + "slo.timeWindow.type": Object { + "script": Object { + "source": "emit('rolling')", + }, + "type": "keyword", + }, }, }, "sync": Object { diff --git a/x-pack/plugins/observability/server/services/slo/transform_generators/apm_transaction_duration.test.ts b/x-pack/plugins/observability/server/services/slo/transform_generators/apm_transaction_duration.test.ts index 82a1dd1c65652f..ecbe9abe99af20 100644 --- a/x-pack/plugins/observability/server/services/slo/transform_generators/apm_transaction_duration.test.ts +++ b/x-pack/plugins/observability/server/services/slo/transform_generators/apm_transaction_duration.test.ts @@ -15,28 +15,28 @@ import { ApmTransactionDurationTransformGenerator } from './apm_transaction_dura const generator = new ApmTransactionDurationTransformGenerator(); describe('APM Transaction Duration Transform Generator', () => { - it('returns the expected transform params with every specified indicator params', async () => { - const anSLO = createSLO({ indicator: createAPMTransactionDurationIndicator() }); - const transform = generator.getTransformParams(anSLO); + it('returns the expected transform params with every specified indicator params', () => { + const slo = createSLO({ indicator: createAPMTransactionDurationIndicator() }); + const transform = generator.getTransformParams(slo); expect(transform).toMatchSnapshot({ transform_id: expect.any(String), source: { runtime_mappings: { 'slo.id': { script: { source: expect.any(String) } } } }, }); - expect(transform.transform_id).toEqual(`slo-${anSLO.id}-${anSLO.revision}`); + expect(transform.transform_id).toEqual(`slo-${slo.id}-${slo.revision}`); expect(transform.source.runtime_mappings!['slo.id']).toMatchObject({ - script: { source: `emit('${anSLO.id}')` }, + script: { source: `emit('${slo.id}')` }, }); expect(transform.source.runtime_mappings!['slo.revision']).toMatchObject({ - script: { source: `emit(${anSLO.revision})` }, + script: { source: `emit(${slo.revision})` }, }); }); - it('returns the expected transform params for timeslices slo', async () => { - const anSLO = createSLOWithTimeslicesBudgetingMethod({ + it('returns the expected transform params for timeslices slo', () => { + const slo = createSLOWithTimeslicesBudgetingMethod({ indicator: createAPMTransactionDurationIndicator(), }); - const transform = generator.getTransformParams(anSLO); + const transform = generator.getTransformParams(slo); expect(transform).toMatchSnapshot({ transform_id: expect.any(String), @@ -44,8 +44,8 @@ describe('APM Transaction Duration Transform Generator', () => { }); }); - it("does not include the query filter when params are '*'", async () => { - const anSLO = createSLO({ + it("does not include the query filter when params are '*'", () => { + const slo = createSLO({ indicator: createAPMTransactionDurationIndicator({ environment: '*', service: '*', @@ -53,32 +53,96 @@ describe('APM Transaction Duration Transform Generator', () => { transactionType: '*', }), }); - const transform = generator.getTransformParams(anSLO); + const transform = generator.getTransformParams(slo); expect(transform.source.query).toMatchSnapshot(); }); - it('uses the provided index params as source index', async () => { + it('uses the provided index params as source index', () => { const index = 'my-custom-apm-index*'; - const anSLO = createSLO({ + const slo = createSLO({ indicator: createAPMTransactionDurationIndicator({ index, }), }); - const transform = generator.getTransformParams(anSLO); + const transform = generator.getTransformParams(slo); expect(transform.source.index).toEqual(index); }); - it('adds the custom kql filter to the query', async () => { + it('adds the custom kql filter to the query', () => { const filter = `"my.field" : "value" and ("foo" >= 12 or "bar" <= 100)`; - const anSLO = createSLO({ + const slo = createSLO({ indicator: createAPMTransactionDurationIndicator({ filter, }), }); - const transform = generator.getTransformParams(anSLO); + const transform = generator.getTransformParams(slo); expect(transform.source.query).toMatchSnapshot(); }); + + it("groups by the 'service.name'", () => { + const slo = createSLO({ + indicator: createAPMTransactionDurationIndicator({ + service: 'my-service', + environment: '*', + transactionName: '*', + transactionType: '*', + }), + }); + + const transform = generator.getTransformParams(slo); + + expect(transform.source.query).toMatchSnapshot(); + expect(transform.pivot?.group_by).toMatchSnapshot(); + }); + + it("groups by the 'service.environment'", () => { + const slo = createSLO({ + indicator: createAPMTransactionDurationIndicator({ + service: '*', + environment: 'production', + transactionName: '*', + transactionType: '*', + }), + }); + + const transform = generator.getTransformParams(slo); + + expect(transform.source.query).toMatchSnapshot(); + expect(transform.pivot?.group_by).toMatchSnapshot(); + }); + + it("groups by the 'transaction.name'", () => { + const slo = createSLO({ + indicator: createAPMTransactionDurationIndicator({ + service: '*', + environment: '*', + transactionName: 'GET /foo', + transactionType: '*', + }), + }); + + const transform = generator.getTransformParams(slo); + + expect(transform.source.query).toMatchSnapshot(); + expect(transform.pivot?.group_by).toMatchSnapshot(); + }); + + it("groups by the 'transaction.type'", () => { + const slo = createSLO({ + indicator: createAPMTransactionDurationIndicator({ + service: '*', + environment: '*', + transactionName: '*', + transactionType: 'request', + }), + }); + + const transform = generator.getTransformParams(slo); + + expect(transform.source.query).toMatchSnapshot(); + expect(transform.pivot?.group_by).toMatchSnapshot(); + }); }); diff --git a/x-pack/plugins/observability/server/services/slo/transform_generators/apm_transaction_duration.ts b/x-pack/plugins/observability/server/services/slo/transform_generators/apm_transaction_duration.ts index 63ccc7e238398e..3dd6469a7f2c50 100644 --- a/x-pack/plugins/observability/server/services/slo/transform_generators/apm_transaction_duration.ts +++ b/x-pack/plugins/observability/server/services/slo/transform_generators/apm_transaction_duration.ts @@ -11,17 +11,17 @@ import { apmTransactionDurationIndicatorSchema, timeslicesBudgetingMethodSchema, } from '@kbn/slo-schema'; -import { InvalidTransformError } from '../../../errors'; +import { getElastichsearchQueryOrThrow, TransformGenerator } from '.'; import { + getSLOTransformId, SLO_DESTINATION_INDEX_NAME, SLO_INGEST_PIPELINE_NAME, - getSLOTransformId, } from '../../../assets/constants'; import { getSLOTransformTemplate } from '../../../assets/transform_templates/slo_transform_template'; -import { SLO, APMTransactionDurationIndicator } from '../../../domain/models'; -import { getElastichsearchQueryOrThrow, TransformGenerator } from '.'; -import { Query } from './types'; +import { APMTransactionDurationIndicator, SLO } from '../../../domain/models'; +import { InvalidTransformError } from '../../../errors'; import { parseIndex } from './common'; +import { Query } from './types'; export class ApmTransactionDurationTransformGenerator extends TransformGenerator { public getTransformParams(slo: SLO): TransformPutTransformRequest { @@ -34,7 +34,7 @@ export class ApmTransactionDurationTransformGenerator extends TransformGenerator this.buildDescription(slo), this.buildSource(slo, slo.indicator), this.buildDestination(), - this.buildGroupBy(slo), + this.buildGroupBy(slo, slo.indicator), this.buildAggregations(slo, slo.indicator), this.buildSettings(slo) ); @@ -44,6 +44,29 @@ export class ApmTransactionDurationTransformGenerator extends TransformGenerator return getSLOTransformId(slo.id, slo.revision); } + private buildGroupBy(slo: SLO, indicator: APMTransactionDurationIndicator) { + // These groupBy fields must match the fields from the source query, otherwise + // the transform will create permutations for each value present in the source. + // E.g. if environment is not specified in the source query, but we include it in the groupBy, + // we'll output documents for each environment value + const extraGroupByFields = { + ...(indicator.params.service !== ALL_VALUE && { + 'service.name': { terms: { field: 'service.name' } }, + }), + ...(indicator.params.environment !== ALL_VALUE && { + 'service.environment': { terms: { field: 'service.environment' } }, + }), + ...(indicator.params.transactionName !== ALL_VALUE && { + 'transaction.name': { terms: { field: 'transaction.name' } }, + }), + ...(indicator.params.transactionType !== ALL_VALUE && { + 'transaction.type': { terms: { field: 'transaction.type' } }, + }), + }; + + return this.buildCommonGroupBy(slo, '@timestamp', extraGroupByFields); + } + private buildSource(slo: SLO, indicator: APMTransactionDurationIndicator) { const queryFilter: Query[] = [ { @@ -54,6 +77,7 @@ export class ApmTransactionDurationTransformGenerator extends TransformGenerator }, }, ]; + if (indicator.params.service !== ALL_VALUE) { queryFilter.push({ match: { diff --git a/x-pack/plugins/observability/server/services/slo/transform_generators/apm_transaction_error_rate.test.ts b/x-pack/plugins/observability/server/services/slo/transform_generators/apm_transaction_error_rate.test.ts index 4b19f06e453d0a..338bc0adf3a342 100644 --- a/x-pack/plugins/observability/server/services/slo/transform_generators/apm_transaction_error_rate.test.ts +++ b/x-pack/plugins/observability/server/services/slo/transform_generators/apm_transaction_error_rate.test.ts @@ -16,27 +16,27 @@ const generator = new ApmTransactionErrorRateTransformGenerator(); describe('APM Transaction Error Rate Transform Generator', () => { it('returns the expected transform params with every specified indicator params', async () => { - const anSLO = createSLO({ indicator: createAPMTransactionErrorRateIndicator() }); - const transform = generator.getTransformParams(anSLO); + const slo = createSLO({ indicator: createAPMTransactionErrorRateIndicator() }); + const transform = generator.getTransformParams(slo); expect(transform).toMatchSnapshot({ transform_id: expect.any(String), source: { runtime_mappings: { 'slo.id': { script: { source: expect.any(String) } } } }, }); - expect(transform.transform_id).toEqual(`slo-${anSLO.id}-${anSLO.revision}`); + expect(transform.transform_id).toEqual(`slo-${slo.id}-${slo.revision}`); expect(transform.source.runtime_mappings!['slo.id']).toMatchObject({ - script: { source: `emit('${anSLO.id}')` }, + script: { source: `emit('${slo.id}')` }, }); expect(transform.source.runtime_mappings!['slo.revision']).toMatchObject({ - script: { source: `emit(${anSLO.revision})` }, + script: { source: `emit(${slo.revision})` }, }); }); it('returns the expected transform params for timeslices slo', async () => { - const anSLO = createSLOWithTimeslicesBudgetingMethod({ + const slo = createSLOWithTimeslicesBudgetingMethod({ indicator: createAPMTransactionErrorRateIndicator(), }); - const transform = generator.getTransformParams(anSLO); + const transform = generator.getTransformParams(slo); expect(transform).toMatchSnapshot({ transform_id: expect.any(String), @@ -45,7 +45,7 @@ describe('APM Transaction Error Rate Transform Generator', () => { }); it("does not include the query filter when params are '*'", async () => { - const anSLO = createSLO({ + const slo = createSLO({ indicator: createAPMTransactionErrorRateIndicator({ environment: '*', service: '*', @@ -53,32 +53,96 @@ describe('APM Transaction Error Rate Transform Generator', () => { transactionType: '*', }), }); - const transform = generator.getTransformParams(anSLO); + const transform = generator.getTransformParams(slo); expect(transform.source.query).toMatchSnapshot(); }); it('uses the provided index params as source index', async () => { const index = 'my-custom-apm-index*'; - const anSLO = createSLO({ + const slo = createSLO({ indicator: createAPMTransactionErrorRateIndicator({ index, }), }); - const transform = generator.getTransformParams(anSLO); + const transform = generator.getTransformParams(slo); expect(transform.source.index).toEqual(index); }); it('adds the custom kql filter to the query', async () => { const filter = `"my.field" : "value" and ("foo" >= 12 or "bar" <= 100)`; - const anSLO = createSLO({ + const slo = createSLO({ indicator: createAPMTransactionErrorRateIndicator({ filter, }), }); - const transform = generator.getTransformParams(anSLO); + const transform = generator.getTransformParams(slo); expect(transform.source.query).toMatchSnapshot(); }); + + it("groups by the 'service.name'", () => { + const slo = createSLO({ + indicator: createAPMTransactionErrorRateIndicator({ + service: 'my-service', + environment: '*', + transactionName: '*', + transactionType: '*', + }), + }); + + const transform = generator.getTransformParams(slo); + + expect(transform.source.query).toMatchSnapshot(); + expect(transform.pivot?.group_by).toMatchSnapshot(); + }); + + it("groups by the 'service.environment'", () => { + const slo = createSLO({ + indicator: createAPMTransactionErrorRateIndicator({ + service: '*', + environment: 'production', + transactionName: '*', + transactionType: '*', + }), + }); + + const transform = generator.getTransformParams(slo); + + expect(transform.source.query).toMatchSnapshot(); + expect(transform.pivot?.group_by).toMatchSnapshot(); + }); + + it("groups by the 'transaction.name'", () => { + const slo = createSLO({ + indicator: createAPMTransactionErrorRateIndicator({ + service: '*', + environment: '*', + transactionName: 'GET /foo', + transactionType: '*', + }), + }); + + const transform = generator.getTransformParams(slo); + + expect(transform.source.query).toMatchSnapshot(); + expect(transform.pivot?.group_by).toMatchSnapshot(); + }); + + it("groups by the 'transaction.type'", () => { + const slo = createSLO({ + indicator: createAPMTransactionErrorRateIndicator({ + service: '*', + environment: '*', + transactionName: '*', + transactionType: 'request', + }), + }); + + const transform = generator.getTransformParams(slo); + + expect(transform.source.query).toMatchSnapshot(); + expect(transform.pivot?.group_by).toMatchSnapshot(); + }); }); diff --git a/x-pack/plugins/observability/server/services/slo/transform_generators/apm_transaction_error_rate.ts b/x-pack/plugins/observability/server/services/slo/transform_generators/apm_transaction_error_rate.ts index d2ba9114360962..3818111c70df21 100644 --- a/x-pack/plugins/observability/server/services/slo/transform_generators/apm_transaction_error_rate.ts +++ b/x-pack/plugins/observability/server/services/slo/transform_generators/apm_transaction_error_rate.ts @@ -11,18 +11,17 @@ import { apmTransactionErrorRateIndicatorSchema, timeslicesBudgetingMethodSchema, } from '@kbn/slo-schema'; - -import { InvalidTransformError } from '../../../errors'; -import { getSLOTransformTemplate } from '../../../assets/transform_templates/slo_transform_template'; import { getElastichsearchQueryOrThrow, TransformGenerator } from '.'; import { + getSLOTransformId, SLO_DESTINATION_INDEX_NAME, SLO_INGEST_PIPELINE_NAME, - getSLOTransformId, } from '../../../assets/constants'; +import { getSLOTransformTemplate } from '../../../assets/transform_templates/slo_transform_template'; import { APMTransactionErrorRateIndicator, SLO } from '../../../domain/models'; -import { Query } from './types'; +import { InvalidTransformError } from '../../../errors'; import { parseIndex } from './common'; +import { Query } from './types'; export class ApmTransactionErrorRateTransformGenerator extends TransformGenerator { public getTransformParams(slo: SLO): TransformPutTransformRequest { @@ -35,7 +34,7 @@ export class ApmTransactionErrorRateTransformGenerator extends TransformGenerato this.buildDescription(slo), this.buildSource(slo, slo.indicator), this.buildDestination(), - this.buildGroupBy(slo), + this.buildGroupBy(slo, slo.indicator), this.buildAggregations(slo), this.buildSettings(slo) ); @@ -45,6 +44,29 @@ export class ApmTransactionErrorRateTransformGenerator extends TransformGenerato return getSLOTransformId(slo.id, slo.revision); } + private buildGroupBy(slo: SLO, indicator: APMTransactionErrorRateIndicator) { + // These groupBy fields must match the fields from the source query, otherwise + // the transform will create permutations for each value present in the source. + // E.g. if environment is not specified in the source query, but we include it in the groupBy, + // we'll output documents for each environment value + const extraGroupByFields = { + ...(indicator.params.service !== ALL_VALUE && { + 'service.name': { terms: { field: 'service.name' } }, + }), + ...(indicator.params.environment !== ALL_VALUE && { + 'service.environment': { terms: { field: 'service.environment' } }, + }), + ...(indicator.params.transactionName !== ALL_VALUE && { + 'transaction.name': { terms: { field: 'transaction.name' } }, + }), + ...(indicator.params.transactionType !== ALL_VALUE && { + 'transaction.type': { terms: { field: 'transaction.type' } }, + }), + }; + + return this.buildCommonGroupBy(slo, '@timestamp', extraGroupByFields); + } + private buildSource(slo: SLO, indicator: APMTransactionErrorRateIndicator) { const queryFilter: Query[] = [ { diff --git a/x-pack/plugins/observability/server/services/slo/transform_generators/histogram.ts b/x-pack/plugins/observability/server/services/slo/transform_generators/histogram.ts index f120d27d98a8a5..7793123ff1595c 100644 --- a/x-pack/plugins/observability/server/services/slo/transform_generators/histogram.ts +++ b/x-pack/plugins/observability/server/services/slo/transform_generators/histogram.ts @@ -34,7 +34,7 @@ export class HistogramTransformGenerator extends TransformGenerator { this.buildDescription(slo), this.buildSource(slo, slo.indicator), this.buildDestination(), - this.buildGroupBy(slo, slo.indicator.params.timestampField), + this.buildCommonGroupBy(slo, slo.indicator.params.timestampField), this.buildAggregations(slo, slo.indicator), this.buildSettings(slo, slo.indicator.params.timestampField) ); diff --git a/x-pack/plugins/observability/server/services/slo/transform_generators/kql_custom.ts b/x-pack/plugins/observability/server/services/slo/transform_generators/kql_custom.ts index 49151c158952af..e44bab97e1b78d 100644 --- a/x-pack/plugins/observability/server/services/slo/transform_generators/kql_custom.ts +++ b/x-pack/plugins/observability/server/services/slo/transform_generators/kql_custom.ts @@ -29,7 +29,7 @@ export class KQLCustomTransformGenerator extends TransformGenerator { this.buildDescription(slo), this.buildSource(slo, slo.indicator), this.buildDestination(), - this.buildGroupBy(slo, slo.indicator.params.timestampField), + this.buildCommonGroupBy(slo, slo.indicator.params.timestampField), this.buildAggregations(slo, slo.indicator), this.buildSettings(slo, slo.indicator.params.timestampField) ); diff --git a/x-pack/plugins/observability/server/services/slo/transform_generators/metric_custom.ts b/x-pack/plugins/observability/server/services/slo/transform_generators/metric_custom.ts index 16a83de0cb3e8d..8faa996272e466 100644 --- a/x-pack/plugins/observability/server/services/slo/transform_generators/metric_custom.ts +++ b/x-pack/plugins/observability/server/services/slo/transform_generators/metric_custom.ts @@ -32,7 +32,7 @@ export class MetricCustomTransformGenerator extends TransformGenerator { this.buildDescription(slo), this.buildSource(slo, slo.indicator), this.buildDestination(), - this.buildGroupBy(slo, slo.indicator.params.timestampField), + this.buildCommonGroupBy(slo, slo.indicator.params.timestampField), this.buildAggregations(slo, slo.indicator), this.buildSettings(slo, slo.indicator.params.timestampField) ); diff --git a/x-pack/plugins/observability/server/services/slo/transform_generators/transform_generator.ts b/x-pack/plugins/observability/server/services/slo/transform_generators/transform_generator.ts index fcbb45cebe18a8..57194acb8d46cc 100644 --- a/x-pack/plugins/observability/server/services/slo/transform_generators/transform_generator.ts +++ b/x-pack/plugins/observability/server/services/slo/transform_generators/transform_generator.ts @@ -5,30 +5,93 @@ * 2.0. */ -import { MappingRuntimeFieldType } from '@elastic/elasticsearch/lib/api/types'; -import { TransformPutTransformRequest } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import { timeslicesBudgetingMethodSchema } from '@kbn/slo-schema'; - +import { + MappingRuntimeFields, + TransformPutTransformRequest, +} from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { ALL_VALUE, timeslicesBudgetingMethodSchema } from '@kbn/slo-schema'; import { TransformSettings } from '../../../assets/transform_templates/slo_transform_template'; import { SLO } from '../../../domain/models'; export abstract class TransformGenerator { public abstract getTransformParams(slo: SLO): TransformPutTransformRequest; - public buildCommonRuntimeMappings(slo: SLO) { + public buildCommonRuntimeMappings(slo: SLO): MappingRuntimeFields { return { 'slo.id': { - type: 'keyword' as MappingRuntimeFieldType, + type: 'keyword', script: { source: `emit('${slo.id}')`, }, }, 'slo.revision': { - type: 'long' as MappingRuntimeFieldType, + type: 'long', script: { source: `emit(${slo.revision})`, }, }, + 'slo.instanceId': { + type: 'keyword', + script: { + source: `emit('${ALL_VALUE}')`, + }, + }, + 'slo.name': { + type: 'keyword', + script: { + source: `emit('${slo.name}')`, + }, + }, + 'slo.description': { + type: 'keyword', + script: { + source: `emit('${slo.description}')`, + }, + }, + 'slo.tags': { + type: 'keyword', + script: { + source: `emit('${slo.tags}')`, + }, + }, + 'slo.indicator.type': { + type: 'keyword', + script: { + source: `emit('${slo.indicator.type}')`, + }, + }, + 'slo.objective.target': { + type: 'double', + script: { + source: `emit(${slo.objective.target})`, + }, + }, + ...(slo.objective.timesliceWindow && { + 'slo.objective.sliceDurationInSeconds': { + type: 'long', + script: { + source: `emit(${slo.objective.timesliceWindow!.asSeconds()})`, + }, + }, + }), + 'slo.budgetingMethod': { + type: 'keyword', + script: { + source: `emit('${slo.budgetingMethod}')`, + }, + }, + 'slo.timeWindow.duration': { + type: 'keyword', + script: { + source: `emit('${slo.timeWindow.duration.format()}')`, + }, + }, + 'slo.timeWindow.type': { + type: 'keyword', + script: { + source: `emit('${slo.timeWindow.type}')`, + }, + }, }; } @@ -36,24 +99,35 @@ export abstract class TransformGenerator { return `Rolled-up SLI data for SLO: ${slo.name}`; } - public buildGroupBy(slo: SLO, sourceIndexTimestampField: string | undefined = '@timestamp') { + public buildCommonGroupBy( + slo: SLO, + sourceIndexTimestampField: string | undefined = '@timestamp', + extraGroupByFields = {} + ) { let fixedInterval = '1m'; if (timeslicesBudgetingMethodSchema.is(slo.budgetingMethod)) { fixedInterval = slo.objective.timesliceWindow!.format(); } return { - 'slo.id': { - terms: { - field: 'slo.id', + 'slo.id': { terms: { field: 'slo.id' } }, + 'slo.revision': { terms: { field: 'slo.revision' } }, + 'slo.instanceId': { terms: { field: 'slo.instanceId' } }, + 'slo.name': { terms: { field: 'slo.name' } }, + 'slo.description': { terms: { field: 'slo.description' } }, + 'slo.tags': { terms: { field: 'slo.tags' } }, + 'slo.indicator.type': { terms: { field: 'slo.indicator.type' } }, + 'slo.objective.target': { terms: { field: 'slo.objective.target' } }, + ...(slo.objective.timesliceWindow && { + 'slo.objective.sliceDurationInSeconds': { + terms: { field: 'slo.objective.sliceDurationInSeconds' }, }, - }, - 'slo.revision': { - terms: { - field: 'slo.revision', - }, - }, - // timestamp field defined in the destination index + }), + 'slo.budgetingMethod': { terms: { field: 'slo.budgetingMethod' } }, + 'slo.timeWindow.duration': { terms: { field: 'slo.timeWindow.duration' } }, + 'slo.timeWindow.type': { terms: { field: 'slo.timeWindow.type' } }, + ...extraGroupByFields, + // @timestamp field defined in the destination index '@timestamp': { date_histogram: { field: sourceIndexTimestampField, // timestamp field defined in the source index diff --git a/x-pack/plugins/observability/server/services/slo/update_slo.test.ts b/x-pack/plugins/observability/server/services/slo/update_slo.test.ts index 17fc582dee1605..d2e03fe97dde82 100644 --- a/x-pack/plugins/observability/server/services/slo/update_slo.test.ts +++ b/x-pack/plugins/observability/server/services/slo/update_slo.test.ts @@ -8,7 +8,11 @@ import { ElasticsearchClient } from '@kbn/core/server'; import { elasticsearchServiceMock } from '@kbn/core/server/mocks'; -import { getSLOTransformId } from '../../assets/constants'; +import { + getSLOTransformId, + SLO_DESTINATION_INDEX_PATTERN, + SLO_SUMMARY_DESTINATION_INDEX_PATTERN, +} from '../../assets/constants'; import { SLO } from '../../domain/models'; import { fiveMinute, oneMinute } from './fixtures/duration'; import { @@ -34,131 +38,107 @@ describe('UpdateSLO', () => { updateSLO = new UpdateSLO(mockRepository, mockTransformManager, mockEsClient); }); - describe('without breaking changes', () => { - it('updates the SLO saved object without revision bump', async () => { - const slo = createSLO({ indicator: createAPMTransactionErrorRateIndicator() }); - mockRepository.findById.mockResolvedValueOnce(slo); - - const newName = 'new slo name'; - const newTags = ['other', 'tags']; - const response = await updateSLO.execute(slo.id, { name: newName, tags: newTags }); - - expectTransformManagerNeverCalled(); - expect(mockEsClient.deleteByQuery).not.toBeCalled(); - expect(mockRepository.save).toBeCalledWith( - expect.objectContaining({ - ...slo, - name: newName, - tags: newTags, - updatedAt: expect.anything(), - }) - ); - expect(slo.name).not.toEqual(newName); - expect(response.name).toEqual(newName); - expect(response.updatedAt).not.toEqual(slo.updatedAt); - expect(response.revision).toEqual(slo.revision); - expect(response.tags).toEqual(newTags); - expect(slo.tags).not.toEqual(newTags); - }); + it('updates the settings correctly', async () => { + const slo = createSLO(); + mockRepository.findById.mockResolvedValueOnce(slo); + + const newSettings = { ...slo.settings, timestamp_field: 'newField' }; + await updateSLO.execute(slo.id, { settings: newSettings }); + + expectDeletionOfObsoleteSLOData(slo); + expect(mockRepository.save).toBeCalledWith( + expect.objectContaining({ + ...slo, + settings: newSettings, + revision: 2, + updatedAt: expect.anything(), + }) + ); + expectInstallationOfNewSLOTransform(); }); - describe('with breaking changes', () => { - it('consideres settings as a breaking change', async () => { - const slo = createSLO(); - mockRepository.findById.mockResolvedValueOnce(slo); - - const newSettings = { ...slo.settings, timestamp_field: 'newField' }; - await updateSLO.execute(slo.id, { settings: newSettings }); - - expectDeletionOfObsoleteSLOData(slo); - expect(mockRepository.save).toBeCalledWith( - expect.objectContaining({ - ...slo, - settings: newSettings, - revision: 2, - updatedAt: expect.anything(), - }) - ); - expectInstallationOfNewSLOTransform(); + it('updates the budgeting method correctly', async () => { + const slo = createSLO({ budgetingMethod: 'occurrences' }); + mockRepository.findById.mockResolvedValueOnce(slo); + + await updateSLO.execute(slo.id, { + budgetingMethod: 'timeslices', + objective: { + target: slo.objective.target, + timesliceTarget: 0.9, + timesliceWindow: oneMinute(), + }, }); - it('consideres a budgeting method change as a breaking change', async () => { - const slo = createSLO({ budgetingMethod: 'occurrences' }); - mockRepository.findById.mockResolvedValueOnce(slo); + expectDeletionOfObsoleteSLOData(slo); + expectInstallationOfNewSLOTransform(); + }); - await updateSLO.execute(slo.id, { - budgetingMethod: 'timeslices', - objective: { - target: slo.objective.target, - timesliceTarget: 0.9, - timesliceWindow: oneMinute(), - }, - }); + it('updates the timeslice target correctly', async () => { + const slo = createSLOWithTimeslicesBudgetingMethod(); + mockRepository.findById.mockResolvedValueOnce(slo); - expectDeletionOfObsoleteSLOData(slo); - expectInstallationOfNewSLOTransform(); + await updateSLO.execute(slo.id, { + objective: { + target: slo.objective.target, + timesliceTarget: 0.1, + timesliceWindow: slo.objective.timesliceWindow, + }, }); - it('consideres a timeslice target change as a breaking change', async () => { - const slo = createSLOWithTimeslicesBudgetingMethod(); - mockRepository.findById.mockResolvedValueOnce(slo); + expectDeletionOfObsoleteSLOData(slo); + expectInstallationOfNewSLOTransform(); + }); - await updateSLO.execute(slo.id, { - objective: { - target: slo.objective.target, - timesliceTarget: 0.1, - timesliceWindow: slo.objective.timesliceWindow, - }, - }); + it('consideres a timeslice window change as a breaking change', async () => { + const slo = createSLOWithTimeslicesBudgetingMethod(); + mockRepository.findById.mockResolvedValueOnce(slo); - expectDeletionOfObsoleteSLOData(slo); - expectInstallationOfNewSLOTransform(); + await updateSLO.execute(slo.id, { + objective: { + target: slo.objective.target, + timesliceTarget: slo.objective.timesliceTarget, + timesliceWindow: fiveMinute(), + }, }); - it('consideres a timeslice window change as a breaking change', async () => { - const slo = createSLOWithTimeslicesBudgetingMethod(); - mockRepository.findById.mockResolvedValueOnce(slo); - - await updateSLO.execute(slo.id, { - objective: { - target: slo.objective.target, - timesliceTarget: slo.objective.timesliceTarget, - timesliceWindow: fiveMinute(), - }, - }); + expectDeletionOfObsoleteSLOData(slo); + expectInstallationOfNewSLOTransform(); + }); - expectDeletionOfObsoleteSLOData(slo); - expectInstallationOfNewSLOTransform(); + it('index a temporary summary document', async () => { + const slo = createSLO({ + id: 'unique-id', + indicator: createAPMTransactionErrorRateIndicator({ environment: 'development' }), }); + mockRepository.findById.mockResolvedValueOnce(slo); - it('removes the obsolete data from the SLO previous revision', async () => { - const slo = createSLO({ - indicator: createAPMTransactionErrorRateIndicator({ environment: 'development' }), - }); - mockRepository.findById.mockResolvedValueOnce(slo); - - const newIndicator = createAPMTransactionErrorRateIndicator({ environment: 'production' }); - await updateSLO.execute(slo.id, { indicator: newIndicator }); - - expectDeletionOfObsoleteSLOData(slo); - expect(mockRepository.save).toBeCalledWith( - expect.objectContaining({ - ...slo, - indicator: newIndicator, - revision: 2, - updatedAt: expect.anything(), - }) - ); - expectInstallationOfNewSLOTransform(); - }); + const newIndicator = createAPMTransactionErrorRateIndicator({ environment: 'production' }); + await updateSLO.execute(slo.id, { indicator: newIndicator }); + + expect(mockEsClient.index.mock.calls[0]).toMatchSnapshot(); }); - function expectTransformManagerNeverCalled() { - expect(mockTransformManager.stop).not.toBeCalled(); - expect(mockTransformManager.uninstall).not.toBeCalled(); - expect(mockTransformManager.start).not.toBeCalled(); - expect(mockTransformManager.install).not.toBeCalled(); - } + it('removes the obsolete data from the SLO previous revision', async () => { + const slo = createSLO({ + indicator: createAPMTransactionErrorRateIndicator({ environment: 'development' }), + }); + mockRepository.findById.mockResolvedValueOnce(slo); + + const newIndicator = createAPMTransactionErrorRateIndicator({ environment: 'production' }); + await updateSLO.execute(slo.id, { indicator: newIndicator }); + + expectDeletionOfObsoleteSLOData(slo); + expect(mockRepository.save).toBeCalledWith( + expect.objectContaining({ + ...slo, + indicator: newIndicator, + revision: 2, + updatedAt: expect.anything(), + }) + ); + expectInstallationOfNewSLOTransform(); + }); function expectInstallationOfNewSLOTransform() { expect(mockTransformManager.start).toBeCalled(); @@ -169,8 +149,26 @@ describe('UpdateSLO', () => { const transformId = getSLOTransformId(originalSlo.id, originalSlo.revision); expect(mockTransformManager.stop).toBeCalledWith(transformId); expect(mockTransformManager.uninstall).toBeCalledWith(transformId); - expect(mockEsClient.deleteByQuery).toBeCalledWith( + expect(mockEsClient.deleteByQuery).toHaveBeenCalledTimes(2); + + expect(mockEsClient.deleteByQuery).toHaveBeenNthCalledWith( + 1, + expect.objectContaining({ + index: SLO_DESTINATION_INDEX_PATTERN, + query: { + bool: { + filter: [ + { term: { 'slo.id': originalSlo.id } }, + { term: { 'slo.revision': originalSlo.revision } }, + ], + }, + }, + }) + ); + expect(mockEsClient.deleteByQuery).toHaveBeenNthCalledWith( + 2, expect.objectContaining({ + index: SLO_SUMMARY_DESTINATION_INDEX_PATTERN, query: { bool: { filter: [ diff --git a/x-pack/plugins/observability/server/services/slo/update_slo.ts b/x-pack/plugins/observability/server/services/slo/update_slo.ts index cf2c0e2e1c89fa..f89735df501f4c 100644 --- a/x-pack/plugins/observability/server/services/slo/update_slo.ts +++ b/x-pack/plugins/observability/server/services/slo/update_slo.ts @@ -5,15 +5,19 @@ * 2.0. */ -import deepEqual from 'fast-deep-equal'; import { ElasticsearchClient } from '@kbn/core/server'; import { UpdateSLOParams, UpdateSLOResponse, updateSLOResponseSchema } from '@kbn/slo-schema'; - -import { getSLOTransformId, SLO_INDEX_TEMPLATE_NAME } from '../../assets/constants'; -import { SLORepository } from './slo_repository'; -import { TransformManager } from './transform_manager'; +import { + getSLOTransformId, + SLO_DESTINATION_INDEX_PATTERN, + SLO_SUMMARY_DESTINATION_INDEX_PATTERN, + SLO_SUMMARY_TEMP_INDEX_NAME, +} from '../../assets/constants'; import { SLO } from '../../domain/models'; import { validateSLO } from '../../domain/services'; +import { SLORepository } from './slo_repository'; +import { createTempSummaryDocument } from './summary_transform/helpers/create_temp_summary'; +import { TransformManager } from './transform_manager'; export class UpdateSLO { constructor( @@ -24,52 +28,25 @@ export class UpdateSLO { public async execute(sloId: string, params: UpdateSLOParams): Promise { const originalSlo = await this.repository.findById(sloId); - const { hasBreakingChange, updatedSlo } = this.updateSLO(originalSlo, params); - - if (hasBreakingChange) { - await this.deleteObsoleteSLORevisionData(originalSlo); - - await this.repository.save(updatedSlo); - await this.transformManager.install(updatedSlo); - await this.transformManager.start(getSLOTransformId(updatedSlo.id, updatedSlo.revision)); - } else { - await this.repository.save(updatedSlo); - } - - return this.toResponse(updatedSlo); - } + const updatedSlo: SLO = Object.assign({}, originalSlo, params, { + updatedAt: new Date(), + revision: originalSlo.revision + 1, + }); - private updateSLO(originalSlo: SLO, params: UpdateSLOParams) { - let hasBreakingChange = false; - const updatedSlo: SLO = Object.assign({}, originalSlo, params, { updatedAt: new Date() }); validateSLO(updatedSlo); - if (!deepEqual(originalSlo.indicator, updatedSlo.indicator)) { - hasBreakingChange = true; - } - - if (originalSlo.budgetingMethod !== updatedSlo.budgetingMethod) { - hasBreakingChange = true; - } - - if ( - originalSlo.budgetingMethod === 'timeslices' && - updatedSlo.budgetingMethod === 'timeslices' && - (originalSlo.objective.timesliceTarget !== updatedSlo.objective.timesliceTarget || - !deepEqual(originalSlo.objective.timesliceWindow, updatedSlo.objective.timesliceWindow)) - ) { - hasBreakingChange = true; - } + await this.deleteObsoleteSLORevisionData(originalSlo); + await this.repository.save(updatedSlo); + await this.transformManager.install(updatedSlo); + await this.transformManager.start(getSLOTransformId(updatedSlo.id, updatedSlo.revision)); - if (!deepEqual(originalSlo.settings, updatedSlo.settings)) { - hasBreakingChange = true; - } - - if (hasBreakingChange) { - updatedSlo.revision++; - } + await this.esClient.index({ + index: SLO_SUMMARY_TEMP_INDEX_NAME, + id: `slo-${updatedSlo.id}`, + document: createTempSummaryDocument(updatedSlo), + }); - return { hasBreakingChange, updatedSlo }; + return this.toResponse(updatedSlo); } private async deleteObsoleteSLORevisionData(originalSlo: SLO) { @@ -77,11 +54,24 @@ export class UpdateSLO { await this.transformManager.stop(originalSloTransformId); await this.transformManager.uninstall(originalSloTransformId); await this.deleteRollupData(originalSlo.id, originalSlo.revision); + await this.deleteSummaryData(originalSlo.id, originalSlo.revision); } private async deleteRollupData(sloId: string, sloRevision: number): Promise { await this.esClient.deleteByQuery({ - index: `${SLO_INDEX_TEMPLATE_NAME}*`, + index: SLO_DESTINATION_INDEX_PATTERN, + wait_for_completion: false, + query: { + bool: { + filter: [{ term: { 'slo.id': sloId } }, { term: { 'slo.revision': sloRevision } }], + }, + }, + }); + } + + private async deleteSummaryData(sloId: string, sloRevision: number): Promise { + await this.esClient.deleteByQuery({ + index: SLO_SUMMARY_DESTINATION_INDEX_PATTERN, wait_for_completion: false, query: { bool: { diff --git a/x-pack/plugins/profiling/server/lib/setup/get_setup_instructions.ts b/x-pack/plugins/profiling/server/lib/setup/get_setup_instructions.ts index 569c60a9e58a9e..31d1ef3f553f1a 100644 --- a/x-pack/plugins/profiling/server/lib/setup/get_setup_instructions.ts +++ b/x-pack/plugins/profiling/server/lib/setup/get_setup_instructions.ts @@ -8,7 +8,7 @@ import { SavedObjectsClientContract } from '@kbn/core/server'; import { PackagePolicyClient } from '@kbn/fleet-plugin/server'; import { fetchFindLatestPackageOrThrow } from '@kbn/fleet-plugin/server/services/epm/registry'; -import { getCollectorPolicy } from './fleet_policies'; +import { getCollectorPolicy, getSymbolizerPolicy } from './fleet_policies'; export interface SetupDataCollectionInstructions { collector: { @@ -34,11 +34,16 @@ export async function getSetupInstructions({ }): Promise { const profilerAgent = await fetchFindLatestPackageOrThrow('profiler_agent', { prerelease: true }); const collectorPolicy = await getCollectorPolicy({ packagePolicyClient, soClient }); + const symbolizerPolicy = await getSymbolizerPolicy({ packagePolicyClient, soClient }); if (!collectorPolicy) { throw new Error('Could not find Collector policy'); } + if (!symbolizerPolicy) { + throw new Error('Could not find Symbolizer policy'); + } + const collectorVars = collectorPolicy.inputs[0].vars; const symbolizerHost = apmServerHost?.replace(/\.apm\./, '.symbols.'); const collectorHost = apmServerHost?.replace(/\.apm\./, '.profiling.')?.replace('https://', ''); diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/add/__snapshots__/remote_clusters_add.test.ts.snap b/x-pack/plugins/remote_clusters/__jest__/client_integration/add/__snapshots__/remote_clusters_add.test.ts.snap deleted file mode 100644 index f657eba17f2dc8..00000000000000 --- a/x-pack/plugins/remote_clusters/__jest__/client_integration/add/__snapshots__/remote_clusters_add.test.ts.snap +++ /dev/null @@ -1,18 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Create Remote cluster on component mount show request flyout doesnt contain null values 1`] = ` -"PUT _cluster/settings -{ - \\"persistent\\": { - \\"cluster\\": { - \\"remote\\": { - \\"\\": { - \\"skip_unavailable\\": false, - \\"mode\\": \\"sniff\\", - \\"node_connections\\": 3 - } - } - } - } -}" -`; diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/add/remote_clusters_add.test.ts b/x-pack/plugins/remote_clusters/__jest__/client_integration/add/remote_clusters_add.test.ts index fc488984da9118..75a1656b0daed6 100644 --- a/x-pack/plugins/remote_clusters/__jest__/client_integration/add/remote_clusters_add.test.ts +++ b/x-pack/plugins/remote_clusters/__jest__/client_integration/add/remote_clusters_add.test.ts @@ -48,14 +48,6 @@ describe('Create Remote cluster', () => { expect(actions.skipUnavailableSwitch.isChecked()).toBe(true); }); - test('show request flyout doesnt contain null values', async () => { - await actions.showRequest.click(); - const requestBody = actions.showRequest.getESRequestBody(); - - expect(requestBody).not.toContain('null'); - expect(requestBody).toMatchSnapshot(); - }); - describe('on prem', () => { test('should have a toggle to enable "proxy" mode for a remote cluster', () => { expect(actions.connectionModeSwitch.exists()).toBe(true); diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/remote_clusters_actions.ts b/x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/remote_clusters_actions.ts index e34de66fe69c00..3a2d4be3e060dd 100644 --- a/x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/remote_clusters_actions.ts +++ b/x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/remote_clusters_actions.ts @@ -53,10 +53,6 @@ export interface RemoteClustersActions { click: () => void; isDisabled: () => boolean; }; - showRequest: { - click: () => void; - getESRequestBody: () => string; - }; getErrorMessages: () => string[]; globalErrorExists: () => boolean; } @@ -174,23 +170,6 @@ export const createRemoteClustersActions = (testBed: TestBed): RemoteClustersAct }; }; - const createShowRequestActions = () => { - const click = () => { - act(() => { - find('remoteClustersRequestButton').simulate('click'); - }); - - component.update(); - }; - - return { - showRequest: { - click, - getESRequestBody: () => find('esRequestBody').text(), - }, - }; - }; - const globalErrorExists = () => exists('remoteClusterFormGlobalError'); const createCloudUrlInputActions = () => { @@ -214,7 +193,6 @@ export const createRemoteClustersActions = (testBed: TestBed): RemoteClustersAct ...createProxyAddressActions(), ...createServerNameActions(), ...createSaveButtonActions(), - ...createShowRequestActions(), getErrorMessages: form.getErrorsMessages, globalErrorExists, }; diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/request_flyout.tsx b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/request_flyout.tsx index 4cd95a2d389e49..75f45b9a56566f 100644 --- a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/request_flyout.tsx +++ b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/request_flyout.tsx @@ -7,7 +7,6 @@ import React, { PureComponent } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; -import { transform, isObject, isEmpty, isNull } from 'lodash'; import { EuiButtonEmpty, @@ -23,20 +22,6 @@ import { import { Cluster, serializeCluster } from '../../../../../common/lib'; -// Remove all null properties from an object -export function removeNullProperties(obj: any) { - return transform(obj, (result: any, value, key) => { - if (isObject(value)) { - result[key] = removeNullProperties(value); - if (isEmpty(result[key])) { - delete result[key]; - } - } else if (!isNull(value)) { - result[key] = value; - } - }); -} - interface Props { close: () => void; cluster: Cluster; @@ -47,11 +32,7 @@ export class RequestFlyout extends PureComponent { const { close, cluster } = this.props; const { name } = cluster; const endpoint = 'PUT _cluster/settings'; - // Given that the request still requires that we send all properties, regardless of whether they - // are null, we need to remove all null properties from the serialized cluster object that we - // render in the flyout. - const serializedCluster = removeNullProperties(serializeCluster(cluster)); - const payload = JSON.stringify(serializedCluster, null, 2); + const payload = JSON.stringify(serializeCluster(cluster), null, 2); const request = `${endpoint}\n${payload}`; return ( @@ -87,7 +68,7 @@ export class RequestFlyout extends PureComponent { - + {request} diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/utils.test.ts b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/utils.test.ts deleted file mode 100644 index 263c7ccf47e68f..00000000000000 --- a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/utils.test.ts +++ /dev/null @@ -1,29 +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 { removeNullProperties } from './request_flyout'; - -describe('Remote cluster form Utils', () => { - test('can remote deeply nested null properties from object', () => { - const obj = { - a: 'a', - b: { - c: 'c', - d: null, - }, - }; - - expect(removeNullProperties(obj)).toStrictEqual({ - ...obj, - b: { - c: 'c', - }, - }); - - expect(removeNullProperties({ a: 'a', b: null })).toStrictEqual({ a: 'a' }); - }); -}); diff --git a/x-pack/plugins/reporting/public/plugin.ts b/x-pack/plugins/reporting/public/plugin.ts index d8f4132a595411..0c87c96eb9aef5 100644 --- a/x-pack/plugins/reporting/public/plugin.ts +++ b/x-pack/plugins/reporting/public/plugin.ts @@ -46,6 +46,7 @@ import { JOB_COMPLETION_NOTIFICATIONS_SESSION_KEY } from '../common/constants'; export interface ClientConfigType { poll: { jobsRefresh: { interval: number; intervalErrorMultiplier: number } }; roles: { enabled: boolean }; + export_types: { pdf: { enabled: boolean }; png: { enabled: boolean }; csv: { enabled: boolean } }; } function getStored(): JobId[] { @@ -236,17 +237,19 @@ export class ReportingPublicPlugin }) ); - share.register( - reportingScreenshotShareProvider({ - apiClient, - toasts, - uiSettings, - license, - application, - usesUiCapabilities, - theme: core.theme, - }) - ); + if (this.config.export_types.pdf.enabled || this.config.export_types.png.enabled) { + share.register( + reportingScreenshotShareProvider({ + apiClient, + toasts, + uiSettings, + license, + application, + usesUiCapabilities, + theme: core.theme, + }) + ); + } }); }); diff --git a/x-pack/plugins/reporting/server/config/__snapshots__/schema.test.ts.snap b/x-pack/plugins/reporting/server/config/__snapshots__/schema.test.ts.snap index d0eff90231b23c..48f834d2387953 100644 --- a/x-pack/plugins/reporting/server/config/__snapshots__/schema.test.ts.snap +++ b/x-pack/plugins/reporting/server/config/__snapshots__/schema.test.ts.snap @@ -20,6 +20,17 @@ Object { }, "enabled": true, "encryptionKey": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "export_types": Object { + "csv": Object { + "enabled": true, + }, + "pdf": Object { + "enabled": true, + }, + "png": Object { + "enabled": true, + }, + }, "kibanaServer": Object {}, "poll": Object { "jobCompletionNotifier": Object { @@ -66,6 +77,17 @@ Object { "useByteOrderMarkEncoding": false, }, "enabled": true, + "export_types": Object { + "csv": Object { + "enabled": true, + }, + "pdf": Object { + "enabled": true, + }, + "png": Object { + "enabled": true, + }, + }, "kibanaServer": Object {}, "poll": Object { "jobCompletionNotifier": Object { diff --git a/x-pack/plugins/reporting/server/config/index.ts b/x-pack/plugins/reporting/server/config/index.ts index b7e08ad5a34fcf..5786498035721d 100644 --- a/x-pack/plugins/reporting/server/config/index.ts +++ b/x-pack/plugins/reporting/server/config/index.ts @@ -11,7 +11,7 @@ import { get } from 'lodash'; import { ConfigSchema, ReportingConfigType } from './schema'; export const config: PluginConfigDescriptor = { - exposeToBrowser: { poll: true, roles: true }, + exposeToBrowser: { poll: true, roles: true, export_types: true }, schema: ConfigSchema, deprecations: ({ unused }) => [ unused('capture.browser.chromium.maxScreenshotDimension', { level: 'warning' }), // unused since 7.8 diff --git a/x-pack/plugins/reporting/server/config/schema.test.ts b/x-pack/plugins/reporting/server/config/schema.test.ts index 6e6cd3ab07578b..e532a2eb8426a6 100644 --- a/x-pack/plugins/reporting/server/config/schema.test.ts +++ b/x-pack/plugins/reporting/server/config/schema.test.ts @@ -62,4 +62,54 @@ describe('Reporting Config Schema', () => { ); } ); + + it('permits csv with serverless', () => { + expect(() => + ConfigSchema.validate({ export_types: { pdf: { enabled: true } } }, { dev: true }) + ).not.toThrow(); + }); + + it('enables all export types by default', () => { + expect(ConfigSchema.validate({}, { serverless: false }).export_types).toMatchInlineSnapshot(` + Object { + "csv": Object { + "enabled": true, + }, + "pdf": Object { + "enabled": true, + }, + "png": Object { + "enabled": true, + }, + } + `); + }); + + it('disables screenshot type exports in serverless', () => { + expect(ConfigSchema.validate({}, { serverless: true }).export_types).toMatchInlineSnapshot(` + Object { + "csv": Object { + "enabled": true, + }, + "pdf": Object { + "enabled": false, + }, + "png": Object { + "enabled": false, + }, + } + `); + }); + + it('it should allow image reporting for any non-serverless config', () => { + expect(() => + ConfigSchema.validate({ export_types: { pdf: { enabled: true } } }, { dev: true }) + ).not.toThrow(); + expect(() => + ConfigSchema.validate({ export_types: { png: { enabled: true } } }, { dev: true }) + ).not.toThrow(); + expect(() => + ConfigSchema.validate({ export_types: { csv: { enabled: true } } }, { dev: true }) + ).not.toThrow(); + }); }); diff --git a/x-pack/plugins/reporting/server/config/schema.ts b/x-pack/plugins/reporting/server/config/schema.ts index 76c1909300fa88..35d77703a24486 100644 --- a/x-pack/plugins/reporting/server/config/schema.ts +++ b/x-pack/plugins/reporting/server/config/schema.ts @@ -101,6 +101,31 @@ const PollSchema = schema.object({ }), }); +const ExportTypeSchema = schema.object({ + // Csv reports are enabled in all offerings + csv: schema.object({ + enabled: schema.boolean({ defaultValue: true }), + }), + // Png reports are disabled in serverless + png: schema.object({ + enabled: schema.conditional( + schema.contextRef('serverless'), + true, + schema.boolean({ defaultValue: false }), + schema.boolean({ defaultValue: true }) + ), + }), + // Pdf reports are disabled in serverless + pdf: schema.object({ + enabled: schema.conditional( + schema.contextRef('serverless'), + true, + schema.boolean({ defaultValue: false }), + schema.boolean({ defaultValue: true }) + ), + }), +}); + export const ConfigSchema = schema.object({ enabled: schema.boolean({ defaultValue: true }), kibanaServer: KibanaServerSchema, @@ -110,6 +135,7 @@ export const ConfigSchema = schema.object({ encryptionKey: EncryptionKeySchema, roles: RolesSchema, poll: PollSchema, + export_types: ExportTypeSchema, }); export type ReportingConfigType = TypeOf; diff --git a/x-pack/plugins/security/public/config.ts b/x-pack/plugins/security/public/config.ts index 2ea23e4483afd6..ce7adec67182d0 100644 --- a/x-pack/plugins/security/public/config.ts +++ b/x-pack/plugins/security/public/config.ts @@ -9,7 +9,6 @@ export interface ConfigType { loginAssistanceMessage: string; showInsecureClusterWarning: boolean; sameSiteCookies: 'Strict' | 'Lax' | 'None' | undefined; - showNavLinks: boolean; ui: { userManagementEnabled: boolean; roleManagementEnabled: boolean; diff --git a/x-pack/plugins/security/public/management/api_keys/api_keys_grid/api_keys_empty_prompt.tsx b/x-pack/plugins/security/public/management/api_keys/api_keys_grid/api_keys_empty_prompt.tsx index c76b385cfccc51..b6300832551e80 100644 --- a/x-pack/plugins/security/public/management/api_keys/api_keys_grid/api_keys_empty_prompt.tsx +++ b/x-pack/plugins/security/public/management/api_keys/api_keys_grid/api_keys_empty_prompt.tsx @@ -147,7 +147,7 @@ export const ApiKeysEmptyPrompt: FunctionComponent = ({ return ( { diff --git a/x-pack/plugins/security/public/management/role_mappings/role_mappings_grid/create_role_mapping_button/create_role_mapping_button.tsx b/x-pack/plugins/security/public/management/role_mappings/role_mappings_grid/create_role_mapping_button/create_role_mapping_button.tsx index 4aa55840cc7f8e..ab9ce044f7b4cc 100644 --- a/x-pack/plugins/security/public/management/role_mappings/role_mappings_grid/create_role_mapping_button/create_role_mapping_button.tsx +++ b/x-pack/plugins/security/public/management/role_mappings/role_mappings_grid/create_role_mapping_button/create_role_mapping_button.tsx @@ -21,6 +21,7 @@ interface CreateRoleMappingButtonProps { export const CreateRoleMappingButton = ({ history }: CreateRoleMappingButtonProps) => { return ( = ({ history, readOnly = false, }) => ( - @@ -40,14 +40,12 @@ export const EmptyPrompt: React.FunctionComponent = ({ } body={ - -

- -

-
+

+ +

} actions={readOnly ? null : } data-test-subj="roleMappingsEmptyPrompt" diff --git a/x-pack/plugins/security/public/management/role_mappings/role_mappings_grid/role_mappings_grid_page.tsx b/x-pack/plugins/security/public/management/role_mappings/role_mappings_grid/role_mappings_grid_page.tsx index e6feadd199b02e..ad8f204fa75cd3 100644 --- a/x-pack/plugins/security/public/management/role_mappings/role_mappings_grid/role_mappings_grid_page.tsx +++ b/x-pack/plugins/security/public/management/role_mappings/role_mappings_grid/role_mappings_grid_page.tsx @@ -136,11 +136,7 @@ export class RoleMappingsGridPage extends Component { } if (loadState === 'finished' && roleMappings && roleMappings.length === 0) { - return ( - - - - ); + return ; } return ( diff --git a/x-pack/plugins/security/public/nav_control/nav_control_service.tsx b/x-pack/plugins/security/public/nav_control/nav_control_service.tsx index e1af50e986450b..0a5560b743f997 100644 --- a/x-pack/plugins/security/public/nav_control/nav_control_service.tsx +++ b/x-pack/plugins/security/public/nav_control/nav_control_service.tsx @@ -29,7 +29,6 @@ interface SetupDeps { securityLicense: SecurityLicense; logoutUrl: string; securityApiClients: SecurityApiClients; - showNavLinks?: boolean; } interface StartDeps { @@ -55,18 +54,16 @@ export class SecurityNavControlService { private securityApiClients!: SecurityApiClients; private navControlRegistered!: boolean; - private showNavLinks!: boolean; private securityFeaturesSubscription?: Subscription; private readonly stop$ = new ReplaySubject(1); private userMenuLinks$ = new BehaviorSubject([]); - public setup({ securityLicense, logoutUrl, securityApiClients, showNavLinks = true }: SetupDeps) { + public setup({ securityLicense, logoutUrl, securityApiClients }: SetupDeps) { this.securityLicense = securityLicense; this.logoutUrl = logoutUrl; this.securityApiClients = securityApiClients; - this.showNavLinks = showNavLinks; } public start({ core, authc }: StartDeps): SecurityNavControlServiceStart { @@ -75,7 +72,7 @@ export class SecurityNavControlService { const isAnonymousPath = core.http.anonymousPaths.isAnonymous(window.location.pathname); const shouldRegisterNavControl = - this.showNavLinks && !isAnonymousPath && showLinks && !this.navControlRegistered; + !isAnonymousPath && showLinks && !this.navControlRegistered; if (shouldRegisterNavControl) { this.registerSecurityNavControl(core, authc); } @@ -121,8 +118,9 @@ export class SecurityNavControlService { private registerSecurityNavControl(core: CoreStart, authc: AuthenticationServiceSetup) { const { theme$ } = core.theme; + core.chrome.navControls.registerRight({ - order: 2000, + order: 4000, mount: (element: HTMLElement) => { ReactDOM.render( { `); }); + it(`warns that 'xpack.security.showNavLinks' is unused`, () => { + const config = { + xpack: { + security: { + showNavLinks: true, + }, + }, + }; + const { messages } = applyConfigDeprecations(cloneDeep(config)); + expect(messages).toMatchInlineSnapshot(` + Array [ + "You no longer need to configure \\"xpack.security.showNavLinks\\".", + ] + `); + }); + it(`warns that 'xpack.security.authc.providers.saml..maxRedirectURLSize' is unused`, () => { const config = { xpack: { diff --git a/x-pack/plugins/security/server/config_deprecations.ts b/x-pack/plugins/security/server/config_deprecations.ts index 262a2f885779b5..511fe1d04119dc 100644 --- a/x-pack/plugins/security/server/config_deprecations.ts +++ b/x-pack/plugins/security/server/config_deprecations.ts @@ -30,6 +30,7 @@ export const securityConfigDeprecationProvider: ConfigDeprecationProvider = ({ unused('authorization.legacyFallback.enabled', { level: 'warning' }), unused('authc.saml.maxRedirectURLSize', { level: 'warning' }), + unused('showNavLinks', { level: 'warning' }), // Deprecation warning for the old array-based format of `xpack.security.authc.providers`. (settings, _fromPath, addDeprecation, { branch }) => { diff --git a/x-pack/plugins/security_solution/cypress/e2e/detection_alerts/cti_enrichments.cy.ts b/x-pack/plugins/security_solution/cypress/e2e/detection_alerts/cti_enrichments.cy.ts index c14ae488d865da..fc424eb192e052 100644 --- a/x-pack/plugins/security_solution/cypress/e2e/detection_alerts/cti_enrichments.cy.ts +++ b/x-pack/plugins/security_solution/cypress/e2e/detection_alerts/cti_enrichments.cy.ts @@ -47,7 +47,8 @@ describe('CTI Enrichment', () => { goToRuleDetails(); }); - it('Displays enrichment matched.* fields on the timeline', () => { + // Skipped: https://github.com/elastic/kibana/issues/162818 + it.skip('Displays enrichment matched.* fields on the timeline', () => { const expectedFields = { 'threat.enrichments.matched.atomic': indicatorRuleMatchingDoc.atomic, 'threat.enrichments.matched.type': indicatorRuleMatchingDoc.matchedType, diff --git a/x-pack/plugins/security_solution/cypress/screens/case_details.ts b/x-pack/plugins/security_solution/cypress/screens/case_details.ts index 271ef54922d5d5..1b4a6cab6524af 100644 --- a/x-pack/plugins/security_solution/cypress/screens/case_details.ts +++ b/x-pack/plugins/security_solution/cypress/screens/case_details.ts @@ -14,7 +14,7 @@ export const CASE_DELETE = '[data-test-subj="property-actions-trash"]'; export const CASE_DETAILS_DESCRIPTION = '[data-test-subj="description"] [data-test-subj="scrollable-markdown"]'; -export const CASE_DETAILS_PAGE_TITLE = '[data-test-subj="header-page-title"]'; +export const CASE_DETAILS_PAGE_TITLE = '[data-test-subj="editable-title-header-value"]'; export const CASE_DETAILS_STATUS = '[data-test-subj="case-view-status-dropdown"]'; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/alerts_progress_bar.test.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/alerts_progress_bar.test.tsx index d64444f8ed4af5..6e4caad920f87e 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/alerts_progress_bar.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/alerts_progress_bar.test.tsx @@ -72,7 +72,7 @@ describe('Alert by grouping', () => { ).toContain(parsedAlerts[i].label); expect( container.querySelector(`[data-test-subj="progress-bar-${alert.key}"]`)?.textContent - ).toContain(parsedAlerts[i].percentage.toString()); + ).toContain(parsedAlerts[i].percentageLabel); } }); }); diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/alerts_progress_bar.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/alerts_progress_bar.tsx index d95c431425f5d2..ba4c7952147643 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/alerts_progress_bar.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/alerts_progress_bar.tsx @@ -20,7 +20,7 @@ import React, { useState } from 'react'; import styled from 'styled-components'; import type { AlertsProgressBarData, GroupBySelection } from './types'; import type { AddFilterProps } from '../common/types'; -import { getNonEmptyPercent } from './helpers'; +import { getAggregateData } from './helpers'; import { DefaultDraggable } from '../../../../common/components/draggables'; import * as i18n from './translations'; @@ -61,7 +61,7 @@ export const AlertsProgressBar: React.FC = ({ const onButtonClick = () => setIsPopoverOpen(!isPopoverOpen); const closePopover = () => setIsPopoverOpen(false); - const validPercent = getNonEmptyPercent(data); + const [nonEmpty, formattedNonEmptyPercent] = getAggregateData(data); const dataStatsButton = ( = ({ const dataStatsMessage = ( - {i18n.DATA_STATISTICS_TITLE(validPercent.toString())} + {i18n.DATA_STATISTICS_TITLE(formattedNonEmptyPercent)} {i18n.DATA_STATISTICS_MESSAGE(groupBySelection)} = ({ <> - {validPercent === 0 ? ( + {nonEmpty === 0 ? ( <> {i18n.EMPTY_DATA_MESSAGE} @@ -153,10 +153,10 @@ export const AlertsProgressBar: React.FC = ({ - {`${item.percentage}%`} + {item.percentageLabel} } - max={100} + max={1} color={`vis9`} size="s" value={item.percentage} diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/helpers.test.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/helpers.test.tsx index f2c14cc76cef8a..1f82c4cf805e4a 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/helpers.test.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/helpers.test.tsx @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { parseAlertsGroupingData, getNonEmptyPercent } from './helpers'; +import { parseAlertsGroupingData, getAggregateData, formatPercentage } from './helpers'; import * as mock from './mock_data'; import type { AlertsByGroupingAgg } from './types'; import type { AlertSearchResponse } from '../../../containers/detection_engine/alerts/types'; @@ -25,10 +25,18 @@ describe('parse progress bar data', () => { }); }); -describe('test non-empty percentage', () => { - test('should return correct non-empty percentage', () => { - const expected = Math.round((620 / 630) * 100); - const res = getNonEmptyPercent(mock.parsedAlerts); - expect(res).toEqual(expected); +describe('test getAggregateData', () => { + test('should return correct non-empty value and percentage', () => { + const res = getAggregateData(mock.parsedAlerts); + expect(res).toEqual([620, '98.4%']); + expect(getAggregateData(mock.parsedLargeEmptyAlerts)).toEqual([1, '<1%']); + }); +}); + +describe('test formatPercentage ', () => { + test('should return percetange string', () => { + expect(formatPercentage(0.255)).toEqual('25.5%'); + expect(formatPercentage(0.01)).toEqual('1%'); + expect(formatPercentage(0.005)).toEqual('<1%'); }); }); diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/helpers.tsx b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/helpers.tsx index f35cfed048fb9a..ac330820c546c2 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/helpers.tsx +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/helpers.tsx @@ -12,6 +12,10 @@ import type { BucketItem } from '../../../../../common/search_strategy/security_ import type { SummaryChartsData, SummaryChartsAgg } from '../alerts_summary_charts_panel/types'; import * as i18n from './translations'; +export const formatPercentage = (percent: number): string => { + return percent > 0 && percent < 0.01 ? '<1%' : `${(Math.round(percent * 1000) / 10).toString()}%`; +}; + export const parseAlertsGroupingData = ( response: AlertSearchResponse<{}, AlertsByGroupingAgg> ): AlertsProgressBarData[] => { @@ -31,7 +35,8 @@ export const parseAlertsGroupingData = ( return { key: group.key, value: group.doc_count, - percentage: Math.round((group.doc_count / total) * 1000) / 10, + percentage: group.doc_count / total, + percentageLabel: formatPercentage(group.doc_count / total), label: group.key, }; }); @@ -40,7 +45,8 @@ export const parseAlertsGroupingData = ( topAlerts.push({ key: 'Other', value: other, - percentage: Math.round((other / total) * 1000) / 10, + percentage: other / total, + percentageLabel: formatPercentage(other / total), label: i18n.OTHER, }); } @@ -49,7 +55,8 @@ export const parseAlertsGroupingData = ( topAlerts.push({ key: '-', value: emptyFieldCount, - percentage: Math.round((emptyFieldCount / total) * 1000) / 10, + percentage: emptyFieldCount / total, + percentageLabel: formatPercentage(emptyFieldCount / total), label: '-', }); } @@ -57,8 +64,8 @@ export const parseAlertsGroupingData = ( return topAlerts; }; -export const getNonEmptyPercent = (topAlerts: AlertsProgressBarData[]): number => { - const consolidated = topAlerts.reduce( +export const getAggregateData = (topAlerts: AlertsProgressBarData[]): [number, string] => { + const { total, nonEmpty } = topAlerts.reduce( (ret, cur) => { ret.total += cur.value; if (cur.key !== '-') { @@ -68,9 +75,7 @@ export const getNonEmptyPercent = (topAlerts: AlertsProgressBarData[]): number = }, { total: 0, nonEmpty: 0 } ); - return consolidated.total > 0 - ? Math.round((consolidated.nonEmpty / consolidated.total) * 100) - : 0; + return [nonEmpty, formatPercentage(total === 0 ? 0 : nonEmpty / total)]; }; export const getIsAlertsProgressBarData = ( diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/mock_data.ts b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/mock_data.ts index e18e9b7481924c..2909b6c808513d 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/mock_data.ts +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/mock_data.ts @@ -105,9 +105,44 @@ export const query = { }; export const parsedAlerts = [ - { key: 'Host-v5biklvcy8', value: 234, label: 'Host-v5biklvcy8', percentage: 37.1 }, - { key: 'Host-5y1uprxfv2', value: 186, label: 'Host-5y1uprxfv2', percentage: 29.5 }, - { key: 'Host-ssf1mhgy5c', value: 150, label: 'Host-ssf1mhgy5c', percentage: 23.8 }, - { key: 'Other', value: 50, label: 'Other', percentage: 7.9 }, - { key: '-', value: 10, label: '-', percentage: 1.6 }, + { + key: 'Host-v5biklvcy8', + value: 234, + label: 'Host-v5biklvcy8', + percentage: 0.37142857142857144, + percentageLabel: '37.1%', + }, + { + key: 'Host-5y1uprxfv2', + value: 186, + label: 'Host-5y1uprxfv2', + percentage: 0.29523809523809524, + percentageLabel: '29.5%', + }, + { + key: 'Host-ssf1mhgy5c', + value: 150, + label: 'Host-ssf1mhgy5c', + percentage: 0.23809523809523808, + percentageLabel: '23.8%', + }, + { + key: 'Other', + value: 50, + label: 'Other', + percentage: 0.07936507936507936, + percentageLabel: '7.9%', + }, + { key: '-', value: 10, label: '-', percentage: 0.015873015873015872, percentageLabel: '1.6%' }, +]; + +export const parsedLargeEmptyAlerts = [ + { + key: 'Host-v5biklvcy8', + value: 1, + label: 'Host-v5biklvcy8', + percentage: 0.0001, + percentageLabel: '<1%', + }, + { key: '-', value: 9999, label: '-', percentage: 0.9999, percentageLabel: '100%' }, ]; diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/translations.ts b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/translations.ts index e23d34f3d04217..c3bd15a4675619 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/translations.ts +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/translations.ts @@ -55,7 +55,7 @@ export const SOURCE_LABEL = i18n.translate( export const DATA_STATISTICS_TITLE = (percent: string) => i18n.translate('xpack.securitySolution.detectionEngine.alerts.alertsByGrouping.dataStatsTitle', { values: { percent }, - defaultMessage: `This field exists in {percent}% of alerts.`, + defaultMessage: `This field exists in {percent} of alerts.`, }); export const DATA_STATISTICS_MESSAGE = (groupbySelection: string) => diff --git a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/types.ts b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/types.ts index 747643aeba3321..07a4834135bbb7 100644 --- a/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/types.ts +++ b/x-pack/plugins/security_solution/public/detections/components/alerts_kpis/alerts_progress_bar_panel/types.ts @@ -21,5 +21,6 @@ export interface AlertsProgressBarData { key: string; value: number; percentage: number; + percentageLabel: string; label: string; } diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint/response_console.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint/response_console.cy.ts index 245de3ce5512c8..d2ea69dca1618d 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint/response_console.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint/response_console.cy.ts @@ -188,7 +188,8 @@ describe('Response console', () => { }); }); - describe('File operations: get-file and execute', () => { + // Broken until this is fixed: https://github.com/elastic/kibana/issues/162760 + describe.skip('File operations: get-file and execute', () => { const homeFilePath = process.env.CI || true ? '/home/vagrant' : `/home/ubuntu`; const fileContent = 'This is a test file for the get-file command.'; diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/response_console.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/response_console.cy.ts index dad53207b56e39..fa347d77581ae7 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/response_console.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/mocked_data/response_console.cy.ts @@ -228,7 +228,8 @@ describe('Response console', () => { }); }); - describe('`get-file` command', () => { + // Broken until this is fixed: https://github.com/elastic/kibana/issues/162760 + describe.skip('`get-file` command', () => { let endpointData: ReturnTypeFromChainable; let endpointHostname: string; let getFileRequestResponse: ActionDetails; diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts b/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts index 5b4da6dcf3daf2..bbabfc8bbd0e16 100644 --- a/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts +++ b/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts @@ -327,7 +327,7 @@ export const cli = () => { concurrency: (argv.concurrency as number | undefined) ? (argv.concurrency as number) : !isOpen - ? 3 + ? 2 : 1, } ).then((results) => { diff --git a/x-pack/plugins/serverless/public/plugin.tsx b/x-pack/plugins/serverless/public/plugin.tsx index fbc4e739804a7e..e7b88fea56ffbf 100644 --- a/x-pack/plugins/serverless/public/plugin.tsx +++ b/x-pack/plugins/serverless/public/plugin.tsx @@ -55,6 +55,7 @@ export class ServerlessPlugin const { currentType } = developer.projectSwitcher; core.chrome.navControls.registerRight({ + order: 500, mount: (target) => this.mountProjectSwitcher(target, core, currentType), }); } diff --git a/x-pack/plugins/serverless_search/public/layout/nav.tsx b/x-pack/plugins/serverless_search/public/layout/nav.tsx index e1f4fe0ef04d71..fd460f8c950661 100644 --- a/x-pack/plugins/serverless_search/public/layout/nav.tsx +++ b/x-pack/plugins/serverless_search/public/layout/nav.tsx @@ -10,7 +10,6 @@ import { DefaultNavigation, NavigationKibanaProvider, type NavigationTreeDefinition, - getPresets, } from '@kbn/shared-ux-chrome-navigation'; import React from 'react'; import { i18n } from '@kbn/i18n'; @@ -40,7 +39,7 @@ const navigationTree: NavigationTreeDefinition = { title: i18n.translate('xpack.serverlessSearch.nav.devTools', { defaultMessage: 'Dev Tools', }), - children: getPresets('devtools').children[0].children, + children: [{ link: 'dev_tools:console' }, { link: 'dev_tools:searchprofiler' }], }, { id: 'explore', @@ -83,16 +82,14 @@ const navigationTree: NavigationTreeDefinition = { children: [ { title: i18n.translate('xpack.serverlessSearch.nav.content.indices', { - defaultMessage: 'Indices', + defaultMessage: 'Index Management', }), - // TODO: this will be updated to a new Indices page link: 'management:index_management', }, { title: i18n.translate('xpack.serverlessSearch.nav.content.pipelines', { defaultMessage: 'Pipelines', }), - // TODO: this will be updated to a new Pipelines page link: 'management:ingest_pipelines', }, { @@ -117,10 +114,6 @@ const navigationTree: NavigationTreeDefinition = { }, ], }, - { - type: 'navGroup', - ...getPresets('ml'), - }, ], footer: [ { diff --git a/x-pack/plugins/serverless_search/server/plugin.ts b/x-pack/plugins/serverless_search/server/plugin.ts index 767d51ff0c4392..d57752e40068ce 100644 --- a/x-pack/plugins/serverless_search/server/plugin.ts +++ b/x-pack/plugins/serverless_search/server/plugin.ts @@ -62,7 +62,7 @@ export class ServerlessSearchPlugin registerIndicesRoutes(dependencies); }); - pluginsSetup.ml.setFeaturesEnabled({ ad: false, dfa: false, nlp: true }); + pluginsSetup.ml.setFeaturesEnabled({ ad: false, dfa: false, nlp: false }); return {}; } diff --git a/x-pack/plugins/synthetics/common/constants/chart_format_limits.ts b/x-pack/plugins/synthetics/common/constants/chart_format_limits.ts deleted file mode 100644 index 44f1c5cd0c7d3c..00000000000000 --- a/x-pack/plugins/synthetics/common/constants/chart_format_limits.ts +++ /dev/null @@ -1,27 +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. - */ - -const MINUTE = 1000 * 60; -const HOUR = MINUTE * 60; -const DAY = 24 * 60 * 60 * 1000; -const WEEK = DAY * 7; -const MONTH = WEEK * 4; - -/** - * These constants are used by the charting code to determine - * what label should be applied to chart axes so as to help users - * understand the timeseries data they're being shown. - */ -export const CHART_FORMAT_LIMITS = { - DAY, - EIGHT_MINUTES: MINUTE * 8, - FOUR_YEARS: 4 * 12 * 4 * WEEK, - THIRTY_SIX_HOURS: HOUR * 36, - THREE_WEEKS: WEEK * 3, - SIX_MONTHS: MONTH * 7, - NINE_DAYS: DAY * 9, -}; diff --git a/x-pack/plugins/synthetics/common/constants/index.ts b/x-pack/plugins/synthetics/common/constants/index.ts index d94fa976fb5e06..46a415f8a41c65 100644 --- a/x-pack/plugins/synthetics/common/constants/index.ts +++ b/x-pack/plugins/synthetics/common/constants/index.ts @@ -5,12 +5,9 @@ * 2.0. */ -export { CHART_FORMAT_LIMITS } from './chart_format_limits'; export { CLIENT_DEFAULTS } from './client_defaults'; export { CONTEXT_DEFAULTS } from './context_defaults'; export * from './capabilities'; export * from './settings_defaults'; -export { QUERY } from './query'; export * from './ui'; -export * from './rest_api'; export * from './synthetics'; diff --git a/x-pack/plugins/synthetics/common/constants/query.ts b/x-pack/plugins/synthetics/common/constants/query.ts deleted file mode 100644 index 5bd376ae02393c..00000000000000 --- a/x-pack/plugins/synthetics/common/constants/query.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/** - * These are the fields that will be used when users enter simple_query_string - * searches into the FilterBar component. - */ -export const QUERY = { - DEFAULT_BUCKET_COUNT: 25, - // the maximum buckets allowed by most aggregations - DEFAULT_AGGS_CAP: 10000, - SIMPLE_QUERY_STRING_FIELDS: [ - 'monitor.id', - 'monitor.url', - 'monitor.type', - 'monitor.status', - 'monitor.name', - 'url.full', - 'url.path', - 'url.scheme', - 'url.domain', - 'error.type', - ], -}; diff --git a/x-pack/plugins/synthetics/common/constants/rest_api.ts b/x-pack/plugins/synthetics/common/constants/rest_api.ts deleted file mode 100644 index 2499c178da1dba..00000000000000 --- a/x-pack/plugins/synthetics/common/constants/rest_api.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export enum API_URLS { - DYNAMIC_SETTINGS = `/internal/uptime/dynamic_settings`, - INDEX_STATUS = '/internal/uptime/index_status', - MONITOR_LIST = `/internal/uptime/monitor/list`, - MONITOR_LOCATIONS = `/internal/uptime/monitor/locations`, - MONITOR_DURATION = `/internal/uptime/monitor/duration`, - MONITOR_DETAILS = `/internal/uptime/monitor/details`, - MONITOR_STATUS = `/internal/uptime/monitor/status`, - NETWORK_EVENTS = `/internal/uptime/network_events`, - PINGS = '/internal/uptime/pings', - PING_HISTOGRAM = `/internal/uptime/ping/histogram`, - SNAPSHOT_COUNT = `/internal/uptime/snapshot/count`, - SYNTHETICS_SUCCESSFUL_CHECK = `/internal/uptime/synthetics/check/success`, - JOURNEY = `/internal/uptime/journey/{checkGroup}`, - JOURNEY_FAILED_STEPS = `/internal/uptime/journeys/failed_steps`, - JOURNEY_SCREENSHOT = `/internal/uptime/journey/screenshot/{checkGroup}/{stepIndex}`, - JOURNEY_SCREENSHOT_BLOCKS = `/internal/uptime/journey/screenshot/block`, - - ML_MODULE_JOBS = `/internal/ml/modules/jobs_exist/`, - ML_SETUP_MODULE = '/internal/ml/modules/setup/', - ML_DELETE_JOB = `/internal/ml/jobs/delete_jobs`, - ML_CAPABILITIES = '/internal/ml/ml_capabilities', - ML_ANOMALIES_RESULT = `/internal/ml/results/anomalies_table_data`, - - RULE_CONNECTORS = '/api/actions/connectors', - CREATE_RULE = '/api/alerting/rule', - DELETE_RULE = '/api/alerting/rule/', - RULES_FIND = '/api/alerting/rules/_find', - CONNECTOR_TYPES = '/api/actions/connector_types', -} diff --git a/x-pack/plugins/synthetics/common/constants/synthetics/rest_api.ts b/x-pack/plugins/synthetics/common/constants/synthetics/rest_api.ts index d43eb00d96b848..97f14b77f76658 100644 --- a/x-pack/plugins/synthetics/common/constants/synthetics/rest_api.ts +++ b/x-pack/plugins/synthetics/common/constants/synthetics/rest_api.ts @@ -45,4 +45,11 @@ export enum SYNTHETICS_API_URLS { SYNTHETICS_MONITORS_PROJECT = '/api/synthetics/project/{projectName}/monitors', SYNTHETICS_MONITORS_PROJECT_UPDATE = '/api/synthetics/project/{projectName}/monitors/_bulk_update', SYNTHETICS_MONITORS_PROJECT_DELETE = '/api/synthetics/project/{projectName}/monitors/_bulk_delete', + + DYNAMIC_SETTINGS = `/internal/uptime/dynamic_settings`, + RULE_CONNECTORS = '/api/actions/connectors', + CREATE_RULE = '/api/alerting/rule', + DELETE_RULE = '/api/alerting/rule/', + RULES_FIND = '/api/alerting/rules/_find', + CONNECTOR_TYPES = '/api/actions/connector_types', } diff --git a/x-pack/plugins/synthetics/common/constants/ui.ts b/x-pack/plugins/synthetics/common/constants/ui.ts index 189dd40660ae7b..64259a676189c6 100644 --- a/x-pack/plugins/synthetics/common/constants/ui.ts +++ b/x-pack/plugins/synthetics/common/constants/ui.ts @@ -42,8 +42,6 @@ export const SYNTHETIC_CHECK_STEPS_ROUTE = '/journey/:checkGroupId/steps'; export const TEST_RUN_DETAILS_ROUTE = '/monitor/:monitorId/test-run/:checkGroupId'; -export const MAPPING_ERROR_ROUTE = '/mapping-error'; - export const ERROR_DETAILS_ROUTE = '/monitor/:monitorId/errors/:errorStateId'; export enum STATUS { @@ -61,10 +59,6 @@ export enum MONITOR_TYPES { BROWSER = 'browser', } -export const ML_JOB_ID = 'high_latency_by_geo'; - -export const ML_MODULE_ID = 'uptime_heartbeat'; - export const UNNAMED_LOCATION = 'Unnamed-location'; export enum CERT_STATUS { @@ -74,15 +68,6 @@ export enum CERT_STATUS { TOO_OLD = 'TOO_OLD', } -export const KQL_SYNTAX_LOCAL_STORAGE = 'xpack.uptime.kql.syntax'; - -export const FILTER_FIELDS = { - TAGS: 'tags', - PORT: 'url.port', - LOCATION: 'observer.geo.name', - TYPE: 'monitor.type', -}; - export const SYNTHETICS_INDEX_PATTERN = 'synthetics-*'; export const LICENSE_NOT_ACTIVE_ERROR = 'License not active'; diff --git a/x-pack/plugins/synthetics/common/constants/uptime_alerts.ts b/x-pack/plugins/synthetics/common/constants/uptime_alerts.ts deleted file mode 100644 index 71f6bd1b183fb1..00000000000000 --- a/x-pack/plugins/synthetics/common/constants/uptime_alerts.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ActionGroup } from '@kbn/alerting-plugin/common'; - -export type MonitorStatusActionGroup = - ActionGroup<'xpack.uptime.alerts.actionGroups.monitorStatus'>; -export type TLSLegacyActionGroup = ActionGroup<'xpack.uptime.alerts.actionGroups.tls'>; -export type TLSActionGroup = ActionGroup<'xpack.uptime.alerts.actionGroups.tlsCertificate'>; -export type DurationAnomalyActionGroup = - ActionGroup<'xpack.uptime.alerts.actionGroups.durationAnomaly'>; - -export const MONITOR_STATUS: MonitorStatusActionGroup = { - id: 'xpack.uptime.alerts.actionGroups.monitorStatus', - name: 'Uptime Down Monitor', -}; - -export const TLS_LEGACY: TLSLegacyActionGroup = { - id: 'xpack.uptime.alerts.actionGroups.tls', - name: 'Uptime TLS Alert (Legacy)', -}; - -export const TLS: TLSActionGroup = { - id: 'xpack.uptime.alerts.actionGroups.tlsCertificate', - name: 'Uptime TLS Alert', -}; - -export const DURATION_ANOMALY: DurationAnomalyActionGroup = { - id: 'xpack.uptime.alerts.actionGroups.durationAnomaly', - name: 'Uptime Duration Anomaly', -}; - -export const CLIENT_ALERT_TYPES = { - MONITOR_STATUS: 'xpack.uptime.alerts.monitorStatus', - TLS_LEGACY: 'xpack.uptime.alerts.tls', - TLS: 'xpack.uptime.alerts.tlsCertificate', - DURATION_ANOMALY: 'xpack.uptime.alerts.durationAnomaly', -}; - -export const UPTIME_RULE_TYPES = [ - 'xpack.uptime.alerts.tls', - 'xpack.uptime.alerts.tlsCertificate', - 'xpack.uptime.alerts.monitorStatus', - 'xpack.uptime.alerts.durationAnomaly', -]; diff --git a/x-pack/plugins/synthetics/common/lib/__snapshots__/assert_close_to.test.ts.snap b/x-pack/plugins/synthetics/common/lib/__snapshots__/assert_close_to.test.ts.snap deleted file mode 100644 index 7dfb8c88be1ca4..00000000000000 --- a/x-pack/plugins/synthetics/common/lib/__snapshots__/assert_close_to.test.ts.snap +++ /dev/null @@ -1,3 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`assertCloseTo throws an error when expected value is outside of precision range 1`] = `"expected [12500] to be within 100 of 10000"`; diff --git a/x-pack/plugins/synthetics/common/lib/assert_close_to.test.ts b/x-pack/plugins/synthetics/common/lib/assert_close_to.test.ts deleted file mode 100644 index 1a8a2e4cddb3a7..00000000000000 --- a/x-pack/plugins/synthetics/common/lib/assert_close_to.test.ts +++ /dev/null @@ -1,22 +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 { assertCloseTo } from './assert_close_to'; - -describe('assertCloseTo', () => { - it('does not throw an error when expected value is correct', () => { - assertCloseTo(10000, 10001, 100); - }); - - it('does not throw an error when expected value is under actual, but within precision threshold', () => { - assertCloseTo(10000, 9875, 300); - }); - - it('throws an error when expected value is outside of precision range', () => { - expect(() => assertCloseTo(10000, 12500, 100)).toThrowErrorMatchingSnapshot(); - }); -}); diff --git a/x-pack/plugins/synthetics/common/lib/assert_close_to.ts b/x-pack/plugins/synthetics/common/lib/assert_close_to.ts deleted file mode 100644 index eeadacaa5703ac..00000000000000 --- a/x-pack/plugins/synthetics/common/lib/assert_close_to.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -export const assertCloseTo = (actual: number, expected: number, precision: number) => { - if (Math.abs(expected - actual) > precision) { - throw new Error(`expected [${expected}] to be within ${precision} of ${actual}`); - } - - // if actual is undefined above math condition will be NAN and it will be always false - if (actual === undefined) { - throw new Error(`expected close to [${expected}] but got [${actual}]`); - } -}; diff --git a/x-pack/plugins/synthetics/common/lib/get_histogram_interval.test.ts b/x-pack/plugins/synthetics/common/lib/get_histogram_interval.test.ts deleted file mode 100644 index 5c5f5415ff23e3..00000000000000 --- a/x-pack/plugins/synthetics/common/lib/get_histogram_interval.test.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { getHistogramInterval } from './get_histogram_interval'; -import { assertCloseTo } from './assert_close_to'; - -describe('getHistogramInterval', () => { - it('specifies the interval necessary to divide a given timespan into equal buckets, rounded to the nearest integer, expressed in ms', () => { - const interval = getHistogramInterval('now-15m', 'now', 10); - assertCloseTo(interval, 90000, 20); - }); - - it('will supply a default constant value for bucketCount when none is provided', () => { - const interval = getHistogramInterval('now-15m', 'now'); - assertCloseTo(interval, 36000, 20); - }); -}); diff --git a/x-pack/plugins/synthetics/common/lib/get_histogram_interval.ts b/x-pack/plugins/synthetics/common/lib/get_histogram_interval.ts deleted file mode 100644 index 8d44fb594c03a1..00000000000000 --- a/x-pack/plugins/synthetics/common/lib/get_histogram_interval.ts +++ /dev/null @@ -1,46 +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 DateMath from '@kbn/datemath'; -import { QUERY } from '../constants'; - -export const parseRelativeDate = (dateStr: string, options = {}) => { - // We need this this parsing because if user selects This week or this date - // That represents end date in future, if week or day is still in the middle - // Uptime data can never be collected in future, so we will reset date to now - // in That case. Example case we select this week range will be to='now/w' and from = 'now/w'; - - const parsedDate = DateMath.parse(dateStr, options); - const dateTimestamp = parsedDate?.valueOf() ?? 0; - if (dateTimestamp > Date.now()) { - return DateMath.parse('now'); - } - return parsedDate; -}; - -export const getHistogramInterval = ( - dateRangeStart: string, - dateRangeEnd: string, - bucketCount?: number -): number => { - const from = parseRelativeDate(dateRangeStart); - - // roundUp is required for relative date like now/w to get the end of the week - const to = parseRelativeDate(dateRangeEnd, { roundUp: true }); - if (from === undefined) { - throw Error('Invalid dateRangeStart value'); - } - if (to === undefined) { - throw Error('Invalid dateRangeEnd value'); - } - const interval = Math.round( - (to.valueOf() - from.valueOf()) / (bucketCount || QUERY.DEFAULT_BUCKET_COUNT) - ); - - // Interval can never be zero, if it's 0 we return at least 1ms interval - return interval > 0 ? interval : 1; -}; diff --git a/x-pack/plugins/synthetics/common/lib/index.ts b/x-pack/plugins/synthetics/common/lib/index.ts index 497284f3fa281a..c0a2226d59b939 100644 --- a/x-pack/plugins/synthetics/common/lib/index.ts +++ b/x-pack/plugins/synthetics/common/lib/index.ts @@ -7,5 +7,3 @@ export * from './combine_filters_and_user_search'; export * from './stringify_kueries'; - -export { getMLJobId } from './ml'; diff --git a/x-pack/plugins/synthetics/common/lib/ml.test.ts b/x-pack/plugins/synthetics/common/lib/ml.test.ts deleted file mode 100644 index e7f572b12bb470..00000000000000 --- a/x-pack/plugins/synthetics/common/lib/ml.test.ts +++ /dev/null @@ -1,35 +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 { getMLJobId } from './ml'; - -describe('ML Anomaly API', () => { - it('it generates a lowercase job id', async () => { - const monitorId = 'ABC1334haa'; - - const jobId = getMLJobId(monitorId); - - expect(jobId).toEqual(jobId.toLowerCase()); - }); - - it('should truncate long monitor IDs', () => { - const longAndWeirdMonitorId = - 'https://auto-mmmmxhhhhhccclongAndWeirdMonitorId123yyyyyrereauto-xcmpa-1345555454646'; - - expect(getMLJobId(longAndWeirdMonitorId)).toHaveLength(64); - }); - - it('should remove special characters and replace them with underscore', () => { - const monIdSpecialChars = '/ ? , " < > | * a'; - - const jobId = getMLJobId(monIdSpecialChars); - - const format = /[/?,"<>|*]+/; - - expect(format.test(jobId)).toBe(false); - }); -}); diff --git a/x-pack/plugins/synthetics/common/lib/ml.ts b/x-pack/plugins/synthetics/common/lib/ml.ts deleted file mode 100644 index 8b9c4bf7c5857b..00000000000000 --- a/x-pack/plugins/synthetics/common/lib/ml.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { ML_JOB_ID } from '../constants'; - -export const getJobPrefix = (monitorId: string) => { - // ML App doesn't support upper case characters in job name - // Also Spaces and the characters / ? , " < > | * are not allowed - // so we will replace all special chars with _ - - const prefix = monitorId.replace(/[^A-Z0-9]+/gi, '_').toLowerCase(); - - // ML Job ID can't be greater than 64 length, so will be substring it, and hope - // At such big length, there is minimum chance of having duplicate monitor id - // Subtracting ML_JOB_ID constant as well - const postfix = '_' + ML_JOB_ID; - - if ((prefix + postfix).length > 64) { - return prefix.substring(0, 64 - postfix.length) + '_'; - } - return prefix + '_'; -}; - -export const getMLJobId = (monitorId: string) => `${getJobPrefix(monitorId)}${ML_JOB_ID}`; diff --git a/x-pack/plugins/synthetics/common/rules/alert_actions.test.ts b/x-pack/plugins/synthetics/common/rules/alert_actions.test.ts index 3315f5059ef86e..345342d1f4c629 100644 --- a/x-pack/plugins/synthetics/common/rules/alert_actions.test.ts +++ b/x-pack/plugins/synthetics/common/rules/alert_actions.test.ts @@ -7,237 +7,9 @@ import { populateAlertActions } from './alert_actions'; import { ActionConnector } from './types'; -import { MONITOR_STATUS } from '../constants/uptime_alerts'; import { MONITOR_STATUS as SYNTHETICS_MONITOR_STATUS } from '../constants/synthetics_alerts'; -import { MonitorStatusTranslations } from './legacy_uptime/translations'; import { SyntheticsMonitorStatusTranslations } from './synthetics/translations'; -describe('Legacy Alert Actions factory', () => { - it('generate expected action for pager duty', async () => { - const resp = populateAlertActions({ - groupId: MONITOR_STATUS.id, - defaultActions: [ - { - actionTypeId: '.pagerduty', - group: 'xpack.uptime.alerts.actionGroups.monitorStatus', - params: { - dedupKey: 'always-downxpack.uptime.alerts.actionGroups.monitorStatus', - eventAction: 'trigger', - severity: 'error', - summary: MonitorStatusTranslations.defaultActionMessage, - }, - id: 'f2a3b195-ed76-499a-805d-82d24d4eeba9', - }, - ] as unknown as ActionConnector[], - translations: { - defaultActionMessage: MonitorStatusTranslations.defaultActionMessage, - defaultRecoveryMessage: MonitorStatusTranslations.defaultRecoveryMessage, - defaultSubjectMessage: MonitorStatusTranslations.defaultSubjectMessage, - defaultRecoverySubjectMessage: MonitorStatusTranslations.defaultRecoverySubjectMessage, - }, - isLegacy: true, - }); - expect(resp).toEqual([ - { - group: 'recovered', - id: 'f2a3b195-ed76-499a-805d-82d24d4eeba9', - params: { - dedupKey: expect.any(String), - eventAction: 'resolve', - summary: - 'Alert for monitor {{context.monitorName}} with url {{{context.monitorUrl}}} from {{context.observerLocation}} has recovered', - }, - }, - { - group: 'xpack.uptime.alerts.actionGroups.monitorStatus', - id: 'f2a3b195-ed76-499a-805d-82d24d4eeba9', - params: { - dedupKey: expect.any(String), - eventAction: 'trigger', - severity: 'error', - summary: MonitorStatusTranslations.defaultActionMessage, - }, - }, - ]); - }); - - it('generate expected action for email', async () => { - const resp = populateAlertActions({ - groupId: MONITOR_STATUS.id, - defaultActions: [ - { - actionTypeId: '.email', - group: 'xpack.uptime.alerts.actionGroups.monitorStatus', - params: { - dedupKey: 'always-downxpack.uptime.alerts.actionGroups.monitorStatus', - eventAction: 'trigger', - severity: 'error', - summary: MonitorStatusTranslations.defaultActionMessage, - }, - id: 'f2a3b195-ed76-499a-805d-82d24d4eeba9', - }, - ] as unknown as ActionConnector[], - translations: { - defaultActionMessage: MonitorStatusTranslations.defaultActionMessage, - defaultRecoveryMessage: MonitorStatusTranslations.defaultRecoveryMessage, - defaultSubjectMessage: MonitorStatusTranslations.defaultSubjectMessage, - defaultRecoverySubjectMessage: MonitorStatusTranslations.defaultRecoverySubjectMessage, - }, - isLegacy: true, - defaultEmail: { - to: ['test@email.com'], - }, - }); - expect(resp).toEqual([ - { - group: 'recovered', - id: 'f2a3b195-ed76-499a-805d-82d24d4eeba9', - params: { - bcc: [], - cc: [], - kibanaFooterLink: { - path: '', - text: '', - }, - message: - 'Alert for monitor {{context.monitorName}} with url {{{context.monitorUrl}}} from {{context.observerLocation}} has recovered', - messageHTML: null, - subject: - 'Monitor {{context.monitorName}} with url {{{context.monitorUrl}}} has recovered', - to: ['test@email.com'], - }, - }, - { - group: 'xpack.uptime.alerts.actionGroups.monitorStatus', - id: 'f2a3b195-ed76-499a-805d-82d24d4eeba9', - params: { - bcc: [], - cc: [], - kibanaFooterLink: { - path: '', - text: '', - }, - message: - 'Monitor {{context.monitorName}} with url {{{context.monitorUrl}}} from {{context.observerLocation}} {{{context.statusMessage}}} The latest error message is {{{context.latestErrorMessage}}}, checked at {{context.checkedAt}}', - messageHTML: null, - subject: 'Monitor {{context.monitorName}} with url {{{context.monitorUrl}}} is down', - to: ['test@email.com'], - }, - }, - ]); - }); - - it('generate expected action for index', async () => { - const resp = populateAlertActions({ - groupId: MONITOR_STATUS.id, - defaultActions: [ - { - actionTypeId: '.index', - group: 'xpack.uptime.alerts.actionGroups.monitorStatus', - params: { - dedupKey: 'always-downxpack.uptime.alerts.actionGroups.monitorStatus', - eventAction: 'trigger', - severity: 'error', - summary: MonitorStatusTranslations.defaultActionMessage, - }, - id: 'f2a3b195-ed76-499a-805d-82d24d4eeba9', - }, - ] as unknown as ActionConnector[], - translations: { - defaultActionMessage: MonitorStatusTranslations.defaultActionMessage, - defaultRecoveryMessage: MonitorStatusTranslations.defaultRecoveryMessage, - defaultSubjectMessage: MonitorStatusTranslations.defaultSubjectMessage, - defaultRecoverySubjectMessage: MonitorStatusTranslations.defaultRecoverySubjectMessage, - }, - isLegacy: true, - }); - expect(resp).toEqual([ - { - group: 'recovered', - id: 'f2a3b195-ed76-499a-805d-82d24d4eeba9', - params: { - documents: [ - { - latestErrorMessage: '', - monitorName: '{{context.monitorName}}', - monitorUrl: '{{{context.monitorUrl}}}', - observerLocation: '{{context.observerLocation}}', - statusMessage: - 'Alert for monitor {{context.monitorName}} with url {{{context.monitorUrl}}} from {{context.observerLocation}} has recovered', - }, - ], - indexOverride: null, - }, - }, - { - group: 'xpack.uptime.alerts.actionGroups.monitorStatus', - id: 'f2a3b195-ed76-499a-805d-82d24d4eeba9', - params: { - documents: [ - { - latestErrorMessage: '{{{context.latestErrorMessage}}}', - monitorName: '{{context.monitorName}}', - monitorUrl: '{{{context.monitorUrl}}}', - observerLocation: '{{context.observerLocation}}', - statusMessage: '{{{context.statusMessage}}}', - }, - ], - indexOverride: null, - }, - }, - ]); - }); - - it('generate expected action for slack action connector', async () => { - const resp = populateAlertActions({ - groupId: MONITOR_STATUS.id, - defaultActions: [ - { - actionTypeId: '.pagerduty', - group: 'xpack.uptime.alerts.actionGroups.monitorStatus', - params: { - dedupKey: 'always-downxpack.uptime.alerts.actionGroups.monitorStatus', - eventAction: 'trigger', - severity: 'error', - summary: - 'Monitor {{context.monitorName}} with url {{{context.monitorUrl}}} from {{context.observerLocation}} {{{context.statusMessage}}} The latest error message is {{{context.latestErrorMessage}}}', - }, - id: 'f2a3b195-ed76-499a-805d-82d24d4eeba9', - }, - ] as unknown as ActionConnector[], - translations: { - defaultActionMessage: MonitorStatusTranslations.defaultActionMessage, - defaultRecoveryMessage: MonitorStatusTranslations.defaultRecoveryMessage, - defaultSubjectMessage: MonitorStatusTranslations.defaultSubjectMessage, - defaultRecoverySubjectMessage: MonitorStatusTranslations.defaultRecoverySubjectMessage, - }, - isLegacy: true, - }); - expect(resp).toEqual([ - { - group: 'recovered', - id: 'f2a3b195-ed76-499a-805d-82d24d4eeba9', - params: { - dedupKey: expect.any(String), - eventAction: 'resolve', - summary: - 'Alert for monitor {{context.monitorName}} with url {{{context.monitorUrl}}} from {{context.observerLocation}} has recovered', - }, - }, - { - group: 'xpack.uptime.alerts.actionGroups.monitorStatus', - id: 'f2a3b195-ed76-499a-805d-82d24d4eeba9', - params: { - dedupKey: expect.any(String), - eventAction: 'trigger', - severity: 'error', - summary: MonitorStatusTranslations.defaultActionMessage, - }, - }, - ]); - }); -}); - describe('Alert Actions factory', () => { it('generate expected action for pager duty', async () => { const resp = populateAlertActions({ diff --git a/x-pack/plugins/synthetics/common/rules/alert_actions.ts b/x-pack/plugins/synthetics/common/rules/alert_actions.ts index 70a2de4d7cf592..02402c8eed944e 100644 --- a/x-pack/plugins/synthetics/common/rules/alert_actions.ts +++ b/x-pack/plugins/synthetics/common/rules/alert_actions.ts @@ -44,13 +44,11 @@ export function populateAlertActions({ defaultEmail, groupId, translations, - isLegacy = false, }: { groupId: string; defaultActions: ActionConnector[]; defaultEmail?: DefaultEmail; translations: Translations; - isLegacy?: boolean; }) { const actions: RuleAction[] = []; defaultActions.forEach((aId) => { @@ -58,13 +56,11 @@ export function populateAlertActions({ id: aId.id, group: groupId, params: {}, - frequency: !isLegacy - ? { - notifyWhen: 'onActionGroupChange', - throttle: null, - summary: false, - } - : undefined, + frequency: { + notifyWhen: 'onActionGroupChange', + throttle: null, + summary: false, + }, }; const recoveredAction: RuleAction = { @@ -73,13 +69,11 @@ export function populateAlertActions({ params: { message: translations.defaultRecoveryMessage, }, - frequency: !isLegacy - ? { - notifyWhen: 'onActionGroupChange', - throttle: null, - summary: false, - } - : undefined, + frequency: { + notifyWhen: 'onActionGroupChange', + throttle: null, + summary: false, + }, }; switch (aId.actionTypeId) { @@ -95,8 +89,8 @@ export function populateAlertActions({ actions.push(recoveredAction); break; case INDEX_ACTION_ID: - action.params = getIndexActionParams(translations, false, isLegacy); - recoveredAction.params = getIndexActionParams(translations, true, isLegacy); + action.params = getIndexActionParams(translations, false); + recoveredAction.params = getIndexActionParams(translations, true); actions.push(recoveredAction); break; case SERVICE_NOW_ACTION_ID: @@ -138,41 +132,7 @@ export function populateAlertActions({ return actions; } -function getIndexActionParams( - translations: Translations, - recovery = false, - isLegacy = false -): IndexActionParams { - if (isLegacy && recovery) { - return { - documents: [ - { - monitorName: '{{context.monitorName}}', - monitorUrl: '{{{context.monitorUrl}}}', - statusMessage: translations.defaultRecoveryMessage, - latestErrorMessage: '', - observerLocation: '{{context.observerLocation}}', - }, - ], - indexOverride: null, - }; - } - - if (isLegacy) { - return { - documents: [ - { - monitorName: '{{context.monitorName}}', - monitorUrl: '{{{context.monitorUrl}}}', - statusMessage: '{{{context.statusMessage}}}', - latestErrorMessage: '{{{context.latestErrorMessage}}}', - observerLocation: '{{context.observerLocation}}', - }, - ], - indexOverride: null, - }; - } - +function getIndexActionParams(translations: Translations, recovery = false): IndexActionParams { if (recovery) { return { documents: [ diff --git a/x-pack/plugins/synthetics/common/rules/legacy_uptime/translations.ts b/x-pack/plugins/synthetics/common/rules/legacy_uptime/translations.ts deleted file mode 100644 index fab705daeb0c0f..00000000000000 --- a/x-pack/plugins/synthetics/common/rules/legacy_uptime/translations.ts +++ /dev/null @@ -1,160 +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 MonitorStatusTranslations = { - defaultActionMessage: i18n.translate( - 'xpack.synthetics.alerts.monitorStatus.defaultActionMessage', - { - defaultMessage: - 'Monitor {monitorName} with url {monitorUrl} from {observerLocation} {statusMessage} The latest error message is {latestErrorMessage}, checked at {checkedAt}', - values: { - monitorName: '{{context.monitorName}}', - monitorUrl: '{{{context.monitorUrl}}}', - statusMessage: '{{{context.statusMessage}}}', - latestErrorMessage: '{{{context.latestErrorMessage}}}', - observerLocation: '{{context.observerLocation}}', - checkedAt: '{{context.checkedAt}}', - }, - } - ), - defaultSubjectMessage: i18n.translate( - 'xpack.synthetics.alerts.monitorStatus.defaultSubjectMessage', - { - defaultMessage: 'Monitor {monitorName} with url {monitorUrl} is down', - values: { - monitorName: '{{context.monitorName}}', - monitorUrl: '{{{context.monitorUrl}}}', - }, - } - ), - defaultRecoverySubjectMessage: i18n.translate( - 'xpack.synthetics.alerts.monitorStatus.defaultRecoverySubjectMessage', - { - defaultMessage: 'Monitor {monitorName} with url {monitorUrl} has recovered', - values: { - monitorName: '{{context.monitorName}}', - monitorUrl: '{{{context.monitorUrl}}}', - }, - } - ), - defaultRecoveryMessage: i18n.translate( - 'xpack.synthetics.alerts.monitorStatus.defaultRecoveryMessage', - { - defaultMessage: - 'Alert for monitor {monitorName} with url {monitorUrl} from {observerLocation} has recovered', - values: { - monitorName: '{{context.monitorName}}', - monitorUrl: '{{{context.monitorUrl}}}', - observerLocation: '{{context.observerLocation}}', - }, - } - ), - name: i18n.translate('xpack.synthetics.alerts.monitorStatus.clientName', { - defaultMessage: 'Uptime monitor status', - }), - description: i18n.translate('xpack.synthetics.alerts.monitorStatus.description', { - defaultMessage: 'Alert when a monitor is down or an availability threshold is breached.', - }), -}; - -export const TlsTranslations = { - defaultActionMessage: i18n.translate('xpack.synthetics.alerts.tls.defaultActionMessage', { - defaultMessage: `Detected TLS certificate {commonName} from issuer {issuer} is {status}. Certificate {summary}`, - values: { - commonName: '{{context.commonName}}', - issuer: '{{context.issuer}}', - summary: '{{context.summary}}', - status: '{{context.status}}', - }, - }), - defaultRecoveryMessage: i18n.translate('xpack.synthetics.alerts.tls.defaultRecoveryMessage', { - defaultMessage: `Alert for TLS certificate {commonName} from issuer {issuer} has recovered`, - values: { - commonName: '{{context.commonName}}', - issuer: '{{context.issuer}}', - }, - }), - name: i18n.translate('xpack.synthetics.alerts.tls.clientName', { - defaultMessage: 'Uptime TLS', - }), - description: i18n.translate('xpack.synthetics.alerts.tls.description', { - defaultMessage: 'Alert when the TLS certificate of an Uptime monitor is about to expire.', - }), -}; - -export const TlsTranslationsLegacy = { - defaultActionMessage: i18n.translate('xpack.synthetics.alerts.tls.legacy.defaultActionMessage', { - defaultMessage: `Detected {count} TLS certificates expiring or becoming too old. -{expiringConditionalOpen} -Expiring cert count: {expiringCount} -Expiring Certificates: {expiringCommonNameAndDate} -{expiringConditionalClose} -{agingConditionalOpen} -Aging cert count: {agingCount} -Aging Certificates: {agingCommonNameAndDate} -{agingConditionalClose} -`, - values: { - count: '{{state.count}}', - expiringCount: '{{state.expiringCount}}', - expiringCommonNameAndDate: '{{state.expiringCommonNameAndDate}}', - expiringConditionalOpen: '{{#state.hasExpired}}', - expiringConditionalClose: '{{/state.hasExpired}}', - agingCount: '{{state.agingCount}}', - agingCommonNameAndDate: '{{state.agingCommonNameAndDate}}', - agingConditionalOpen: '{{#state.hasAging}}', - agingConditionalClose: '{{/state.hasAging}}', - }, - }), - name: i18n.translate('xpack.synthetics.alerts.tls.legacy.clientName', { - defaultMessage: 'Uptime TLS (Legacy)', - }), - description: i18n.translate('xpack.synthetics.alerts.tls.legacy.description', { - defaultMessage: - 'Alert when the TLS certificate of an Uptime monitor is about to expire. This alert will be deprecated in a future version.', - }), -}; - -export const DurationAnomalyTranslations = { - defaultActionMessage: i18n.translate( - 'xpack.synthetics.alerts.durationAnomaly.defaultActionMessage', - { - defaultMessage: `Abnormal ({severity} level) response time detected on {monitor} with url {monitorUrl} at {anomalyStartTimestamp}. Anomaly severity score is {severityScore}. -Response times as high as {slowestAnomalyResponse} have been detected from location {observerLocation}. Expected response time is {expectedResponseTime}.`, - values: { - severity: '{{context.severity}}', - anomalyStartTimestamp: '{{context.anomalyStartTimestamp}}', - monitor: '{{context.monitor}}', - monitorUrl: '{{{context.monitorUrl}}}', - slowestAnomalyResponse: '{{context.slowestAnomalyResponse}}', - expectedResponseTime: '{{context.expectedResponseTime}}', - severityScore: '{{context.severityScore}}', - observerLocation: '{{context.observerLocation}}', - }, - } - ), - defaultRecoveryMessage: i18n.translate( - 'xpack.synthetics.alerts.durationAnomaly.defaultRecoveryMessage', - { - defaultMessage: `Alert for abnormal ({severity} level) response time detected on monitor {monitor} with url {monitorUrl} from location {observerLocation} at {anomalyStartTimestamp} has recovered`, - values: { - severity: '{{context.severity}}', - anomalyStartTimestamp: '{{context.anomalyStartTimestamp}}', - monitor: '{{context.monitor}}', - monitorUrl: '{{{context.monitorUrl}}}', - observerLocation: '{{context.observerLocation}}', - }, - } - ), - name: i18n.translate('xpack.synthetics.alerts.durationAnomaly.clientName', { - defaultMessage: 'Uptime Duration Anomaly', - }), - description: i18n.translate('xpack.synthetics.alerts.durationAnomaly.description', { - defaultMessage: 'Alert when the Uptime monitor duration is anomalous.', - }), -}; diff --git a/x-pack/plugins/synthetics/common/runtime_types/monitor_management/locations.ts b/x-pack/plugins/synthetics/common/runtime_types/monitor_management/locations.ts index 572f3674947850..60c74be13c2283 100644 --- a/x-pack/plugins/synthetics/common/runtime_types/monitor_management/locations.ts +++ b/x-pack/plugins/synthetics/common/runtime_types/monitor_management/locations.ts @@ -138,10 +138,16 @@ export type ManifestLocation = t.TypeOf; export type ServiceLocation = t.TypeOf; export type ServiceLocations = t.TypeOf; export type MonitorServiceLocation = t.TypeOf; -export type MonitorServiceLocations = t.TypeOf; -export type ServiceLocationsApiResponse = t.TypeOf; export type ServiceLocationErrors = t.TypeOf; export type ThrottlingOptions = t.TypeOf; export type Locations = t.TypeOf; export type PublicLocation = t.TypeOf; export type PublicLocations = t.TypeOf; + +export interface ServiceLocationErrorsResponse { + attributes: { message: string; errors: ServiceLocationErrors; id?: string }; +} + +// TODO: Remove if not needed +// export type MonitorServiceLocations = t.TypeOf; +// export type ServiceLocationsApiResponse = t.TypeOf; diff --git a/x-pack/plugins/synthetics/common/translations.ts b/x-pack/plugins/synthetics/common/translations.ts deleted file mode 100644 index ac2bec7a5506b4..00000000000000 --- a/x-pack/plugins/synthetics/common/translations.ts +++ /dev/null @@ -1,22 +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 VALUE_MUST_BE_GREATER_THAN_ZERO = i18n.translate( - 'xpack.synthetics.settings.invalid.error', - { - defaultMessage: 'Value must be greater than 0.', - } -); - -export const VALUE_MUST_BE_AN_INTEGER = i18n.translate( - 'xpack.synthetics.settings.invalid.nanError', - { - defaultMessage: 'Value must be an integer.', - } -); diff --git a/x-pack/plugins/synthetics/common/types/index.ts b/x-pack/plugins/synthetics/common/types/index.ts index 6a864b700092dc..2a70803a432115 100644 --- a/x-pack/plugins/synthetics/common/types/index.ts +++ b/x-pack/plugins/synthetics/common/types/index.ts @@ -5,7 +5,5 @@ * 2.0. */ -export * from './monitor_duration'; export * from './synthetics_monitor'; export * from './monitor_validation'; -export * from './integration_deprecation'; diff --git a/x-pack/plugins/synthetics/common/types/monitor_duration.ts b/x-pack/plugins/synthetics/common/types/monitor_duration.ts deleted file mode 100644 index 253adba03cdcf7..00000000000000 --- a/x-pack/plugins/synthetics/common/types/monitor_duration.ts +++ /dev/null @@ -1,26 +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. - */ - -/** Represents the average monitor duration ms at a point in time. */ -export interface MonitorDurationAveragePoint { - /** The timeseries value for this point. */ - x: number; - /** The average duration ms for the monitor. */ - y?: number | null; -} - -export interface LocationDurationLine { - name: string; - - line: MonitorDurationAveragePoint[]; -} - -/** The data used to populate the monitor charts. */ -export interface MonitorDurationResult { - /** The average values for the monitor duration. */ - locationDurationLines: LocationDurationLine[]; -} diff --git a/x-pack/plugins/synthetics/common/utils/get_monitor_url.ts b/x-pack/plugins/synthetics/common/utils/get_monitor_url.ts deleted file mode 100644 index 09b02150957d03..00000000000000 --- a/x-pack/plugins/synthetics/common/utils/get_monitor_url.ts +++ /dev/null @@ -1,40 +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 { stringify } from 'querystring'; - -export const format = ({ - pathname, - query, -}: { - pathname: string; - query: Record; -}): string => { - return `${pathname}?${stringify(query)}`; -}; - -export const getMonitorRouteFromMonitorId = ({ - monitorId, - dateRangeStart, - dateRangeEnd, - filters = {}, -}: { - monitorId: string; - dateRangeStart: string; - dateRangeEnd: string; - filters?: Record; -}) => - format({ - pathname: `/app/uptime/monitor/${btoa(monitorId)}`, - query: { - dateRangeEnd, - dateRangeStart, - ...(Object.keys(filters).length - ? { filters: JSON.stringify(Object.keys(filters).map((key) => [key, filters[key]])) } - : {}), - }, - }); diff --git a/x-pack/plugins/synthetics/common/utils/get_synthetics_monitor_url.ts b/x-pack/plugins/synthetics/common/utils/get_synthetics_monitor_url.ts index 007b0c5812dcea..7bd962b0b16403 100644 --- a/x-pack/plugins/synthetics/common/utils/get_synthetics_monitor_url.ts +++ b/x-pack/plugins/synthetics/common/utils/get_synthetics_monitor_url.ts @@ -4,9 +4,11 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { stringify } from 'querystring'; -import { format } from './get_monitor_url'; - +const format = ({ pathname, query }: { pathname: string; query: Record }): string => { + return `${pathname}?${stringify(query)}`; +}; export const getSyntheticsErrorRouteFromMonitorId = ({ configId, stateId, diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/getting_started/use_simple_monitor.ts b/x-pack/plugins/synthetics/public/apps/synthetics/components/getting_started/use_simple_monitor.ts index 92488a8adbd668..070bb39d9d96df 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/getting_started/use_simple_monitor.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/getting_started/use_simple_monitor.ts @@ -12,13 +12,13 @@ import { useDispatch, useSelector } from 'react-redux'; import { useSyntheticsRefreshContext } from '../../contexts'; import { cleanMonitorListState, selectServiceLocationsState } from '../../state'; import { showSyncErrors } from '../monitors_page/management/show_sync_errors'; -import { createGettingStartedMonitor } from '../../state'; +import { createGettingStartedMonitor, UpsertMonitorResponse } from '../../state'; import { DEFAULT_FIELDS } from '../../../../../common/constants/monitor_defaults'; import { ConfigKey } from '../../../../../common/constants/monitor_management'; import { DataStream, + EncryptedSyntheticsSavedMonitor, ServiceLocationErrors, - SyntheticsMonitorWithId, } from '../../../../../common/runtime_types'; import { MONITOR_SUCCESS_LABEL, @@ -56,7 +56,7 @@ export const useSimpleMonitor = ({ monitorData }: { monitorData?: SimpleFormData }, [monitorData]); useEffect(() => { - const newMonitor = data as SyntheticsMonitorWithId; + const newMonitor = data as UpsertMonitorResponse; const hasErrors = data && 'attributes' in data && data.attributes.errors?.length > 0; if (hasErrors && !loading) { showSyncErrors( @@ -71,7 +71,7 @@ export const useSimpleMonitor = ({ monitorData }: { monitorData?: SimpleFormData title: MONITOR_FAILURE_LABEL, toastLifeTimeMs: 3000, }); - } else if (!loading && newMonitor?.id) { + } else if (!loading && (newMonitor as EncryptedSyntheticsSavedMonitor)?.id) { kibanaService.toasts.addSuccess({ title: MONITOR_SUCCESS_LABEL, toastLifeTimeMs: 3000, @@ -82,5 +82,5 @@ export const useSimpleMonitor = ({ monitorData }: { monitorData?: SimpleFormData } }, [application, data, status, dispatch, loading, refreshApp, serviceLocations]); - return { data: data as SyntheticsMonitorWithId, loading }; + return { data: data as EncryptedSyntheticsSavedMonitor, loading }; }; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/run_test_btn.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/run_test_btn.tsx index 448ec2f5ed3a45..4b73d71b90b094 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/run_test_btn.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_add_edit/form/run_test_btn.tsx @@ -13,14 +13,11 @@ import { v4 as uuidv4 } from 'uuid'; import { useFetcher } from '@kbn/observability-shared-plugin/public'; import { TestNowModeFlyout, TestRun } from '../../test_now_mode/test_now_mode_flyout'; import { format } from './formatter'; -import { - Locations, - MonitorFields as MonitorFieldsType, -} from '../../../../../../common/runtime_types'; +import { MonitorFields as MonitorFieldsType } from '../../../../../../common/runtime_types'; import { runOnceMonitor } from '../../../state/manual_test_runs/api'; export const RunTestButton = () => { - const { watch, formState, getValues, handleSubmit } = useFormContext(); + const { formState, getValues, handleSubmit } = useFormContext(); const [inProgress, setInProgress] = useState(false); const [testRun, setTestRun] = useState(); @@ -51,13 +48,7 @@ export const RunTestButton = () => { } }, [testRun?.id]); - const locations = watch('locations') as Locations; - - const { tooltipContent, isDisabled } = useTooltipContent( - locations, - formState.isValid, - inProgress - ); + const { tooltipContent, isDisabled } = useTooltipContent(formState.isValid, inProgress); return ( <> @@ -94,22 +85,12 @@ export const RunTestButton = () => { ); }; -const useTooltipContent = ( - locations: Locations, - isValid: boolean, - isTestRunInProgress?: boolean -) => { - const isAnyPublicLocationSelected = locations?.some((loc) => loc.isServiceManaged); - const isOnlyPrivateLocations = (locations?.length ?? 0) > 0 && !isAnyPublicLocationSelected; - - let tooltipContent = - isOnlyPrivateLocations || (isValid && !isAnyPublicLocationSelected) - ? PRIVATE_AVAILABLE_LABEL - : TEST_NOW_DESCRIPTION; +const useTooltipContent = (isValid: boolean, isTestRunInProgress?: boolean) => { + let tooltipContent = !isValid ? INVALID_DESCRIPTION : TEST_NOW_DESCRIPTION; tooltipContent = isTestRunInProgress ? TEST_SCHEDULED_LABEL : tooltipContent; - const isDisabled = isTestRunInProgress || !isAnyPublicLocationSelected; + const isDisabled = isTestRunInProgress || !isValid; return { tooltipContent, isDisabled }; }; @@ -118,6 +99,10 @@ const TEST_NOW_DESCRIPTION = i18n.translate('xpack.synthetics.testRun.descriptio defaultMessage: 'Test your monitor and verify the results before saving', }); +const INVALID_DESCRIPTION = i18n.translate('xpack.synthetics.testRun.invalid', { + defaultMessage: 'Monitor has to be valid to run test, please fix above required fields.', +}); + export const TEST_SCHEDULED_LABEL = i18n.translate( 'xpack.synthetics.monitorList.testNow.scheduled', { @@ -125,13 +110,6 @@ export const TEST_SCHEDULED_LABEL = i18n.translate( } ); -export const PRIVATE_AVAILABLE_LABEL = i18n.translate( - 'xpack.synthetics.app.testNow.available.private', - { - defaultMessage: `You can't manually start tests on a private location.`, - } -); - export const TEST_NOW_ARIA_LABEL = i18n.translate( 'xpack.synthetics.monitorList.testNow.AriaLabel', { diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_details_panel_container.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_details_panel_container.tsx index eac222b447825c..f5070253d6c5e7 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_details_panel_container.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/monitor_summary/monitor_details_panel_container.tsx @@ -24,10 +24,11 @@ export const MonitorDetailsPanelContainer = (props: Partial; } diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/run_test_manually.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/run_test_manually.tsx index 741d342da28755..55fb54dd0d0dcb 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/run_test_manually.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitor_details/run_test_manually.tsx @@ -9,39 +9,20 @@ import { EuiButton, EuiToolTip } from '@elastic/eui'; import React from 'react'; import { i18n } from '@kbn/i18n'; import { useDispatch, useSelector } from 'react-redux'; -import { - TEST_NOW_ARIA_LABEL, - TEST_SCHEDULED_LABEL, - PRIVATE_AVAILABLE_LABEL, -} from '../monitor_add_edit/form/run_test_btn'; +import { TEST_NOW_ARIA_LABEL, TEST_SCHEDULED_LABEL } from '../monitor_add_edit/form/run_test_btn'; import { useSelectedMonitor } from './hooks/use_selected_monitor'; import { manualTestMonitorAction, manualTestRunInProgressSelector, } from '../../state/manual_test_runs'; -import { useGetUrlParams } from '../../hooks/use_url_params'; export const RunTestManually = () => { const dispatch = useDispatch(); const { monitor } = useSelectedMonitor(); - - const hasPublicLocation = monitor?.locations.some((loc) => loc.isServiceManaged); - - const { locationId } = useGetUrlParams(); - - const isSelectedLocationPrivate = monitor?.locations.some( - (loc) => loc.isServiceManaged === false && loc.id === locationId - ); - const testInProgress = useSelector(manualTestRunInProgressSelector(monitor?.config_id)); - const content = - !hasPublicLocation || isSelectedLocationPrivate - ? PRIVATE_AVAILABLE_LABEL - : testInProgress - ? TEST_SCHEDULED_LABEL - : TEST_NOW_ARIA_LABEL; + const content = testInProgress ? TEST_SCHEDULED_LABEL : TEST_NOW_ARIA_LABEL; return ( @@ -49,7 +30,6 @@ export const RunTestManually = () => { data-test-subj="syntheticsRunTestManuallyButton" color="success" iconType="beaker" - isDisabled={!hasPublicLocation || isSelectedLocationPrivate} isLoading={!Boolean(monitor) || testInProgress} onClick={() => { if (monitor) { diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors.ts b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors.ts index 40507a99eefabd..6f370aea0554fb 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/hooks/use_inline_errors.ts @@ -9,7 +9,7 @@ import { useSelector } from 'react-redux'; import { useMemo } from 'react'; import { useEsSearch } from '@kbn/observability-shared-plugin/public'; import { selectEncryptedSyntheticsSavedMonitors } from '../../../state'; -import { Ping } from '../../../../../../common/runtime_types'; +import { ConfigKey, Ping } from '../../../../../../common/runtime_types'; import { EXCLUDE_RUN_ONCE_FILTER, getTimeSpanFilter, @@ -70,7 +70,7 @@ export function useInlineErrors({ const { lastRefresh } = useSyntheticsRefreshContext(); - const configIds = syntheticsMonitors.map((monitor) => monitor.id); + const configIds = syntheticsMonitors.map((monitor) => monitor[ConfigKey.CONFIG_ID]); const doFetch = configIds.length > 0 || onlyInvalidMonitors; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.tsx index 9348bae13b2536..2a6f71aeca9f23 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/actions_popover.tsx @@ -14,13 +14,11 @@ import { EuiPanel, EuiLoadingSpinner, EuiContextMenuPanelItemDescriptor, - EuiToolTip, } from '@elastic/eui'; import { FETCH_STATUS } from '@kbn/observability-shared-plugin/public'; import { useDispatch, useSelector } from 'react-redux'; import styled from 'styled-components'; import { toggleStatusAlert } from '../../../../../../../common/runtime_types/monitor_management/alert_config'; -import { PRIVATE_AVAILABLE_LABEL } from '../../../monitor_add_edit/form/run_test_btn'; import { manualTestMonitorAction, manualTestRunInProgressSelector, @@ -106,8 +104,6 @@ export function ActionsPopover({ const location = useLocationName({ locationId }); const locationName = location?.label || monitor.location.id; - const isPrivateLocation = !Boolean(location?.isServiceManaged); - const detailUrl = useMonitorDetailLocator({ configId: monitor.configId, locationId: locationId ?? monitor.location.id, @@ -176,15 +172,9 @@ export function ActionsPopover({ }, quickInspectPopoverItem, { - name: isPrivateLocation ? ( - - {runTestManually} - - ) : ( - runTestManually - ), + name: runTestManually, icon: 'beaker', - disabled: testInProgress || isPrivateLocation, + disabled: testInProgress, onClick: () => { dispatch(manualTestMonitorAction.get({ configId: monitor.configId, name: monitor.name })); dispatch(setFlyoutConfig(null)); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.tsx index af31b92805a21c..cb8da8a64cad64 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/overview/overview/monitor_detail_flyout.tsx @@ -251,7 +251,7 @@ export function MonitorDetailFlyout(props: Props) { const upsertSuccess = upsertStatus?.status === 'success'; const { - data: monitorSavedObject, + data: monitorObject, error, status, loading, @@ -262,7 +262,7 @@ export function MonitorDetailFlyout(props: Props) { const monitorDetail = useMonitorDetail(configId, props.location); const { locations } = useStatusByLocation({ configId, - monitorLocations: monitorSavedObject?.locations, + monitorLocations: monitorObject?.locations, }); const isOverlay = useIsWithinMaxBreakpoint('xl'); @@ -276,14 +276,14 @@ export function MonitorDetailFlyout(props: Props) { > {status === FETCH_STATUS.FAILURE && {error?.message}} {status === FETCH_STATUS.LOADING && } - {status === FETCH_STATUS.SUCCESS && monitorSavedObject && ( + {status === FETCH_STATUS.SUCCESS && monitorObject && ( <> -

{monitorSavedObject?.[ConfigKey.NAME]}

+

{monitorObject?.[ConfigKey.NAME]}

@@ -307,7 +307,7 @@ export function MonitorDetailFlyout(props: Props) { locations={locations} setCurrentLocation={setLocation} configId={configId} - monitor={monitorSavedObject} + monitor={monitorObject} onEnabledChange={props.onEnabledChange} />
@@ -320,10 +320,8 @@ export function MonitorDetailFlyout(props: Props) { latestPing={monitorDetail.data} configId={configId} monitor={{ - ...monitorSavedObject, + ...monitorObject, id, - updated_at: monitorSavedObject.updated_at!, - created_at: monitorSavedObject.created_at!, }} loading={Boolean(loading)} /> diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_run_once_errors.ts b/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_run_once_errors.ts index 36611914264db5..f4f3f4d98ccf8f 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_run_once_errors.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/hooks/use_run_once_errors.ts @@ -14,9 +14,7 @@ export function useRunOnceErrors({ serviceError, errors, locations, - showErrors = true, }: { - showErrors?: boolean; testRunId: string; serviceError?: Error; errors: ServiceLocationErrors; @@ -24,10 +22,6 @@ export function useRunOnceErrors({ }) { const [locationErrors, setLocationErrors] = useState([]); const [runOnceServiceError, setRunOnceServiceError] = useState(null); - const publicLocations = useMemo( - () => (locations ?? []).filter((loc) => loc.isServiceManaged), - [locations] - ); useEffect(() => { setLocationErrors([]); @@ -49,12 +43,12 @@ export function useRunOnceErrors({ }, [serviceError]); const locationsById: Record = useMemo( - () => (publicLocations as Locations).reduce((acc, cur) => ({ ...acc, [cur.id]: cur }), {}), - [publicLocations] + () => (locations as Locations).reduce((acc, cur) => ({ ...acc, [cur.id]: cur }), {}), + [locations] ); const expectPings = - publicLocations.length - (locationErrors ?? []).filter(({ locationId }) => !!locationId).length; + locations.length - (locationErrors ?? []).filter(({ locationId }) => !!locationId).length; const locationErrorReasons = useMemo(() => { return (locationErrors ?? []) @@ -64,7 +58,7 @@ export function useRunOnceErrors({ }, [locationErrors]); const hasBlockingError = !!runOnceServiceError || - (locationErrors?.length && locationErrors?.length === publicLocations.length); + (locationErrors?.length && locationErrors?.length === locations.length); const errorMessages = useMemo(() => { if (hasBlockingError) { diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/manual_test_run_mode.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/manual_test_run_mode.tsx index 986b975a031756..3bf9e8fd4bb079 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/manual_test_run_mode.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/manual_test_run_mode.tsx @@ -15,14 +15,11 @@ import { Locations } from '../../../../../../common/runtime_types'; export function ManualTestRunMode({ manualTestRun, onDone, - showErrors, }: { - showErrors: boolean; manualTestRun: ManualTestRun; onDone: (testRunId: string) => void; }) { const { expectPings } = useRunOnceErrors({ - showErrors, testRunId: manualTestRun.testRunId!, locations: (manualTestRun.monitor!.locations ?? []) as Locations, errors: manualTestRun.errors ?? [], diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout_container.tsx b/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout_container.tsx index ddf21c869c1a29..ff3114c98f845e 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout_container.tsx +++ b/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/test_now_mode_flyout_container.tsx @@ -83,7 +83,6 @@ export function TestNowModeFlyoutContainer() { key={manualTestRun.testRunId} manualTestRun={manualTestRun} onDone={onDone} - showErrors={flyoutOpenTestRun?.testRunId !== manualTestRun.testRunId} /> ))} {flyout} diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/index.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/index.ts index 09af66556532e0..ef319d13740b2f 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/index.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/index.ts @@ -19,3 +19,5 @@ export * from './overview'; export * from './browser_journey'; export * from './ping_status'; export * from './private_locations'; + +export type { UpsertMonitorResponse } from './monitor_management/api'; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_details/index.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_details/index.ts index 2cdd1eadcb27f6..af0ccf9046eea0 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_details/index.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_details/index.ts @@ -108,7 +108,7 @@ export const monitorDetailsReducer = createReducer(initialState, (builder) => { }) .addCase(enableMonitorAlertAction.success, (state, action) => { if ('updated_at' in action.payload && state.syntheticsMonitor) { - state.syntheticsMonitor = action.payload.attributes as EncryptedSyntheticsSavedMonitor; + state.syntheticsMonitor = action.payload; } }); }); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/actions.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/actions.ts index 67d7febba9fc3c..d15ea77d0d1a45 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/actions.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/actions.ts @@ -6,10 +6,11 @@ */ import { createAction } from '@reduxjs/toolkit'; -import { UpsertMonitorError, UpsertMonitorRequest, UpsertMonitorResponse } from '..'; +import { UpsertMonitorError, UpsertMonitorRequest } from '..'; import { MonitorManagementListResult, MonitorFiltersResult, + EncryptedSyntheticsSavedMonitor, } from '../../../../../common/runtime_types'; import { createAsyncAction } from '../utils/actions'; @@ -24,17 +25,16 @@ export const quietFetchMonitorListAction = createAction( ); export const fetchUpsertMonitorAction = createAction('fetchUpsertMonitor'); -export const fetchUpsertSuccessAction = createAction<{ - id: string; - attributes: { enabled: boolean }; -}>('fetchUpsertMonitorSuccess'); +export const fetchUpsertSuccessAction = createAction( + 'fetchUpsertMonitorSuccess' +); export const fetchUpsertFailureAction = createAction( 'fetchUpsertMonitorFailure' ); export const enableMonitorAlertAction = createAsyncAction< UpsertMonitorRequest, - UpsertMonitorResponse, + EncryptedSyntheticsSavedMonitor, UpsertMonitorError >('enableMonitorAlertAction'); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts index 47737966a5a12a..df23d80095fb7e 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/api.ts @@ -5,15 +5,14 @@ * 2.0. */ -import { SavedObject } from '@kbn/core-saved-objects-common'; import { UpsertMonitorRequest } from '..'; +import { UpsertMonitorResponse } from '../monitor_management/api'; import { SYNTHETICS_API_URLS } from '../../../../../common/constants'; import { EncryptedSyntheticsMonitor, FetchMonitorManagementListQueryArgs, MonitorManagementListResult, MonitorManagementListResultCodec, - ServiceLocationErrors, SyntheticsMonitor, MonitorFiltersResult, } from '../../../../../common/runtime_types'; @@ -56,10 +55,6 @@ export const fetchDeleteMonitor = async ({ configId }: { configId: string }): Pr return await apiService.delete(`${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}/${configId}`); }; -export type UpsertMonitorResponse = - | { attributes: { errors: ServiceLocationErrors }; id: string } - | SavedObject; - export const fetchUpsertMonitor = async ({ monitor, configId, @@ -75,7 +70,7 @@ export const createGettingStartedMonitor = async ({ monitor, }: { monitor: SyntheticsMonitor | EncryptedSyntheticsMonitor; -}): Promise<{ attributes: { errors: ServiceLocationErrors } } | SyntheticsMonitor> => { +}): Promise => { return await apiService.post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS, monitor, undefined, { gettingStarted: true, }); diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/effects.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/effects.ts index 693b4bc7e43318..0772a0a57c6e58 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/effects.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/effects.ts @@ -7,10 +7,9 @@ import { PayloadAction } from '@reduxjs/toolkit'; import { call, put, takeEvery, select, takeLatest, debounce } from 'redux-saga/effects'; -import { SavedObject } from '@kbn/core-saved-objects-common'; import { quietFetchOverviewStatusAction } from '../overview_status'; import { enableDefaultAlertingAction } from '../alert_rules'; -import { ConfigKey, SyntheticsMonitor } from '../../../../../common/runtime_types'; +import { ConfigKey, EncryptedSyntheticsSavedMonitor } from '../../../../../common/runtime_types'; import { kibanaService } from '../../../../utils/kibana_service'; import { MonitorOverviewPageState } from '../overview'; import { quietFetchOverviewAction } from '../overview/actions'; @@ -27,12 +26,8 @@ import { quietFetchMonitorListAction, fetchMonitorFiltersAction, } from './actions'; -import { - fetchMonitorManagementList, - fetchUpsertMonitor, - fetchMonitorFilters, - UpsertMonitorResponse, -} from './api'; +import { fetchMonitorManagementList, fetchUpsertMonitor, fetchMonitorFilters } from './api'; + import { toastTitle } from './toast_title'; import { UpsertMonitorRequest } from './models'; @@ -54,11 +49,10 @@ export function* enableMonitorAlertEffect() { function* (action: PayloadAction): Generator { try { const response = yield call(fetchUpsertMonitor, action.payload); - yield put(enableMonitorAlertAction.success(response as UpsertMonitorResponse)); + yield put(enableMonitorAlertAction.success(response as EncryptedSyntheticsSavedMonitor)); sendSuccessToast(action.payload.success); if ( - (response as SavedObject).attributes[ConfigKey.ALERT_CONFIG]?.status - ?.enabled + (response as EncryptedSyntheticsSavedMonitor)[ConfigKey.ALERT_CONFIG]?.status?.enabled ) { yield put(enableDefaultAlertingAction.get()); } @@ -81,9 +75,7 @@ export function* upsertMonitorEffect() { function* (action: PayloadAction): Generator { try { const response = yield call(fetchUpsertMonitor, action.payload); - yield put( - fetchUpsertSuccessAction(response as { id: string; attributes: { enabled: boolean } }) - ); + yield put(fetchUpsertSuccessAction(response as EncryptedSyntheticsSavedMonitor)); kibanaService.toasts.addSuccess({ title: toastTitle({ title: action.payload.success.message, diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/index.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/index.ts index 8865439e0dcc4d..f0668e74f48641 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/index.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/index.ts @@ -79,9 +79,9 @@ export const monitorListReducer = createReducer(initialState, (builder) => { }; }) .addCase(fetchUpsertSuccessAction, (state, action) => { - state.monitorUpsertStatuses[action.payload.id] = { + state.monitorUpsertStatuses[action.payload.config_id] = { status: FETCH_STATUS.SUCCESS, - enabled: action.payload.attributes.enabled, + enabled: action.payload.enabled, }; }) .addCase(fetchUpsertFailureAction, (state, action) => { @@ -94,15 +94,15 @@ export const monitorListReducer = createReducer(initialState, (builder) => { }; }) .addCase(enableMonitorAlertAction.success, (state, action) => { - state.monitorUpsertStatuses[action.payload.id] = { - ...state.monitorUpsertStatuses[action.payload.id], + state.monitorUpsertStatuses[action.payload.config_id] = { + ...state.monitorUpsertStatuses[action.payload.config_id], alertStatus: FETCH_STATUS.SUCCESS, }; if ('updated_at' in action.payload) { state.data.monitors = state.data.monitors.map( (monitor: any) => { - if (monitor.config_id === action.payload.id) { - return action.payload.attributes; + if (monitor.config_id === action.payload.config_id) { + return action.payload; } return monitor; } diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_management/api.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_management/api.ts index a397e6c0e09dac..e67e0b4905a00c 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_management/api.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_management/api.ts @@ -9,18 +9,19 @@ import { PackagePolicy } from '@kbn/fleet-plugin/common'; import { apiService } from '../../../../utils/api_service'; import { EncryptedSyntheticsMonitor, - ServiceLocationErrors, SyntheticsMonitor, - SyntheticsMonitorWithId, SyntheticsMonitorCodec, + ServiceLocationErrorsResponse, } from '../../../../../common/runtime_types'; import { SYNTHETICS_API_URLS } from '../../../../../common/constants'; +export type UpsertMonitorResponse = ServiceLocationErrorsResponse | EncryptedSyntheticsMonitor; + export const createMonitorAPI = async ({ monitor, }: { monitor: SyntheticsMonitor | EncryptedSyntheticsMonitor; -}): Promise<{ attributes: { errors: ServiceLocationErrors } } | SyntheticsMonitor> => { +}): Promise => { return await apiService.post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS, monitor); }; @@ -47,7 +48,7 @@ export const updateMonitorAPI = async ({ }: { monitor: SyntheticsMonitor | EncryptedSyntheticsMonitor; id: string; -}): Promise<{ attributes: { errors: ServiceLocationErrors } } | SyntheticsMonitorWithId> => { +}): Promise => { return await apiService.put(`${SYNTHETICS_API_URLS.SYNTHETICS_MONITORS}/${id}`, monitor); }; diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/overview/index.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/overview/index.ts index 2247ab5859e355..3f8038ffc84d38 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/overview/index.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/overview/index.ts @@ -70,13 +70,13 @@ export const monitorOverviewReducer = createReducer(initialState, (builder) => { state.flyoutConfig = action.payload; }) .addCase(enableMonitorAlertAction.success, (state, action) => { - const attrs = action.payload.attributes; - if (!('errors' in attrs)) { - const isStatusAlertEnabled = isStatusEnabled(attrs[ConfigKey.ALERT_CONFIG]); + const monitorObject = action.payload; + if (!('errors' in monitorObject)) { + const isStatusAlertEnabled = isStatusEnabled(monitorObject[ConfigKey.ALERT_CONFIG]); state.data.monitors = state.data.monitors.map((monitor) => { if ( - monitor.id === action.payload.id || - attrs[ConfigKey.MONITOR_QUERY_ID] === monitor.id + monitor.id === monitorObject[ConfigKey.CONFIG_ID] || + monitor.id === monitorObject[ConfigKey.MONITOR_QUERY_ID] ) { return { ...monitor, diff --git a/x-pack/plugins/synthetics/public/apps/synthetics/state/settings/api.ts b/x-pack/plugins/synthetics/public/apps/synthetics/state/settings/api.ts index da8855f531ef9d..b5430aae3239de 100644 --- a/x-pack/plugins/synthetics/public/apps/synthetics/state/settings/api.ts +++ b/x-pack/plugins/synthetics/public/apps/synthetics/state/settings/api.ts @@ -19,10 +19,10 @@ import { LocationMonitorsResponse, LocationMonitorsType, } from '../../../../../common/runtime_types'; -import { API_URLS, SYNTHETICS_API_URLS } from '../../../../../common/constants'; +import { SYNTHETICS_API_URLS } from '../../../../../common/constants'; import { LocationMonitor } from '.'; -const apiPath = API_URLS.DYNAMIC_SETTINGS; +const apiPath = SYNTHETICS_API_URLS.DYNAMIC_SETTINGS; interface SaveApiRequest { settings: DynamicSettings; @@ -51,7 +51,7 @@ export const fetchLocationMonitors = async (): Promise => { export type ActionConnector = Omit; export const fetchConnectors = async (): Promise => { - const response = (await apiService.get(API_URLS.RULE_CONNECTORS)) as Array< + const response = (await apiService.get(SYNTHETICS_API_URLS.RULE_CONNECTORS)) as Array< AsApiContract >; return response.map( @@ -76,7 +76,7 @@ export const fetchConnectors = async (): Promise => { }; export const fetchActionTypes = async (): Promise => { - const response = (await apiService.get(API_URLS.CONNECTOR_TYPES, { + const response = (await apiService.get(SYNTHETICS_API_URLS.CONNECTOR_TYPES, { feature_id: 'uptime', })) as Array>; return response.map( diff --git a/x-pack/plugins/synthetics/server/feature.ts b/x-pack/plugins/synthetics/server/feature.ts index ac5bce8a6b790d..265def5c3fa013 100644 --- a/x-pack/plugins/synthetics/server/feature.ts +++ b/x-pack/plugins/synthetics/server/feature.ts @@ -10,10 +10,15 @@ import { syntheticsMonitorType, syntheticsParamType } from '../common/types/save import { SYNTHETICS_RULE_TYPES } from '../common/constants/synthetics_alerts'; import { privateLocationsSavedObjectName } from '../common/saved_objects/private_locations'; import { PLUGIN } from '../common/constants/plugin'; -import { UPTIME_RULE_TYPES } from '../common/constants/uptime_alerts'; import { settingsObjectType } from './saved_objects/uptime_settings'; import { syntheticsApiKeyObjectType } from './saved_objects/service_api_key'; +const UPTIME_RULE_TYPES = [ + 'xpack.uptime.alerts.tls', + 'xpack.uptime.alerts.tlsCertificate', + 'xpack.uptime.alerts.monitorStatus', + 'xpack.uptime.alerts.durationAnomaly', +]; export const uptimeFeature = { id: PLUGIN.ID, name: PLUGIN.NAME, diff --git a/x-pack/plugins/synthetics/server/lib.ts b/x-pack/plugins/synthetics/server/lib.ts index 9a7c280d3434eb..4dc06bc7b9674f 100644 --- a/x-pack/plugins/synthetics/server/lib.ts +++ b/x-pack/plugins/synthetics/server/lib.ts @@ -18,7 +18,7 @@ import { RequestStatus } from '@kbn/inspector-plugin/common'; import { InspectResponse } from '@kbn/observability-plugin/typings/common'; import { enableInspectEsQueries } from '@kbn/observability-plugin/common'; import { getInspectResponse } from '@kbn/observability-shared-plugin/common'; -import { API_URLS } from '../common/constants'; +import { SYNTHETICS_API_URLS } from '../common/constants'; import { SyntheticsServerSetup } from './types'; import { savedObjectsAdapter } from './saved_objects/saved_objects'; @@ -168,7 +168,7 @@ export class UptimeEsClient { async getInspectData(path: string) { const isInspectorEnabled = await this.getInspectEnabled(); const showInspectData = - (isInspectorEnabled || this.isDev) && path !== API_URLS.DYNAMIC_SETTINGS; + (isInspectorEnabled || this.isDev) && path !== SYNTHETICS_API_URLS.DYNAMIC_SETTINGS; if (showInspectData) { return { _inspect: this.inspectableEsQueries }; diff --git a/x-pack/plugins/synthetics/server/plugin.ts b/x-pack/plugins/synthetics/server/plugin.ts index d308dccab20936..e35ea0f9549bcb 100644 --- a/x-pack/plugins/synthetics/server/plugin.ts +++ b/x-pack/plugins/synthetics/server/plugin.ts @@ -104,6 +104,7 @@ export class Plugin implements PluginType { if (this.server) { this.server.coreStart = coreStart; + this.server.pluginsStart = pluginsStart; this.server.security = pluginsStart.security; this.server.fleet = pluginsStart.fleet; this.server.encryptedSavedObjects = pluginsStart.encryptedSavedObjects; diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor.ts index 107c3d0bfb560c..3db44c1a6c0c40 100644 --- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor.ts +++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/add_monitor.ts @@ -37,6 +37,7 @@ import { validateMonitor } from './monitor_validation'; import { sendTelemetryEvents, formatTelemetryEvent } from '../telemetry/monitor_upgrade_sender'; import { formatSecrets } from '../../synthetics_service/utils/secrets'; import { deleteMonitor } from './delete_monitor'; +import { mapSavedObjectToMonitor } from './helper'; export const addSyntheticsMonitorRoute: SyntheticsRestApiRouteFactory = () => ({ method: 'POST', @@ -96,7 +97,7 @@ export const addSyntheticsMonitorRoute: SyntheticsRestApiRouteFactory = () => ({ initDefaultAlerts(newMonitor.attributes.name, routeContext); setupGettingStarted(newMonitor.id, routeContext); - return response.ok({ body: newMonitor }); + return response.ok({ body: mapSavedObjectToMonitor(newMonitor) }); } catch (getErr) { server.logger.error(getErr); if (SavedObjectsErrorHelpers.isForbiddenError(getErr)) { @@ -173,7 +174,7 @@ export const syncNewMonitor = async ({ routeContext: RouteContext; privateLocations: PrivateLocationAttributes[]; }) => { - const { savedObjectsClient, server, syntheticsMonitorClient, request, spaceId } = routeContext; + const { savedObjectsClient, server, syntheticsMonitorClient, spaceId } = routeContext; const newMonitorId = id ?? uuidV4(); let monitorSavedObject: SavedObject | null = null; @@ -192,7 +193,6 @@ export const syncNewMonitor = async ({ const syncErrorsPromise = syntheticsMonitorClient.addMonitors( [{ monitor: monitorWithNamespace as MonitorFields, id: newMonitorId }], - request, savedObjectsClient, privateLocations, spaceId diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/add_monitor_bulk.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/add_monitor_bulk.ts index bc83c6356a67dd..5f7a0a10ab66a1 100644 --- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/add_monitor_bulk.ts +++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/add_monitor_bulk.ts @@ -64,7 +64,7 @@ export const syncNewMonitorBulk = async ({ privateLocations: PrivateLocationAttributes[]; spaceId: string; }) => { - const { server, savedObjectsClient, syntheticsMonitorClient, request } = routeContext; + const { server, savedObjectsClient, syntheticsMonitorClient } = routeContext; let newMonitors: CreatedMonitors | null = null; const monitorsToCreate = normalizedMonitors.map((monitor) => { @@ -88,7 +88,6 @@ export const syncNewMonitorBulk = async ({ }), syntheticsMonitorClient.addMonitors( monitorsToCreate, - request, savedObjectsClient, privateLocations, spaceId diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/delete_monitor_bulk.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/delete_monitor_bulk.ts index de35d48f62e204..7df12b17b60921 100644 --- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/delete_monitor_bulk.ts +++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/bulk_cruds/delete_monitor_bulk.ts @@ -47,7 +47,6 @@ export const deleteMonitorBulk = async ({ ...normalizedMonitor.attributes, id: normalizedMonitor.attributes[ConfigKey.MONITOR_QUERY_ID], })) as SyntheticsMonitorWithId[], - request, savedObjectsClient, spaceId ); diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/delete_monitor.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/delete_monitor.ts index ed223bca944b3c..4841ca581c0773 100644 --- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/delete_monitor.ts +++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/delete_monitor.ts @@ -68,7 +68,7 @@ export const deleteMonitor = async ({ routeContext: RouteContext; monitorId: string; }) => { - const { spaceId, savedObjectsClient, server, syntheticsMonitorClient, request } = routeContext; + const { spaceId, savedObjectsClient, server, syntheticsMonitorClient } = routeContext; const { logger, telemetry, stackVersion } = server; const { monitor, monitorWithSecret } = await getMonitorToDelete( @@ -92,7 +92,6 @@ export const deleteMonitor = async ({ /* Type cast encrypted saved objects to decrypted saved objects for delete flow only. * Deletion does not require all monitor fields */ ] as SyntheticsMonitorWithId[], - request, savedObjectsClient, spaceId ); diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts index ac50f1b48d0192..d99261b49f2cf0 100644 --- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts +++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/edit_monitor.ts @@ -27,6 +27,7 @@ import { formatTelemetryUpdateEvent, } from '../telemetry/monitor_upgrade_sender'; import { formatSecrets, normalizeSecrets } from '../../synthetics_service/utils/secrets'; +import { mapSavedObjectToMonitor } from './helper'; // Simplify return promise type and type it with runtime_types export const editSyntheticsMonitorRoute: SyntheticsRestApiRouteFactory = () => ({ @@ -113,7 +114,9 @@ export const editSyntheticsMonitorRoute: SyntheticsRestApiRouteFactory = () => ( }); } - return editedMonitorSavedObject; + return mapSavedObjectToMonitor( + editedMonitorSavedObject as SavedObject + ); } catch (updateErr) { if (SavedObjectsErrorHelpers.isNotFoundError(updateErr)) { return getMonitorNotFoundResponse(response, monitorId); diff --git a/x-pack/plugins/synthetics/server/routes/settings/sync_global_params.ts b/x-pack/plugins/synthetics/server/routes/settings/sync_global_params.ts index f56f2ae14d6946..4064a706c6a39a 100644 --- a/x-pack/plugins/synthetics/server/routes/settings/sync_global_params.ts +++ b/x-pack/plugins/synthetics/server/routes/settings/sync_global_params.ts @@ -26,7 +26,6 @@ export const syncParamsSyntheticsParamsRoute: SyntheticsRestApiRouteFactory = () const allPrivateLocations = await getPrivateLocations(savedObjectsClient); await syntheticsMonitorClient.syncGlobalParams({ - request, spaceId, allPrivateLocations, encryptedSavedObjects: server.encryptedSavedObjects, diff --git a/x-pack/plugins/synthetics/server/routes/synthetics_service/run_once_monitor.ts b/x-pack/plugins/synthetics/server/routes/synthetics_service/run_once_monitor.ts index b87848a2b71ba7..be57e38b7978b8 100644 --- a/x-pack/plugins/synthetics/server/routes/synthetics_service/run_once_monitor.ts +++ b/x-pack/plugins/synthetics/server/routes/synthetics_service/run_once_monitor.ts @@ -6,6 +6,8 @@ */ import { schema } from '@kbn/config-schema'; import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; +import { PrivateLocationAttributes } from '../../runtime_types/private_locations'; +import { getPrivateLocationsForMonitor } from '../monitor_cruds/add_monitor'; import { SyntheticsRestApiRouteFactory } from '../types'; import { MonitorFields } from '../../../common/runtime_types'; import { SYNTHETICS_API_URLS } from '../../../common/constants'; @@ -20,7 +22,13 @@ export const runOnceSyntheticsMonitorRoute: SyntheticsRestApiRouteFactory = () = monitorId: schema.string({ minLength: 1, maxLength: 1024 }), }), }, - handler: async ({ request, response, server, syntheticsMonitorClient }): Promise => { + handler: async ({ + request, + response, + server, + syntheticsMonitorClient, + savedObjectsClient, + }): Promise => { const monitor = request.body as MonitorFields; const { monitorId } = request.params; @@ -33,19 +41,22 @@ export const runOnceSyntheticsMonitorRoute: SyntheticsRestApiRouteFactory = () = return response.badRequest({ body: { message, attributes: { details, ...payload } } }); } - const { syntheticsService } = syntheticsMonitorClient; + const privateLocations: PrivateLocationAttributes[] = await getPrivateLocationsForMonitor( + savedObjectsClient, + validationResult.decodedMonitor + ); - const paramsBySpace = await syntheticsService.getSyntheticsParams({ spaceId }); - - const errors = await syntheticsService.runOnceConfigs({ - // making it enabled, even if it's disabled in the UI - monitor: { ...validationResult.decodedMonitor, enabled: true }, - configId: monitorId, - heartbeatId: monitorId, - runOnce: true, - testRunId: monitorId, - params: paramsBySpace[spaceId], - }); + const [, errors] = await syntheticsMonitorClient.testNowConfigs( + { + monitor: { ...validationResult.decodedMonitor, config_id: monitorId } as MonitorFields, + id: monitorId, + testRunId: monitorId, + }, + savedObjectsClient, + privateLocations, + spaceId, + true + ); if (errors) { return { errors }; diff --git a/x-pack/plugins/synthetics/server/routes/synthetics_service/test_now_monitor.ts b/x-pack/plugins/synthetics/server/routes/synthetics_service/test_now_monitor.ts index 6515562a361736..08c4f8dbebb3c5 100644 --- a/x-pack/plugins/synthetics/server/routes/synthetics_service/test_now_monitor.ts +++ b/x-pack/plugins/synthetics/server/routes/synthetics_service/test_now_monitor.ts @@ -6,14 +6,12 @@ */ import { schema } from '@kbn/config-schema'; import { v4 as uuidv4 } from 'uuid'; +import { getDecryptedMonitor } from '../../saved_objects/synthetics_monitor'; +import { PrivateLocationAttributes } from '../../runtime_types/private_locations'; +import { getPrivateLocationsForMonitor } from '../monitor_cruds/add_monitor'; import { RouteContext, SyntheticsRestApiRouteFactory } from '../types'; -import { syntheticsMonitorType } from '../../../common/types/saved_objects'; import { TestNowResponse } from '../../../common/types'; -import { - ConfigKey, - MonitorFields, - SyntheticsMonitorWithSecretsAttributes, -} from '../../../common/runtime_types'; +import { ConfigKey, MonitorFields } from '../../../common/runtime_types'; import { SYNTHETICS_API_URLS } from '../../../common/constants'; import { normalizeSecrets } from '../../synthetics_service/utils/secrets'; @@ -33,37 +31,32 @@ export const testNowMonitorRoute: SyntheticsRestApiRouteFactory export const triggerTestNow = async ( monitorId: string, - { server, spaceId, syntheticsMonitorClient }: RouteContext + routeContext: RouteContext ): Promise => { - const encryptedClient = server.encryptedSavedObjects.getClient(); + const { server, spaceId, syntheticsMonitorClient, savedObjectsClient } = routeContext; - const monitorWithSecrets = - await encryptedClient.getDecryptedAsInternalUser( - syntheticsMonitorType, - monitorId, - { - namespace: spaceId, - } - ); + const monitorWithSecrets = await getDecryptedMonitor(server, monitorId, spaceId); const normalizedMonitor = normalizeSecrets(monitorWithSecrets); const { [ConfigKey.SCHEDULE]: schedule, [ConfigKey.LOCATIONS]: locations } = monitorWithSecrets.attributes; - const { syntheticsService } = syntheticsMonitorClient; - + const privateLocations: PrivateLocationAttributes[] = await getPrivateLocationsForMonitor( + savedObjectsClient, + normalizedMonitor.attributes + ); const testRunId = uuidv4(); - const paramsBySpace = await syntheticsService.getSyntheticsParams({ spaceId }); - - const errors = await syntheticsService.runOnceConfigs({ - // making it enabled, even if it's disabled in the UI - monitor: { ...normalizedMonitor.attributes, enabled: true }, - configId: monitorId, - heartbeatId: (normalizedMonitor.attributes as MonitorFields)[ConfigKey.MONITOR_QUERY_ID], - testRunId, - params: paramsBySpace[spaceId], - }); + const [, errors] = await syntheticsMonitorClient.testNowConfigs( + { + monitor: normalizedMonitor.attributes as MonitorFields, + id: monitorId, + testRunId, + }, + savedObjectsClient, + privateLocations, + spaceId + ); if (errors && errors?.length > 0) { return { diff --git a/x-pack/plugins/synthetics/server/saved_objects/synthetics_monitor.ts b/x-pack/plugins/synthetics/server/saved_objects/synthetics_monitor.ts index c5bd20b4c968b7..de2296947e1824 100644 --- a/x-pack/plugins/synthetics/server/saved_objects/synthetics_monitor.ts +++ b/x-pack/plugins/synthetics/server/saved_objects/synthetics_monitor.ts @@ -7,8 +7,10 @@ import { EncryptedSavedObjectsPluginSetup } from '@kbn/encrypted-saved-objects-plugin/server'; import { SavedObjectsType } from '@kbn/core/server'; import { i18n } from '@kbn/i18n'; +import { SyntheticsMonitorWithSecretsAttributes } from '../../common/runtime_types'; +import { SyntheticsServerSetup } from '../types'; import { syntheticsMonitorType } from '../../common/types/saved_objects'; -import { secretKeys, ConfigKey, LegacyConfigKey } from '../../common/constants/monitor_management'; +import { ConfigKey, LegacyConfigKey, secretKeys } from '../../common/constants/monitor_management'; import { monitorMigrations } from './migrations/monitors'; const legacyConfigKeys = Object.values(LegacyConfigKey); @@ -194,3 +196,19 @@ export const getSyntheticsMonitorSavedObjectType = ( }, }; }; + +export const getDecryptedMonitor = async ( + server: SyntheticsServerSetup, + monitorId: string, + spaceId: string +) => { + const encryptedClient = server.encryptedSavedObjects.getClient(); + + return await encryptedClient.getDecryptedAsInternalUser( + syntheticsMonitorType, + monitorId, + { + namespace: spaceId, + } + ); +}; diff --git a/x-pack/plugins/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.ts b/x-pack/plugins/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.ts index 2c42be64e5a1a8..19df7c70a86c08 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/formatters/private_formatters/format_synthetics_policy.ts @@ -23,6 +23,9 @@ export const formatSyntheticsPolicy = ( location_id: string; 'monitor.project.name': string; 'monitor.project.id': string; + 'monitor.id': string; + test_run_id: string; + run_once: boolean; } >, params: Record, diff --git a/x-pack/plugins/synthetics/server/synthetics_service/private_location/clean_up_task.ts b/x-pack/plugins/synthetics/server/synthetics_service/private_location/clean_up_task.ts new file mode 100644 index 00000000000000..7fdc4b7fa1605d --- /dev/null +++ b/x-pack/plugins/synthetics/server/synthetics_service/private_location/clean_up_task.ts @@ -0,0 +1,138 @@ +/* + * 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 { ConcreteTaskInstance, TaskManagerSetupContract } from '@kbn/task-manager-plugin/server'; +import moment from 'moment'; +import { + BROWSER_TEST_NOW_RUN, + LIGHTWEIGHT_TEST_NOW_RUN, +} from '../synthetics_monitor/synthetics_monitor_client'; +import { SyntheticsServerSetup } from '../../types'; + +const SYNTHETICS_SERVICE_CLEAN_UP_TASK_TYPE = 'Synthetics:Clean-Up-Package-Policies'; +const SYNTHETICS_SERVICE_CLEAN_UP_TASK_ID = 'SyntheticsService:clean-up-package-policies-task-id'; +const SYNTHETICS_SERVICE_CLEAN_UP_INTERVAL_DEFAULT = '60m'; +const DELETE_BROWSER_MINUTES = 15; +const DELETE_LIGHTWEIGHT_MINUTES = 2; + +export const registerCleanUpTask = ( + taskManager: TaskManagerSetupContract, + serverSetup: SyntheticsServerSetup +) => { + const { logger } = serverSetup; + const interval = SYNTHETICS_SERVICE_CLEAN_UP_INTERVAL_DEFAULT; + + taskManager.registerTaskDefinitions({ + [SYNTHETICS_SERVICE_CLEAN_UP_TASK_TYPE]: { + title: 'Synthetics Plugin Clean Up Task', + description: 'This task which runs periodically to clean up run once monitors.', + timeout: '1m', + maxAttempts: 3, + + createTaskRunner: ({ taskInstance }: { taskInstance: ConcreteTaskInstance }) => { + return { + // Perform the work of the task. The return value should fit the TaskResult interface. + async run() { + logger.info( + `Executing synthetics clean up task: ${SYNTHETICS_SERVICE_CLEAN_UP_TASK_ID}` + ); + const { state } = taskInstance; + try { + const esClient = serverSetup.coreStart?.elasticsearch?.client.asInternalUser; + if (esClient) { + const { fleet } = serverSetup.pluginsStart; + const { savedObjects } = serverSetup.coreStart; + const soClient = savedObjects.createInternalRepository(); + + const { items } = await fleet.packagePolicyService.list(soClient, { + kuery: getFilterForTestNowRun(), + }); + + const allItems = items.map((item) => { + const minutesAgo = moment().diff(moment(item.created_at), 'minutes'); + const isBrowser = item.name === BROWSER_TEST_NOW_RUN; + if (isBrowser) { + return { + isBrowser: true, + id: item.id, + shouldDelete: minutesAgo > DELETE_BROWSER_MINUTES, + }; + } else { + return { + isBrowser: false, + id: item.id, + shouldDelete: minutesAgo > DELETE_LIGHTWEIGHT_MINUTES, + }; + } + }); + const toDelete = allItems.filter((item) => item.shouldDelete); + if (toDelete.length > 0) { + await fleet.packagePolicyService.delete( + soClient, + esClient, + toDelete.map((item) => item.id), + { + force: true, + } + ); + } + const remaining = allItems.filter((item) => !item.shouldDelete); + if (remaining.length === 0) { + return { state, schedule: { interval: '24h' } }; + } else { + return { state, schedule: { interval: '15m' } }; + } + } + } catch (e) { + logger.error(e); + } + + return { state, schedule: { interval } }; + }, + }; + }, + }, + }); +}; + +export const scheduleCleanUpTask = async ({ logger, pluginsStart }: SyntheticsServerSetup) => { + const interval = SYNTHETICS_SERVICE_CLEAN_UP_INTERVAL_DEFAULT; + + try { + const taskInstance = await pluginsStart.taskManager.ensureScheduled({ + id: SYNTHETICS_SERVICE_CLEAN_UP_TASK_ID, + taskType: SYNTHETICS_SERVICE_CLEAN_UP_TASK_TYPE, + schedule: { + interval, + }, + params: {}, + state: {}, + scope: ['uptime'], + }); + + logger?.info( + `Task ${SYNTHETICS_SERVICE_CLEAN_UP_TASK_ID} scheduled with interval ${taskInstance.schedule?.interval}.` + ); + + await pluginsStart.taskManager.runSoon(SYNTHETICS_SERVICE_CLEAN_UP_TASK_ID); + } catch (e) { + logger?.error(e); + logger?.error( + `Error running synthetics clean up task: ${SYNTHETICS_SERVICE_CLEAN_UP_TASK_ID}, ${e?.message}` + ); + } +}; + +const getFilterForTestNowRun = () => { + const pkg = 'ingest-package-policies'; + + let filter = `${pkg}.package.name:synthetics and ${pkg}.is_managed:true`; + const lightweight = `${pkg}.name: ${LIGHTWEIGHT_TEST_NOW_RUN}`; + const browser = `${pkg}.name: ${BROWSER_TEST_NOW_RUN}`; + filter = `${filter} and (${lightweight} or ${browser})`; + return filter; +}; diff --git a/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.test.ts b/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.test.ts index 3c7f33a5723ebf..87398936e1543e 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.test.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.test.ts @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { KibanaRequest, SavedObjectsClientContract } from '@kbn/core/server'; +import { SavedObjectsClientContract } from '@kbn/core/server'; import { loggerMock } from '@kbn/logging-mocks'; import { DataStream, @@ -93,7 +93,6 @@ describe('SyntheticsPrivateLocation', () => { try { await syntheticsPrivateLocation.createPackagePolicies( [{ config: testConfig, globalParams: {} }], - {} as unknown as KibanaRequest, [mockPrivateLocation], 'test-space' ); @@ -116,7 +115,6 @@ describe('SyntheticsPrivateLocation', () => { try { await syntheticsPrivateLocation.editMonitors( [{ config: testConfig, globalParams: {} }], - {} as unknown as KibanaRequest, [mockPrivateLocation], 'test-space' ); @@ -152,11 +150,7 @@ describe('SyntheticsPrivateLocation', () => { }, }); try { - await syntheticsPrivateLocation.deleteMonitors( - [testConfig], - {} as unknown as KibanaRequest, - 'test-space' - ); + await syntheticsPrivateLocation.deleteMonitors([testConfig], 'test-space'); } catch (e) { expect(e).toEqual(new Error(error)); } diff --git a/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts b/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts index e38c3c1aba7e48..8ed63f0539eedc 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/private_location/synthetics_private_location.ts @@ -4,11 +4,15 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { KibanaRequest } from '@kbn/core/server'; import { NewPackagePolicy } from '@kbn/fleet-plugin/common'; import { NewPackagePolicyWithId } from '@kbn/fleet-plugin/server/services/package_policy'; import { cloneDeep } from 'lodash'; import { SavedObjectError } from '@kbn/core-saved-objects-common'; +import { + BROWSER_TEST_NOW_RUN, + LIGHTWEIGHT_TEST_NOW_RUN, +} from '../synthetics_monitor/synthetics_monitor_client'; +import { scheduleCleanUpTask } from './clean_up_task'; import { getAgentPoliciesAsInternalUser } from '../../routes/settings/private_locations/get_agent_policies'; import { SyntheticsServerSetup } from '../../types'; import { formatSyntheticsPolicy } from '../formatters/private_formatters/format_synthetics_policy'; @@ -67,7 +71,9 @@ export class SyntheticsPrivateLocation { privateLocation: PrivateLocationAttributes, newPolicyTemplate: NewPackagePolicy, spaceId: string, - globalParams: Record + globalParams: Record, + testRunId?: string, + runOnce?: boolean ): (NewPackagePolicy & { policy_id: string }) | null { const { label: locName } = privateLocation; @@ -76,10 +82,15 @@ export class SyntheticsPrivateLocation { try { newPolicy.is_managed = true; newPolicy.policy_id = privateLocation.agentPolicyId; - if (config[ConfigKey.MONITOR_SOURCE_TYPE] === SourceType.PROJECT) { - newPolicy.name = `${config.id}-${locName}`; + if (testRunId) { + newPolicy.name = + config.type === 'browser' ? BROWSER_TEST_NOW_RUN : LIGHTWEIGHT_TEST_NOW_RUN; } else { - newPolicy.name = `${config[ConfigKey.NAME]}-${locName}-${spaceId}`; + if (config[ConfigKey.MONITOR_SOURCE_TYPE] === SourceType.PROJECT) { + newPolicy.name = `${config.id}-${locName}`; + } else { + newPolicy.name = `${config[ConfigKey.NAME]}-${locName}-${spaceId}`; + } } newPolicy.namespace = config[ConfigKey.NAMESPACE]; @@ -91,8 +102,20 @@ export class SyntheticsPrivateLocation { config_id: config.fields?.config_id, location_name: stringifyString(privateLocation.label), location_id: privateLocation.id, - 'monitor.project.id': stringifyString(config.fields?.['monitor.project.name']), - 'monitor.project.name': stringifyString(config.fields?.['monitor.project.name']), + 'monitor.project.id': stringifyString( + config.fields?.['monitor.project.id'] ?? config[ConfigKey.PROJECT_ID] + ), + 'monitor.project.name': stringifyString( + config.fields?.['monitor.project.name'] ?? config[ConfigKey.PROJECT_ID] + ), + ...(testRunId + ? { + test_run_id: testRunId, + 'monitor.id': config[ConfigKey.MONITOR_QUERY_ID], + id: testRunId, + } + : {}), + ...(runOnce ? { run_once: runOnce } : {}), }, globalParams ); @@ -106,27 +129,25 @@ export class SyntheticsPrivateLocation { async createPackagePolicies( configs: PrivateConfig[], - request: KibanaRequest, privateLocations: PrivateLocationAttributes[], - spaceId: string + spaceId: string, + testRunId?: string, + runOnce?: boolean ) { if (configs.length === 0) { return { created: [], failed: [] }; } const newPolicies: NewPackagePolicyWithId[] = []; - const newPolicyTemplate = await this.buildNewPolicy(); for (const { config, globalParams } of configs) { try { const { locations } = config; - const fleetManagedLocations = locations.filter((loc) => !loc.isServiceManaged); for (const privateLocation of fleetManagedLocations) { const location = privateLocations?.find((loc) => loc.id === privateLocation.id)!; - if (!location) { throw new Error( `Unable to find Synthetics private location for agentId ${privateLocation.id}` @@ -138,7 +159,9 @@ export class SyntheticsPrivateLocation { location, newPolicyTemplate, spaceId, - globalParams + globalParams, + testRunId, + runOnce ); if (!newPolicy) { @@ -149,7 +172,14 @@ export class SyntheticsPrivateLocation { ); } if (newPolicy) { - newPolicies.push({ ...newPolicy, id: this.getPolicyId(config, location.id, spaceId) }); + if (testRunId) { + newPolicies.push(newPolicy as NewPackagePolicyWithId); + } else { + newPolicies.push({ + ...newPolicy, + id: this.getPolicyId(config, location.id, spaceId), + }); + } } } } catch (e) { @@ -163,7 +193,12 @@ export class SyntheticsPrivateLocation { } try { - return await this.createPolicyBulk(newPolicies); + const result = await this.createPolicyBulk(newPolicies); + if (result?.created && result?.created?.length > 0 && testRunId) { + // ignore await here, we don't want to wait for this to finish + scheduleCleanUpTask(this.server); + } + return result; } catch (e) { this.server.logger.error(e); throw e; @@ -215,7 +250,6 @@ export class SyntheticsPrivateLocation { async editMonitors( configs: Array<{ config: HeartbeatConfig; globalParams: Record }>, - request: KibanaRequest, allPrivateLocations: PrivateLocationAttributes[], spaceId: string ) { @@ -354,18 +388,22 @@ export class SyntheticsPrivateLocation { const soClient = this.server.coreStart.savedObjects.createInternalRepository(); const esClient = this.server.uptimeEsClient.baseESClient; if (soClient && esClient && policyIdsToDelete.length > 0) { - return await this.server.fleet.packagePolicyService.delete( - soClient, - esClient, - policyIdsToDelete, - { - force: true, - } - ); + try { + return await this.server.fleet.packagePolicyService.delete( + soClient, + esClient, + policyIdsToDelete, + { + force: true, + } + ); + } catch (e) { + this.server.logger.error(e); + } } } - async deleteMonitors(configs: HeartbeatConfig[], request: KibanaRequest, spaceId: string) { + async deleteMonitors(configs: HeartbeatConfig[], spaceId: string) { const soClient = this.server.coreStart.savedObjects.createInternalRepository(); const esClient = this.server.uptimeEsClient.baseESClient; @@ -376,12 +414,7 @@ export class SyntheticsPrivateLocation { const monitorPrivateLocations = locations.filter((loc) => !loc.isServiceManaged); for (const privateLocation of monitorPrivateLocations) { - try { - policyIdsToDelete.push(this.getPolicyId(config, privateLocation.id, spaceId)); - } catch (e) { - this.server.logger.error(e); - throw new Error(deletePolicyError(config[ConfigKey.NAME], privateLocation.label)); - } + policyIdsToDelete.push(this.getPolicyId(config, privateLocation.id, spaceId)); } } if (policyIdsToDelete.length > 0) { @@ -393,7 +426,9 @@ export class SyntheticsPrivateLocation { force: true, } ); - const failedPolicies = result?.filter((policy) => !policy.success); + const failedPolicies = result?.filter((policy) => { + return !policy.success && policy?.statusCode !== 404; + }); if (failedPolicies?.length === policyIdsToDelete.length) { throw new Error(deletePolicyError(configs[0][ConfigKey.NAME])); } diff --git a/x-pack/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.test.ts b/x-pack/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.test.ts index bcda186237d09f..50a3284c76e3c8 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.test.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.test.ts @@ -133,7 +133,6 @@ describe('SyntheticsMonitorClient', () => { await client.addMonitors( [{ monitor, id }], - mockRequest, savedObjectsClientMock, privateLocations, 'test-space' @@ -223,7 +222,6 @@ describe('SyntheticsMonitorClient', () => { await client.deleteMonitors( [monitor as unknown as SyntheticsMonitorWithId], - mockRequest, savedObjectsClientMock, 'test-space' ); diff --git a/x-pack/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.ts b/x-pack/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.ts index 2af1c2ff2ef606..c5c158c750bebf 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/synthetics_monitor/synthetics_monitor_client.ts @@ -4,12 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { - KibanaRequest, - SavedObject, - SavedObjectsClientContract, - SavedObjectsFindResult, -} from '@kbn/core/server'; +import { SavedObject, SavedObjectsClientContract, SavedObjectsFindResult } from '@kbn/core/server'; import { EncryptedSavedObjectsPluginStart } from '@kbn/encrypted-saved-objects-plugin/server'; import { RouteContext } from '../../routes/types'; import { SyntheticsServerSetup } from '../../types'; @@ -21,10 +16,12 @@ import { } from '../private_location/synthetics_private_location'; import { SyntheticsService } from '../synthetics_service'; import { + ConfigKey, EncryptedSyntheticsMonitorAttributes, HeartbeatConfig, MonitorFields, MonitorServiceLocation, + ScheduleUnit, SyntheticsMonitorWithId, SyntheticsMonitorWithSecretsAttributes, } from '../../../common/runtime_types'; @@ -34,19 +31,23 @@ import { mixParamsWithGlobalParams, } from '../formatters/public_formatters/format_configs'; import type { PrivateLocationAttributes } from '../../runtime_types/private_locations'; +export const LIGHTWEIGHT_TEST_NOW_RUN = 'LIGHTWEIGHT_SYNTHETICS_TEST_NOW_RUN'; +export const BROWSER_TEST_NOW_RUN = 'BROWSER_SYNTHETICS_TEST_NOW_RUN'; +const LONG_TIME_MONTH = '43800'; export class SyntheticsMonitorClient { + public server: SyntheticsServerSetup; public syntheticsService: SyntheticsService; public privateLocationAPI: SyntheticsPrivateLocation; constructor(syntheticsService: SyntheticsService, server: SyntheticsServerSetup) { + this.server = server; this.syntheticsService = syntheticsService; this.privateLocationAPI = new SyntheticsPrivateLocation(server); } async addMonitors( monitors: Array<{ monitor: MonitorFields; id: string }>, - request: KibanaRequest, savedObjectsClient: SavedObjectsClientContract, allPrivateLocations: PrivateLocationAttributes[], spaceId: string @@ -75,7 +76,6 @@ export class SyntheticsMonitorClient { const newPolicies = this.privateLocationAPI.createPackagePolicies( privateConfigs, - request, allPrivateLocations, spaceId ); @@ -96,7 +96,6 @@ export class SyntheticsMonitorClient { allPrivateLocations: PrivateLocationAttributes[], spaceId: string ) { - const { request } = routeContext; const privateConfigs: Array<{ config: HeartbeatConfig; globalParams: Record }> = []; @@ -143,7 +142,6 @@ export class SyntheticsMonitorClient { const privateEditPromise = this.privateLocationAPI.editMonitors( privateConfigs, - request, allPrivateLocations, spaceId ); @@ -161,11 +159,10 @@ export class SyntheticsMonitorClient { } async deleteMonitors( monitors: SyntheticsMonitorWithId[], - request: KibanaRequest, savedObjectsClient: SavedObjectsClientContract, spaceId: string ) { - const privateDeletePromise = this.privateLocationAPI.deleteMonitors(monitors, request, spaceId); + const privateDeletePromise = this.privateLocationAPI.deleteMonitors(monitors, spaceId); const publicDeletePromise = this.syntheticsService.deleteConfigs( monitors.map((monitor) => ({ monitor, configId: monitor.config_id, params: {} })) @@ -175,6 +172,62 @@ export class SyntheticsMonitorClient { return pubicResponse; } + async testNowConfigs( + monitor: { monitor: MonitorFields; id: string; testRunId: string }, + savedObjectsClient: SavedObjectsClientContract, + allPrivateLocations: PrivateLocationAttributes[], + spaceId: string, + runOnce?: true + ) { + let privateConfig: PrivateConfig | undefined; + let publicConfig: ConfigData | undefined; + + const paramsBySpace = await this.syntheticsService.getSyntheticsParams({ spaceId }); + + const { formattedConfig, params, config } = await this.formatConfigWithParams( + monitor, + spaceId, + paramsBySpace + ); + + const { privateLocations, publicLocations } = this.parseLocations(formattedConfig); + if (privateLocations.length > 0) { + privateConfig = { + config: { + ...formattedConfig, + [ConfigKey.SCHEDULE]: { + number: LONG_TIME_MONTH, + unit: ScheduleUnit.MINUTES, + }, + [ConfigKey.ENABLED]: true, + }, + globalParams: params, + }; + } + + if (publicLocations.length > 0) { + publicConfig = config; + // making it enabled, even if it's disabled in the UI + publicConfig.monitor.enabled = true; + publicConfig.testRunId = monitor.testRunId; + if (runOnce) { + publicConfig.runOnce = true; + } + } + + const newPolicies = this.privateLocationAPI.createPackagePolicies( + privateConfig ? [privateConfig] : [], + allPrivateLocations, + spaceId, + monitor.testRunId, + runOnce + ); + + const syncErrors = this.syntheticsService.runOnceConfigs(publicConfig); + + return await Promise.all([newPolicies, syncErrors]); + } + hasPrivateLocations(previousMonitor: SavedObject) { const { locations } = previousMonitor.attributes; @@ -213,13 +266,11 @@ export class SyntheticsMonitorClient { } async syncGlobalParams({ - request, spaceId, allPrivateLocations, encryptedSavedObjects, }: { spaceId: string; - request: KibanaRequest; allPrivateLocations: PrivateLocationAttributes[]; encryptedSavedObjects: EncryptedSavedObjectsPluginStart; }) { @@ -243,12 +294,7 @@ export class SyntheticsMonitorClient { } } if (privateConfigs.length > 0) { - await this.privateLocationAPI.editMonitors( - privateConfigs, - request, - allPrivateLocations, - spaceId - ); + await this.privateLocationAPI.editMonitors(privateConfigs, allPrivateLocations, spaceId); } if (publicConfigs.length > 0) { diff --git a/x-pack/plugins/synthetics/server/synthetics_service/synthetics_service.ts b/x-pack/plugins/synthetics/server/synthetics_service/synthetics_service.ts index 2242d2576ddc52..eae3fb00820304 100644 --- a/x-pack/plugins/synthetics/server/synthetics_service/synthetics_service.ts +++ b/x-pack/plugins/synthetics/server/synthetics_service/synthetics_service.ts @@ -19,6 +19,7 @@ import { EncryptedSavedObjectsClient } from '@kbn/encrypted-saved-objects-plugin import pMap from 'p-map'; import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; import { ALL_SPACES_ID } from '@kbn/spaces-plugin/common/constants'; +import { registerCleanUpTask } from './private_location/clean_up_task'; import { SyntheticsServerSetup } from '../types'; import { syntheticsMonitorType, syntheticsParamType } from '../../common/types/saved_objects'; import { sendErrorTelemetryEvents } from '../routes/telemetry/monitor_upgrade_sender'; @@ -92,6 +93,7 @@ export class SyntheticsService { public async setup(taskManager: TaskManagerSetupContract) { this.registerSyncTask(taskManager); + registerCleanUpTask(taskManager, this.server); await this.registerServiceLocations(); @@ -418,12 +420,15 @@ export class SyntheticsService { await this.getMonitorConfigs(subject); } - async runOnceConfigs(configs: ConfigData) { - const license = await this.getLicense(); + async runOnceConfigs(configs?: ConfigData) { + if (!configs) { + return; + } const monitors = this.formatConfigs(configs); if (monitors.length === 0) { return; } + const license = await this.getLicense(); const output = await this.getOutput(); if (!output) { diff --git a/x-pack/plugins/synthetics/server/types.ts b/x-pack/plugins/synthetics/server/types.ts index 847d91579ed2d4..a14cf6dcd72c11 100644 --- a/x-pack/plugins/synthetics/server/types.ts +++ b/x-pack/plugins/synthetics/server/types.ts @@ -58,6 +58,7 @@ export interface SyntheticsServerSetup { basePath: IBasePath; isDev?: boolean; coreStart: CoreStart; + pluginsStart: SyntheticsPluginsStartDependencies; } export interface SyntheticsPluginsSetupDependencies { @@ -77,6 +78,7 @@ export interface SyntheticsPluginsSetupDependencies { export interface SyntheticsPluginsStartDependencies { security: SecurityPluginStart; + elasticsearch: SecurityPluginStart; fleet: FleetStartContract; encryptedSavedObjects: EncryptedSavedObjectsPluginStart; taskManager: TaskManagerStartContract; diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index fdb057d2eb843b..45101f9bc6ed8d 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -4738,7 +4738,6 @@ "kibana-react.kibanaCodeEditor.ariaLabel": "Éditeur de code", "kibana-react.kibanaCodeEditor.enterKeyLabel": "Entrée", "kibana-react.kibanaCodeEditor.escapeKeyLabel": "Échap", - "reactPackages.mountPointPortal.errorMessage": "Erreur lors du rendu du contenu du portail.", "kibana-react.noDataPage.cantDecide.link": "Consultez la documentation pour en savoir plus.", "kibana-react.noDataPage.elasticAgentCard.description": "Utilisez Elastic Agent pour collecter de manière simple et unifiée les données de vos machines.", "kibana-react.noDataPage.elasticAgentCard.noPermission.description": "Cette intégration n'est pas encore activée. Votre administrateur possède les autorisations requises pour l'activer.", @@ -4752,6 +4751,7 @@ "kibana-react.pageFooter.makeDefaultRouteLink": "Choisir comme page de destination", "kibana-react.solutionNav.collapsibleLabel": "Réduire la navigation latérale", "kibana-react.solutionNav.openLabel": "Ouvrir la navigation latérale", + "reactPackages.mountPointPortal.errorMessage": "Erreur lors du rendu du contenu du portail.", "languageDocumentationPopover.header": "Référence de {language}", "languageDocumentationPopover.tooltip": "Référence de {lang}", "languageDocumentationPopover.searchPlaceholder": "Recherche", @@ -11696,7 +11696,6 @@ "xpack.dataVisualizer.file.resultsLinks.fileBeatConfigTopText2": "Modifiez {filebeatYml} afin de définir les informations de connexion :", "xpack.dataVisualizer.file.welcomeContent.uploadedFilesAllowedSizeDescription": "Vous pouvez charger des fichiers d'une taille allant jusqu'à {maxFileSize}.", "xpack.dataVisualizer.index.dataLoader.internalServerErrorMessage": "Erreur lors du chargement des données dans l'index {index}. {message}. La requête a peut-être expiré. Essayez d'utiliser un échantillon d'une taille inférieure ou de réduire la plage temporelle.", - "xpack.dataVisualizer.index.dataViewNotBasedOnTimeSeriesNotificationTitle": "La vue de données {dataViewTitle} n'est pas basée sur une série temporelle", "xpack.dataVisualizer.index.errorLoadingDataMessage": "Erreur lors du chargement des données dans l'index {index}. {message}.", "xpack.dataVisualizer.index.lensChart.averageOfLabel": "Moyenne de {fieldName}", "xpack.dataVisualizer.index.lensChart.chartTitle": "Lens pour {fieldName}", @@ -11921,7 +11920,6 @@ "xpack.dataVisualizer.index.dataViewManagement.actionsPopoverLabel": "Paramètres Vue de données", "xpack.dataVisualizer.index.dataViewManagement.addFieldButton": "Ajouter un champ à la vue de données", "xpack.dataVisualizer.index.dataViewManagement.manageFieldButton": "Gérer les champs de la vue de données", - "xpack.dataVisualizer.index.dataViewNotBasedOnTimeSeriesNotificationDescription": "La détection des anomalies ne s'exécute que sur des index temporels", "xpack.dataVisualizer.index.embeddableErrorDescription": "Une erreur s'est produite lors du chargement de l'incorporable. Veuillez vérifier si toutes les entrées requises sont valides.", "xpack.dataVisualizer.index.embeddableErrorTitle": "Erreur lors du chargement de l'incorporable", "xpack.dataVisualizer.index.embeddableNoResultsMessage": "Résultat introuvable", @@ -12150,7 +12148,6 @@ "xpack.enterpriseSearch.content.indices.deleteIndex.successToast.title": "Votre index {indexName} et toute configuration d'ingestion associée ont été supprimés avec succès", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.noModels.description": "Aucun de vos modèles entraînés de Machine Learning ne peut être utilisé par un pipeline d'inférence. {documentationLink}", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.configure.name.helpText": "Les noms de pipeline sont uniques dans un déploiement, et ils peuvent uniquement contenir des lettres, des chiffres, des traits de soulignement et des traits d'union. Cela créera un pipeline nommé {pipelineName}.", - "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.error": "La sélection d'un champ source est requise pour la configuration du pipeline, mais cet index n'a pas de mapping de champ. {learnMore}", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText.default": "Cela attribue un nom au champ qui contient le résultat d'inférence. Votre nom de champ recevra le préfixe \"ml.inference.\". S'il n'est pas défini, le nom par défaut sera \"ml.inference.{pipelineName}\"", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText.textClassificationModel": "De plus, la valeur_prévue (predicted_value) sera copiée sur \"{fieldName}\" si la probabilité de prédiction (prediction_probability) est supérieure à {probabilityThreshold}", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText.textEmbeddingModel": "De plus, la valeur_prévue (predicted_value) sera copiée sur \"{fieldName}\"", @@ -13588,12 +13585,9 @@ "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.fieldMappings.tableCaption": "Mappings de champs", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.fieldMappings.targetFieldHeader": "Champs cibles", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.selectedFields": "Champs sélectionnés", - "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.error.docLink": "En savoir plus sur le mapping de champs", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.helpText": "Sélectionnez un champ existant ou tapez un nom de champ.", - "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.placeholder": "Sélectionner un champ de schéma", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceFieldLabel": "Champ source", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText": "Ce nom est créé automatiquement en fonction de votre champ source.", - "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.label": "Champ cible (facultatif)", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetFieldLabel": "Champ cible", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.title": "Sélectionner les mappings de champs", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.review.description": "Ce pipeline sera créé et injecté en tant que processeur dans votre pipeline par défaut pour cet index. Vous pourrez également utiliser ce nouveau pipeline de façon indépendante.", @@ -14579,8 +14573,6 @@ "xpack.enterpriseSearch.server.routes.createApiIndex.connectorExistsError": "Un connecteur existe déjà pour cet index", "xpack.enterpriseSearch.server.routes.createApiIndex.crawlerExistsError": "Un robot d'indexation existe déjà pour cet index", "xpack.enterpriseSearch.server.routes.createApiIndex.indexExistsError": "L'index existe déjà.", - "xpack.enterpriseSearch.server.routes.createMlInferencePipeline.ParameterConflictError": "pipeline_definition et field_mappings doivent uniquement être fournis si source_field, destination_field et model_id ne sont pas fournis.", - "xpack.enterpriseSearch.server.routes.createMlInferencePipeline.ParameterMissingError": "pipeline_definition ET fieldMappings ou source_field ET model_id doivent être fournis", "xpack.enterpriseSearch.server.routes.createSearchApplication.searchApplciationExistsError": "Le nom de l’application de recherche est déjà pris. Choisissez un autre nom.", "xpack.enterpriseSearch.server.routes.indices.mlInference.pipelineProcessors.pipelineIsInUseError": "Le pipeline d'inférence est utilisé dans le pipeline géré \"{pipelineName}\" d'un autre index", "xpack.enterpriseSearch.server.routes.recreateConnector.connectorExistsError": "Un connecteur existe déjà pour cet index", @@ -27321,7 +27313,6 @@ "xpack.observability.slo.duration.minute": "{duration, plural, one {1 minute} many {# minutes} other {# minutes}}", "xpack.observability.slo.duration.month": "{duration, plural, one {1 mois} many {# mois} other {# mois}}", "xpack.observability.slo.duration.week": "{duration, plural, one {1 semaine} many {# semaines} other {# semaines}}", - "xpack.observability.slo.duration.year": "{duration, plural, one {1 an} many {# ans} other {# prochaines années}}", "xpack.observability.slo.indicatorTypeBadge.exploreInApm": "Afficher les détails de {service}", "xpack.observability.slo.list.sortByType": "Trier par {type}", "xpack.observability.slo.rules.burnRate.errors.invalidThresholdValue": "Le seuil du taux d'avancement doit être compris entre 1 et {maxBurnRate}.", @@ -27620,7 +27611,6 @@ "xpack.observability.slo.duration.minutely": "Par minute", "xpack.observability.slo.duration.monthly": "Mensuel", "xpack.observability.slo.duration.weekly": "Hebdomadaire", - "xpack.observability.slo.duration.yearly": "Annuel", "xpack.observability.slo.feedbackButtonLabel": "Dites-nous ce que vous pensez !", "xpack.observability.slo.globalDiagnosis.errorNotification": "Vous ne disposez pas des autorisations nécessaires pour utiliser cette fonctionnalité.", "xpack.observability.slo.indicators.apmAvailability": "Disponibilité APM", @@ -27632,11 +27622,8 @@ "xpack.observability.slo.list.errorMessage": "Une erreur s'est produite lors du chargement des SLO. Contactez votre administrateur pour obtenir de l'aide.", "xpack.observability.slo.list.errorNotification": "Un problème est survenu lors de la récupération des SLO", "xpack.observability.slo.list.errorTitle": "Impossible de charger les SLO", - "xpack.observability.slo.list.indicatorTypeFilter": "Type d’indicateur", "xpack.observability.slo.list.search": "Recherche", "xpack.observability.slo.list.sortBy": "Trier par", - "xpack.observability.slo.list.sortBy.creationTime": "Heure de création", - "xpack.observability.slo.list.sortBy.indicatorType": "Type d’indicateur", "xpack.observability.slo.rules.actionGroupSelectorLabel": "Groupe d’action", "xpack.observability.slo.rules.addWindowAriaLabel": "Ajouter une fenêtre", "xpack.observability.slo.rules.addWIndowLabel": "Ajouter une fenêtre", @@ -27750,19 +27737,11 @@ "xpack.observability.slo.sloEdit.sliType.customMetric.deleteLabel": "Supprimer un indicateur", "xpack.observability.slo.sloEdit.sliType.customMetric.equation.invalidCharacters": "Le champ d'équation prend en charge uniquement les caractères suivants : A-Z, +, -, /, *, (, ), ?, !, &, :, |, >, <, =", "xpack.observability.slo.sloEdit.sliType.customMetric.equationHelpText": "Accepte les équations mathématiques de base, les caractères valides sont : A-Z, +, -, /, *, (, ), ?, !, &, :, |, >, <, =", - "xpack.observability.slo.sloEdit.sliType.customMetric.goodEquation.tooltip": "Ceci est compatible avec des calculs de base (A + B / C) et la logique booléenne (A < B ? A : B).", - "xpack.observability.slo.sloEdit.sliType.customMetric.goodEquationLabel": "Bonne équation", - "xpack.observability.slo.sloEdit.sliType.customMetric.goodMetric.tooltip": "Les données de ce champ seront agrégées avec l’agréation de \"somme\".", - "xpack.observability.slo.sloEdit.sliType.customMetric.goodMetricLabel": "Bon indicateur", "xpack.observability.slo.sloEdit.sliType.customMetric.metricField.placeholder": "Sélectionner un champ d’indicateur", "xpack.observability.slo.sloEdit.sliType.customMetric.queryFilter": "Filtre de requête", "xpack.observability.slo.sloEdit.sliType.customMetric.sumLabel": "Somme de", "xpack.observability.slo.sloEdit.sliType.customMetric.timestampField.label": "Champ d'horodatage", "xpack.observability.slo.sloEdit.sliType.customMetric.timestampField.placeholder": "Sélectionner un champ d'horodatage", - "xpack.observability.slo.sloEdit.sliType.customMetric.totalEquation.tooltip": "Ceci est compatible avec des calculs de base (A + B / C) et la logique booléenne (A < B ? A : B).", - "xpack.observability.slo.sloEdit.sliType.customMetric.totalEquationLabel": "Équation totale", - "xpack.observability.slo.sloEdit.sliType.customMetric.totalMetric.tooltip": "Les données de ce champ seront agrégées avec l’agréation de \"somme\".", - "xpack.observability.slo.sloEdit.sliType.customMetric.totalMetricLabel": "Indicateur total", "xpack.observability.slo.sloEdit.tags.label": "Balises", "xpack.observability.slo.sloEdit.tags.placeholder": "Ajouter des balises", "xpack.observability.slo.sloEdit.targetSlo.label": "Cible/SLO (%)", @@ -36834,12 +36813,6 @@ "xpack.stackConnectors.xmatters.title": "xMatters", "xpack.stackConnectors.xmatters.unexpectedNullResponseErrorMessage": "réponse nulle inattendue de xmatters", "xpack.synthetics.alertRules.monitorStatus.reasonMessage": "Le moniteur \"{name}\" de {location} est {status}. Vérifié à {checkedAt}.", - "xpack.synthetics.alerts.durationAnomaly.defaultActionMessage": "Temps de réponse anormal (niveau {severity}) détecté sur le {monitor} avec l'URL {monitorUrl} à {anomalyStartTimestamp}. La note de sévérité d'anomalie est {severityScore}.\nDes temps de réponse aussi élevés que {slowestAnomalyResponse} ont été détectés à partir de l'emplacement {observerLocation}. Le temps de réponse attendu est {expectedResponseTime}.", - "xpack.synthetics.alerts.durationAnomaly.defaultRecoveryMessage": "L'alerte pour temps de réponse anormal (niveau {severity}) détecté sur le moniteur {monitor} possédant l'URL {monitorUrl} depuis l'emplacement {observerLocation} à {anomalyStartTimestamp} a été résolue", - "xpack.synthetics.alerts.monitorStatus.defaultActionMessage": "Moniteur {monitorName} avec l'URL {monitorUrl} depuis {observerLocation} {statusMessage} Le dernier message d'erreur est {latestErrorMessage}, vérifié à {checkedAt}", - "xpack.synthetics.alerts.monitorStatus.defaultRecoveryMessage": "L'alerte pour le moniteur {monitorName} avec l'URL {monitorUrl} depuis {observerLocation} a été résolue", - "xpack.synthetics.alerts.monitorStatus.defaultRecoverySubjectMessage": "Le moniteur {monitorName} avec l'URL {monitorUrl} a récupéré", - "xpack.synthetics.alerts.monitorStatus.defaultSubjectMessage": "Le moniteur {monitorName} avec l'URL {monitorUrl} est arrêté", "xpack.synthetics.alerts.monitorStatus.upCheck.reasonWithoutDuration": "le moniteur est de nouveau opérationnel. Il a été exécuté avec succès à {checkedAt}", "xpack.synthetics.alerts.syntheticsMonitorStatus.defaultActionMessage": "\"{monitorName}\" est {status} de {locationName}. - Elastic Synthetics\n\nDétails :\n\n- Nom du moniteur : {monitorName} \n- {monitorUrlLabel} : {monitorUrl} \n- Type du moniteur : {monitorType} \n- Vérifié à : {checkedAt} \n- De : {locationName} \n- Erreur reçue : {lastErrorMessage} \n{linkMessage}", "xpack.synthetics.alerts.syntheticsMonitorStatus.defaultRecoveryMessage": "L’alerte pour \"{monitorName}\" de {locationName} n’est plus active : {recoveryReason}. - Elastic Synthetics\n\nDétails :\n\n- Nom du moniteur : {monitorName} \n- {monitorUrlLabel} : {monitorUrl} \n- Type du moniteur : {monitorType} \n- De : {locationName} \n- Dernière erreur reçue : {lastErrorMessage} \n{linkMessage}", @@ -36847,9 +36820,6 @@ "xpack.synthetics.alerts.syntheticsMonitorStatus.defaultSubjectMessage": "\"{monitorName}\" ({locationName}) est arrêté - Elastic Synthetics", "xpack.synthetics.alerts.syntheticsMonitorTLS.defaultRecoverySubjectMessage": "L’alerte a été résolue pour le certificat {commonName} - Elastic Synthetics", "xpack.synthetics.alerts.syntheticsMonitorTLS.defaultSubjectMessage": "L’alerte a été déclenchée pour le certificat {commonName} - Elastic Synthetics", - "xpack.synthetics.alerts.tls.defaultActionMessage": "Le certificat TLS {commonName} détecté de l'émetteur {issuer} est {status}. Certificat {summary}", - "xpack.synthetics.alerts.tls.defaultRecoveryMessage": "L'alerte pour le certificat TLS {commonName} de l'émetteur {issuer} a été résolue", - "xpack.synthetics.alerts.tls.legacy.defaultActionMessage": "Détection de {count} certificats TLS sur le point d'expirer ou devenant trop anciens.\n{expiringConditionalOpen}\nNombre de certificats sur le point d'expirer : {expiringCount}\nCertificats sur le point d'expirer : {expiringCommonNameAndDate}\n{expiringConditionalClose}\n{agingConditionalOpen}\nNombre de certificats vieillissants : {agingCount}\nCertificats vieillissants : {agingCommonNameAndDate}\n{agingConditionalClose}\n", "xpack.synthetics.certificates.heading": "Certificats TLS ({total})", "xpack.synthetics.certificatesRoute.title": "Certificats | {baseTitle}", "xpack.synthetics.certs.status.ok.label": " pour {okRelativeDate}", @@ -37015,14 +36985,10 @@ "xpack.synthetics.alertRules.monitorStatus.browser.label": "navigateur", "xpack.synthetics.alertRules.monitorStatus.host.label": "Hôte", "xpack.synthetics.alertRules.monitorStatus.unavailableUrlLabel": "(indisponible)", - "xpack.synthetics.alerts.durationAnomaly.clientName": "Anomalie de durée Uptime", - "xpack.synthetics.alerts.durationAnomaly.description": "Alerte lorsque la durée du moniteur Uptime est anormale.", "xpack.synthetics.alerts.monitorStatus.absoluteLink.label": "- Lien", - "xpack.synthetics.alerts.monitorStatus.clientName": "Statut du moniteur Uptime", "xpack.synthetics.alerts.monitorStatus.defaultRecovery.status": "a récupéré", "xpack.synthetics.alerts.monitorStatus.deleteMonitor.reason": "le moniteur a été supprimé", "xpack.synthetics.alerts.monitorStatus.deleteMonitor.status": "a été supprimé", - "xpack.synthetics.alerts.monitorStatus.description": "Alerte lorsqu'un monitoring est arrêté ou qu'un seuil de disponibilité est dépassé.", "xpack.synthetics.alerts.monitorStatus.downLabel": "bas", "xpack.synthetics.alerts.monitorStatus.relativeLink.label": "- Lien relatif", "xpack.synthetics.alerts.monitorStatus.removedLocation.reason": "cet emplacement a été retiré du moniteur", @@ -37032,18 +36998,13 @@ "xpack.synthetics.alerts.settings.addConnector": "Ajouter un connecteur", "xpack.synthetics.alerts.syntheticsMonitorStatus.clientName": "Statut du moniteur", "xpack.synthetics.alerts.syntheticsMonitorStatus.description": "Alerte lorsqu'un moniteur est arrêté.", - "xpack.synthetics.alerts.tls.clientName": "Uptime TLS", "xpack.synthetics.alerts.tls.criteriaExpression.description": "quand", - "xpack.synthetics.alerts.tls.description": "Alerte lorsque le certificat TLS d'un moniteur Uptime est sur le point d'expirer.", - "xpack.synthetics.alerts.tls.legacy.clientName": "Uptime TLS (existant)", - "xpack.synthetics.alerts.tls.legacy.description": "Alerte lorsque le certificat TLS d'un moniteur Uptime est sur le point d'expirer. Cette alerte sera déclassée dans une future version.", "xpack.synthetics.alerts.toggleAlertFlyoutButtonText": "Alertes et règles", "xpack.synthetics.alertsRulesPopover.toggleButton.ariaLabel": "Ouvrir les alertes et le menu des règles", "xpack.synthetics.analyzeDataButtonLabel": "Explorer les données", "xpack.synthetics.analyzeDataButtonLabel.message": "La fonctionnalité Explorer les données vous permet de sélectionner et de filtrer les données de résultat dans toute dimension et de rechercher la cause ou l'impact des problèmes de performances.", "xpack.synthetics.app.navigateToAlertingButton.content": "Gérer les règles", "xpack.synthetics.app.navigateToAlertingUi": "Quitter Synthetics et accéder à la page de gestion Alerting", - "xpack.synthetics.app.testNow.available.private": "Vous ne pouvez pas démarrer les tests manuellement dans un emplacement privé.", "xpack.synthetics.badge.readOnly.text": "Lecture seule", "xpack.synthetics.badge.readOnly.tooltip": "Enregistrement impossible", "xpack.synthetics.blocked": "Bloqué", @@ -37783,8 +37744,6 @@ "xpack.synthetics.settings.enablement.fail": "Échec de l’activation de l’application Synthetics", "xpack.synthetics.settings.error.couldNotSave": "Impossible d'enregistrer les paramètres !", "xpack.synthetics.settings.getParams.failed": "Impossible d’obtenir les paramètres globaux.", - "xpack.synthetics.settings.invalid.error": "La valeur doit être supérieure à 0.", - "xpack.synthetics.settings.invalid.nanError": "La valeur doit être un entier.", "xpack.synthetics.settings.noSpace.error": "Les noms d'index ne doivent pas contenir d'espace", "xpack.synthetics.settings.saveSuccess": "Paramètres enregistrés !", "xpack.synthetics.settings.syncGlobalParams": "Paramètres globaux appliqués correctement à tous les moniteurs", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 31d7c6c52b743b..b3503b6020b495 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -4754,7 +4754,6 @@ "kibana-react.kibanaCodeEditor.ariaLabel": "コードエディター", "kibana-react.kibanaCodeEditor.enterKeyLabel": "Enter", "kibana-react.kibanaCodeEditor.escapeKeyLabel": "Esc", - "reactPackages.mountPointPortal.errorMessage": "ポータルコンテンツのレンダリングエラー", "kibana-react.noDataPage.cantDecide.link": "詳細については、ドキュメントをご確認ください。", "kibana-react.noDataPage.elasticAgentCard.description": "Elasticエージェントを使用すると、シンプルで統一された方法でコンピューターからデータを収集するできます。", "kibana-react.noDataPage.elasticAgentCard.noPermission.description": "この統合はまだ有効ではありません。管理者にはオンにするために必要なアクセス権があります。", @@ -4768,6 +4767,7 @@ "kibana-react.pageFooter.makeDefaultRouteLink": "これをランディングページにする", "kibana-react.solutionNav.collapsibleLabel": "サイドナビゲーションを折りたたむ", "kibana-react.solutionNav.openLabel": "サイドナビゲーションを開く", + "reactPackages.mountPointPortal.errorMessage": "ポータルコンテンツのレンダリングエラー", "languageDocumentationPopover.header": "{language}リファレンス", "languageDocumentationPopover.tooltip": "{lang}リファレンス", "languageDocumentationPopover.searchPlaceholder": "検索", @@ -11710,7 +11710,6 @@ "xpack.dataVisualizer.file.resultsLinks.fileBeatConfigTopText2": "{filebeatYml}を変更して接続情報を設定します:", "xpack.dataVisualizer.file.welcomeContent.uploadedFilesAllowedSizeDescription": "最大{maxFileSize}のファイルをアップロードできます。", "xpack.dataVisualizer.index.dataLoader.internalServerErrorMessage": "インデックス{index}のデータの読み込み中にエラーが発生。{message}。リクエストがタイムアウトした可能性があります。小さなサンプルサイズを使うか、時間範囲を狭めてみてください。", - "xpack.dataVisualizer.index.dataViewNotBasedOnTimeSeriesNotificationTitle": "データビュー{dataViewTitle}は時系列に基づいていません", "xpack.dataVisualizer.index.errorLoadingDataMessage": "インデックス{index}のデータの読み込み中にエラーが発生。{message}。", "xpack.dataVisualizer.index.lensChart.averageOfLabel": "{fieldName} の平均", "xpack.dataVisualizer.index.lensChart.chartTitle": "{fieldName}のLens", @@ -11935,7 +11934,6 @@ "xpack.dataVisualizer.index.dataViewManagement.actionsPopoverLabel": "データビュー設定", "xpack.dataVisualizer.index.dataViewManagement.addFieldButton": "フィールドをデータビューに追加", "xpack.dataVisualizer.index.dataViewManagement.manageFieldButton": "データビューフィールドを管理", - "xpack.dataVisualizer.index.dataViewNotBasedOnTimeSeriesNotificationDescription": "異常検知は時間ベースのインデックスでのみ実行されます", "xpack.dataVisualizer.index.embeddableErrorDescription": "埋め込み可能オブジェクトの読み込みエラーが発生しました。すべての必須入力が有効であるかどうかを確認してください。", "xpack.dataVisualizer.index.embeddableErrorTitle": "埋め込み可能オブジェクトの読み込みエラー", "xpack.dataVisualizer.index.embeddableNoResultsMessage": "結果が見つかりませんでした", @@ -12164,7 +12162,6 @@ "xpack.enterpriseSearch.content.indices.deleteIndex.successToast.title": "インデックス{indexName}と関連付けられたすべての統合構成が正常に削除されました", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.noModels.description": "推論パイプラインで使用できる学習済み機械学習モデルがありません。{documentationLink}", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.configure.name.helpText": "パイプライン名はデプロイ内で一意であり、文字、数字、アンダースコア、ハイフンのみを使用できます。これにより、{pipelineName}という名前のパイプラインが作成されます。", - "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.error": "パイプラインのソースフィールドを選択する必要があります。ただし、このインデックスにはフィールドマッピングがありません。{learnMore}", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText.default": "これは、推論結果を保持するフィールドの名前を指定します。\"ml.inference.\"というプレフィックスが付きます。設定されていない場合は、デフォルトで\"ml.inference.{pipelineName}\"となります", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText.textClassificationModel": "さらに、predicted_probabilityが{probabilityThreshold}より大きい場合、predicted_valueは\"{fieldName}\"にコピーされます。", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText.textEmbeddingModel": "さらにpredicted_valueは\"{fieldName}\"にコピーされます。", @@ -13602,12 +13599,9 @@ "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.fieldMappings.tableCaption": "フィールドマッピング", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.fieldMappings.targetFieldHeader": "ターゲットフィールド", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.selectedFields": "選択したフィールド", - "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.error.docLink": "フィールドマッピングの詳細", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.helpText": "既存のフィールドを選択するか、フィールド名を入力してください。", - "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.placeholder": "スキーマフィールドを選択", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceFieldLabel": "ソースフィールド", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText": "この名前は、ソースフィールドに基づいて自動的に作成されます。", - "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.label": "ターゲットフィールド(任意)", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetFieldLabel": "ターゲットフィールド", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.title": "フィールドマッピングを選択", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.review.description": "このパイプラインが作成され、プロセッサーとしてこのインデックスのデフォルトパイプラインに挿入されます。この新しいパイプラインは単独でも使用できます。", @@ -14593,8 +14587,6 @@ "xpack.enterpriseSearch.server.routes.createApiIndex.connectorExistsError": "このインデックスのコネクターはすでに存在します", "xpack.enterpriseSearch.server.routes.createApiIndex.crawlerExistsError": "このインデックスのクローラーはすでに存在します", "xpack.enterpriseSearch.server.routes.createApiIndex.indexExistsError": "このインデックスはすでに存在します", - "xpack.enterpriseSearch.server.routes.createMlInferencePipeline.ParameterConflictError": "pipeline_definitionおよびfield_mappingsは、source_field、destination_field、およびmodel_idが指定されていない場合にのみ指定してください。", - "xpack.enterpriseSearch.server.routes.createMlInferencePipeline.ParameterMissingError": "pipeline_definitionとfieldMappingsの両方、またはsource_fieldとmodel_idの両方を指定する必要があります。", "xpack.enterpriseSearch.server.routes.createSearchApplication.searchApplciationExistsError": "検索アプリケーション名はすでに取得されています。別の名前を選択してください。", "xpack.enterpriseSearch.server.routes.indices.mlInference.pipelineProcessors.pipelineIsInUseError": "推論パイプラインは、別のインデックスの管理されたパイプライン'{pipelineName}'で使用されています。", "xpack.enterpriseSearch.server.routes.recreateConnector.connectorExistsError": "このインデックスのコネクターはすでに存在します", @@ -27321,7 +27313,6 @@ "xpack.observability.slo.duration.minute": "{duration, plural, other {#分}}", "xpack.observability.slo.duration.month": "{duration, plural, other {#月}}", "xpack.observability.slo.duration.week": "{duration, plural, other {#週}}", - "xpack.observability.slo.duration.year": "{duration, plural, other {#年}}", "xpack.observability.slo.indicatorTypeBadge.exploreInApm": "{service}詳細を表示", "xpack.observability.slo.list.sortByType": "{type}で並べ替え", "xpack.observability.slo.rules.burnRate.errors.invalidThresholdValue": "バーンレートしきい値は1以上{maxBurnRate}以下でなければなりません。", @@ -27620,7 +27611,6 @@ "xpack.observability.slo.duration.minutely": "毎分", "xpack.observability.slo.duration.monthly": "月ごと", "xpack.observability.slo.duration.weekly": "週ごと", - "xpack.observability.slo.duration.yearly": "年ごと", "xpack.observability.slo.feedbackButtonLabel": "ご意見をお聞かせください。", "xpack.observability.slo.globalDiagnosis.errorNotification": "この機能を使用する権限がありません。", "xpack.observability.slo.indicators.apmAvailability": "APM可用性", @@ -27632,11 +27622,9 @@ "xpack.observability.slo.list.errorMessage": "SLOオブジェクトの読み込みエラーが発生しました。ヘルプについては、管理者にお問い合わせください。", "xpack.observability.slo.list.errorNotification": "SLOの取得中に問題が発生しました", "xpack.observability.slo.list.errorTitle": "SLOを読み込めません", - "xpack.observability.slo.list.indicatorTypeFilter": "インジケータータイプ", "xpack.observability.slo.list.search": "検索", "xpack.observability.slo.list.sortBy": "並べ替え基準", - "xpack.observability.slo.list.sortBy.creationTime": "作成時刻", - "xpack.observability.slo.list.sortBy.indicatorType": "インジケータータイプ", + "xpack.observability.slo.rules.actionGroupSelectorLabel": "アクショングループ", "xpack.observability.slo.rules.addWindowAriaLabel": "時間枠を追加", "xpack.observability.slo.rules.addWIndowLabel": "時間枠を追加", @@ -27750,19 +27738,11 @@ "xpack.observability.slo.sloEdit.sliType.customMetric.deleteLabel": "メトリックを削除", "xpack.observability.slo.sloEdit.sliType.customMetric.equation.invalidCharacters": "等式フィールドでは次の文字のみを使用できます:A-Z、+、-、/、*、(、)、?、!、&、:、|、>、<、=", "xpack.observability.slo.sloEdit.sliType.customMetric.equationHelpText": "基本的な数式をサポートします。有効な文字:A-Z、+、-、/、*、(、)、?、!、&、:、|、>、<、=", - "xpack.observability.slo.sloEdit.sliType.customMetric.goodEquation.tooltip": "これは基本的な数学ロジック(A + B / C)とブールロジック(A < B ?A :B)をサポートします。", - "xpack.observability.slo.sloEdit.sliType.customMetric.goodEquationLabel": "正しい式", - "xpack.observability.slo.sloEdit.sliType.customMetric.goodMetric.tooltip": "このフィールドのデータは「sum」集計で集約されます。", - "xpack.observability.slo.sloEdit.sliType.customMetric.goodMetricLabel": "正しいメトリック", "xpack.observability.slo.sloEdit.sliType.customMetric.metricField.placeholder": "メトリックフィールドを選択", "xpack.observability.slo.sloEdit.sliType.customMetric.queryFilter": "クエリのフィルター", "xpack.observability.slo.sloEdit.sliType.customMetric.sumLabel": "の合計", "xpack.observability.slo.sloEdit.sliType.customMetric.timestampField.label": "タイムスタンプフィールド", "xpack.observability.slo.sloEdit.sliType.customMetric.timestampField.placeholder": "タイムスタンプフィールドを選択", - "xpack.observability.slo.sloEdit.sliType.customMetric.totalEquation.tooltip": "これは基本的な数学ロジック(A + B / C)とブールロジック(A < B ?A :B)をサポートします。", - "xpack.observability.slo.sloEdit.sliType.customMetric.totalEquationLabel": "全式", - "xpack.observability.slo.sloEdit.sliType.customMetric.totalMetric.tooltip": "このフィールドのデータは「sum」集計で集約されます。", - "xpack.observability.slo.sloEdit.sliType.customMetric.totalMetricLabel": "全メトリック", "xpack.observability.slo.sloEdit.tags.label": "タグ", "xpack.observability.slo.sloEdit.tags.placeholder": "タグを追加", "xpack.observability.slo.sloEdit.targetSlo.label": "目標 / SLO(%)", @@ -36833,12 +36813,6 @@ "xpack.stackConnectors.xmatters.title": "xMatters", "xpack.stackConnectors.xmatters.unexpectedNullResponseErrorMessage": "xmattersからの予期しないnull応答", "xpack.synthetics.alertRules.monitorStatus.reasonMessage": "{location}からのモニター\"{name}\"は{status}です。確認:{checkedAt}。", - "xpack.synthetics.alerts.durationAnomaly.defaultActionMessage": "{monitor}で{anomalyStartTimestamp}で{monitorUrl}のurlで異常な({severity}レベル)応答時間を検出しました。異常重要度スコアは{severityScore}です。\n{observerLocation}の位置から{slowestAnomalyResponse}の高い応答時間が検出されています。想定応答時間は{expectedResponseTime}です。", - "xpack.synthetics.alerts.durationAnomaly.defaultRecoveryMessage": "{anomalyStartTimestamp}の{observerLocation}地点から{monitorUrl}のモニター{monitor}で検出された応答時間異常({severity}レベル)のアラートが回復しました", - "xpack.synthetics.alerts.monitorStatus.defaultActionMessage": "{monitorName} を {observerLocation} から {monitorUrl} のurlで監視する {statusMessage} 最新のエラーメッセージは {latestErrorMessage} で、{checkedAt} で確認", - "xpack.synthetics.alerts.monitorStatus.defaultRecoveryMessage": "{observerLocation}から{monitorUrl}のurlを持つモニター{monitorName}に対するアラートが回復しました", - "xpack.synthetics.alerts.monitorStatus.defaultRecoverySubjectMessage": "URL {monitorUrl}のモニター\"{monitorName}\"が回復しました", - "xpack.synthetics.alerts.monitorStatus.defaultSubjectMessage": "url {monitorUrl}のモニタ{monitorName}がダウンしています", "xpack.synthetics.alerts.monitorStatus.upCheck.reasonWithoutDuration": "モニターが再起動しました。{checkedAt}に正常に実行されました。", "xpack.synthetics.alerts.syntheticsMonitorStatus.defaultActionMessage": "\"{monitorName}\"は{locationName}からの{status}です。- Elastic Synthetics\n\n詳細:\n\n- モニター名:{monitorName} \n- {monitorUrlLabel}: {monitorUrl} \n- モニタータイプ:{monitorType} \n- 確認日時:{checkedAt} \n- 場所:{locationName} \n- 受信したエラー:{lastErrorMessage} \n{linkMessage}", "xpack.synthetics.alerts.syntheticsMonitorStatus.defaultRecoveryMessage": "{locationName}からの\"{monitorName}\"のアラートはアクティブではありません:{recoveryReason}。- Elastic Synthetics\n\n詳細:\n\n- モニター名:{monitorName} \n- {monitorUrlLabel}: {monitorUrl} \n- モニタータイプ:{monitorType} \n- 場所:{locationName} \n- 最後に受信したエラー:{lastErrorMessage} \n{linkMessage}", @@ -36846,9 +36820,6 @@ "xpack.synthetics.alerts.syntheticsMonitorStatus.defaultSubjectMessage": "\"{monitorName}\"({locationName})は停止しています - Elastic Synthetics", "xpack.synthetics.alerts.syntheticsMonitorTLS.defaultRecoverySubjectMessage": "証明書{commonName}のアラートが解決しました - Elastic Synthetics", "xpack.synthetics.alerts.syntheticsMonitorTLS.defaultSubjectMessage": "証明書{commonName}のアラートがトリガーされました - Elastic Synthetics", - "xpack.synthetics.alerts.tls.defaultActionMessage": "発行者{issuer}のTLS証明書{commonName}が{status}であることを検出しました。証明書{summary}", - "xpack.synthetics.alerts.tls.defaultRecoveryMessage": "発行者{issuer}のTLS証明書{commonName}のアラートが回復しました", - "xpack.synthetics.alerts.tls.legacy.defaultActionMessage": "期限切れになるか古くなりすぎた{count}個のTLS証明書証明書を検知しました。\n{expiringConditionalOpen}\n有効期限切れになる証明書件数:{expiringCount}\n有効期限切れになる証明書:{expiringCommonNameAndDate}\n{expiringConditionalClose}\n{agingConditionalOpen}\n古い証明書件数:{agingCount}\n古い証明書:{agingCommonNameAndDate}\n{agingConditionalClose}\n", "xpack.synthetics.certificates.heading": "TLS証明書({total})", "xpack.synthetics.certificatesRoute.title": "証明書 | {baseTitle}", "xpack.synthetics.certs.status.ok.label": " {okRelativeDate}", @@ -37014,14 +36985,10 @@ "xpack.synthetics.alertRules.monitorStatus.browser.label": "ブラウザー", "xpack.synthetics.alertRules.monitorStatus.host.label": "ホスト", "xpack.synthetics.alertRules.monitorStatus.unavailableUrlLabel": "(使用不可)", - "xpack.synthetics.alerts.durationAnomaly.clientName": "アップタイム期間異常", - "xpack.synthetics.alerts.durationAnomaly.description": "アップタイム監視期間が異常なときにアラートを発行します。", "xpack.synthetics.alerts.monitorStatus.absoluteLink.label": "- リンク", - "xpack.synthetics.alerts.monitorStatus.clientName": "稼働状況の監視ステータス", "xpack.synthetics.alerts.monitorStatus.defaultRecovery.status": "回復しました", "xpack.synthetics.alerts.monitorStatus.deleteMonitor.reason": "モニターが削除されました", "xpack.synthetics.alerts.monitorStatus.deleteMonitor.status": "が削除されました", - "xpack.synthetics.alerts.monitorStatus.description": "監視が停止しているか、可用性しきい値に違反したときにアラートを発行します。", "xpack.synthetics.alerts.monitorStatus.downLabel": "ダウン", "xpack.synthetics.alerts.monitorStatus.relativeLink.label": "- 相対リンク", "xpack.synthetics.alerts.monitorStatus.removedLocation.reason": "この場所はモニターから削除されました", @@ -37031,18 +36998,13 @@ "xpack.synthetics.alerts.settings.addConnector": "コネクターの追加", "xpack.synthetics.alerts.syntheticsMonitorStatus.clientName": "監視ステータス", "xpack.synthetics.alerts.syntheticsMonitorStatus.description": "モニターがダウンしているときにアラートを通知します。", - "xpack.synthetics.alerts.tls.clientName": "アップタイムTLS", "xpack.synthetics.alerts.tls.criteriaExpression.description": "タイミング", - "xpack.synthetics.alerts.tls.description": "アップタイム監視の TLS 証明書の有効期限が近いときにアラートを発行します。", - "xpack.synthetics.alerts.tls.legacy.clientName": "アップタイムTLS(レガシー)", - "xpack.synthetics.alerts.tls.legacy.description": "アップタイム監視の TLS 証明書の有効期限が近いときにアラートを発行します。このアラートは将来のバージョンで廃止予定です。", "xpack.synthetics.alerts.toggleAlertFlyoutButtonText": "アラートとルール", "xpack.synthetics.alertsRulesPopover.toggleButton.ariaLabel": "アラートおよびルールメニューを開く", "xpack.synthetics.analyzeDataButtonLabel": "データの探索", "xpack.synthetics.analyzeDataButtonLabel.message": "データの探索では、任意のディメンションの結果データを選択してフィルタリングし、パフォーマンスの問題の原因または影響を調査することができます。", "xpack.synthetics.app.navigateToAlertingButton.content": "ルールの管理", "xpack.synthetics.app.navigateToAlertingUi": "Syntheticsを離れてアラート管理ページに移動します", - "xpack.synthetics.app.testNow.available.private": "非公開の場所では手動でテストを開始できません。", "xpack.synthetics.badge.readOnly.text": "読み取り専用", "xpack.synthetics.badge.readOnly.tooltip": "を保存できませんでした", "xpack.synthetics.blocked": "ブロック", @@ -37782,8 +37744,6 @@ "xpack.synthetics.settings.enablement.fail": "Syntheticsアプリを有効化できませんでした", "xpack.synthetics.settings.error.couldNotSave": "設定を保存できませんでした!", "xpack.synthetics.settings.getParams.failed": "グローバルパラメーターを取得できませんでした。", - "xpack.synthetics.settings.invalid.error": "値は0よりも大きい値でなければなりません。", - "xpack.synthetics.settings.invalid.nanError": "値は整数でなければなりません。", "xpack.synthetics.settings.noSpace.error": "インデックス名にはスペースを使用できません", "xpack.synthetics.settings.saveSuccess": "設定が保存されました。", "xpack.synthetics.settings.syncGlobalParams": "グローバルパラメーターをすべてのモニターに正常に適用しました", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index c18773cc676be4..5c725f1b1571b8 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -4753,7 +4753,6 @@ "kibana-react.kibanaCodeEditor.ariaLabel": "代码编辑器", "kibana-react.kibanaCodeEditor.enterKeyLabel": "Enter", "kibana-react.kibanaCodeEditor.escapeKeyLabel": "Esc", - "reactPackages.mountPointPortal.errorMessage": "呈现门户内容时出错", "kibana-react.noDataPage.cantDecide.link": "请参阅我们的文档以了解更多信息。", "kibana-react.noDataPage.elasticAgentCard.description": "使用 Elastic 代理以简单统一的方式从您的计算机中收集数据。", "kibana-react.noDataPage.elasticAgentCard.noPermission.description": "尚未启用此集成。您的管理员具有打开它所需的权限。", @@ -4767,6 +4766,7 @@ "kibana-react.pageFooter.makeDefaultRouteLink": "将此设为我的登陆页面", "kibana-react.solutionNav.collapsibleLabel": "折叠侧边导航", "kibana-react.solutionNav.openLabel": "打开侧边导航", + "reactPackages.mountPointPortal.errorMessage": "呈现门户内容时出错", "languageDocumentationPopover.header": "{language} 参考", "languageDocumentationPopover.tooltip": "{lang} 参考", "languageDocumentationPopover.searchPlaceholder": "搜索", @@ -11710,7 +11710,6 @@ "xpack.dataVisualizer.file.resultsLinks.fileBeatConfigTopText2": "修改 {filebeatYml} 以设置连接信息:", "xpack.dataVisualizer.file.welcomeContent.uploadedFilesAllowedSizeDescription": "您可以上传不超过 {maxFileSize} 的文件。", "xpack.dataVisualizer.index.dataLoader.internalServerErrorMessage": "加载索引 {index} 中的数据时出错。{message}。请求可能已超时。请尝试使用较小的样例大小或缩小时间范围。", - "xpack.dataVisualizer.index.dataViewNotBasedOnTimeSeriesNotificationTitle": "数据视图 {dataViewTitle} 并非基于时间序列", "xpack.dataVisualizer.index.errorLoadingDataMessage": "加载索引 {index} 中的数据时出错。{message}。", "xpack.dataVisualizer.index.lensChart.averageOfLabel": "{fieldName} 的平均值", "xpack.dataVisualizer.index.lensChart.chartTitle": "{fieldName} 的 Lens", @@ -11935,7 +11934,6 @@ "xpack.dataVisualizer.index.dataViewManagement.actionsPopoverLabel": "数据视图设置", "xpack.dataVisualizer.index.dataViewManagement.addFieldButton": "将字段添加到数据视图", "xpack.dataVisualizer.index.dataViewManagement.manageFieldButton": "管理数据视图字段", - "xpack.dataVisualizer.index.dataViewNotBasedOnTimeSeriesNotificationDescription": "仅针对基于时间的索引运行异常检测", "xpack.dataVisualizer.index.embeddableErrorDescription": "加载可嵌入对象时出现错误。请检查所有必需的输入是否有效。", "xpack.dataVisualizer.index.embeddableErrorTitle": "加载可嵌入对象时出错", "xpack.dataVisualizer.index.embeddableNoResultsMessage": "找不到结果", @@ -12164,7 +12162,6 @@ "xpack.enterpriseSearch.content.indices.deleteIndex.successToast.title": "您的索引 {indexName} 和任何关联的采集配置已成功删除", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.noModels.description": "您没有可供推理管道使用的已训练 Machine Learning 模型。{documentationLink}", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.configure.name.helpText": "管道名称在部署内唯一,并且只能包含字母、数字、下划线和连字符。这会创建名为 {pipelineName} 的管道。", - "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.error": "配置管道需要设置源字段,但此索引没有字段映射。{learnMore}", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText.default": "这会命名存放推理结果的字段。它将加有“ml.inference”前缀,如果未设置,将默认前缀为“ml.inference.{pipelineName}”", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText.textClassificationModel": "此外,如果 prediction_probability 大于 {probabilityThreshold},则会将 predicted_value 复制到“{fieldName}”", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText.textEmbeddingModel": "此外,还会将 predicted_value 复制到“{fieldName}”", @@ -13602,12 +13599,9 @@ "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.fieldMappings.tableCaption": "字段映射", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.fieldMappings.targetFieldHeader": "目标字段", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.selectedFields": "选定字段", - "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.error.docLink": "详细了解字段映射", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.helpText": "选择现有字段或键入字段名称。", - "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceField.placeholder": "选择架构字段", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.sourceFieldLabel": "源字段", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.helpText": "此名称基于您的源字段自动创建。", - "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetField.label": "目标字段(可选)", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.targetFieldLabel": "目标字段", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.fields.title": "选择字段映射", "xpack.enterpriseSearch.content.indices.pipelines.addInferencePipelineModal.steps.review.description": "将创建此管道并将其作为处理器注入到该索引的默认管道。您还可以独立使用这个新管道。", @@ -14593,8 +14587,6 @@ "xpack.enterpriseSearch.server.routes.createApiIndex.connectorExistsError": "此索引的连接器已存在", "xpack.enterpriseSearch.server.routes.createApiIndex.crawlerExistsError": "此索引的网络爬虫已存在", "xpack.enterpriseSearch.server.routes.createApiIndex.indexExistsError": "此索引已存在", - "xpack.enterpriseSearch.server.routes.createMlInferencePipeline.ParameterConflictError": "如果未提供 source_field、destination_field 和 model_id,应仅提供 pipeline_definition 和 field_mappings", - "xpack.enterpriseSearch.server.routes.createMlInferencePipeline.ParameterMissingError": "必须提供 pipeline_definition 和 fieldMappings,或 source_field 和 model_id", "xpack.enterpriseSearch.server.routes.createSearchApplication.searchApplciationExistsError": "搜索应用程序名称已占用。请选择其他名称。", "xpack.enterpriseSearch.server.routes.indices.mlInference.pipelineProcessors.pipelineIsInUseError": "推理管道已用在不同索引的托管管道“{pipelineName}”中", "xpack.enterpriseSearch.server.routes.recreateConnector.connectorExistsError": "此索引的连接器已存在", @@ -27319,7 +27311,6 @@ "xpack.observability.slo.duration.minute": "{duration, plural, other {# 分钟}}", "xpack.observability.slo.duration.month": "{duration, plural, other {# 个月}}", "xpack.observability.slo.duration.week": "{duration, plural, other {# 周}}", - "xpack.observability.slo.duration.year": "{duration, plural, other {# 年}}", "xpack.observability.slo.indicatorTypeBadge.exploreInApm": "查看 {service} 详情", "xpack.observability.slo.list.sortByType": "按 {type} 排序", "xpack.observability.slo.rules.burnRate.errors.invalidThresholdValue": "消耗速度阈值必须介于 1 和 {maxBurnRate} 之间。", @@ -27618,7 +27609,6 @@ "xpack.observability.slo.duration.minutely": "每分钟", "xpack.observability.slo.duration.monthly": "每月", "xpack.observability.slo.duration.weekly": "每周", - "xpack.observability.slo.duration.yearly": "每年", "xpack.observability.slo.feedbackButtonLabel": "告诉我们您的看法!", "xpack.observability.slo.globalDiagnosis.errorNotification": "您没有适当权限,无法使用此功能。", "xpack.observability.slo.indicators.apmAvailability": "APM 可用性", @@ -27630,11 +27620,8 @@ "xpack.observability.slo.list.errorMessage": "加载 SLO 时出错。请联系您的管理员寻求帮助。", "xpack.observability.slo.list.errorNotification": "提取 SLO 时出现问题", "xpack.observability.slo.list.errorTitle": "无法加载 SLO", - "xpack.observability.slo.list.indicatorTypeFilter": "指标类型", "xpack.observability.slo.list.search": "搜索", "xpack.observability.slo.list.sortBy": "排序依据", - "xpack.observability.slo.list.sortBy.creationTime": "创建时间", - "xpack.observability.slo.list.sortBy.indicatorType": "指标类型", "xpack.observability.slo.rules.actionGroupSelectorLabel": "操作组", "xpack.observability.slo.rules.addWindowAriaLabel": "添加窗口", "xpack.observability.slo.rules.addWIndowLabel": "添加窗口", @@ -27748,19 +27735,11 @@ "xpack.observability.slo.sloEdit.sliType.customMetric.deleteLabel": "删除指标", "xpack.observability.slo.sloEdit.sliType.customMetric.equation.invalidCharacters": "方程字段仅支持以下字符:A-Z、+、-、/、*、(、)、?、!、&、:、|、>、<、=", "xpack.observability.slo.sloEdit.sliType.customMetric.equationHelpText": "支持基本数学方程,有效字符包括:A-Z、+、-、/、*、(、)、?、!、&、:、|、>、<、=", - "xpack.observability.slo.sloEdit.sliType.customMetric.goodEquation.tooltip": "这支持基本数学 (A + B / C) 和布尔逻辑 (A < B ?A :B)。", - "xpack.observability.slo.sloEdit.sliType.customMetric.goodEquationLabel": "适用方程", - "xpack.observability.slo.sloEdit.sliType.customMetric.goodMetric.tooltip": "来自该字段的此类数据将使用“求和”聚合进行汇总。", - "xpack.observability.slo.sloEdit.sliType.customMetric.goodMetricLabel": "良好指标", "xpack.observability.slo.sloEdit.sliType.customMetric.metricField.placeholder": "选择指标字段", "xpack.observability.slo.sloEdit.sliType.customMetric.queryFilter": "查询筛选", "xpack.observability.slo.sloEdit.sliType.customMetric.sumLabel": "求和", "xpack.observability.slo.sloEdit.sliType.customMetric.timestampField.label": "时间戳字段", "xpack.observability.slo.sloEdit.sliType.customMetric.timestampField.placeholder": "选择时间戳字段", - "xpack.observability.slo.sloEdit.sliType.customMetric.totalEquation.tooltip": "这支持基本数学 (A + B / C) 和布尔逻辑 (A < B ?A :B)。", - "xpack.observability.slo.sloEdit.sliType.customMetric.totalEquationLabel": "总体方程", - "xpack.observability.slo.sloEdit.sliType.customMetric.totalMetric.tooltip": "来自该字段的此类数据将使用“求和”聚合进行汇总。", - "xpack.observability.slo.sloEdit.sliType.customMetric.totalMetricLabel": "总指标", "xpack.observability.slo.sloEdit.tags.label": "标签", "xpack.observability.slo.sloEdit.tags.placeholder": "添加标签", "xpack.observability.slo.sloEdit.targetSlo.label": "目标/SLO (%)", @@ -36827,12 +36806,6 @@ "xpack.stackConnectors.xmatters.title": "xMatters", "xpack.stackConnectors.xmatters.unexpectedNullResponseErrorMessage": "来自 xmatters 的异常空响应", "xpack.synthetics.alertRules.monitorStatus.reasonMessage": "来自 {location} 的监测“{name}”为 {status}。已于 {checkedAt} 检查。", - "xpack.synthetics.alerts.durationAnomaly.defaultActionMessage": "{anomalyStartTimestamp} 在 url {monitorUrl} 的 {monitor} 上检测到异常({severity} 级别)响应时间。异常严重性分数为 {severityScore}。\n从位置 {observerLocation} 检测到高达 {slowestAnomalyResponse} 的响应时间。预期响应时间为 {expectedResponseTime}。", - "xpack.synthetics.alerts.durationAnomaly.defaultRecoveryMessage": "{anomalyStartTimestamp} 从位置 {observerLocation} 在 url {monitorUrl} 的监测 {monitor} 上检测到异常({severity} 级别)响应时间的告警已恢复", - "xpack.synthetics.alerts.monitorStatus.defaultActionMessage": "在 {observerLocation},URL 为 {monitorUrl} 的监测 {monitorName} 是 {statusMessage} 最新错误消息是 {latestErrorMessage},已于 {checkedAt} 检查", - "xpack.synthetics.alerts.monitorStatus.defaultRecoveryMessage": "来自 {observerLocation} 且 url 为 {monitorUrl} 的监测 {monitorName} 的告警已恢复", - "xpack.synthetics.alerts.monitorStatus.defaultRecoverySubjectMessage": "URL 为 {monitorUrl} 的监测 {monitorName} 已恢复", - "xpack.synthetics.alerts.monitorStatus.defaultSubjectMessage": "URL 为 {monitorUrl} 的监测 {monitorName} 已关闭", "xpack.synthetics.alerts.monitorStatus.upCheck.reasonWithoutDuration": "监测现已再次启动。它于 {checkedAt}成功运行", "xpack.synthetics.alerts.syntheticsMonitorStatus.defaultActionMessage": "“{monitorName}”为来自 {locationName} 的 {status} 状态 - Elastic Synthetics\n\n详情:\n\n- 监测名称:{monitorName} \n- {monitorUrlLabel}:{monitorUrl} \n- 监测类型:{monitorType} \n- 检查时间:{checkedAt} \n- 来自:{locationName} \n- 收到错误:{lastErrorMessage} \n{linkMessage}", "xpack.synthetics.alerts.syntheticsMonitorStatus.defaultRecoveryMessage": "来自 {locationName} 的“{monitorName}”的告警不再处于活动状态:{recoveryReason} - Elastic Synthetics\n\n详情:\n\n- 监测名称:{monitorName} \n- {monitorUrlLabel}:{monitorUrl} \n- 监测类型:{monitorType} \n- 来自:{locationName} \n- 收到的上一个错误:{lastErrorMessage} \n{linkMessage}", @@ -36840,9 +36813,6 @@ "xpack.synthetics.alerts.syntheticsMonitorStatus.defaultSubjectMessage": "“{monitorName}”({locationName}) 已关闭 - Elastic Synthetics", "xpack.synthetics.alerts.syntheticsMonitorTLS.defaultRecoverySubjectMessage": "告警已解析证书 {commonName} - Elastic Synthetics", "xpack.synthetics.alerts.syntheticsMonitorTLS.defaultSubjectMessage": "已针对证书 {commonName} 触发告警 - Elastic Synthetics", - "xpack.synthetics.alerts.tls.defaultActionMessage": "检测到来自颁发者 {issuer} 的 TLS 证书 {commonName} 的状态为 {status}。证书 {summary}", - "xpack.synthetics.alerts.tls.defaultRecoveryMessage": "来自颁发者 {issuer} 的 TLS 证书 {commonName} 的告警已恢复", - "xpack.synthetics.alerts.tls.legacy.defaultActionMessage": "检测到 {count} 个 TLS 证书即将过期或即将过时。\n{expiringConditionalOpen}\n即将过期的证书计数:{expiringCount}\n即将过期的证书:{expiringCommonNameAndDate}\n{expiringConditionalClose}\n{agingConditionalOpen}\n过时的证书计数:{agingCount}\n过时的证书:{agingCommonNameAndDate}\n{agingConditionalClose}\n", "xpack.synthetics.certificates.heading": "TLS 证书 ({total})", "xpack.synthetics.certificatesRoute.title": "证书 | {baseTitle}", "xpack.synthetics.certs.status.ok.label": " 对于 {okRelativeDate}", @@ -37008,14 +36978,10 @@ "xpack.synthetics.alertRules.monitorStatus.browser.label": "浏览器", "xpack.synthetics.alertRules.monitorStatus.host.label": "主机", "xpack.synthetics.alertRules.monitorStatus.unavailableUrlLabel": "(不可用)", - "xpack.synthetics.alerts.durationAnomaly.clientName": "Uptime 持续时间异常", - "xpack.synthetics.alerts.durationAnomaly.description": "运行时间监测持续时间异常时告警。", "xpack.synthetics.alerts.monitorStatus.absoluteLink.label": "- 链接", - "xpack.synthetics.alerts.monitorStatus.clientName": "运行时间监测状态", "xpack.synthetics.alerts.monitorStatus.defaultRecovery.status": "已恢复", "xpack.synthetics.alerts.monitorStatus.deleteMonitor.reason": "此监测已删除", "xpack.synthetics.alerts.monitorStatus.deleteMonitor.status": "已删除", - "xpack.synthetics.alerts.monitorStatus.description": "监测关闭或超出可用性阈值时告警。", "xpack.synthetics.alerts.monitorStatus.downLabel": "关闭", "xpack.synthetics.alerts.monitorStatus.relativeLink.label": "- 相对链接", "xpack.synthetics.alerts.monitorStatus.removedLocation.reason": "此位置已从监测中移除", @@ -37025,18 +36991,13 @@ "xpack.synthetics.alerts.settings.addConnector": "添加连接器", "xpack.synthetics.alerts.syntheticsMonitorStatus.clientName": "监测状态", "xpack.synthetics.alerts.syntheticsMonitorStatus.description": "监测关闭时告警。", - "xpack.synthetics.alerts.tls.clientName": "Uptime TLS", "xpack.synthetics.alerts.tls.criteriaExpression.description": "当", - "xpack.synthetics.alerts.tls.description": "运行时间监测的 TLS 证书即将过期时告警。", - "xpack.synthetics.alerts.tls.legacy.clientName": "Uptime TLS(旧版)", - "xpack.synthetics.alerts.tls.legacy.description": "运行时间监测的 TLS 证书即将过期时告警。未来的版本将弃用此告警。", "xpack.synthetics.alerts.toggleAlertFlyoutButtonText": "告警和规则", "xpack.synthetics.alertsRulesPopover.toggleButton.ariaLabel": "打开告警和规则菜单", "xpack.synthetics.analyzeDataButtonLabel": "浏览数据", "xpack.synthetics.analyzeDataButtonLabel.message": "“浏览数据”允许您选择和筛选任意维度中的结果数据以及查找性能问题的原因或影响。", "xpack.synthetics.app.navigateToAlertingButton.content": "管理规则", "xpack.synthetics.app.navigateToAlertingUi": "离开 Synthetics 并前往“Alerting 管理”页面", - "xpack.synthetics.app.testNow.available.private": "不能在专用位置上手动启动测试。", "xpack.synthetics.badge.readOnly.text": "只读", "xpack.synthetics.badge.readOnly.tooltip": "无法保存", "xpack.synthetics.blocked": "已阻止", @@ -37776,8 +37737,6 @@ "xpack.synthetics.settings.enablement.fail": "无法启用 Synthetics 应用", "xpack.synthetics.settings.error.couldNotSave": "无法保存设置!", "xpack.synthetics.settings.getParams.failed": "无法获取全局参数。", - "xpack.synthetics.settings.invalid.error": "值必须大于 0。", - "xpack.synthetics.settings.invalid.nanError": "值必须为整数。", "xpack.synthetics.settings.noSpace.error": "索引名称不得包含空格", "xpack.synthetics.settings.saveSuccess": "设置已保存!", "xpack.synthetics.settings.syncGlobalParams": "已成功将全局参数应用到所有监测", diff --git a/x-pack/plugins/synthetics/common/types/integration_deprecation.ts b/x-pack/plugins/uptime/common/index.ts similarity index 72% rename from x-pack/plugins/synthetics/common/types/integration_deprecation.ts rename to x-pack/plugins/uptime/common/index.ts index 951de85c046b65..50725f0c3a90af 100644 --- a/x-pack/plugins/synthetics/common/types/integration_deprecation.ts +++ b/x-pack/plugins/uptime/common/index.ts @@ -5,6 +5,4 @@ * 2.0. */ -export interface SyntheticsHasIntegrationMonitorsResponse { - hasIntegrationMonitors: boolean; -} +export { UPTIME_RULE_TYPES } from './constants/uptime_alerts'; diff --git a/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.test.ts b/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.test.ts index 21c20503f31ab2..7a488602654320 100644 --- a/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.test.ts +++ b/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.test.ts @@ -121,6 +121,8 @@ describe('duration anomaly alert', () => { jest.spyOn(Intl, 'DateTimeFormat').mockImplementation(() => ({ format: jest.fn(), formatToParts: jest.fn(), + formatRange: jest.fn(), + formatRangeToParts: jest.fn(), resolvedOptions: () => ({ locale: '', calendar: '', diff --git a/x-pack/plugins/watcher/public/application/sections/watch_list_page/watch_list_page.tsx b/x-pack/plugins/watcher/public/application/sections/watch_list_page/watch_list_page.tsx index 77668505742bc0..cf0c1d4177d7fb 100644 --- a/x-pack/plugins/watcher/public/application/sections/watch_list_page/watch_list_page.tsx +++ b/x-pack/plugins/watcher/public/application/sections/watch_list_page/watch_list_page.tsx @@ -62,7 +62,6 @@ export const WatchListPage = () => { pageIndex: 0, pageSize: PAGINATION.initialPageSize, }); - const [query, setQuery] = useState(''); useEffect(() => { setBreadcrumbs([listBreadcrumb]); @@ -447,14 +446,7 @@ export const WatchListPage = () => { : '', }; - const handleOnChange = (search: { queryText: string }) => { - setQuery(search.queryText); - return true; - }; - const searchConfig = { - query, - onChange: handleOnChange, box: { incremental: true, }, diff --git a/x-pack/test/alerting_api_integration/observability/synthetics_rule.ts b/x-pack/test/alerting_api_integration/observability/synthetics_rule.ts index 21192aa2075f9e..888d2a0d7f8975 100644 --- a/x-pack/test/alerting_api_integration/observability/synthetics_rule.ts +++ b/x-pack/test/alerting_api_integration/observability/synthetics_rule.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { API_URLS, SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; import { SanitizedRule } from '@kbn/alerting-plugin/common'; import { omit } from 'lodash'; import { TlsTranslations } from '@kbn/synthetics-plugin/common/rules/synthetics/translations'; @@ -36,7 +36,7 @@ export default function ({ getService }: FtrProviderContext) { it('creates rule when settings are configured', async () => { await supertest - .post(API_URLS.DYNAMIC_SETTINGS) + .post(SYNTHETICS_API_URLS.DYNAMIC_SETTINGS) .set('kbn-xsrf', 'true') .send({ heartbeatIndices: 'heartbeat-8*,heartbeat-7*', @@ -76,7 +76,7 @@ export default function ({ getService }: FtrProviderContext) { it('updates rules when settings are updated', async () => { await supertest - .post(API_URLS.DYNAMIC_SETTINGS) + .post(SYNTHETICS_API_URLS.DYNAMIC_SETTINGS) .set('kbn-xsrf', 'true') .send({ heartbeatIndices: 'heartbeat-8*,heartbeat-7*', diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/alerting_and_actions_telemetry.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/alerting_and_actions_telemetry.ts index 7925bfe6f2eb9d..02a41b6de7afae 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/alerting_and_actions_telemetry.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/alerting_and_actions_telemetry.ts @@ -8,7 +8,13 @@ import expect from '@kbn/expect'; import { ESTestIndexTool } from '@kbn/alerting-api-integration-helpers'; import { Spaces, Superuser } from '../../../scenarios'; -import { getUrlPrefix, getEventLog, getTestRuleData, TaskManagerDoc } from '../../../../common/lib'; +import { + getUrlPrefix, + getEventLog, + getTestRuleData, + TaskManagerDoc, + ObjectRemover, +} from '../../../../common/lib'; import { FtrProviderContext } from '../../../../common/ftr_provider_context'; // eslint-disable-next-line import/no-default-export @@ -20,8 +26,8 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F const esTestIndexTool = new ESTestIndexTool(es, retry); const supertestWithoutAuth = getService('supertestWithoutAuth'); - // FLAKY: https://github.com/elastic/kibana/issues/140973 - describe.skip('telemetry', () => { + describe('telemetry', () => { + const objectRemover = new ObjectRemover(supertest); const alwaysFiringRuleId: { [key: string]: string } = {}; beforeEach(async () => { @@ -29,6 +35,12 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F await esTestIndexTool.setup(); }); + afterEach(() => objectRemover.removeAll()); + + after(async () => { + await esTestIndexTool.destroy(); + }); + async function createConnector(opts: { name: string; space: string; connectorTypeId: string }) { const { name, space, connectorTypeId } = opts; const { body: createdConnector } = await supertestWithoutAuth @@ -42,6 +54,7 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F secrets: {}, }) .expect(200); + objectRemover.add(space, createdConnector.id, 'connector', 'actions'); return createdConnector.id; } @@ -52,7 +65,8 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F .set('kbn-xsrf', 'foo') .auth(Superuser.username, Superuser.password) .send(getTestRuleData(ruleOverwrites)); - expect(ruleResponse.status).to.eql(200); + expect(ruleResponse.status).to.equal(200); + objectRemover.add(space, ruleResponse.body.id, 'rule', 'alerting'); return ruleResponse.body.id; } @@ -69,127 +83,81 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F space: space.id, connectorTypeId: 'test.throw', }); + // excluded connector await createConnector({ name: 'unused connector', space: space.id, connectorTypeId: 'test.excluded', }); - await createRule({ - space: space.id, - ruleOverwrites: { - rule_type_id: 'test.noop', - schedule: { interval: '30s' }, - throttle: '1s', - params: {}, - actions: [ - { - id: noopConnectorId, - group: 'default', - params: {}, - }, - ], - }, - }); - await createRule({ - space: space.id, - ruleOverwrites: { - rule_type_id: 'test.onlyContextVariables', - schedule: { interval: '10s' }, - throttle: '10m', - params: {}, - actions: [ - { - id: failingConnectorId, - group: 'default', - params: {}, - }, - ], - }, - }); - await createRule({ - space: space.id, - ruleOverwrites: { - rule_type_id: 'test.throw', - schedule: { interval: '1m' }, - throttle: '30s', - params: {}, - actions: [ - { - id: noopConnectorId, - group: 'default', - params: {}, - }, - ], - }, - }); alwaysFiringRuleId[space.id] = await createRule({ space: space.id, ruleOverwrites: { - rule_type_id: 'example.always-firing', - schedule: { interval: '3s' }, + rule_type_id: 'test.patternFiring', + schedule: { interval: '1h' }, throttle: null, - notify_when: 'onActiveAlert', - params: {}, + params: { + pattern: { instance: [true] }, + }, actions: [ { id: noopConnectorId, - group: 'small', + group: 'default', params: {}, }, { id: 'my-slack1', - group: 'medium', + group: 'default', params: {}, }, { id: failingConnectorId, - group: 'large', + group: 'default', params: {}, }, ], }, }); - + // disabled rule await createRule({ space: space.id, ruleOverwrites: { rule_type_id: 'test.noop', - schedule: { interval: '5m' }, + schedule: { interval: '1h' }, throttle: null, enabled: false, params: {}, actions: [], }, }); - + // throwing rule await createRule({ space: space.id, ruleOverwrites: { - rule_type_id: 'test.multipleSearches', - schedule: { interval: '40s' }, - throttle: '1m', - params: { numSearches: 2, delay: `2s` }, - actions: [], - }, - }); - - await createRule({ - space: space.id, - ruleOverwrites: { - rule_type_id: 'test.cumulative-firing', - schedule: { interval: '61s' }, - throttle: '2s', - notify_when: 'onActiveAlert', + rule_type_id: 'test.throw', + schedule: { interval: '1h' }, + throttle: null, + params: {}, actions: [ { - id: failingConnectorId, + id: noopConnectorId, group: 'default', params: {}, }, ], }, }); + // ES search rule + await createRule({ + space: space.id, + ruleOverwrites: { + rule_type_id: 'test.multipleSearches', + schedule: { interval: '1h' }, + throttle: '1s', + params: { numSearches: 2, delay: `2s` }, + actions: [], + }, + }); } } @@ -245,49 +213,44 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F ); expect( - telemetry.count_connector_types_by_action_run_outcome_per_day['test.throw'].failure - ).to.greaterThan(0); + telemetry.count_connector_types_by_action_run_outcome_per_day['test.throw'].failure > 0 + ).to.be(true); } function verifyAlertingTelemetry(telemetry: any) { logger.info(`alerting telemetry - ${JSON.stringify(telemetry)}`); // total number of enabled rules - expect(telemetry.count_active_total).to.equal(18); + expect(telemetry.count_active_total).to.equal(9); // total number of disabled rules expect(telemetry.count_disabled_total).to.equal(3); // total number of rules broken down by rule type - expect(telemetry.count_by_type.test__noop).to.equal(6); - expect(telemetry.count_by_type['example__always-firing']).to.equal(3); - expect(telemetry.count_by_type['test__cumulative-firing']).to.equal(3); + expect(telemetry.count_by_type.test__noop).to.equal(3); + expect(telemetry.count_by_type.test__patternFiring).to.equal(3); expect(telemetry.count_by_type.test__multipleSearches).to.equal(3); - expect(telemetry.count_by_type.test__onlyContextVariables).to.equal(3); expect(telemetry.count_by_type.test__throw).to.equal(3); // total number of enabled rules broken down by rule type - expect(telemetry.count_active_by_type['example__always-firing']).to.equal(3); - expect(telemetry.count_active_by_type['test__cumulative-firing']).to.equal(3); + expect(telemetry.count_active_by_type.test__patternFiring).to.equal(3); expect(telemetry.count_active_by_type.test__multipleSearches).to.equal(3); - expect(telemetry.count_active_by_type.test__noop).to.equal(3); - expect(telemetry.count_active_by_type.test__onlyContextVariables).to.equal(3); expect(telemetry.count_active_by_type.test__throw).to.equal(3); // throttle time stats expect(telemetry.throttle_time.min).to.equal('0s'); - expect(telemetry.throttle_time.avg).to.equal('115.5s'); - expect(telemetry.throttle_time.max).to.equal('600s'); + expect(telemetry.throttle_time.avg).to.equal('0.4s'); + expect(telemetry.throttle_time.max).to.equal('1s'); expect(telemetry.throttle_time_number_s.min).to.equal(0); - expect(telemetry.throttle_time_number_s.avg).to.equal(115.5); - expect(telemetry.throttle_time_number_s.max).to.equal(600); + expect(telemetry.throttle_time_number_s.avg).to.equal(0.4); + expect(telemetry.throttle_time_number_s.max).to.equal(1); // schedule interval stats - expect(telemetry.schedule_time.min).to.equal('3s'); - expect(telemetry.schedule_time.avg).to.equal('72s'); - expect(telemetry.schedule_time.max).to.equal('300s'); - expect(telemetry.schedule_time_number_s.min).to.equal(3); - expect(telemetry.schedule_time_number_s.avg).to.equal(72); - expect(telemetry.schedule_time_number_s.max).to.equal(300); + expect(telemetry.schedule_time.min).to.equal('3600s'); + expect(telemetry.schedule_time.avg).to.equal('3600s'); + expect(telemetry.schedule_time.max).to.equal('3600s'); + expect(telemetry.schedule_time_number_s.min).to.equal(3600); + expect(telemetry.schedule_time_number_s.avg).to.equal(3600); + expect(telemetry.schedule_time_number_s.max).to.equal(3600); // attached connectors stats expect(telemetry.connectors_per_alert.min).to.equal(0); @@ -299,12 +262,10 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F // number of rule executions - just checking for non-zero as we can't set an exact number // each rule should have had a chance to execute once - expect(telemetry.count_rules_executions_per_day >= 21).to.be(true); + expect(telemetry.count_rules_executions_per_day > 0).to.be(true); // number of rule executions broken down by rule type - expect(telemetry.count_by_type['example__always-firing'] >= 3).to.be(true); - expect(telemetry.count_by_type.test__onlyContextVariables >= 3).to.be(true); - expect(telemetry.count_by_type['test__cumulative-firing'] >= 3).to.be(true); + expect(telemetry.count_by_type.test__patternFiring >= 3).to.be(true); expect(telemetry.count_by_type.test__noop >= 3).to.be(true); expect(telemetry.count_by_type.test__multipleSearches >= 3).to.be(true); expect(telemetry.count_by_type.test__throw >= 3).to.be(true); @@ -313,16 +274,7 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F expect(telemetry.avg_execution_time_per_day > 0).to.be(true); // average execution time broken down by rule type - expect(telemetry.avg_execution_time_by_type_per_day['example__always-firing'] > 0).to.be( - true - ); - expect(telemetry.avg_execution_time_by_type_per_day.test__onlyContextVariables > 0).to.be( - true - ); - expect(telemetry.avg_execution_time_by_type_per_day['test__cumulative-firing'] > 0).to.be( - true - ); - expect(telemetry.avg_execution_time_by_type_per_day.test__noop > 0).to.be(true); + expect(telemetry.avg_execution_time_by_type_per_day.test__patternFiring > 0).to.be(true); expect(telemetry.avg_execution_time_by_type_per_day.test__multipleSearches > 0).to.be(true); expect(telemetry.avg_execution_time_by_type_per_day.test__throw > 0).to.be(true); @@ -330,17 +282,8 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F expect(telemetry.avg_es_search_duration_per_day > 0).to.be(true); // average es search time broken down by rule type, most of these rule types don't perform ES queries - expect( - telemetry.avg_es_search_duration_by_type_per_day['example__always-firing'] === 0 - ).to.be(true); - expect( - telemetry.avg_es_search_duration_by_type_per_day.test__onlyContextVariables === 0 - ).to.be(true); - expect( - telemetry.avg_es_search_duration_by_type_per_day['test__cumulative-firing'] === 0 - ).to.be(true); - expect(telemetry.avg_es_search_duration_by_type_per_day.test__noop === 0).to.be(true); - expect(telemetry.avg_es_search_duration_by_type_per_day.test__throw === 0).to.be(true); + expect(telemetry.avg_es_search_duration_by_type_per_day.test__patternFiring).to.equal(0); + expect(telemetry.avg_es_search_duration_by_type_per_day.test__throw).to.equal(0); // rule type that performs ES search expect(telemetry.avg_es_search_duration_by_type_per_day.test__multipleSearches > 0).to.be( @@ -351,17 +294,8 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F expect(telemetry.avg_total_search_duration_per_day > 0).to.be(true); // average total search time broken down by rule type, most of these rule types don't perform ES queries - expect( - telemetry.avg_total_search_duration_by_type_per_day['example__always-firing'] === 0 - ).to.be(true); - expect( - telemetry.avg_total_search_duration_by_type_per_day.test__onlyContextVariables === 0 - ).to.be(true); - expect( - telemetry.avg_total_search_duration_by_type_per_day['test__cumulative-firing'] === 0 - ).to.be(true); - expect(telemetry.avg_total_search_duration_by_type_per_day.test__noop === 0).to.be(true); - expect(telemetry.avg_total_search_duration_by_type_per_day.test__throw === 0).to.be(true); + expect(telemetry.avg_total_search_duration_by_type_per_day.test__patternFiring).to.equal(0); + expect(telemetry.avg_total_search_duration_by_type_per_day.test__throw).to.equal(0); // rule type that performs ES search expect(telemetry.avg_total_search_duration_by_type_per_day.test__multipleSearches > 0).to.be( @@ -391,32 +325,20 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F // percentile calculations for number of scheduled actions expect(telemetry.percentile_num_generated_actions_per_day.p50 >= 0).to.be(true); expect(telemetry.percentile_num_generated_actions_per_day.p90 >= 0).to.be(true); - expect(telemetry.percentile_num_generated_actions_per_day.p99).to.be.greaterThan(0); + expect(telemetry.percentile_num_generated_actions_per_day.p99 > 0).to.be(true); // percentile calculations by rule type. most of these rule types don't schedule actions so they should all be 0 - expect( - telemetry.percentile_num_generated_actions_by_type_per_day.p50['example__always-firing'] - ).to.equal(0); - expect( - telemetry.percentile_num_generated_actions_by_type_per_day.p90['example__always-firing'] - ).to.equal(0); - expect( - telemetry.percentile_num_generated_actions_by_type_per_day.p99['example__always-firing'] - ).to.equal(0); + // but this rule type does schedule actions so should be least 1 action scheduled expect( - telemetry.percentile_num_generated_actions_by_type_per_day.p50.test__onlyContextVariables - ).to.equal(0); + telemetry.percentile_num_generated_actions_by_type_per_day.p50.test__patternFiring > 0 + ).to.be(true); expect( - telemetry.percentile_num_generated_actions_by_type_per_day.p90.test__onlyContextVariables - ).to.equal(0); + telemetry.percentile_num_generated_actions_by_type_per_day.p90.test__patternFiring > 0 + ).to.be(true); expect( - telemetry.percentile_num_generated_actions_by_type_per_day.p99.test__onlyContextVariables - ).to.equal(0); - - expect(telemetry.percentile_num_generated_actions_by_type_per_day.p50.test__noop).to.equal(0); - expect(telemetry.percentile_num_generated_actions_by_type_per_day.p90.test__noop).to.equal(0); - expect(telemetry.percentile_num_generated_actions_by_type_per_day.p99.test__noop).to.equal(0); + telemetry.percentile_num_generated_actions_by_type_per_day.p99.test__patternFiring > 0 + ).to.be(true); expect(telemetry.percentile_num_generated_actions_by_type_per_day.p50.test__throw).to.equal( 0 @@ -438,46 +360,23 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F telemetry.percentile_num_generated_actions_by_type_per_day.p99.test__multipleSearches ).to.equal(0); - // this rule type does schedule actions so should be least 1 action scheduled - expect( - telemetry.percentile_num_generated_actions_by_type_per_day.p50['test__cumulative-firing'] - ).to.be.greaterThan(0); - expect( - telemetry.percentile_num_generated_actions_by_type_per_day.p90['test__cumulative-firing'] - ).to.be.greaterThan(0); - expect( - telemetry.percentile_num_generated_actions_by_type_per_day.p99['test__cumulative-firing'] - ).to.be.greaterThan(0); - // percentile calculations for number of alerts expect(telemetry.percentile_num_alerts_per_day.p50 >= 0).to.be(true); expect(telemetry.percentile_num_alerts_per_day.p90 >= 0).to.be(true); - expect(telemetry.percentile_num_alerts_per_day.p99).to.be.greaterThan(0); + expect(telemetry.percentile_num_alerts_per_day.p99 > 0).to.be(true); // percentile calculations by rule type. most of these rule types don't generate alerts so they should all be 0 - expect( - telemetry.percentile_num_alerts_by_type_per_day.p50['example__always-firing'] - ).to.equal(0); - expect( - telemetry.percentile_num_alerts_by_type_per_day.p90['example__always-firing'] - ).to.equal(0); - expect( - telemetry.percentile_num_alerts_by_type_per_day.p99['example__always-firing'] - ).to.equal(0); - - expect( - telemetry.percentile_num_alerts_by_type_per_day.p50.test__onlyContextVariables - ).to.equal(0); - expect( - telemetry.percentile_num_alerts_by_type_per_day.p90.test__onlyContextVariables - ).to.equal(0); - expect( - telemetry.percentile_num_alerts_by_type_per_day.p99.test__onlyContextVariables - ).to.equal(0); + // but this rule type does generate alerts so should be least 1 alert - expect(telemetry.percentile_num_alerts_by_type_per_day.p50.test__noop).to.equal(0); - expect(telemetry.percentile_num_alerts_by_type_per_day.p90.test__noop).to.equal(0); - expect(telemetry.percentile_num_alerts_by_type_per_day.p99.test__noop).to.equal(0); + expect(telemetry.percentile_num_alerts_by_type_per_day.p50.test__patternFiring > 0).to.be( + true + ); + expect(telemetry.percentile_num_alerts_by_type_per_day.p90.test__patternFiring > 0).to.be( + true + ); + expect(telemetry.percentile_num_alerts_by_type_per_day.p99.test__patternFiring > 0).to.be( + true + ); expect(telemetry.percentile_num_alerts_by_type_per_day.p50.test__throw).to.equal(0); expect(telemetry.percentile_num_alerts_by_type_per_day.p90.test__throw).to.equal(0); @@ -493,45 +392,30 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F 0 ); - // this rule type does generate alerts so should be least 1 alert - expect( - telemetry.percentile_num_alerts_by_type_per_day.p50['test__cumulative-firing'] - ).to.be.greaterThan(0); - expect( - telemetry.percentile_num_alerts_by_type_per_day.p90['test__cumulative-firing'] - ).to.be.greaterThan(0); - expect( - telemetry.percentile_num_alerts_by_type_per_day.p99['test__cumulative-firing'] - ).to.be.greaterThan(0); - // rules grouped by execution status - expect(telemetry.count_rules_by_execution_status).to.eql({ - success: 15, - error: 3, - warning: 0, - }); + expect(telemetry.count_rules_by_execution_status.success > 0).to.be(true); + expect(telemetry.count_rules_by_execution_status.error > 0).to.be(true); + expect(telemetry.count_rules_by_execution_status.warning).to.equal(0); + // number of rules that has tags - expect(telemetry.count_rules_with_tags).to.be(21); + expect(telemetry.count_rules_with_tags).to.equal(12); // rules grouped by notify when - expect(telemetry.count_rules_by_notify_when).to.eql({ - on_action_group_change: 0, - on_active_alert: 6, - on_throttle_interval: 15, - }); + expect(telemetry.count_rules_by_notify_when.on_action_group_change).to.equal(0); + expect(telemetry.count_rules_by_notify_when.on_active_alert).to.equal(0); + expect(telemetry.count_rules_by_notify_when.on_throttle_interval).to.equal(12); // rules snoozed - expect(telemetry.count_rules_snoozed).to.be(0); + expect(telemetry.count_rules_snoozed).to.equal(0); // rules muted - expect(telemetry.count_rules_muted).to.be(0); + expect(telemetry.count_rules_muted).to.equal(0); // rules with muted alerts - expect(telemetry.count_rules_with_muted_alerts).to.be(0); + expect(telemetry.count_rules_with_muted_alerts).to.equal(0); // Connector types grouped by consumers - expect(telemetry.count_connector_types_by_consumers).to.eql({ - // eslint-disable-next-line @typescript-eslint/naming-convention - alertsFixture: { test__noop: 9, test__throw: 9, __slack: 3 }, - }); + expect(telemetry.count_connector_types_by_consumers.alertsFixture.test__noop).to.equal(6); + expect(telemetry.count_connector_types_by_consumers.alertsFixture.test__throw).to.equal(3); + expect(telemetry.count_connector_types_by_consumers.alertsFixture.__slack).to.equal(3); - expect(telemetry.count_rules_by_execution_status_per_day.failure).to.greaterThan(0); - expect(telemetry.count_rules_by_execution_status_per_day.success).to.greaterThan(0); + expect(telemetry.count_rules_by_execution_status_per_day.failure > 0).to.be(true); + expect(telemetry.count_rules_by_execution_status_per_day.success > 0).to.be(true); } it('should retrieve telemetry data in the expected format', async () => { @@ -541,11 +425,11 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F await retry.try(async () => { return await getEventLog({ getService, - spaceId: Spaces[0].id, + spaceId: Spaces[2].id, type: 'alert', - id: alwaysFiringRuleId[Spaces[0].id], + id: alwaysFiringRuleId[Spaces[2].id], provider: 'alerting', - actions: new Map([['execute', { gte: 10 }]]), + actions: new Map([['execute', { gte: 1 }]]), }); }); @@ -566,10 +450,12 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F const taskState = telemetryTask!._source!.task?.state; expect(taskState).not.to.be(undefined); actionsTelemetry = JSON.parse(taskState!); - expect(actionsTelemetry.runs).to.equal(2); - expect(actionsTelemetry.count_total).to.equal(20); + expect(actionsTelemetry.runs > 0).to.be(true); + expect(actionsTelemetry.count_total).to.equal(21); }); + verifyActionsTelemetry(actionsTelemetry); + // request alerting telemetry task to run await supertest .post('/api/alerting_actions_telemetry/run_soon') @@ -587,11 +473,10 @@ export default function createAlertingAndActionsTelemetryTests({ getService }: F const taskState = telemetryTask!._source!.task?.state; expect(taskState).not.to.be(undefined); alertingTelemetry = JSON.parse(taskState!); - expect(alertingTelemetry.runs).to.equal(2); - expect(alertingTelemetry.count_total).to.equal(21); + expect(alertingTelemetry.runs > 0).to.be(true); + expect(alertingTelemetry.count_total).to.equal(12); }); - verifyActionsTelemetry(actionsTelemetry); verifyAlertingTelemetry(alertingTelemetry); }); }); diff --git a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/index.ts b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/index.ts index 829de0e1c6e715..9d393e73a4640a 100644 --- a/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/index.ts +++ b/x-pack/test/alerting_api_integration/security_and_spaces/group2/tests/telemetry/index.ts @@ -10,17 +10,13 @@ import { setupSpacesAndUsers, tearDown } from '../../../setup'; // eslint-disable-next-line import/no-default-export export default function telemetryTests({ loadTestFile, getService }: FtrProviderContext) { - const esArchiver = getService('esArchiver'); - // FLAKY: https://github.com/elastic/kibana/issues/136153 - describe.skip('Alerting and Actions Telemetry', () => { + describe('Alerting and Actions Telemetry', () => { before(async () => { - await esArchiver.load('x-pack/test/functional/es_archives/event_log_telemetry'); // reset the state in the telemetry task await setupSpacesAndUsers(getService); }); after(async () => { await tearDown(getService); - await esArchiver.unload('x-pack/test/functional/es_archives/event_log_telemetry'); }); loadTestFile(require.resolve('./alerting_and_actions_telemetry')); diff --git a/x-pack/test/api_integration/apis/management/index_lifecycle_management/fixtures.js b/x-pack/test/api_integration/apis/management/index_lifecycle_management/fixtures.js index e61470cc2cc84a..6a037f7f763152 100644 --- a/x-pack/test/api_integration/apis/management/index_lifecycle_management/fixtures.js +++ b/x-pack/test/api_integration/apis/management/index_lifecycle_management/fixtures.js @@ -7,7 +7,37 @@ import { INDEX_TEMPLATE_PATTERN_PREFIX } from './constants'; +// ILM policy with minimal configuration export const getPolicyPayload = (name) => ({ + name, + phases: { + hot: { + min_age: '1d', + actions: { + set_priority: { + priority: 100, + }, + }, + }, + warm: { + min_age: '10d', + actions: { + set_priority: { + priority: 50, + }, + }, + }, + delete: { + min_age: '30d', + actions: { + delete: {}, + }, + }, + }, +}); + +// ILM policy with full configuration; includes searchable_snapshot configuration, which requires a valid repository and SLM policy +export const getPolicyPayloadWithSearchableSnapshots = (name) => ({ name, phases: { hot: { diff --git a/x-pack/test/api_integration/apis/management/index_lifecycle_management/policies.js b/x-pack/test/api_integration/apis/management/index_lifecycle_management/policies.js index 25ce7d4b677a34..a4d0bc385b65b9 100644 --- a/x-pack/test/api_integration/apis/management/index_lifecycle_management/policies.js +++ b/x-pack/test/api_integration/apis/management/index_lifecycle_management/policies.js @@ -9,9 +9,11 @@ import expect from '@kbn/expect'; import { registerHelpers as registerPoliciesHelpers } from './policies.helpers'; import { registerHelpers as registerIndexHelpers } from './indices.helpers'; -import { getPolicyPayload } from './fixtures'; +import { registerSnapshotPoliciesHelpers } from './snapshot_policies.helpers'; +import { registerSnapshotRepositoriesHelpers } from './snapshot_repositories.helpers'; + +import { getPolicyPayload, getPolicyPayloadWithSearchableSnapshots } from './fixtures'; import { initElasticsearchHelpers, getPolicyNames } from './lib'; -import { DEFAULT_POLICY_NAME } from './constants'; export default function ({ getService }) { const supertest = getService('supertest'); @@ -32,36 +34,22 @@ export default function ({ getService }) { const { addPolicyToIndex } = registerIndexHelpers({ supertest }); - // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/114030 - describe.skip('policies', () => { + const { createSnapshotPolicy, cleanupPolicies: cleanupSnapshotPolicies } = + registerSnapshotPoliciesHelpers(getService); + const { createSnapshotRepository, cleanupRepositories } = + registerSnapshotRepositoriesHelpers(getService); + + describe('policies', () => { after(() => Promise.all([cleanUpEsResources(), cleanUpPolicies()])); describe('list', () => { - it('should have a default policy to manage the Watcher history indices', async () => { - const { body } = await loadPolicies().expect(200); - const { version, name, policy } = body.find( - (policy) => policy.name === DEFAULT_POLICY_NAME - ); - - expect(version).to.eql(1); - expect(name).to.eql(DEFAULT_POLICY_NAME); - expect(policy.phases).to.eql({ - delete: { - min_age: '7d', - actions: { - delete: { - delete_searchable_snapshot: true, - }, - }, - }, - }); - }); - it('should add the indices linked to the policies', async () => { // Create a policy const policy = getPolicyPayload('link-test-policy'); const { name: policyName } = policy; - await createPolicy(policy); + + const { statusCode } = await createPolicy(policy); + expect(statusCode).to.eql(200); // Create a new index const indexName = await createIndex(); @@ -120,6 +108,46 @@ export default function ({ getService }) { }); }); + describe('searchable snapshots', function () { + this.tags(['skipCloud']); // file system repositories are not supported in cloud + + before(async () => { + try { + await createSnapshotRepository('backing_repo'); // This corresponds to the name set in the ILM policy + } catch (err) { + // eslint-disable-next-line no-console + console.log('[Setup error] Error creating repository'); + throw err; + } + + try { + await createSnapshotPolicy('policy', 'backing_repo'); // Policy name corresponds to the policy name specified in the ILM policy + } catch (err) { + // eslint-disable-next-line no-console + console.log('[Setup error] Error creating SLM policy'); + throw err; + } + }); + + after(async () => Promise.all([cleanupRepositories(), cleanupSnapshotPolicies()])); + + it('should create a lifecycle policy with searchable snapshot action', async () => { + const policy = getPolicyPayloadWithSearchableSnapshots('create-searchable-snapshot-policy'); + const { name } = policy; + + // Load current policies + const { body: bodyFirstLoad } = await loadPolicies(); + expect(getPolicyNames(bodyFirstLoad)).not.to.contain(name); + + // Create new policy + await createPolicy(policy).expect(200); + + // Make sure the new policy is returned + const { body: bodySecondLoad } = await loadPolicies(); + expect(getPolicyNames(bodySecondLoad)).to.contain(name); + }); + }); + describe('edit', () => { it('keeps _meta field intact', async () => { const policyName = 'edit-meta-test-policy'; diff --git a/x-pack/test/api_integration/apis/management/index_lifecycle_management/snapshot_policies.ts b/x-pack/test/api_integration/apis/management/index_lifecycle_management/snapshot_policies.ts index f33115da9c3b3d..af573fab10c8a3 100644 --- a/x-pack/test/api_integration/apis/management/index_lifecycle_management/snapshot_policies.ts +++ b/x-pack/test/api_integration/apis/management/index_lifecycle_management/snapshot_policies.ts @@ -22,7 +22,7 @@ export default function ({ getService }: FtrProviderContext) { registerSnapshotRepositoriesHelpers(getService); describe('snapshot policies', function describeSnapshotPoliciesTest() { - // skip Cloud failing test https://github.com/elastic/kibana/issues/136881 + // File-system repositories are not applicable on cloud this.tags(['skipCloud']); before(async () => Promise.all([cleanupPolicies(), cleanupRepositories()])); diff --git a/x-pack/test/api_integration/apis/management/index_lifecycle_management/snapshot_repositories.ts b/x-pack/test/api_integration/apis/management/index_lifecycle_management/snapshot_repositories.ts index e758ab294b12b0..c04fab48797d8a 100644 --- a/x-pack/test/api_integration/apis/management/index_lifecycle_management/snapshot_repositories.ts +++ b/x-pack/test/api_integration/apis/management/index_lifecycle_management/snapshot_repositories.ts @@ -20,7 +20,7 @@ export default function ({ getService }: FtrProviderContext) { registerSnapshotRepositoriesHelpers(getService); describe('snapshot repositories', function describeSnapshotRepositoriesTest() { - // skip Cloud failing test https://github.com/elastic/kibana/issues/136882 + // file system repositories are not supported in cloud this.tags(['skipCloud']); before(async () => { diff --git a/x-pack/test/api_integration/apis/synthetics/add_monitor.ts b/x-pack/test/api_integration/apis/synthetics/add_monitor.ts index 0bd308fcbf68d4..db98633941eeeb 100644 --- a/x-pack/test/api_integration/apis/synthetics/add_monitor.ts +++ b/x-pack/test/api_integration/apis/synthetics/add_monitor.ts @@ -5,6 +5,7 @@ * 2.0. */ import expect from '@kbn/expect'; +import moment from 'moment/moment'; import { v4 as uuidv4 } from 'uuid'; import { omit } from 'lodash'; import { secretKeys } from '@kbn/synthetics-plugin/common/constants/monitor_management'; @@ -49,12 +50,17 @@ export default function ({ getService }: FtrProviderContext) { .set('kbn-xsrf', 'true') .send(newMonitor); - expect(apiResponse.body.attributes).eql( + const { created_at: createdAt, updated_at: updatedAt } = apiResponse.body; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + expect(apiResponse.body).eql( omit( { ...newMonitor, [ConfigKey.MONITOR_QUERY_ID]: apiResponse.body.id, [ConfigKey.CONFIG_ID]: apiResponse.body.id, + created_at: createdAt, + updated_at: updatedAt, }, secretKeys ) @@ -111,13 +117,19 @@ export default function ({ getService }: FtrProviderContext) { .send(newMonitor); expect(apiResponse.status).eql(200); - expect(apiResponse.body.attributes).eql( + + const { created_at: createdAt, updated_at: updatedAt } = apiResponse.body; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + expect(apiResponse.body).eql( omit( { ...DEFAULT_FIELDS[DataStream.HTTP], ...newMonitor, [ConfigKey.MONITOR_QUERY_ID]: apiResponse.body.id, [ConfigKey.CONFIG_ID]: apiResponse.body.id, + created_at: createdAt, + updated_at: updatedAt, revision: 1, }, secretKeys @@ -180,7 +192,12 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); const response = await supertestAPI - .get(SYNTHETICS_API_URLS.GET_SYNTHETICS_MONITOR.replace('{monitorId}', apiResponse.body.id)) + .get( + SYNTHETICS_API_URLS.GET_SYNTHETICS_MONITOR.replace( + '{monitorId}', + apiResponse.body.config_id + ) + ) .set('kbn-xsrf', 'true') .expect(200); @@ -375,7 +392,7 @@ export default function ({ getService }: FtrProviderContext) { .send(monitor) .expect(200); monitorId = apiResponse.body.id; - expect(apiResponse.body.attributes[ConfigKey.NAMESPACE]).eql(EXPECTED_NAMESPACE); + expect(apiResponse.body[ConfigKey.NAMESPACE]).eql(EXPECTED_NAMESPACE); } finally { await security.user.delete(username); await security.role.delete(roleName); @@ -423,7 +440,7 @@ export default function ({ getService }: FtrProviderContext) { .send(monitor) .expect(200); monitorId = apiResponse.body.id; - expect(apiResponse.body.attributes[ConfigKey.NAMESPACE]).eql('default'); + expect(apiResponse.body[ConfigKey.NAMESPACE]).eql('default'); } finally { await security.user.delete(username); await security.role.delete(roleName); @@ -467,7 +484,7 @@ export default function ({ getService }: FtrProviderContext) { .send(monitor) .expect(200); monitorId = apiResponse.body.id; - expect(apiResponse.body.attributes[ConfigKey.NAMESPACE]).eql(monitor[ConfigKey.NAMESPACE]); + expect(apiResponse.body[ConfigKey.NAMESPACE]).eql(monitor[ConfigKey.NAMESPACE]); } finally { await security.user.delete(username); await security.role.delete(roleName); diff --git a/x-pack/test/api_integration/apis/synthetics/add_monitor_private_location.ts b/x-pack/test/api_integration/apis/synthetics/add_monitor_private_location.ts index 598678359dd8af..bc3722f396ffe9 100644 --- a/x-pack/test/api_integration/apis/synthetics/add_monitor_private_location.ts +++ b/x-pack/test/api_integration/apis/synthetics/add_monitor_private_location.ts @@ -4,6 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import moment from 'moment'; import semver from 'semver'; import { v4 as uuidv4 } from 'uuid'; import { ConfigKey, HTTPFields } from '@kbn/synthetics-plugin/common/runtime_types'; @@ -131,12 +132,17 @@ export default function ({ getService }: FtrProviderContext) { .send(newMonitor) .expect(200); - expect(apiResponse.body.attributes).eql( + const { created_at: createdAt, updated_at: updatedAt } = apiResponse.body; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + expect(apiResponse.body).eql( omit( { ...newMonitor, [ConfigKey.MONITOR_QUERY_ID]: apiResponse.body.id, [ConfigKey.CONFIG_ID]: apiResponse.body.id, + created_at: createdAt, + updated_at: updatedAt, }, secretKeys ) @@ -185,12 +191,16 @@ export default function ({ getService }: FtrProviderContext) { .set('kbn-xsrf', 'true') .send(httpMonitorJson); - expect(apiResponse.body.attributes).eql( + const { created_at: createdAt, updated_at: updatedAt } = apiResponse.body; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + expect(apiResponse.body).eql( omit( { ...httpMonitorJson, [ConfigKey.MONITOR_QUERY_ID]: apiResponse.body.id, [ConfigKey.CONFIG_ID]: apiResponse.body.id, + updated_at: updatedAt, revision: 2, }, secretKeys @@ -341,13 +351,18 @@ export default function ({ getService }: FtrProviderContext) { .send(monitor) .expect(200); - expect(apiResponse.body.attributes).eql( + const { created_at: createdAt, updated_at: updatedAt } = apiResponse.body; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + expect(apiResponse.body).eql( omit( { ...monitor, [ConfigKey.MONITOR_QUERY_ID]: apiResponse.body.id, [ConfigKey.CONFIG_ID]: apiResponse.body.id, [ConfigKey.NAMESPACE]: formatKibanaNamespace(SPACE_ID), + created_at: createdAt, + updated_at: updatedAt, }, secretKeys ) diff --git a/x-pack/test/api_integration/apis/synthetics/add_monitor_project.ts b/x-pack/test/api_integration/apis/synthetics/add_monitor_project.ts index 439bd1b986a11a..335550a2075535 100644 --- a/x-pack/test/api_integration/apis/synthetics/add_monitor_project.ts +++ b/x-pack/test/api_integration/apis/synthetics/add_monitor_project.ts @@ -1216,7 +1216,7 @@ export default function ({ getService }: FtrProviderContext) { [ConfigKey.PORT]: 443, }; - const modifiedMonitor = { ...monitors[0]?.attributes, ...updates }; + const modifiedMonitor = { ...monitors[0], ...updates }; await supertest .put(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS + '/' + monitors[0]?.config_id) diff --git a/x-pack/test/api_integration/apis/synthetics/delete_monitor.ts b/x-pack/test/api_integration/apis/synthetics/delete_monitor.ts index f7c5f99e81f662..e19bbd7ffeb15c 100644 --- a/x-pack/test/api_integration/apis/synthetics/delete_monitor.ts +++ b/x-pack/test/api_integration/apis/synthetics/delete_monitor.ts @@ -5,7 +5,11 @@ * 2.0. */ import { v4 as uuidv4 } from 'uuid'; -import { HTTPFields, MonitorFields } from '@kbn/synthetics-plugin/common/runtime_types'; +import { + EncryptedSyntheticsSavedMonitor, + HTTPFields, + MonitorFields, +} from '@kbn/synthetics-plugin/common/runtime_types'; import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; import expect from '@kbn/expect'; import { PACKAGE_POLICY_SAVED_OBJECT_TYPE } from '@kbn/fleet-plugin/common'; @@ -31,7 +35,9 @@ export default function ({ getService }: FtrProviderContext) { let httpMonitorJson: HTTPFields; let testPolicyId = ''; - const saveMonitor = async (monitor: MonitorFields) => { + const saveMonitor = async ( + monitor: MonitorFields + ): Promise => { const res = await supertest .post(SYNTHETICS_API_URLS.SYNTHETICS_MONITORS) .set('kbn-xsrf', 'true') @@ -99,7 +105,7 @@ export default function ({ getService }: FtrProviderContext) { .expect(400); }); - it('handles private location errors and does not delete the monitor if integration policy is unable to be deleted', async () => { + it.skip('handles private location errors and does not delete the monitor if integration policy is unable to be deleted', async () => { const name = `Monitor with a private location ${uuidv4()}`; const newMonitor = { name, diff --git a/x-pack/test/api_integration/apis/synthetics/edit_monitor.ts b/x-pack/test/api_integration/apis/synthetics/edit_monitor.ts index 3f6e544eb027ad..a7a987b4213637 100644 --- a/x-pack/test/api_integration/apis/synthetics/edit_monitor.ts +++ b/x-pack/test/api_integration/apis/synthetics/edit_monitor.ts @@ -4,15 +4,20 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import moment from 'moment'; import { v4 as uuidv4 } from 'uuid'; import { omit } from 'lodash'; -import { SimpleSavedObject } from '@kbn/core/public'; -import { secretKeys } from '@kbn/synthetics-plugin/common/constants/monitor_management'; -import { ConfigKey, HTTPFields, MonitorFields } from '@kbn/synthetics-plugin/common/runtime_types'; +import { + ConfigKey, + EncryptedSyntheticsSavedMonitor, + HTTPFields, + MonitorFields, +} from '@kbn/synthetics-plugin/common/runtime_types'; import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; import { getFixtureJson } from './helper/get_fixture_json'; +import { omitTimestamps, omitTimestampsAndSecrets } from './helper/monitor'; import { PrivateLocationTestService } from './services/private_location_test_service'; import { SyntheticsMonitorTestService } from './services/synthetics_monitor_test_service'; @@ -39,7 +44,7 @@ export default function ({ getService }: FtrProviderContext) { .send(monitor) .expect(200); - return res.body as SimpleSavedObject; + return res.body as EncryptedSyntheticsSavedMonitor; }; before(async () => { @@ -68,19 +73,18 @@ export default function ({ getService }: FtrProviderContext) { it('edits the monitor', async () => { const newMonitor = httpMonitorJson; - const { id: monitorId, attributes: savedMonitor } = await saveMonitor( - newMonitor as MonitorFields - ); + const savedMonitor = await saveMonitor(newMonitor as MonitorFields); + const monitorId = savedMonitor[ConfigKey.CONFIG_ID]; - expect(savedMonitor).eql( - omit( - { - ...newMonitor, - [ConfigKey.MONITOR_QUERY_ID]: monitorId, - [ConfigKey.CONFIG_ID]: monitorId, - }, - secretKeys - ) + const { created_at: createdAt, updated_at: updatedAt } = savedMonitor; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + expect(omitTimestamps(savedMonitor)).eql( + omitTimestampsAndSecrets({ + ...newMonitor, + [ConfigKey.MONITOR_QUERY_ID]: monitorId, + [ConfigKey.CONFIG_ID]: monitorId, + }) ); const updates: Partial = { @@ -124,27 +128,29 @@ export default function ({ getService }: FtrProviderContext) { .send(modifiedMonitor) .expect(200); - expect(editResponse.body.attributes).eql( - omit({ ...modifiedMonitor, revision: 2 }, secretKeys) + expect(omitTimestamps(editResponse.body)).eql( + omitTimestampsAndSecrets({ + ...modifiedMonitor, + revision: 2, + }) ); }); it('strips unknown keys from monitor edits', async () => { const newMonitor = httpMonitorJson; - const { id: monitorId, attributes: savedMonitor } = await saveMonitor( - newMonitor as MonitorFields - ); + const savedMonitor = await saveMonitor(newMonitor as MonitorFields); + const monitorId = savedMonitor[ConfigKey.CONFIG_ID]; - expect(savedMonitor).eql( - omit( - { - ...newMonitor, - [ConfigKey.MONITOR_QUERY_ID]: monitorId, - [ConfigKey.CONFIG_ID]: monitorId, - }, - secretKeys - ) + const { created_at: createdAt, updated_at: updatedAt } = savedMonitor; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + expect(omitTimestamps(savedMonitor)).eql( + omitTimestampsAndSecrets({ + ...newMonitor, + [ConfigKey.MONITOR_QUERY_ID]: monitorId, + [ConfigKey.CONFIG_ID]: monitorId, + }) ); const updates: Partial = { @@ -191,17 +197,14 @@ export default function ({ getService }: FtrProviderContext) { .send(modifiedMonitor) .expect(200); - expect(editResponse.body.attributes).eql( - omit( - { - ...savedMonitor, - ...modifiedMonitor, - revision: 2, - }, - secretKeys - ) + expect(omitTimestamps(editResponse.body)).eql( + omitTimestampsAndSecrets({ + ...savedMonitor, + ...modifiedMonitor, + revision: 2, + }) ); - expect(editResponse.body.attributes).not.to.have.keys('unknownkey'); + expect(editResponse.body).not.to.have.keys('unknownkey'); }); it('returns 404 if monitor id is not present', async () => { @@ -253,21 +256,21 @@ export default function ({ getService }: FtrProviderContext) { const newMonitor = httpMonitorJson; const configHash = 'djrhefje'; - const { id: monitorId, attributes: savedMonitor } = await saveMonitor({ + const savedMonitor = await saveMonitor({ ...(newMonitor as MonitorFields), [ConfigKey.CONFIG_HASH]: configHash, }); - - expect(savedMonitor).eql( - omit( - { - ...newMonitor, - [ConfigKey.CONFIG_ID]: monitorId, - [ConfigKey.MONITOR_QUERY_ID]: monitorId, - [ConfigKey.CONFIG_HASH]: configHash, - }, - secretKeys - ) + const monitorId = savedMonitor[ConfigKey.CONFIG_ID]; + const { created_at: createdAt, updated_at: updatedAt } = savedMonitor; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + expect(omitTimestamps(savedMonitor)).eql( + omitTimestampsAndSecrets({ + ...newMonitor, + [ConfigKey.CONFIG_ID]: monitorId, + [ConfigKey.MONITOR_QUERY_ID]: monitorId, + [ConfigKey.CONFIG_HASH]: configHash, + }) ); const updates: Partial = { @@ -289,17 +292,14 @@ export default function ({ getService }: FtrProviderContext) { .send(modifiedMonitor) .expect(200); - expect(editResponse.body.attributes).eql( - omit( - { - ...modifiedMonitor, - [ConfigKey.CONFIG_ID]: monitorId, - [ConfigKey.MONITOR_QUERY_ID]: monitorId, - [ConfigKey.CONFIG_HASH]: '', - revision: 2, - }, - secretKeys - ) + expect(omitTimestamps(editResponse.body)).eql( + omitTimestampsAndSecrets({ + ...modifiedMonitor, + [ConfigKey.CONFIG_ID]: monitorId, + [ConfigKey.MONITOR_QUERY_ID]: monitorId, + [ConfigKey.CONFIG_HASH]: '', + revision: 2, + }) ); expect(editResponse.body).not.to.have.keys('unknownkey'); }); @@ -346,8 +346,8 @@ export default function ({ getService }: FtrProviderContext) { roles: [roleName], full_name: 'a kibana user', }); - const { id, attributes: savedMonitor } = await saveMonitor(newMonitor as MonitorFields); - monitorId = id; + const savedMonitor = await saveMonitor(newMonitor as MonitorFields); + monitorId = savedMonitor[ConfigKey.CONFIG_ID]; const toUpdate = { ...savedMonitor, name: '!@#$%^&*()_++[\\-\\]- wow', @@ -393,7 +393,6 @@ export default function ({ getService }: FtrProviderContext) { const SPACE_ID = `test-space-${uuidv4()}`; const SPACE_NAME = `test-space-name ${uuidv4()}`; - let monitorId = ''; await kibanaServer.spaces.create({ id: SPACE_ID, name: SPACE_NAME }); @@ -403,8 +402,8 @@ export default function ({ getService }: FtrProviderContext) { .send(newMonitor) .expect(200); - const { id, attributes: savedMonitor } = response.body; - monitorId = id; + const savedMonitor = response.body; + const monitorId = savedMonitor[ConfigKey.CONFIG_ID]; const toUpdate = { ...savedMonitor, urls: 'https://google.com', diff --git a/x-pack/test/api_integration/apis/synthetics/enable_default_alerting.ts b/x-pack/test/api_integration/apis/synthetics/enable_default_alerting.ts index 78d4d34a38b9fe..3ebe16c15f33b6 100644 --- a/x-pack/test/api_integration/apis/synthetics/enable_default_alerting.ts +++ b/x-pack/test/api_integration/apis/synthetics/enable_default_alerting.ts @@ -72,12 +72,14 @@ export default function ({ getService }: FtrProviderContext) { .set('kbn-xsrf', 'true') .send(newMonitor); - expect(apiResponse.body.attributes).eql( + expect(apiResponse.body).eql( omit( { ...newMonitor, [ConfigKey.MONITOR_QUERY_ID]: apiResponse.body.id, [ConfigKey.CONFIG_ID]: apiResponse.body.id, + created_at: apiResponse.body.created_at, + updated_at: apiResponse.body.updated_at, }, secretKeys ) diff --git a/x-pack/test/api_integration/apis/synthetics/get_monitor.ts b/x-pack/test/api_integration/apis/synthetics/get_monitor.ts index f93e2602d3b539..ccb0cd5c2dae57 100644 --- a/x-pack/test/api_integration/apis/synthetics/get_monitor.ts +++ b/x-pack/test/api_integration/apis/synthetics/get_monitor.ts @@ -33,7 +33,7 @@ export default function ({ getService }: FtrProviderContext) { .send(monitor) .expect(200); - return res.body as MonitorFields; + return res.body as EncryptedSyntheticsSavedMonitor; }; before(async () => { @@ -82,7 +82,7 @@ export default function ({ getService }: FtrProviderContext) { }); expect(foundMonitors.map((fm) => omit(fm, 'updated_at', 'created_at'))).eql( - expected.map(({ attributes }: any) => attributes) + expected.map((expectedMon) => omit(expectedMon, 'updated_at', 'created_at')) ); }); diff --git a/x-pack/test/api_integration/apis/synthetics/get_monitor_overview.ts b/x-pack/test/api_integration/apis/synthetics/get_monitor_overview.ts index 184e6883484e08..4c0c3f34c85465 100644 --- a/x-pack/test/api_integration/apis/synthetics/get_monitor_overview.ts +++ b/x-pack/test/api_integration/apis/synthetics/get_monitor_overview.ts @@ -5,12 +5,11 @@ * 2.0. */ import { v4 as uuidv4 } from 'uuid'; -import { SimpleSavedObject } from '@kbn/core/public'; import { ConfigKey, - SyntheticsMonitor, MonitorFields, MonitorOverviewItem, + EncryptedSyntheticsSavedMonitor, } from '@kbn/synthetics-plugin/common/runtime_types'; import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; import expect from '@kbn/expect'; @@ -52,7 +51,7 @@ export default function ({ getService }: FtrProviderContext) { .set('kbn-xsrf', 'true') .send(monitor); - return res.body as SimpleSavedObject; + return res.body as EncryptedSyntheticsSavedMonitor; }; before(async () => { @@ -81,7 +80,7 @@ export default function ({ getService }: FtrProviderContext) { .set('kbn-xsrf', 'true') .expect(200); await Promise.all([ - (body.monitors as Array>).map((monitor) => { + (body.monitors as EncryptedSyntheticsSavedMonitor[]).map((monitor) => { return deleteMonitor(monitor.id); }), ]); @@ -106,10 +105,9 @@ export default function ({ getService }: FtrProviderContext) { }); it('returns the correct response', async () => { - let savedMonitors: SimpleSavedObject[] = []; + let savedMonitors: EncryptedSyntheticsSavedMonitor[] = []; try { - const savedResponse = await Promise.all(monitors.map(saveMonitor)); - savedMonitors = savedResponse; + savedMonitors = await Promise.all(monitors.map(saveMonitor)); const apiResponse = await supertest.get( `/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_OVERVIEW}` @@ -130,10 +128,9 @@ export default function ({ getService }: FtrProviderContext) { }); it('accepts search queries', async () => { - let savedMonitors: Array> = []; + let savedMonitors: EncryptedSyntheticsSavedMonitor[] = []; try { - const savedResponse = await Promise.all(monitors.map(saveMonitor)); - savedMonitors = savedResponse; + savedMonitors = await Promise.all(monitors.map(saveMonitor)); const apiResponse = await supertest .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_OVERVIEW}`) @@ -144,7 +141,7 @@ export default function ({ getService }: FtrProviderContext) { expect(apiResponse.body.total).eql(2); expect(apiResponse.body.allMonitorIds.sort()).eql( savedMonitors - .filter((monitor) => monitor.attributes.name.includes('19')) + .filter((monitor) => monitor.name.includes('19')) .map((monitor) => monitor.id) ); expect(apiResponse.body.monitors.length).eql(2); @@ -157,11 +154,11 @@ export default function ({ getService }: FtrProviderContext) { } }); - it('returns the correct response', async () => { - let savedMonitors: Array> = []; + it('returns the correct response for customHeartbeatId', async () => { + let savedMonitors: EncryptedSyntheticsSavedMonitor[] = []; const customHeartbeatId = 'example_custom_heartbeat_id'; try { - const savedResponse = await Promise.all( + savedMonitors = await Promise.all( [ { ...monitors[0], name: 'test monitor a' }, { @@ -171,7 +168,6 @@ export default function ({ getService }: FtrProviderContext) { }, ].map(saveMonitor) ); - savedMonitors = savedResponse; const apiResponse = await supertest .get(`/s/${SPACE_ID}${SYNTHETICS_API_URLS.SYNTHETICS_OVERVIEW}`) @@ -179,8 +175,8 @@ export default function ({ getService }: FtrProviderContext) { const expected: MonitorOverviewItem[] = [ { - id: savedMonitors[0].attributes[ConfigKey.MONITOR_QUERY_ID], - configId: savedMonitors[0].id, + id: savedMonitors[0][ConfigKey.MONITOR_QUERY_ID], + configId: savedMonitors[0].config_id, name: 'test monitor a', location: { id: 'eu-west-01', @@ -199,8 +195,8 @@ export default function ({ getService }: FtrProviderContext) { schedule: '5', }, { - id: savedMonitors[0].attributes[ConfigKey.MONITOR_QUERY_ID], - configId: savedMonitors[0].id, + id: savedMonitors[0][ConfigKey.MONITOR_QUERY_ID], + configId: savedMonitors[0].config_id, name: 'test monitor a', location: { id: 'eu-west-02', @@ -219,8 +215,8 @@ export default function ({ getService }: FtrProviderContext) { schedule: '5', }, { - id: savedMonitors[1].attributes[ConfigKey.MONITOR_QUERY_ID], - configId: savedMonitors[1].id, + id: savedMonitors[1][ConfigKey.MONITOR_QUERY_ID], + configId: savedMonitors[1].config_id, name: 'test monitor b', location: { id: 'eu-west-01', @@ -239,8 +235,8 @@ export default function ({ getService }: FtrProviderContext) { schedule: '5', }, { - id: savedMonitors[1].attributes[ConfigKey.MONITOR_QUERY_ID], - configId: savedMonitors[1].id, + id: savedMonitors[1][ConfigKey.MONITOR_QUERY_ID], + configId: savedMonitors[1].config_id, name: 'test monitor b', location: { id: 'eu-west-02', @@ -261,11 +257,11 @@ export default function ({ getService }: FtrProviderContext) { ]; expect(apiResponse.body.monitors).eql(expected); - expect(savedMonitors[1].attributes[ConfigKey.MONITOR_QUERY_ID]).eql(customHeartbeatId); + expect(savedMonitors[1][ConfigKey.MONITOR_QUERY_ID]).eql(customHeartbeatId); } finally { await Promise.all( savedMonitors.map((monitor) => { - return deleteMonitor(monitor.id); + return deleteMonitor(monitor.config_id); }) ); } diff --git a/x-pack/test/api_integration/apis/synthetics/helper/monitor.ts b/x-pack/test/api_integration/apis/synthetics/helper/monitor.ts new file mode 100644 index 00000000000000..c8cd6ea7b6a7c2 --- /dev/null +++ b/x-pack/test/api_integration/apis/synthetics/helper/monitor.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { omit } from 'lodash'; +import { secretKeys } from '@kbn/synthetics-plugin/common/constants/monitor_management'; + +export function omitTimestamps(monitor: object) { + return omit(monitor, ['created_at', 'updated_at']); +} + +export function omitTimestampsAndSecrets(monitor: object) { + return omit(monitor, ['created_at', 'updated_at', ...secretKeys]); +} diff --git a/x-pack/test/api_integration/apis/synthetics/services/synthetics_monitor_test_service.ts b/x-pack/test/api_integration/apis/synthetics/services/synthetics_monitor_test_service.ts index ea465986fadc56..637044df1fc690 100644 --- a/x-pack/test/api_integration/apis/synthetics/services/synthetics_monitor_test_service.ts +++ b/x-pack/test/api_integration/apis/synthetics/services/synthetics_monitor_test_service.ts @@ -7,8 +7,7 @@ import { SYNTHETICS_API_URLS } from '@kbn/synthetics-plugin/common/constants'; import { syntheticsMonitorType } from '@kbn/synthetics-plugin/common/types/saved_objects'; -import { SavedObject } from '@kbn/core-saved-objects-common/src/server_types'; -import { MonitorFields } from '@kbn/synthetics-plugin/common/runtime_types'; +import { EncryptedSyntheticsSavedMonitor } from '@kbn/synthetics-plugin/common/runtime_types'; import { MonitorInspectResponse } from '@kbn/synthetics-plugin/public/apps/synthetics/state/monitor_management/api'; import { v4 as uuidv4 } from 'uuid'; import { FtrProviderContext } from '../../../ftr_provider_context'; @@ -40,7 +39,7 @@ export class SyntheticsMonitorTestService { .send(monitor) .expect(200); - return res.body as SavedObject; + return res.body as EncryptedSyntheticsSavedMonitor; } async inspectMonitor(monitor: any, hideParams: boolean = true) { diff --git a/x-pack/test/api_integration/apis/synthetics/sync_global_params.ts b/x-pack/test/api_integration/apis/synthetics/sync_global_params.ts index e8182d97e0fee2..b4b7eb8be2a3ac 100644 --- a/x-pack/test/api_integration/apis/synthetics/sync_global_params.ts +++ b/x-pack/test/api_integration/apis/synthetics/sync_global_params.ts @@ -4,6 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import moment from 'moment'; import { ConfigKey, HTTPFields, @@ -103,12 +104,17 @@ export default function ({ getService }: FtrProviderContext) { .set('kbn-xsrf', 'true') .send(newMonitor); - expect(apiResponse.body.attributes).eql( + const { created_at: createdAt, updated_at: updatedAt } = apiResponse.body; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + expect(apiResponse.body).eql( omit( { ...newMonitor, [ConfigKey.MONITOR_QUERY_ID]: apiResponse.body.id, [ConfigKey.CONFIG_ID]: apiResponse.body.id, + created_at: createdAt, + updated_at: updatedAt, }, secretKeys ) @@ -210,12 +216,17 @@ export default function ({ getService }: FtrProviderContext) { .set('kbn-xsrf', 'true') .send(newMonitor); - expect(apiResponse.body.attributes).eql( + const { created_at: createdAt, updated_at: updatedAt } = apiResponse.body; + expect([createdAt, updatedAt].map((d) => moment(d).isValid())).eql([true, true]); + + expect(apiResponse.body).eql( omit( { ...newMonitor, [ConfigKey.MONITOR_QUERY_ID]: apiResponse.body.id, [ConfigKey.CONFIG_ID]: apiResponse.body.id, + created_at: createdAt, + updated_at: updatedAt, }, secretKeys ) diff --git a/x-pack/test/api_integration/apis/uptime/feature_controls.ts b/x-pack/test/api_integration/apis/uptime/feature_controls.ts index 39d74066363534..c9c545cbad2423 100644 --- a/x-pack/test/api_integration/apis/uptime/feature_controls.ts +++ b/x-pack/test/api_integration/apis/uptime/feature_controls.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { API_URLS } from '@kbn/uptime-plugin/common/constants'; import { FtrProviderContext } from '../../ftr_provider_context'; import { PINGS_DATE_RANGE_END, PINGS_DATE_RANGE_START } from './constants'; diff --git a/x-pack/test/api_integration/apis/uptime/get_all_pings.ts b/x-pack/test/api_integration/apis/uptime/get_all_pings.ts index 19b78854a8df3d..a7547d61992f23 100644 --- a/x-pack/test/api_integration/apis/uptime/get_all_pings.ts +++ b/x-pack/test/api_integration/apis/uptime/get_all_pings.ts @@ -7,7 +7,7 @@ import moment from 'moment'; import expect from '@kbn/expect'; -import { API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { API_URLS } from '@kbn/uptime-plugin/common/constants'; import { PINGS_DATE_RANGE_START, PINGS_DATE_RANGE_END } from './constants'; import { FtrProviderContext } from '../../ftr_provider_context'; diff --git a/x-pack/test/api_integration/apis/uptime/rest/dynamic_settings.ts b/x-pack/test/api_integration/apis/uptime/rest/dynamic_settings.ts index 44ab0f694ba5d6..8ecdbc9b615da1 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/dynamic_settings.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/dynamic_settings.ts @@ -7,8 +7,8 @@ import expect from '@kbn/expect'; import { isRight } from 'fp-ts/lib/Either'; -import { DynamicSettingsCodec, DynamicSettings } from '@kbn/synthetics-plugin/common/runtime_types'; -import { DYNAMIC_SETTINGS_DEFAULTS, API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { DynamicSettingsCodec, DynamicSettings } from '@kbn/uptime-plugin/common/runtime_types'; +import { DYNAMIC_SETTINGS_DEFAULTS, API_URLS } from '@kbn/uptime-plugin/common/constants'; import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService }: FtrProviderContext) { diff --git a/x-pack/test/api_integration/apis/uptime/rest/index_status.ts b/x-pack/test/api_integration/apis/uptime/rest/index_status.ts index d29d66d436bc97..50ff47f04be5dd 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/index_status.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/index_status.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { API_URLS } from '@kbn/uptime-plugin/common/constants'; import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; diff --git a/x-pack/test/api_integration/apis/uptime/rest/monitor_duration.ts b/x-pack/test/api_integration/apis/uptime/rest/monitor_duration.ts index c5915d06564df7..3a0d066789be7a 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/monitor_duration.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/monitor_duration.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { API_URLS } from '@kbn/uptime-plugin/common/constants'; import expect from '@kbn/expect'; import { expectFixtureEql } from './helper/expect_fixture_eql'; import { FtrProviderContext } from '../../../ftr_provider_context'; diff --git a/x-pack/test/api_integration/apis/uptime/rest/monitor_latest_status.ts b/x-pack/test/api_integration/apis/uptime/rest/monitor_latest_status.ts index e5cf59be672336..9e4632f552a905 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/monitor_latest_status.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/monitor_latest_status.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { API_URLS } from '@kbn/uptime-plugin/common/constants'; import { expectFixtureEql } from './helper/expect_fixture_eql'; import { FtrProviderContext } from '../../../ftr_provider_context'; diff --git a/x-pack/test/api_integration/apis/uptime/rest/monitor_states_generated.ts b/x-pack/test/api_integration/apis/uptime/rest/monitor_states_generated.ts index 5bbe7f7312102e..0ae73258d7acbf 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/monitor_states_generated.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/monitor_states_generated.ts @@ -7,7 +7,7 @@ import expect from '@kbn/expect'; import { MonitorSummary } from '@kbn/synthetics-plugin/common/runtime_types'; -import { API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { API_URLS } from '@kbn/uptime-plugin/common/constants'; import { FtrProviderContext } from '../../../ftr_provider_context'; import { makeChecksWithStatus } from './helper/make_checks'; diff --git a/x-pack/test/api_integration/apis/uptime/rest/monitor_states_real_data.ts b/x-pack/test/api_integration/apis/uptime/rest/monitor_states_real_data.ts index 438211665674a0..1f0e04a74db71e 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/monitor_states_real_data.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/monitor_states_real_data.ts @@ -11,7 +11,7 @@ import { MonitorSummariesResult, MonitorSummariesResultType, } from '@kbn/synthetics-plugin/common/runtime_types'; -import { API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { API_URLS } from '@kbn/uptime-plugin/common/constants'; import { FtrProviderContext } from '../../../ftr_provider_context'; interface ExpectedMonitorStatesPage { diff --git a/x-pack/test/api_integration/apis/uptime/rest/ping_histogram.ts b/x-pack/test/api_integration/apis/uptime/rest/ping_histogram.ts index a46eff97826a87..6246a2d049583d 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/ping_histogram.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/ping_histogram.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { API_URLS } from '@kbn/uptime-plugin/common/constants'; import { expectFixtureEql } from './helper/expect_fixture_eql'; import { FtrProviderContext } from '../../../ftr_provider_context'; diff --git a/x-pack/test/api_integration/apis/uptime/rest/ping_list.ts b/x-pack/test/api_integration/apis/uptime/rest/ping_list.ts index 5c179a15b75251..84d4af6f650be6 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/ping_list.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/ping_list.ts @@ -8,8 +8,8 @@ import expect from '@kbn/expect'; import { isLeft } from 'fp-ts/lib/Either'; import { PathReporter } from 'io-ts/lib/PathReporter'; -import { PingsResponseType } from '@kbn/synthetics-plugin/common/runtime_types'; -import { API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { PingsResponseType } from '@kbn/uptime-plugin/common/runtime_types'; +import { API_URLS } from '@kbn/uptime-plugin/common/constants'; import { FtrProviderContext } from '../../../ftr_provider_context'; function decodePingsResponseData(response: any) { diff --git a/x-pack/test/api_integration/apis/uptime/rest/snapshot.ts b/x-pack/test/api_integration/apis/uptime/rest/snapshot.ts index 3fa3d458321d37..492dce4841511e 100644 --- a/x-pack/test/api_integration/apis/uptime/rest/snapshot.ts +++ b/x-pack/test/api_integration/apis/uptime/rest/snapshot.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { API_URLS } from '@kbn/synthetics-plugin/common/constants'; +import { API_URLS } from '@kbn/uptime-plugin/common/constants'; import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; import { makeChecksWithStatus, getChecksDateRange } from './helper/make_checks'; diff --git a/x-pack/test/api_integration/services/usage_api.ts b/x-pack/test/api_integration/services/usage_api.ts index c8b498232a8763..fbcddfb3dc512c 100644 --- a/x-pack/test/api_integration/services/usage_api.ts +++ b/x-pack/test/api_integration/services/usage_api.ts @@ -31,6 +31,7 @@ export function UsageAPIProvider({ getService }: FtrProviderContext) { const { body } = await supertest .post('/api/telemetry/v2/clusters/_stats') .set('kbn-xsrf', 'xxx') + .set('x-elastic-internal-origin', 'xxx') .send({ refreshCache: true, ...payload }) .expect(200); return body; diff --git a/x-pack/test/apm_api_integration/common/apm_api_supertest.ts b/x-pack/test/apm_api_integration/common/apm_api_supertest.ts index 4d8b39e67b4ab3..ac16abff4098b8 100644 --- a/x-pack/test/apm_api_integration/common/apm_api_supertest.ts +++ b/x-pack/test/apm_api_integration/common/apm_api_supertest.ts @@ -29,7 +29,10 @@ export function createApmApiClient(st: supertest.SuperTest) { const { method, pathname, version } = formatRequest(endpoint, params.path); const url = format({ pathname, query: params?.query }); - const headers: Record = { 'kbn-xsrf': 'foo' }; + const headers: Record = { + 'kbn-xsrf': 'foo', + 'x-elastic-internal-origin': 'foo', + }; if (version) { headers['Elastic-Api-Version'] = version; diff --git a/x-pack/test/apm_api_integration/tests/settings/agent_keys/agent_keys.spec.ts b/x-pack/test/apm_api_integration/tests/settings/agent_keys/agent_keys.spec.ts index 6ec83468ac4110..2b8506af33a364 100644 --- a/x-pack/test/apm_api_integration/tests/settings/agent_keys/agent_keys.spec.ts +++ b/x-pack/test/apm_api_integration/tests/settings/agent_keys/agent_keys.spec.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; import { first } from 'lodash'; -import { PrivilegeType } from '@kbn/apm-plugin/common/privilege_type'; +import { PrivilegeType, ClusterPrivilegeType } from '@kbn/apm-plugin/common/privilege_type'; import { ApmUsername } from '@kbn/apm-plugin/server/test_helpers/create_apm_users/authentication'; import { FtrProviderContext } from '../../../common/ftr_provider_context'; import { ApmApiError, ApmApiSupertest } from '../../../common/apm_api_supertest'; @@ -19,6 +19,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { const agentKeyName = 'test'; const allApplicationPrivileges = [PrivilegeType.AGENT_CONFIG, PrivilegeType.EVENT]; + const clusterPrivileges = [ClusterPrivilegeType.MANAGE_OWN_API_KEY]; async function createAgentKey(apiClient: ApmApiSupertest, privileges = allApplicationPrivileges) { return await apiClient({ @@ -60,6 +61,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { _inspect: [], data: { missingPrivileges: allApplicationPrivileges, + missingClusterPrivileges: clusterPrivileges, }, }); }); diff --git a/x-pack/test/apm_api_integration/tests/sourcemaps/sourcemaps.ts b/x-pack/test/apm_api_integration/tests/sourcemaps/sourcemaps.ts index ecaa2995ffb93e..48a5cd4f1077e7 100644 --- a/x-pack/test/apm_api_integration/tests/sourcemaps/sourcemaps.ts +++ b/x-pack/test/apm_api_integration/tests/sourcemaps/sourcemaps.ts @@ -27,6 +27,16 @@ const SAMPLE_SOURCEMAP = { mappings: 'A,AAAB;;ABCDE;', }; +const SAMPLE_ANDROID_MAP = `# compiler: R8 +# compiler_version: 3.2.47 +# min_api: 26 +# common_typos_disable +# {"id":"com.android.tools.r8.mapping","version":"2.0"} +# pg_map_id: 127b14c +# pg_map_hash: SHA-256 127b14c0be5dd1b55beee544a8d0e7c9414b432868ed8bc54ca5cc43cba12435 +a1.TableInfo$ForeignKey$$ExternalSyntheticOutline0 -> a1.e: +# {"id":"sourceFile","fileName":"R8$$SyntheticClass"}`; + export default function ApiTest({ getService }: FtrProviderContext) { const registry = getService('registry'); const apmApiClient = getService('apmApiClient'); @@ -99,6 +109,28 @@ export default function ApiTest({ getService }: FtrProviderContext) { return response.body; } + async function uploadAndroidMap({ + serviceName, + serviceVersion, + androidMap, + }: { + serviceName: string; + serviceVersion: string; + androidMap: string; + }) { + const response = await apmApiClient.writeUser({ + endpoint: 'POST /api/apm/androidmaps 2023-10-31', + type: 'form-data', + params: { + body: { + service_name: serviceName, + service_version: serviceVersion, + map_file: androidMap, + }, + }, + }); + return response.body; + } async function runSourceMapMigration() { await apmApiClient.writeUser({ endpoint: 'POST /internal/apm/sourcemaps/migrate_fleet_artifacts', @@ -128,6 +160,12 @@ export default function ApiTest({ getService }: FtrProviderContext) { await Promise.all([deleteAllFleetSourceMaps(), deleteAllApmSourceMaps()]); }); + async function getDecodedMapContent(encodedContent?: string): Promise { + if (encodedContent) { + return (await unzip(Buffer.from(encodedContent, 'base64'))).toString(); + } + } + async function getDecodedSourceMapContent( encodedContent?: string ): Promise { @@ -243,6 +281,111 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); }); + let androidResp: APIReturnType<'POST /api/apm/androidmaps 2023-10-31'>; + describe('upload android map', () => { + after(async () => { + await apmApiClient.writeUser({ + endpoint: 'DELETE /api/apm/sourcemaps/{id} 2023-10-31', + params: { path: { id: androidResp.id } }, + }); + }); + + before(async () => { + androidResp = await uploadAndroidMap({ + serviceName: 'uploading-test', + serviceVersion: '1.0.0', + androidMap: SAMPLE_ANDROID_MAP, + }); + + await waitForSourceMapCount(1); + }); + + it('is uploaded as a fleet artifact', async () => { + const res = await esClient.search({ + index: '.fleet-artifacts', + size: 1, + query: { + bool: { + filter: [{ term: { type: 'sourcemap' } }, { term: { package_name: 'apm' } }], + }, + }, + }); + + // @ts-expect-error + expect(res.hits.hits[0]._source.identifier).to.be('uploading-test-1.0.0-android'); + }); + + it('is added to .apm-source-map index', async () => { + const res = await esClient.search({ + index: '.apm-source-map', + }); + + const source = res.hits.hits[0]._source; + const decodedSourceMap = await getDecodedMapContent(source?.content); + expect(decodedSourceMap).to.eql(SAMPLE_ANDROID_MAP); + expect(source?.content_sha256).to.be( + '702e07279b0fbed47fdbf5e71528dff845b4f07a16ca79cab0c1b06eb71be966' + ); + expect(source?.file.path).to.be('android'); + expect(source?.service.name).to.be('uploading-test'); + expect(source?.service.version).to.be('1.0.0'); + }); + + describe('when uploading a new android map with the same service.name and service.version', () => { + let resBefore: GetResponse; + let resAfter: GetResponse; + + before(async () => { + async function getSourceMapDocFromApmIndex() { + await esClient.indices.refresh({ index: '.apm-source-map' }); + return await esClient.get({ + index: '.apm-source-map', + id: 'uploading-test-1.0.0-android', + }); + } + + resBefore = await getSourceMapDocFromApmIndex(); + + await uploadAndroidMap({ + serviceName: 'uploading-test', + serviceVersion: '1.0.0', + androidMap: '# compiler: R8\n# ANOTHER MAP', + }); + + resAfter = await getSourceMapDocFromApmIndex(); + }); + + after(async () => { + await deleteAllApmSourceMaps(); + await deleteAllFleetSourceMaps(); + }); + + it('creates one document in the .apm-source-map index', async () => { + const res = await esClient.search({ index: '.apm-source-map', size: 0 }); + + // @ts-expect-error + expect(res.hits.total.value).to.be(1); + }); + + it('creates two documents in the .fleet-artifacts index', async () => { + const res = await listSourcemaps({ page: 1, perPage: 10 }); + expect(res.total).to.be(2); + }); + + it('updates the content', async () => { + const contentBefore = await getDecodedMapContent(resBefore._source?.content); + const contentAfter = await getDecodedMapContent(resAfter._source?.content); + + expect(contentBefore).to.be(SAMPLE_ANDROID_MAP); + expect(contentAfter).to.be('# compiler: R8\n# ANOTHER MAP'); + }); + + it('updates the content hash', async () => { + expect(resBefore._source?.content_sha256).to.not.be(resAfter._source?.content_sha256); + }); + }); + }); + describe('list source maps', async () => { before(async () => { const totalCount = 6; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/usage_collector/detection_rules.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/usage_collector/detection_rules.ts index 575da7ec63f5c9..c913b8d6e8a687 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/usage_collector/detection_rules.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group4/telemetry/usage_collector/detection_rules.ts @@ -6,14 +6,13 @@ */ import expect from '@kbn/expect'; -import type { DetectionMetrics } from '@kbn/security-solution-plugin/server/usage/detections/types'; import type { ThreatMatchRuleCreateProps, ThresholdRuleCreateProps, } from '@kbn/security-solution-plugin/common/api/detection_engine'; import { getInitialDetectionMetrics } from '@kbn/security-solution-plugin/server/usage/detections/get_initial_usage'; -import { getInitialEventLogUsage } from '@kbn/security-solution-plugin/server/usage/detections/rules/get_initial_usage'; import { ELASTIC_SECURITY_RULE_ID } from '@kbn/security-solution-plugin/common'; +import { RulesTypeUsage } from '@kbn/security-solution-plugin/server/usage/detections/rules/types'; import type { FtrProviderContext } from '../../../../common/ftr_provider_context'; import { createLegacyRuleAction, @@ -73,32 +72,26 @@ export default ({ getService }: FtrProviderContext) => { await createRule(supertest, log, rule); await retry.try(async () => { const stats = await getStats(supertest, log); - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - query: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.query, - disabled: 1, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - disabled: 1, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + query: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.query, + disabled: 1, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + disabled: 1, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -109,38 +102,28 @@ export default ({ getService }: FtrProviderContext) => { await waitForSignalsToBePresent(supertest, log, 4, [id]); await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial (see detection_rule_status.ts for more in-depth testing of this structure) - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - query: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.query, - enabled: 1, - alerts: 4, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - enabled: 1, - alerts: 4, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + query: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.query, + enabled: 1, + alerts: 4, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + enabled: 1, + alerts: 4, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -152,30 +135,20 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial (see detection_rule_status.ts for more in-depth testing of this structure) - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - query: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.query, - notifications_disabled: 1, - disabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - notifications_disabled: 1, - disabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + query: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.query, + notifications_disabled: 1, + disabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + notifications_disabled: 1, + disabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -189,32 +162,22 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - query: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.query, - enabled: 1, - alerts: 4, - notifications_enabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - enabled: 1, - alerts: 4, - notifications_enabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + query: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.query, + enabled: 1, + alerts: 4, + notifications_enabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + enabled: 1, + alerts: 4, + notifications_enabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -226,26 +189,21 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - query: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.query, - disabled: 1, - legacy_notifications_disabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - disabled: 1, - legacy_notifications_disabled: 1, - }, - }, + + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + query: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.query, + disabled: 1, + legacy_notifications_disabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + disabled: 1, + legacy_notifications_disabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -259,69 +217,52 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial (see detection_rule_status.ts for more in-depth testing of this structure) - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - query: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.query, - alerts: 4, - enabled: 1, - legacy_notifications_enabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - alerts: 4, - enabled: 1, - legacy_notifications_enabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + query: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.query, + alerts: 4, + enabled: 1, + legacy_notifications_enabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + alerts: 4, + enabled: 1, + legacy_notifications_enabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); }); - // FLAKY: https://github.com/elastic/kibana/issues/156088 - describe.skip('"eql" rule type', () => { + describe('"eql" rule type', () => { it('should show "notifications_enabled", "notifications_disabled" "legacy_notifications_enabled", "legacy_notifications_disabled", all to be "0" for "disabled"/"in-active" rule that does not have any actions', async () => { const rule = getEqlRuleForSignalTesting(['telemetry'], 'rule-1', false); await createRule(supertest, log, rule); await retry.try(async () => { const stats = await getStats(supertest, log); - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - eql: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.eql, - disabled: 1, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - disabled: 1, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + eql: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.eql, + disabled: 1, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + disabled: 1, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -332,38 +273,28 @@ export default ({ getService }: FtrProviderContext) => { await waitForSignalsToBePresent(supertest, log, 4, [id]); await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial (see detection_rule_status.ts for more in-depth testing of this structure) - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - eql: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.eql, - enabled: 1, - alerts: 4, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - enabled: 1, - alerts: 4, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + eql: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.eql, + enabled: 1, + alerts: 4, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + enabled: 1, + alerts: 4, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -375,30 +306,20 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial (see detection_rule_status.ts for more in-depth testing of this structure) - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - eql: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.eql, - notifications_disabled: 1, - disabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - notifications_disabled: 1, - disabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + eql: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.eql, + notifications_disabled: 1, + disabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + notifications_disabled: 1, + disabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -412,32 +333,22 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial (see detection_rule_status.ts for more in-depth testing of this structure) - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - eql: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.eql, - enabled: 1, - alerts: 4, - notifications_enabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - enabled: 1, - alerts: 4, - notifications_enabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + eql: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.eql, + enabled: 1, + alerts: 4, + notifications_enabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + enabled: 1, + alerts: 4, + notifications_enabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -449,26 +360,20 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - eql: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.eql, - disabled: 1, - legacy_notifications_disabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - disabled: 1, - legacy_notifications_disabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + eql: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.eql, + disabled: 1, + legacy_notifications_disabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + disabled: 1, + legacy_notifications_disabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -482,32 +387,22 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial (see detection_rule_status.ts for more in-depth testing of this structure) - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - eql: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.eql, - alerts: 4, - enabled: 1, - legacy_notifications_enabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - alerts: 4, - enabled: 1, - legacy_notifications_enabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + eql: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.eql, + alerts: 4, + enabled: 1, + legacy_notifications_enabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + alerts: 4, + enabled: 1, + legacy_notifications_enabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); }); @@ -524,32 +419,26 @@ export default ({ getService }: FtrProviderContext) => { await createRule(supertest, log, rule); await retry.try(async () => { const stats = await getStats(supertest, log); - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - threshold: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threshold, - disabled: 1, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - disabled: 1, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + threshold: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threshold, + disabled: 1, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + disabled: 1, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -566,38 +455,28 @@ export default ({ getService }: FtrProviderContext) => { await waitForSignalsToBePresent(supertest, log, 4, [id]); await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - threshold: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threshold, - enabled: 1, - alerts: 4, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - enabled: 1, - alerts: 4, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + threshold: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threshold, + enabled: 1, + alerts: 4, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + enabled: 1, + alerts: 4, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -615,30 +494,20 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - threshold: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threshold, - notifications_disabled: 1, - disabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - notifications_disabled: 1, - disabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + threshold: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threshold, + notifications_disabled: 1, + disabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + notifications_disabled: 1, + disabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -658,32 +527,22 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - threshold: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threshold, - enabled: 1, - alerts: 4, - notifications_enabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - enabled: 1, - alerts: 4, - notifications_enabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + threshold: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threshold, + enabled: 1, + alerts: 4, + notifications_enabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + enabled: 1, + alerts: 4, + notifications_enabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -701,30 +560,20 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - threshold: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threshold, - disabled: 1, - legacy_notifications_disabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - disabled: 1, - legacy_notifications_disabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + threshold: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threshold, + disabled: 1, + legacy_notifications_disabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + disabled: 1, + legacy_notifications_disabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -744,32 +593,22 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - threshold: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threshold, - alerts: 4, - enabled: 1, - legacy_notifications_enabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - alerts: 4, - enabled: 1, - legacy_notifications_enabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + threshold: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threshold, + alerts: 4, + enabled: 1, + legacy_notifications_enabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + alerts: 4, + enabled: 1, + legacy_notifications_enabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); }); @@ -781,33 +620,26 @@ export default ({ getService }: FtrProviderContext) => { await createRule(supertest, log, rule); await retry.try(async () => { const stats = await getStats(supertest, log); - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - machine_learning: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage - .machine_learning, - disabled: 1, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - disabled: 1, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + machine_learning: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.machine_learning, + disabled: 1, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + disabled: 1, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -816,37 +648,26 @@ export default ({ getService }: FtrProviderContext) => { await createRule(supertest, log, rule); await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - machine_learning: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage - .machine_learning, - enabled: 1, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - enabled: 1, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + machine_learning: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.machine_learning, + enabled: 1, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + enabled: 1, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -858,31 +679,20 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - machine_learning: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage - .machine_learning, - notifications_disabled: 1, - disabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - notifications_disabled: 1, - disabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + machine_learning: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.machine_learning, + notifications_disabled: 1, + disabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + notifications_disabled: 1, + disabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -894,31 +704,20 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - machine_learning: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage - .machine_learning, - enabled: 1, - notifications_enabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - enabled: 1, - notifications_enabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + machine_learning: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.machine_learning, + enabled: 1, + notifications_enabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + enabled: 1, + notifications_enabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -930,31 +729,20 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - machine_learning: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage - .machine_learning, - disabled: 1, - legacy_notifications_disabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - disabled: 1, - legacy_notifications_disabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + machine_learning: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.machine_learning, + disabled: 1, + legacy_notifications_disabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + disabled: 1, + legacy_notifications_disabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -966,31 +754,20 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - machine_learning: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage - .machine_learning, - enabled: 1, - legacy_notifications_enabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - enabled: 1, - legacy_notifications_enabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + machine_learning: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.machine_learning, + enabled: 1, + legacy_notifications_enabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + enabled: 1, + legacy_notifications_enabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); }); @@ -1001,32 +778,26 @@ export default ({ getService }: FtrProviderContext) => { await createRule(supertest, log, rule); await retry.try(async () => { const stats = await getStats(supertest, log); - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - threat_match: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threat_match, - disabled: 1, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - disabled: 1, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + threat_match: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threat_match, + disabled: 1, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + disabled: 1, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -1052,38 +823,28 @@ export default ({ getService }: FtrProviderContext) => { await waitForSignalsToBePresent(supertest, log, 4, [id]); await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - threat_match: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threat_match, - enabled: 1, - alerts: 4, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - enabled: 1, - alerts: 4, - notifications_enabled: 0, - notifications_disabled: 0, - legacy_notifications_disabled: 0, - legacy_notifications_enabled: 0, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + threat_match: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threat_match, + enabled: 1, + alerts: 4, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + enabled: 1, + alerts: 4, + notifications_enabled: 0, + notifications_disabled: 0, + legacy_notifications_disabled: 0, + legacy_notifications_enabled: 0, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -1095,30 +856,20 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - threat_match: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threat_match, - notifications_disabled: 1, - disabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - notifications_disabled: 1, - disabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + threat_match: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threat_match, + notifications_disabled: 1, + disabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + notifications_disabled: 1, + disabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -1147,32 +898,22 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - threat_match: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threat_match, - enabled: 1, - alerts: 4, - notifications_enabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - enabled: 1, - alerts: 4, - notifications_enabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + threat_match: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threat_match, + enabled: 1, + alerts: 4, + notifications_enabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + enabled: 1, + alerts: 4, + notifications_enabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -1184,30 +925,20 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - threat_match: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threat_match, - disabled: 1, - legacy_notifications_disabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - disabled: 1, - legacy_notifications_disabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + threat_match: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threat_match, + disabled: 1, + legacy_notifications_disabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + disabled: 1, + legacy_notifications_disabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); @@ -1236,32 +967,22 @@ export default ({ getService }: FtrProviderContext) => { await retry.try(async () => { const stats = await getStats(supertest, log); - - // remove "detection_rule_status" from the test by resetting it to initial - stats.detection_rules.detection_rule_status = getInitialEventLogUsage(); - - const expected: DetectionMetrics = { - ...getInitialDetectionMetrics(), - detection_rules: { - ...getInitialDetectionMetrics().detection_rules, - detection_rule_usage: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, - threat_match: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threat_match, - alerts: 4, - enabled: 1, - legacy_notifications_enabled: 1, - }, - custom_total: { - ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, - alerts: 4, - enabled: 1, - legacy_notifications_enabled: 1, - }, - }, + const expected: RulesTypeUsage = { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage, + threat_match: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.threat_match, + alerts: 4, + enabled: 1, + legacy_notifications_enabled: 1, + }, + custom_total: { + ...getInitialDetectionMetrics().detection_rules.detection_rule_usage.custom_total, + alerts: 4, + enabled: 1, + legacy_notifications_enabled: 1, }, }; - expect(stats).to.eql(expected); + expect(stats.detection_rules.detection_rule_usage).to.eql(expected); }); }); }); diff --git a/x-pack/test/functional/services/cases/single_case_view.ts b/x-pack/test/functional/services/cases/single_case_view.ts index cf27d4c2498d58..008f89c5b3ee88 100644 --- a/x-pack/test/functional/services/cases/single_case_view.ts +++ b/x-pack/test/functional/services/cases/single_case_view.ts @@ -110,7 +110,7 @@ export function CasesSingleViewServiceProvider({ getService, getPageObject }: Ft }, async assertCaseTitle(expectedTitle: string) { - const actionTitle = await testSubjects.getVisibleText('header-page-title'); + const actionTitle = await testSubjects.getVisibleText('editable-title-header-value'); expect(actionTitle).to.eql( expectedTitle, `Expected case title to be '${expectedTitle}' (got '${actionTitle}')` @@ -138,7 +138,7 @@ export function CasesSingleViewServiceProvider({ getService, getPageObject }: Ft async closeAssigneesPopover() { await retry.try(async () => { // Click somewhere outside the popover - await testSubjects.click('header-page-title'); + await testSubjects.click('editable-title-header-value'); await header.waitUntilLoadingHasFinished(); await testSubjects.missingOrFail('euiSelectableList'); }); diff --git a/x-pack/test/functional_with_es_ssl/apps/cases/group1/create_case_form.ts b/x-pack/test/functional_with_es_ssl/apps/cases/group1/create_case_form.ts index 51b6ecbe73d8bd..7eec8e96ef3809 100644 --- a/x-pack/test/functional_with_es_ssl/apps/cases/group1/create_case_form.ts +++ b/x-pack/test/functional_with_es_ssl/apps/cases/group1/create_case_form.ts @@ -48,7 +48,7 @@ export default ({ getService, getPageObject }: FtrProviderContext) => { }); // validate title - const title = await find.byCssSelector('[data-test-subj="header-page-title"]'); + const title = await find.byCssSelector('[data-test-subj="editable-title-header-value"]'); expect(await title.getVisibleText()).equal(caseTitle); // validate description diff --git a/x-pack/test/functional_with_es_ssl/apps/cases/group1/view_case.ts b/x-pack/test/functional_with_es_ssl/apps/cases/group1/view_case.ts index 0790b9d66ddf2d..ab4ed593368268 100644 --- a/x-pack/test/functional_with_es_ssl/apps/cases/group1/view_case.ts +++ b/x-pack/test/functional_with_es_ssl/apps/cases/group1/view_case.ts @@ -58,13 +58,13 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { it('edits a case title from the case view page', async () => { const newTitle = `test-${uuidv4()}`; - await testSubjects.click('editable-title-edit-icon'); + await testSubjects.click('editable-title-header-value'); await testSubjects.setValue('editable-title-input-field', newTitle); await testSubjects.click('editable-title-submit-btn'); // wait for backend response await retry.tryForTime(5000, async () => { - const title = await find.byCssSelector('[data-test-subj="header-page-title"]'); + const title = await find.byCssSelector('[data-test-subj="editable-title-header-value"]'); expect(await title.getVisibleText()).equal(newTitle); }); @@ -75,7 +75,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { it('shows error message when title is more than 160 characters', async () => { const longTitle = Array(161).fill('x').toString(); - await testSubjects.click('editable-title-edit-icon'); + await testSubjects.click('editable-title-header-value'); await testSubjects.setValue('editable-title-input-field', longTitle); await testSubjects.click('editable-title-submit-btn'); diff --git a/x-pack/test/functional_with_es_ssl/apps/cases/group2/attachment_framework.ts b/x-pack/test/functional_with_es_ssl/apps/cases/group2/attachment_framework.ts index 648362070907a2..d3ce3d1a85d7ff 100644 --- a/x-pack/test/functional_with_es_ssl/apps/cases/group2/attachment_framework.ts +++ b/x-pack/test/functional_with_es_ssl/apps/cases/group2/attachment_framework.ts @@ -385,7 +385,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await cases.common.expectToasterToContain(`${caseTitle} has been updated`); await testSubjects.click('toaster-content-case-view-link'); - const title = await find.byCssSelector('[data-test-subj="header-page-title"]'); + const title = await find.byCssSelector('[data-test-subj="editable-title-header-value"]'); expect(await title.getVisibleText()).toEqual(caseTitle); await testSubjects.existOrFail('comment-persistableState-.lens'); @@ -412,7 +412,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await cases.common.expectToasterToContain(`${theCaseTitle} has been updated`); await testSubjects.click('toaster-content-case-view-link'); - const title = await find.byCssSelector('[data-test-subj="header-page-title"]'); + const title = await find.byCssSelector('[data-test-subj="editable-title-header-value"]'); expect(await title.getVisibleText()).toEqual(theCaseTitle); await testSubjects.existOrFail('comment-persistableState-.lens'); diff --git a/x-pack/test/functional_with_es_ssl/apps/cases/group2/upgrade.ts b/x-pack/test/functional_with_es_ssl/apps/cases/group2/upgrade.ts index 93d12b5d908daf..4076ddf286d8fd 100644 --- a/x-pack/test/functional_with_es_ssl/apps/cases/group2/upgrade.ts +++ b/x-pack/test/functional_with_es_ssl/apps/cases/group2/upgrade.ts @@ -80,7 +80,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { }); it('shows the title correctly', async () => { - const title = await testSubjects.find('header-page-title'); + const title = await testSubjects.find('editable-title-header-value'); expect(await title.getVisibleText()).equal('Upgrade test in Kibana'); }); diff --git a/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/simple_down_alert.ts b/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/simple_down_alert.ts index 81a0a9b438af76..98a4a09ee2b8ad 100644 --- a/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/simple_down_alert.ts +++ b/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/simple_down_alert.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import { MonitorStatusTranslations } from '@kbn/synthetics-plugin/common/rules/legacy_uptime/translations'; +import { MonitorStatusTranslations } from '@kbn/uptime-plugin/common/rules/legacy_uptime/translations'; import { FtrProviderContext } from '../../../ftr_provider_context'; import { deleteUptimeSettingsObject } from '../../../../functional/apps/uptime'; diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts index a5503568605c17..708eb4a5c3abc6 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts @@ -47,6 +47,7 @@ export default function ({ getService }: FtrProviderContext) { 'Fleet-Usage-Logger', 'Fleet-Usage-Sender', 'ML:saved-objects-sync', + 'Synthetics:Clean-Up-Package-Policies', 'UPTIME:SyntheticsService:Sync-Saved-Monitor-Objects', 'actions:.cases-webhook', 'actions:.d3security', diff --git a/x-pack/test/security_api_integration/tests/kerberos/kerberos_login.ts b/x-pack/test/security_api_integration/tests/kerberos/kerberos_login.ts index b51b36cf4608c8..d5f65754739f54 100644 --- a/x-pack/test/security_api_integration/tests/kerberos/kerberos_login.ts +++ b/x-pack/test/security_api_integration/tests/kerberos/kerberos_login.ts @@ -381,8 +381,7 @@ export default function ({ getService }: FtrProviderContext) { expect(nonAjaxResponse.headers['www-authenticate']).to.be(undefined); }); - // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/162581 - describe.skip('post-authentication stage', () => { + describe('post-authentication stage', () => { for (const client of ['start-contract', 'request-context', 'custom']) { it(`expired access token should be automatically refreshed by the ${client} client`, async function () { this.timeout(60000); diff --git a/x-pack/test/security_api_integration/tests/oidc/authorization_code_flow/oidc_auth.ts b/x-pack/test/security_api_integration/tests/oidc/authorization_code_flow/oidc_auth.ts index 6c86d9ec4c3977..f1aef15c081f2e 100644 --- a/x-pack/test/security_api_integration/tests/oidc/authorization_code_flow/oidc_auth.ts +++ b/x-pack/test/security_api_integration/tests/oidc/authorization_code_flow/oidc_auth.ts @@ -542,8 +542,7 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); }); - // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/162583 - describe.skip('post-authentication stage', () => { + describe('post-authentication stage', () => { for (const client of ['start-contract', 'request-context', 'custom']) { it(`expired access token should be automatically refreshed by the ${client} client`, async function () { this.timeout(60000); diff --git a/x-pack/test/security_api_integration/tests/saml/saml_login.ts b/x-pack/test/security_api_integration/tests/saml/saml_login.ts index b055fb56576aa4..a10e2e2067eb68 100644 --- a/x-pack/test/security_api_integration/tests/saml/saml_login.ts +++ b/x-pack/test/security_api_integration/tests/saml/saml_login.ts @@ -443,8 +443,7 @@ export default function ({ getService }: FtrProviderContext) { }); }); - // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/162584 - describe.skip('API access with expired access token.', () => { + describe('API access with expired access token.', () => { let sessionCookie: Cookie; beforeEach(async function () { diff --git a/x-pack/test/security_api_integration/tests/token/session.ts b/x-pack/test/security_api_integration/tests/token/session.ts index e811372755fc87..f42d9cc93585ff 100644 --- a/x-pack/test/security_api_integration/tests/token/session.ts +++ b/x-pack/test/security_api_integration/tests/token/session.ts @@ -132,8 +132,7 @@ export default function ({ getService }: FtrProviderContext) { .expect(200); }); - // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/162586 - describe.skip('post-authentication stage', () => { + describe('post-authentication stage', () => { for (const client of ['start-contract', 'request-context', 'custom']) { it(`expired access token should be automatically refreshed by the ${client} client`, async function () { this.timeout(60000); diff --git a/x-pack/test/security_solution_endpoint/apps/endpoint/responder.ts b/x-pack/test/security_solution_endpoint/apps/endpoint/responder.ts index 3c1ac41ae54664..586b07261e76c8 100644 --- a/x-pack/test/security_solution_endpoint/apps/endpoint/responder.ts +++ b/x-pack/test/security_solution_endpoint/apps/endpoint/responder.ts @@ -105,8 +105,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { } }); - // FLAKY: https://github.com/elastic/kibana/issues/155451 - describe.skip('from the Endpoint list and details', () => { + describe('from the Endpoint list and details', () => { before(async () => { await pageObjects.endpoint.navigateToEndpointList(); }); diff --git a/x-pack/test/security_solution_endpoint/page_objects/endpoint_page.ts b/x-pack/test/security_solution_endpoint/page_objects/endpoint_page.ts index 82c3903d575baa..ec3eaf97eb81bc 100644 --- a/x-pack/test/security_solution_endpoint/page_objects/endpoint_page.ts +++ b/x-pack/test/security_solution_endpoint/page_objects/endpoint_page.ts @@ -144,11 +144,21 @@ export function EndpointPageProvider({ getService, getPageObjects }: FtrProvider * will be opened. If not, then the first endpoint on the list will be used. */ async showResponderFromEndpointList(endpointAgentId?: string) { - const endpointRow = await this.getEndpointTableRow(endpointAgentId); + testSubjects.retry.waitFor( + `opening table row action menu ${ + endpointAgentId ? `for endpoint id: ${endpointAgentId}` : 'for first row in the table' + }`, + async () => { + const endpointRow = await this.getEndpointTableRow(endpointAgentId); + + // Click the row menu + await (await testSubjects.findDescendant('endpointTableRowActions', endpointRow)).click(); + await testSubjects.existOrFail('tableRowActionsMenuPanel'); + + return true; + } + ); - // Click the row menu - await (await testSubjects.findDescendant('endpointTableRowActions', endpointRow)).click(); - await testSubjects.existOrFail('tableRowActionsMenuPanel'); const rowMenuPanel = await testSubjects.findDescendant( 'console', await testSubjects.find('tableRowActionsMenuPanel') diff --git a/x-pack/test/tsconfig.json b/x-pack/test/tsconfig.json index aeb7a399014e6d..8c232153de35eb 100644 --- a/x-pack/test/tsconfig.json +++ b/x-pack/test/tsconfig.json @@ -125,7 +125,6 @@ "@kbn/observability-shared-plugin", "@kbn/maps-vector-tile-utils", "@kbn/server-route-repository", - "@kbn/core-saved-objects-common", "@kbn/core-http-common", "@kbn/slo-schema", "@kbn/lens-plugin", diff --git a/x-pack/test_serverless/api_integration/test_suites/common/security_response_headers.ts b/x-pack/test_serverless/api_integration/test_suites/common/security_response_headers.ts index 47f541184a37c0..01d1c1b147aa89 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/security_response_headers.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/security_response_headers.ts @@ -41,7 +41,7 @@ export default function ({ getService }: FtrProviderContext) { it('redirect endpoint response contains default security headers', async () => { const { header } = await supertest .get(`/logout`) - .set(svlCommonApi.getCommonRequestHeader()) + .set(svlCommonApi.getInternalRequestHeader()) .expect(200); expect(header).toBeDefined(); diff --git a/x-pack/test_serverless/api_integration/test_suites/common/security_users.ts b/x-pack/test_serverless/api_integration/test_suites/common/security_users.ts index af4e97fff06bc7..2c82e216505b95 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/security_users.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/security_users.ts @@ -17,7 +17,7 @@ export default function ({ getService }: FtrProviderContext) { it('rejects request to create user', async () => { const { body, status } = await supertest .post(`/internal/security/users/some_testuser`) - .set(svlCommonApi.getCommonRequestHeader()) + .set(svlCommonApi.getInternalRequestHeader()) .send({ username: 'some_testuser', password: 'testpassword', roles: [] }); // in a non-serverless environment this would succeed with a 200 diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/apm_api_integration/common/apm_api_supertest.ts b/x-pack/test_serverless/api_integration/test_suites/observability/apm_api_integration/common/apm_api_supertest.ts index 4a6527302f3ab8..5b12a44e899c0c 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/apm_api_integration/common/apm_api_supertest.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/apm_api_integration/common/apm_api_supertest.ts @@ -34,7 +34,10 @@ export function createApmApiClient(st: supertest.SuperTest) { const { method, pathname, version } = formatRequest(endpoint, params.path); const url = format({ pathname, query: params?.query }); - const headers: Record = { 'kbn-xsrf': 'foo' }; + const headers: Record = { + 'kbn-xsrf': 'foo', + 'x-elastic-internal-origin': 'foo', + }; if (version) { headers['Elastic-Api-Version'] = version; diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/fleet.ts b/x-pack/test_serverless/api_integration/test_suites/observability/fleet.ts index 06fbe54ca4410a..ea5ca79cbefb9c 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/fleet.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/fleet.ts @@ -16,7 +16,7 @@ export default function ({ getService }: FtrProviderContext) { it('rejects request to create a new fleet server hosts', async () => { const { body, status } = await supertest .post('/api/fleet/fleet_server_hosts') - .set(svlCommonApi.getCommonRequestHeader()) + .set(svlCommonApi.getInternalRequestHeader()) .send({ name: 'test', host_urls: ['https://localhost:8220'], @@ -34,7 +34,7 @@ export default function ({ getService }: FtrProviderContext) { it('rejects request to create a new proxy', async () => { const { body, status } = await supertest .post('/api/fleet/proxies') - .set(svlCommonApi.getCommonRequestHeader()) + .set(svlCommonApi.getInternalRequestHeader()) .send({ name: 'test', url: 'https://localhost:8220', diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/helpers/alerting_api_helper.ts b/x-pack/test_serverless/api_integration/test_suites/observability/helpers/alerting_api_helper.ts index a50e1b4e85c14e..5229cfcfc8db8f 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/helpers/alerting_api_helper.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/helpers/alerting_api_helper.ts @@ -21,6 +21,7 @@ export async function createIndexConnector({ const { body } = await supertest .post(`/api/actions/connector`) .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo') .send({ name, config: { @@ -54,6 +55,7 @@ export async function createRule({ const { body } = await supertest .post(`/api/alerting/rule`) .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo') .send({ params, consumer, diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/helpers/alerting_wait_for_helpers.ts b/x-pack/test_serverless/api_integration/test_suites/observability/helpers/alerting_wait_for_helpers.ts index 80432a87185e6d..fab50cdc92da37 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/helpers/alerting_wait_for_helpers.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/helpers/alerting_wait_for_helpers.ts @@ -25,7 +25,10 @@ export async function waitForRuleStatus({ }): Promise> { return pRetry( async () => { - const response = await supertest.get(`/api/alerting/rule/${id}`); + const response = await supertest + .get(`/api/alerting/rule/${id}`) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo'); const { execution_status: executionStatus } = response.body || {}; const { status } = executionStatus || {}; if (status !== expectedStatus) { diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/helpers/data_view.ts b/x-pack/test_serverless/api_integration/test_suites/observability/helpers/data_view.ts index 0b0e85b1049629..534bc1446fd3e4 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/helpers/data_view.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/helpers/data_view.ts @@ -21,6 +21,7 @@ export const createDataView = async ({ const { body } = await supertest .post(`/api/content_management/rpc/create`) .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo') .send({ contentTypeId: 'index-pattern', data: { @@ -49,6 +50,7 @@ export const deleteDataView = async ({ const { body } = await supertest .post(`/api/content_management/rpc/delete`) .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo') .send({ contentTypeId: 'index-pattern', id, diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/avg_pct_fired.ts b/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/avg_pct_fired.ts index 0fb8c5f976f4a3..e03f1f05ad287e 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/avg_pct_fired.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/avg_pct_fired.ts @@ -40,8 +40,14 @@ export default function ({ getService }: FtrProviderContext) { }); after(async () => { - await supertest.delete(`/api/alerting/rule/${ruleId}`).set('kbn-xsrf', 'foo'); - await supertest.delete(`/api/actions/connector/${actionId}`).set('kbn-xsrf', 'foo'); + await supertest + .delete(`/api/alerting/rule/${ruleId}`) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo'); + await supertest + .delete(`/api/actions/connector/${actionId}`) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo'); await esClient.deleteByQuery({ index: THRESHOLD_RULE_ALERT_INDEX, query: { term: { 'kibana.alert.rule.uuid': ruleId } }, diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/avg_pct_no_data.ts b/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/avg_pct_no_data.ts index 3b3a72954ab4c4..7ed52de44810e1 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/avg_pct_no_data.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/avg_pct_no_data.ts @@ -35,8 +35,14 @@ export default function ({ getService }: FtrProviderContext) { }); after(async () => { - await supertest.delete(`/api/alerting/rule/${ruleId}`).set('kbn-xsrf', 'foo'); - await supertest.delete(`/api/actions/connector/${actionId}`).set('kbn-xsrf', 'foo'); + await supertest + .delete(`/api/alerting/rule/${ruleId}`) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo'); + await supertest + .delete(`/api/actions/connector/${actionId}`) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo'); await esClient.deleteByQuery({ index: THRESHOLD_RULE_ALERT_INDEX, query: { term: { 'kibana.alert.rule.uuid': ruleId } }, diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/custom_eq_avg_bytes_fired.ts b/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/custom_eq_avg_bytes_fired.ts index ef6d56cf641b08..faa9604e762cb2 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/custom_eq_avg_bytes_fired.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/custom_eq_avg_bytes_fired.ts @@ -46,8 +46,14 @@ export default function ({ getService }: FtrProviderContext) { }); after(async () => { - await supertest.delete(`/api/alerting/rule/${ruleId}`).set('kbn-xsrf', 'foo'); - await supertest.delete(`/api/actions/connector/${actionId}`).set('kbn-xsrf', 'foo'); + await supertest + .delete(`/api/alerting/rule/${ruleId}`) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo'); + await supertest + .delete(`/api/actions/connector/${actionId}`) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo'); await esClient.deleteByQuery({ index: THRESHOLD_RULE_ALERT_INDEX, query: { term: { 'kibana.alert.rule.uuid': ruleId } }, diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/documents_count_fired.ts b/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/documents_count_fired.ts index 52980e329de828..27c5bc17c7cfc4 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/documents_count_fired.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/documents_count_fired.ts @@ -40,8 +40,14 @@ export default function ({ getService }: FtrProviderContext) { }); after(async () => { - await supertest.delete(`/api/alerting/rule/${ruleId}`).set('kbn-xsrf', 'foo'); - await supertest.delete(`/api/actions/connector/${actionId}`).set('kbn-xsrf', 'foo'); + await supertest + .delete(`/api/alerting/rule/${ruleId}`) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo'); + await supertest + .delete(`/api/actions/connector/${actionId}`) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo'); await esClient.deleteByQuery({ index: THRESHOLD_RULE_ALERT_INDEX, query: { term: { 'kibana.alert.rule.uuid': ruleId } }, diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/group_by_fired.ts b/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/group_by_fired.ts index 1646b4254832e1..29d2e64a41874b 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/group_by_fired.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/threshold_rule/group_by_fired.ts @@ -53,8 +53,14 @@ export default function ({ getService }: FtrProviderContext) { }); after(async () => { - await supertest.delete(`/api/alerting/rule/${ruleId}`).set('kbn-xsrf', 'foo'); - await supertest.delete(`/api/actions/connector/${actionId}`).set('kbn-xsrf', 'foo'); + await supertest + .delete(`/api/alerting/rule/${ruleId}`) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo'); + await supertest + .delete(`/api/actions/connector/${actionId}`) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo'); await esClient.deleteByQuery({ index: THRESHOLD_RULE_ALERT_INDEX, query: { term: { 'kibana.alert.rule.uuid': ruleId } }, diff --git a/x-pack/test_serverless/api_integration/test_suites/security/fleet.ts b/x-pack/test_serverless/api_integration/test_suites/security/fleet.ts index 06fbe54ca4410a..ea5ca79cbefb9c 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/fleet.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/fleet.ts @@ -16,7 +16,7 @@ export default function ({ getService }: FtrProviderContext) { it('rejects request to create a new fleet server hosts', async () => { const { body, status } = await supertest .post('/api/fleet/fleet_server_hosts') - .set(svlCommonApi.getCommonRequestHeader()) + .set(svlCommonApi.getInternalRequestHeader()) .send({ name: 'test', host_urls: ['https://localhost:8220'], @@ -34,7 +34,7 @@ export default function ({ getService }: FtrProviderContext) { it('rejects request to create a new proxy', async () => { const { body, status } = await supertest .post('/api/fleet/proxies') - .set(svlCommonApi.getCommonRequestHeader()) + .set(svlCommonApi.getInternalRequestHeader()) .send({ name: 'test', url: 'https://localhost:8220', diff --git a/x-pack/test_serverless/functional/page_objects/svl_common_page.ts b/x-pack/test_serverless/functional/page_objects/svl_common_page.ts index f37c09f04699e6..e5fefeb546f8ae 100644 --- a/x-pack/test_serverless/functional/page_objects/svl_common_page.ts +++ b/x-pack/test_serverless/functional/page_objects/svl_common_page.ts @@ -14,5 +14,17 @@ export function SvlCommonPageProvider({ getService }: FtrProviderContext) { async assertProjectHeaderExists() { await testSubjects.existOrFail('kibanaProjectHeader'); }, + + async clickUserAvatar() { + testSubjects.click('userMenuAvatar'); + }, + + async assertUserAvatarExists() { + await testSubjects.existOrFail('userMenuAvatar'); + }, + + async assertUserMenuExists() { + await testSubjects.existOrFail('userMenu'); + }, }; } diff --git a/x-pack/test_serverless/functional/test_suites/common/index.ts b/x-pack/test_serverless/functional/test_suites/common/index.ts index d0adbf04e23b40..31497afb8c7d8a 100644 --- a/x-pack/test_serverless/functional/test_suites/common/index.ts +++ b/x-pack/test_serverless/functional/test_suites/common/index.ts @@ -11,5 +11,8 @@ export default function ({ loadTestFile }: FtrProviderContext) { describe('serverless common UI', function () { loadTestFile(require.resolve('./home_page')); loadTestFile(require.resolve('./management')); + + // platform security + loadTestFile(require.resolve('./security/navigation/avatar_menu')); }); } diff --git a/x-pack/test_serverless/functional/test_suites/common/security/navigation/avatar_menu.ts b/x-pack/test_serverless/functional/test_suites/common/security/navigation/avatar_menu.ts new file mode 100644 index 00000000000000..b8647d0423e02f --- /dev/null +++ b/x-pack/test_serverless/functional/test_suites/common/security/navigation/avatar_menu.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 { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ getPageObject, getService }: FtrProviderContext) { + const svlCommonPage = getPageObject('svlCommonPage'); + const svlCommonNavigation = getService('svlCommonNavigation'); + + describe('Avatar menu', function () { + it('is displayed', async () => { + await svlCommonNavigation.navigateToKibanaHome(); + await svlCommonPage.assertUserAvatarExists(); + }); + + it('displays User Menu when clicked', async () => { + await svlCommonNavigation.navigateToKibanaHome(); + await svlCommonPage.clickUserAvatar(); + await svlCommonPage.assertUserMenuExists(); + }); + }); +} diff --git a/x-pack/test_serverless/functional/test_suites/observability/navigation.ts b/x-pack/test_serverless/functional/test_suites/observability/navigation.ts index 2e8745680c528c..6c90a2a410b613 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/navigation.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/navigation.ts @@ -69,7 +69,8 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { await expectNoPageReload(); }); - it('active sidenav section is auto opened on load', async () => { + // FLAKY/BUG?: https://github.com/elastic/kibana/issues/162781 + it.skip('active sidenav section is auto opened on load', async () => { await svlCommonNavigation.sidenav.openSection('project_settings_project_nav'); await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'management' }); await browser.refresh(); diff --git a/x-pack/test_serverless/functional/test_suites/search/navigation.ts b/x-pack/test_serverless/functional/test_suites/search/navigation.ts index 82dac047ac2c3c..edf4c412744034 100644 --- a/x-pack/test_serverless/functional/test_suites/search/navigation.ts +++ b/x-pack/test_serverless/functional/test_suites/search/navigation.ts @@ -37,7 +37,6 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { await svlCommonNavigation.breadcrumbs.expectBreadcrumbExists({ deepLinkId: 'serverlessElasticsearch', }); - await svlCommonNavigation.sidenav.expectSectionClosed('rootNav:ml'); // TODO: test something search project specific instead of generic discover // navigate to discover @@ -48,14 +47,12 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { await expect(await browser.getCurrentUrl()).contain('/app/discover'); // navigate to a different section - await svlCommonNavigation.sidenav.openSection('rootNav:ml'); - await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'ml:notifications' }); - await svlCommonNavigation.sidenav.expectLinkActive({ deepLinkId: 'ml:notifications' }); - await svlCommonNavigation.breadcrumbs.expectBreadcrumbExists({ text: `Machine Learning` }); - await svlCommonNavigation.breadcrumbs.expectBreadcrumbExists({ - deepLinkId: 'ml:notifications', + await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'management:index_management' }); + await svlCommonNavigation.sidenav.expectLinkActive({ + deepLinkId: 'management:index_management', }); - await testSubjects.existOrFail(`mlPageNotifications`); + await svlCommonNavigation.breadcrumbs.expectBreadcrumbExists({ text: `Index Management` }); + await testSubjects.existOrFail(`indicesTab`); // navigate back to serverless search overview await svlCommonNavigation.breadcrumbs.clickHome(); @@ -64,19 +61,10 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { }); await svlCommonNavigation.breadcrumbs.expectBreadcrumbExists({ text: `Getting started` }); await testSubjects.existOrFail(`svlSearchOverviewPage`); - await svlCommonNavigation.sidenav.expectSectionOpen(`rootNav:ml`); // remains open await expectNoPageReload(); }); - it('active sidenav section is auto opened on load', async () => { - await svlCommonNavigation.sidenav.openSection('rootNav:ml'); - await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'ml:notifications' }); - await browser.refresh(); - await testSubjects.existOrFail(`mlPageNotifications`); - await svlCommonNavigation.sidenav.expectSectionOpen('rootNav:ml'); - }); - it('navigate using search', async () => { await svlCommonNavigation.search.showSearch(); // TODO: test something search project specific instead of generic discover diff --git a/x-pack/test_serverless/functional/test_suites/security/cypress/runner.ts b/x-pack/test_serverless/functional/test_suites/security/cypress/runner.ts index 62625e03920dc3..a83d8afbaefdce 100644 --- a/x-pack/test_serverless/functional/test_suites/security/cypress/runner.ts +++ b/x-pack/test_serverless/functional/test_suites/security/cypress/runner.ts @@ -14,9 +14,6 @@ export async function SecuritySolutionCypressTestRunner( envVars?: Record ) { const config = getService('config'); - const esArchiver = getService('esArchiver'); - - await esArchiver.load('x-pack/test/security_solution_cypress/es_archives/auditbeat'); return { FORCE_COLOR: '1', diff --git a/x-pack/test_serverless/shared/config.base.ts b/x-pack/test_serverless/shared/config.base.ts index fa940bb8f3fcaf..5ee130b96525d7 100644 --- a/x-pack/test_serverless/shared/config.base.ts +++ b/x-pack/test_serverless/shared/config.base.ts @@ -33,6 +33,7 @@ export default async () => { }, sourceArgs: ['--no-base-path', '--env.name=development'], serverArgs: [ + `--server.restrictInternalApis=true`, `--server.port=${kbnTestConfig.getPort()}`, '--status.allowAnonymous=true', // We shouldn't embed credentials into the URL since Kibana requests to Elasticsearch should diff --git a/yarn.lock b/yarn.lock index 20d78765516d2d..89a9637941d5a4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1517,12 +1517,12 @@ "@elastic/transport" "^8.3.1" tslib "^2.4.0" -"@elastic/elasticsearch@npm:@elastic/elasticsearch-canary@8.8.0-canary.2": - version "8.8.0-canary.2" - resolved "https://registry.yarnpkg.com/@elastic/elasticsearch-canary/-/elasticsearch-canary-8.8.0-canary.2.tgz#10b5699541d644797b33c7e24058d2e55367d88d" - integrity sha512-UxH8YUxcsqHXGh4t2PjuL0q03XunF9vCLHPAs9r+fQcaPXpNbEuv9jbNGXv/9TLyeAKYEgcq9Xm0p0Nk/Mh0lQ== +"@elastic/elasticsearch@npm:@elastic/elasticsearch@8.9.0": + version "8.9.0" + resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-8.9.0.tgz#d132021c6c12e4171fe14371609a5c69b535edd4" + integrity sha512-UyolnzjOYTRL2966TYS3IoJP4tQbvak/pmYmbP3JdphD53RjkyVDdxMpTBv+2LcNBRrvYPTzxQbpRW/nGSXA9g== dependencies: - "@elastic/transport" "^8.3.1" + "@elastic/transport" "^8.3.2" tslib "^2.4.0" "@elastic/ems-client@8.4.0": @@ -1715,6 +1715,18 @@ tslib "^2.4.0" undici "^5.5.1" +"@elastic/transport@^8.3.2": + version "8.3.2" + resolved "https://registry.yarnpkg.com/@elastic/transport/-/transport-8.3.2.tgz#295e91f43e3a60a839f998ac3090a83ddb441592" + integrity sha512-ZiBYRVPj6pwYW99fueyNU4notDf7ZPs7Ix+4T1btIJsKJmeaORIItIfs+0O7KV4vV+DcvyMhkY1FXQx7kQOODw== + dependencies: + debug "^4.3.4" + hpagent "^1.0.0" + ms "^2.1.3" + secure-json-parse "^2.4.0" + tslib "^2.4.0" + undici "^5.22.1" + "@emotion/babel-plugin-jsx-pragmatic@^0.2.1": version "0.2.1" resolved "https://registry.yarnpkg.com/@emotion/babel-plugin-jsx-pragmatic/-/babel-plugin-jsx-pragmatic-0.2.1.tgz#01d3306fde73b60d683f78f3bd9f6b2c919b63b6" @@ -4777,6 +4789,10 @@ version "0.0.0" uid "" +"@kbn/ml-in-memory-table@link:x-pack/packages/ml/in_memory_table": + version "0.0.0" + uid "" + "@kbn/ml-is-defined@link:x-pack/packages/ml/is_defined": version "0.0.0" uid "" @@ -8893,7 +8909,7 @@ "@types/tough-cookie" "*" parse5 "^7.0.0" -"@types/json-schema@*", "@types/json-schema@^7", "@types/json-schema@^7.0.0", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7", "@types/json-schema@^7.0.0", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== @@ -9607,13 +9623,13 @@ resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== -"@types/tar@^6.1.3": - version "6.1.3" - resolved "https://registry.yarnpkg.com/@types/tar/-/tar-6.1.3.tgz#46a2ce7617950c4852dfd7e9cd41aa8161b9d750" - integrity sha512-YzDOr5kdAeqS8dcO6NTTHTMJ44MUCBDoLEIyPtwEn7PssKqUYL49R1iCVJPeiPzPlKi6DbH33eZkpeJ27e4vHg== +"@types/tar@^6.1.5": + version "6.1.5" + resolved "https://registry.yarnpkg.com/@types/tar/-/tar-6.1.5.tgz#90ccb3b6a35430e7427410d50eed564e85feaaff" + integrity sha512-qm2I/RlZij5RofuY7vohTpYNaYcrSQlN2MyjucQc7ZweDwaEWkdN/EeNh6e9zjK6uEm6PwjdMXkcj05BxZdX1Q== dependencies: "@types/node" "*" - minipass "^3.3.5" + minipass "^4.0.0" "@types/tempy@^0.2.0": version "0.2.0" @@ -9835,18 +9851,6 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@^4.0.1": - version "4.31.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.2.tgz#98727a9c1e977dd5d20c8705e69cd3c2a86553fa" - integrity sha512-3tm2T4nyA970yQ6R3JZV9l0yilE2FedYg8dcXrTar34zC9r6JB7WyBQbpIVongKPlhEMjhQ01qkwrzWy38Bk1Q== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.31.2" - "@typescript-eslint/types" "4.31.2" - "@typescript-eslint/typescript-estree" "4.31.2" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - "@typescript-eslint/parser@^5.54.0": version "5.54.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.54.0.tgz#def186eb1b1dbd0439df0dacc44fb6d8d5c417fe" @@ -9857,14 +9861,6 @@ "@typescript-eslint/typescript-estree" "5.54.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@4.31.2": - version "4.31.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.31.2.tgz#1d528cb3ed3bcd88019c20a57c18b897b073923a" - integrity sha512-2JGwudpFoR/3Czq6mPpE8zBPYdHWFGL6lUNIGolbKQeSNv4EAiHaR5GVDQaLA0FwgcdcMtRk+SBJbFGL7+La5w== - dependencies: - "@typescript-eslint/types" "4.31.2" - "@typescript-eslint/visitor-keys" "4.31.2" - "@typescript-eslint/scope-manager@5.54.0": version "5.54.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.54.0.tgz#74b28ac9a3fc8166f04e806c957adb8c1fd00536" @@ -9883,29 +9879,11 @@ debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@4.31.2": - version "4.31.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.31.2.tgz#2aea7177d6d744521a168ed4668eddbd912dfadf" - integrity sha512-kWiTTBCTKEdBGrZKwFvOlGNcAsKGJSBc8xLvSjSppFO88AqGxGNYtF36EuEYG6XZ9vT0xX8RNiHbQUKglbSi1w== - "@typescript-eslint/types@5.54.0": version "5.54.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.54.0.tgz#7d519df01f50739254d89378e0dcac504cab2740" integrity sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ== -"@typescript-eslint/typescript-estree@4.31.2": - version "4.31.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.2.tgz#abfd50594d8056b37e7428df3b2d185ef2d0060c" - integrity sha512-ieBq8U9at6PvaC7/Z6oe8D3czeW5d//Fo1xkF/s9394VR0bg/UaMYPdARiWyKX+lLEjY3w/FNZJxitMsiWv+wA== - dependencies: - "@typescript-eslint/types" "4.31.2" - "@typescript-eslint/visitor-keys" "4.31.2" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - "@typescript-eslint/typescript-estree@5.54.0", "@typescript-eslint/typescript-estree@^5.54.0": version "5.54.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.54.0.tgz#f6f3440cabee8a43a0b25fa498213ebb61fdfe99" @@ -9919,7 +9897,7 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.54.0": +"@typescript-eslint/utils@5.54.0", "@typescript-eslint/utils@^5.10.0": version "5.54.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.54.0.tgz#3db758aae078be7b54b8ea8ea4537ff6cd3fbc21" integrity sha512-cuwm8D/Z/7AuyAeJ+T0r4WZmlnlxQ8wt7C7fLpFlKMR+dY6QO79Cq1WpJhvZbMA4ZeZGHiRWnht7ZJ8qkdAunw== @@ -9933,14 +9911,6 @@ eslint-utils "^3.0.0" semver "^7.3.7" -"@typescript-eslint/visitor-keys@4.31.2": - version "4.31.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.2.tgz#7d5b4a4705db7fe59ecffb273c1d082760f635cc" - integrity sha512-PrBId7EQq2Nibns7dd/ch6S6/M4/iwLM9McbgeEbCXfxdwRUNxJ4UNreJ6Gh3fI2GNKNrWnQxKL7oCPmngKBug== - dependencies: - "@typescript-eslint/types" "4.31.2" - eslint-visitor-keys "^2.0.0" - "@typescript-eslint/visitor-keys@5.54.0": version "5.54.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.54.0.tgz#846878afbf0cd67c19cfa8d75947383d4490db8f" @@ -15440,12 +15410,12 @@ eslint-plugin-import@^2.24.2: resolve "^1.20.0" tsconfig-paths "^3.11.0" -eslint-plugin-jest@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.5.0.tgz#a223a0040a19af749a161807254f0e47f5bfdcc3" - integrity sha512-Cm+XdX7Nms2UXGRnivHFVcM3ZmlKheHvc9VD78iZLO1XcqB59WbVjrMSiesCbHDlToxWjMJDiJMgc1CzFE13Vg== +eslint-plugin-jest@^27.2.3: + version "27.2.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.2.3.tgz#6f8a4bb2ca82c0c5d481d1b3be256ab001f5a3ec" + integrity sha512-sRLlSCpICzWuje66Gl9zvdF6mwD5X86I4u55hJyFBsxYOsBCmT5+kSUjf+fkFWVMMgpzNEupjW8WzUqi83hJAQ== dependencies: - "@typescript-eslint/experimental-utils" "^4.0.1" + "@typescript-eslint/utils" "^5.10.0" eslint-plugin-jsx-a11y@^6.4.1: version "6.4.1" @@ -17148,7 +17118,7 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" -globby@^11.0.1, globby@^11.0.2, globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: +globby@^11.0.1, globby@^11.0.2, globby@^11.0.4, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -21556,7 +21526,7 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6, minipass@^3.3.5: +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6: version "3.3.6" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== @@ -28417,7 +28387,7 @@ unc-path-regex@^0.1.2: resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= -undici@^5.21.2: +undici@^5.21.2, undici@^5.22.1: version "5.22.1" resolved "https://registry.yarnpkg.com/undici/-/undici-5.22.1.tgz#877d512effef2ac8be65e695f3586922e1a57d7b" integrity sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==