diff --git a/.buildkite/pipelines/artifacts.yml b/.buildkite/pipelines/artifacts.yml index 7d3f794fb95109..8f7f37eb673854 100644 --- a/.buildkite/pipelines/artifacts.yml +++ b/.buildkite/pipelines/artifacts.yml @@ -92,6 +92,16 @@ steps: - exit_status: '*' limit: 1 + - command: KIBANA_DOCKER_CONTEXT=chainguard .buildkite/scripts/steps/artifacts/docker_context.sh + label: 'Docker Context Verification' + agents: + queue: n2-2 + timeout_in_minutes: 30 + retry: + automatic: + - exit_status: '*' + limit: 1 + - command: KIBANA_DOCKER_CONTEXT=ironbank .buildkite/scripts/steps/artifacts/docker_context.sh label: 'Docker Context Verification' agents: diff --git a/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml b/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml index ee856a65fed93a..b45c277b4d36b3 100644 --- a/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml +++ b/.buildkite/pipelines/es_serverless/verify_es_serverless_image.yml @@ -81,7 +81,7 @@ steps: preemptible: true depends_on: build timeout_in_minutes: 60 - parallelism: 2 + parallelism: 3 retry: automatic: - exit_status: '-1' @@ -149,7 +149,7 @@ steps: preemptible: true depends_on: build timeout_in_minutes: 60 - parallelism: 2 + parallelism: 1 retry: automatic: - exit_status: '-1' diff --git a/.buildkite/pipelines/on_merge.yml b/.buildkite/pipelines/on_merge.yml index 108c8bb3a120db..7060035c413862 100644 --- a/.buildkite/pipelines/on_merge.yml +++ b/.buildkite/pipelines/on_merge.yml @@ -100,7 +100,7 @@ steps: - build - quick_checks timeout_in_minutes: 60 - parallelism: 2 + parallelism: 3 retry: automatic: - exit_status: '-1' @@ -156,7 +156,7 @@ steps: - build - quick_checks timeout_in_minutes: 60 - parallelism: 2 + parallelism: 1 retry: automatic: - exit_status: '-1' @@ -296,7 +296,7 @@ steps: - build - quick_checks timeout_in_minutes: 60 - parallelism: 3 + parallelism: 2 retry: automatic: - exit_status: '-1' @@ -310,7 +310,7 @@ steps: - build - quick_checks timeout_in_minutes: 60 - parallelism: 7 + parallelism: 6 retry: automatic: - exit_status: '-1' diff --git a/.buildkite/pipelines/pull_request/build_project.yml b/.buildkite/pipelines/pull_request/build_project.yml new file mode 100644 index 00000000000000..ba1f73c3b7a235 --- /dev/null +++ b/.buildkite/pipelines/pull_request/build_project.yml @@ -0,0 +1,11 @@ +steps: + - command: .buildkite/scripts/steps/artifacts/docker_image.sh + label: 'Build Project Image' + agents: + queue: n2-16-spot + timeout_in_minutes: 60 + soft_fail: true + retry: + automatic: + - exit_status: '-1' + limit: 3 diff --git a/.buildkite/pipelines/pull_request/security_solution/entity_analytics.yml b/.buildkite/pipelines/pull_request/security_solution/entity_analytics.yml index fdb5d90194e758..8ed45e2bd409a5 100644 --- a/.buildkite/pipelines/pull_request/security_solution/entity_analytics.yml +++ b/.buildkite/pipelines/pull_request/security_solution/entity_analytics.yml @@ -7,7 +7,7 @@ steps: - build - quick_checks timeout_in_minutes: 60 - parallelism: 2 + parallelism: 3 retry: automatic: - exit_status: '-1' diff --git a/.buildkite/pipelines/pull_request/security_solution/explore.yml b/.buildkite/pipelines/pull_request/security_solution/explore.yml index feb85818aceb53..3ee855334a28a7 100644 --- a/.buildkite/pipelines/pull_request/security_solution/explore.yml +++ b/.buildkite/pipelines/pull_request/security_solution/explore.yml @@ -7,7 +7,7 @@ steps: - build - quick_checks timeout_in_minutes: 60 - parallelism: 3 + parallelism: 2 retry: automatic: - exit_status: '-1' diff --git a/.buildkite/pipelines/pull_request/security_solution/investigations.yml b/.buildkite/pipelines/pull_request/security_solution/investigations.yml index 298fa1ee19964d..38b7481e603e12 100644 --- a/.buildkite/pipelines/pull_request/security_solution/investigations.yml +++ b/.buildkite/pipelines/pull_request/security_solution/investigations.yml @@ -21,7 +21,7 @@ steps: - build - quick_checks timeout_in_minutes: 60 - parallelism: 7 + parallelism: 8 retry: automatic: - exit_status: '-1' diff --git a/.buildkite/pipelines/pull_request/security_solution/rule_management.yml b/.buildkite/pipelines/pull_request/security_solution/rule_management.yml index a07d614b66a890..2680124d1575b3 100644 --- a/.buildkite/pipelines/pull_request/security_solution/rule_management.yml +++ b/.buildkite/pipelines/pull_request/security_solution/rule_management.yml @@ -21,7 +21,7 @@ steps: - build - quick_checks timeout_in_minutes: 60 - parallelism: 2 + parallelism: 1 retry: automatic: - exit_status: '-1' diff --git a/.buildkite/scripts/build_kibana.sh b/.buildkite/scripts/build_kibana.sh index da709ee6eb08c3..bb86b0abf8d45b 100755 --- a/.buildkite/scripts/build_kibana.sh +++ b/.buildkite/scripts/build_kibana.sh @@ -32,6 +32,7 @@ if is_pr_with_label "ci:build-cloud-image"; then --skip-docker-ubi \ --skip-docker-fips \ --skip-docker-ubuntu \ + --skip-docker-chainguard \ --skip-docker-serverless \ --skip-docker-contexts diff --git a/.buildkite/scripts/common/setup_job_env.sh b/.buildkite/scripts/common/setup_job_env.sh index c98f54ad77ba0d..6066e24708f761 100644 --- a/.buildkite/scripts/common/setup_job_env.sh +++ b/.buildkite/scripts/common/setup_job_env.sh @@ -21,7 +21,7 @@ fi KIBANA_DOCKER_USERNAME="$(vault_get container-registry username)" KIBANA_DOCKER_PASSWORD="$(vault_get container-registry password)" - if command -v docker &> /dev/null; then + if (command -v docker && docker version) &> /dev/null; then echo "$KIBANA_DOCKER_PASSWORD" | docker login -u "$KIBANA_DOCKER_USERNAME" --password-stdin docker.elastic.co fi } diff --git a/.buildkite/scripts/pipelines/pull_request/pipeline.ts b/.buildkite/scripts/pipelines/pull_request/pipeline.ts index cd392b00be882c..13b89678ccac65 100644 --- a/.buildkite/scripts/pipelines/pull_request/pipeline.ts +++ b/.buildkite/scripts/pipelines/pull_request/pipeline.ts @@ -151,6 +151,9 @@ const uploadPipeline = (pipelineContent: string | object) => { pipeline.push(getPipeline('.buildkite/pipelines/pull_request/fips.yml')); } + if (GITHUB_PR_LABELS.includes('ci:build-serverless-image')) { + pipeline.push(getPipeline('.buildkite/pipelines/pull_request/build_project.yml')); + } if ( GITHUB_PR_LABELS.includes('ci:project-deploy-elasticsearch') || GITHUB_PR_LABELS.includes('ci:project-deploy-observability') || @@ -159,10 +162,6 @@ const uploadPipeline = (pipelineContent: string | object) => { pipeline.push(getPipeline('.buildkite/pipelines/pull_request/deploy_project.yml')); } - if (GITHUB_PR_LABELS.includes('ci:build-serverless-image')) { - pipeline.push(getPipeline('.buildkite/pipelines/artifacts_container_image.yml')); - } - if ( (await doAnyChangesMatch([/.*stor(ies|y).*/])) || GITHUB_PR_LABELS.includes('ci:build-storybooks') diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh index 968938a629ae6e..5a47026f7cced4 100644 --- a/.buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh +++ b/.buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh @@ -34,6 +34,7 @@ node scripts/build \ --docker-namespace="kibana-ci" \ --docker-tag="$KIBANA_IMAGE_TAG" \ --skip-docker-ubuntu \ + --skip-docker-chainguard \ --skip-docker-ubi \ --skip-docker-cloud \ --skip-docker-contexts \ diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows.sh index fe384fa0a62811..e076e8661d9eb8 100755 --- a/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows.sh +++ b/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows.sh @@ -10,7 +10,6 @@ fi source .buildkite/scripts/common/util.sh -source .buildkite/scripts/steps/functional/common_cypress.sh .buildkite/scripts/bootstrap.sh export JOB=kibana-defend-workflows-serverless-cypress diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh index 6507f017504247..0032cd93966ad7 100755 --- a/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh +++ b/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh @@ -9,7 +9,6 @@ if [ -z "$1" ] fi source .buildkite/scripts/common/util.sh -source .buildkite/scripts/steps/functional/common_cypress.sh .buildkite/scripts/bootstrap.sh export JOB=kibana-security-solution-chrome diff --git a/.buildkite/scripts/steps/artifacts/docker_context.sh b/.buildkite/scripts/steps/artifacts/docker_context.sh index ad09e00124ab13..8ee1c0ba2a4387 100755 --- a/.buildkite/scripts/steps/artifacts/docker_context.sh +++ b/.buildkite/scripts/steps/artifacts/docker_context.sh @@ -20,6 +20,9 @@ case $KIBANA_DOCKER_CONTEXT in default) DOCKER_CONTEXT_FILE="kibana-$FULL_VERSION-docker-build-context.tar.gz" ;; + chainguard) + DOCKER_CONTEXT_FILE="kibana-chainguard-$FULL_VERSION-docker-build-context.tar.gz" + ;; cloud) DOCKER_CONTEXT_FILE="kibana-cloud-$FULL_VERSION-docker-build-context.tar.gz" ;; diff --git a/.buildkite/scripts/steps/artifacts/docker_image.sh b/.buildkite/scripts/steps/artifacts/docker_image.sh index 8a482a341867fb..09622bbe0f02d9 100755 --- a/.buildkite/scripts/steps/artifacts/docker_image.sh +++ b/.buildkite/scripts/steps/artifacts/docker_image.sh @@ -32,6 +32,7 @@ node scripts/build \ --docker-namespace="kibana-ci" \ --docker-tag="$KIBANA_IMAGE_TAG" \ --skip-docker-ubuntu \ + --skip-docker-chainguard \ --skip-docker-ubi \ --skip-docker-fips \ --skip-docker-cloud \ diff --git a/.buildkite/scripts/steps/cloud/build_and_deploy.sh b/.buildkite/scripts/steps/cloud/build_and_deploy.sh index 8b269e24389778..267e986f85cd76 100755 --- a/.buildkite/scripts/steps/cloud/build_and_deploy.sh +++ b/.buildkite/scripts/steps/cloud/build_and_deploy.sh @@ -43,6 +43,7 @@ else --skip-docker-ubi \ --skip-docker-fips \ --skip-docker-ubuntu \ + --skip-docker-chainguard \ --skip-docker-serverless \ --skip-docker-contexts fi diff --git a/.buildkite/scripts/steps/fips/build.sh b/.buildkite/scripts/steps/fips/build.sh index e7d359b1cc2ae8..0dfebdf2a6de1b 100755 --- a/.buildkite/scripts/steps/fips/build.sh +++ b/.buildkite/scripts/steps/fips/build.sh @@ -23,6 +23,7 @@ node scripts/build \ --docker-push \ --skip-docker-ubi \ --skip-docker-ubuntu \ + --skip-docker-chainguard \ --skip-docker-cloud \ --skip-docker-serverless \ --skip-docker-contexts diff --git a/.buildkite/scripts/steps/functional/common_cypress.sh b/.buildkite/scripts/steps/functional/common_cypress.sh deleted file mode 100644 index 4f92cfb683eab6..00000000000000 --- a/.buildkite/scripts/steps/functional/common_cypress.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash - -Xvfb -screen 0 1680x946x24 :99 & -export DISPLAY=:99 diff --git a/.buildkite/scripts/steps/functional/defend_workflows.sh b/.buildkite/scripts/steps/functional/defend_workflows.sh index 1c0af06a2765c5..80a58683af6fb8 100755 --- a/.buildkite/scripts/steps/functional/defend_workflows.sh +++ b/.buildkite/scripts/steps/functional/defend_workflows.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-defend-workflows-cypress export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/plugins/security_solution set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci defend-workflows-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:dw:run; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:dw:run; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/defend_workflows_burn.sh b/.buildkite/scripts/steps/functional/defend_workflows_burn.sh index bc7342c93e719c..643a8d9f4ec534 100644 --- a/.buildkite/scripts/steps/functional/defend_workflows_burn.sh +++ b/.buildkite/scripts/steps/functional/defend_workflows_burn.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh .buildkite/scripts/bootstrap.sh node scripts/build_kibana_platform_plugins.js diff --git a/.buildkite/scripts/steps/functional/defend_workflows_serverless.sh b/.buildkite/scripts/steps/functional/defend_workflows_serverless.sh index f1466ccc4516a7..fb1ef50bdfa1de 100755 --- a/.buildkite/scripts/steps/functional/defend_workflows_serverless.sh +++ b/.buildkite/scripts/steps/functional/defend_workflows_serverless.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-defend-workflows-serverless-cypress export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/plugins/security_solution set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci defend-workflows-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:dw:serverless:run; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:dw:serverless:run; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/defend_workflows_serverless_burn.sh b/.buildkite/scripts/steps/functional/defend_workflows_serverless_burn.sh index 5981c5bd210cc5..3f85a9b0518457 100644 --- a/.buildkite/scripts/steps/functional/defend_workflows_serverless_burn.sh +++ b/.buildkite/scripts/steps/functional/defend_workflows_serverless_burn.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh .buildkite/scripts/bootstrap.sh node scripts/build_kibana_platform_plugins.js diff --git a/.buildkite/scripts/steps/functional/fleet_cypress.sh b/.buildkite/scripts/steps/functional/fleet_cypress.sh index d6554b7198b834..43eb329f860b7c 100755 --- a/.buildkite/scripts/steps/functional/fleet_cypress.sh +++ b/.buildkite/scripts/steps/functional/fleet_cypress.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-fleet-cypress export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} diff --git a/.buildkite/scripts/steps/functional/osquery_cypress.sh b/.buildkite/scripts/steps/functional/osquery_cypress.sh index e9a74f308fac96..9ba7cabc4d1cb5 100755 --- a/.buildkite/scripts/steps/functional/osquery_cypress.sh +++ b/.buildkite/scripts/steps/functional/osquery_cypress.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh # TODO: remove the line below to use build artifacts for tests. # in addition to remove the line, we will have to expose the kibana install dir into the downloaded build location diff --git a/.buildkite/scripts/steps/functional/osquery_cypress_burn.sh b/.buildkite/scripts/steps/functional/osquery_cypress_burn.sh index 8aa5f28ce67cdd..8068dccac64f32 100755 --- a/.buildkite/scripts/steps/functional/osquery_cypress_burn.sh +++ b/.buildkite/scripts/steps/functional/osquery_cypress_burn.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/common/util.sh -source .buildkite/scripts/steps/functional/common_cypress.sh .buildkite/scripts/bootstrap.sh node scripts/build_kibana_platform_plugins.js @@ -14,4 +13,4 @@ buildkite-agent meta-data set "${BUILDKITE_JOB_ID}_is_test_execution_step" 'fals echo "--- Osquery Cypress tests, burning changed specs (Chrome)" -yarn --cwd x-pack/plugins/osquery cypress:changed-specs-only \ No newline at end of file +yarn --cwd x-pack/plugins/osquery cypress:changed-specs-only diff --git a/.buildkite/scripts/steps/functional/response_ops.sh b/.buildkite/scripts/steps/functional/response_ops.sh index 47e19393d8dc9c..e31856e2521064 100755 --- a/.buildkite/scripts/steps/functional/response_ops.sh +++ b/.buildkite/scripts/steps/functional/response_ops.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} diff --git a/.buildkite/scripts/steps/functional/response_ops_cases.sh b/.buildkite/scripts/steps/functional/response_ops_cases.sh index 739cca4e97dc05..1efbe5ad75f7b9 100755 --- a/.buildkite/scripts/steps/functional/response_ops_cases.sh +++ b/.buildkite/scripts/steps/functional/response_ops_cases.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} diff --git a/.buildkite/scripts/steps/functional/security_serverless_ai_assistant.sh b/.buildkite/scripts/steps/functional/security_serverless_ai_assistant.sh index a37e1f3b2ad409..36640fa64d70e7 100644 --- a/.buildkite/scripts/steps/functional/security_serverless_ai_assistant.sh +++ b/.buildkite/scripts/steps/functional/security_serverless_ai_assistant.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/test/security_solution_cypress set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci sec-sol-cypress-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:ai_assistant:run:serverless; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:ai_assistant:run:serverless; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/security_serverless_burn.sh b/.buildkite/scripts/steps/functional/security_serverless_burn.sh index 7ec6535a6ff512..1a9cef8d6be39c 100755 --- a/.buildkite/scripts/steps/functional/security_serverless_burn.sh +++ b/.buildkite/scripts/steps/functional/security_serverless_burn.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} diff --git a/.buildkite/scripts/steps/functional/security_serverless_defend_workflows.sh b/.buildkite/scripts/steps/functional/security_serverless_defend_workflows.sh index 323f1fc2224f1a..7b16afa214fed9 100644 --- a/.buildkite/scripts/steps/functional/security_serverless_defend_workflows.sh +++ b/.buildkite/scripts/steps/functional/security_serverless_defend_workflows.sh @@ -3,11 +3,10 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-serverless-security-cypress export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} echo "--- Security Defend Workflows Serverless Cypress" -yarn --cwd x-pack/test_serverless/functional/test_suites/security/cypress cypress:run \ No newline at end of file +yarn --cwd x-pack/test_serverless/functional/test_suites/security/cypress cypress:run diff --git a/.buildkite/scripts/steps/functional/security_serverless_detection_engine.sh b/.buildkite/scripts/steps/functional/security_serverless_detection_engine.sh index 01b69f38b8e310..d45d037654d7be 100644 --- a/.buildkite/scripts/steps/functional/security_serverless_detection_engine.sh +++ b/.buildkite/scripts/steps/functional/security_serverless_detection_engine.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/test/security_solution_cypress set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci sec-sol-cypress-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:detection_engine:run:serverless; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:detection_engine:run:serverless; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/security_serverless_detection_engine_exceptions.sh b/.buildkite/scripts/steps/functional/security_serverless_detection_engine_exceptions.sh index 6377e99c8ddfe9..279aaa52136a2e 100644 --- a/.buildkite/scripts/steps/functional/security_serverless_detection_engine_exceptions.sh +++ b/.buildkite/scripts/steps/functional/security_serverless_detection_engine_exceptions.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/test/security_solution_cypress set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci sec-sol-cypress-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:detection_engine:exceptions:run:serverless; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:detection_engine:exceptions:run:serverless; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/security_serverless_entity_analytics.sh b/.buildkite/scripts/steps/functional/security_serverless_entity_analytics.sh index 11e4bcbd69eee1..de155171ed1aec 100644 --- a/.buildkite/scripts/steps/functional/security_serverless_entity_analytics.sh +++ b/.buildkite/scripts/steps/functional/security_serverless_entity_analytics.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-serverless-security-cypress export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/test/security_solution_cypress set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci sec-sol-cypress-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:entity_analytics:run:serverless; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:entity_analytics:run:serverless; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/security_serverless_explore.sh b/.buildkite/scripts/steps/functional/security_serverless_explore.sh index adde2135243bad..5d62c24387b369 100644 --- a/.buildkite/scripts/steps/functional/security_serverless_explore.sh +++ b/.buildkite/scripts/steps/functional/security_serverless_explore.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/test/security_solution_cypress set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci sec-sol-cypress-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:explore:run:serverless; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:explore:run:serverless; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/security_serverless_investigations.sh b/.buildkite/scripts/steps/functional/security_serverless_investigations.sh index 0c7194dcac6680..487f274928a5ed 100644 --- a/.buildkite/scripts/steps/functional/security_serverless_investigations.sh +++ b/.buildkite/scripts/steps/functional/security_serverless_investigations.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/test/security_solution_cypress set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci sec-sol-cypress-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:investigations:run:serverless; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:investigations:run:serverless; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/security_serverless_osquery.sh b/.buildkite/scripts/steps/functional/security_serverless_osquery.sh index e87251b0710c78..27ed0c79871ee3 100755 --- a/.buildkite/scripts/steps/functional/security_serverless_osquery.sh +++ b/.buildkite/scripts/steps/functional/security_serverless_osquery.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh # TODO: remove the line below to use build artifacts for tests. # in addition to remove the line, we will have to expose the kibana install dir into the downloaded build location diff --git a/.buildkite/scripts/steps/functional/security_serverless_rule_management.sh b/.buildkite/scripts/steps/functional/security_serverless_rule_management.sh index 85f088aeff8b53..41ef9996580439 100644 --- a/.buildkite/scripts/steps/functional/security_serverless_rule_management.sh +++ b/.buildkite/scripts/steps/functional/security_serverless_rule_management.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/test/security_solution_cypress set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci sec-sol-cypress-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:rule_management:run:serverless; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:rule_management:run:serverless; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/security_serverless_rule_management_prebuilt_rules.sh b/.buildkite/scripts/steps/functional/security_serverless_rule_management_prebuilt_rules.sh index 50d27689e5dd94..73b1224c8f3a4d 100644 --- a/.buildkite/scripts/steps/functional/security_serverless_rule_management_prebuilt_rules.sh +++ b/.buildkite/scripts/steps/functional/security_serverless_rule_management_prebuilt_rules.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/test/security_solution_cypress set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci sec-sol-cypress-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:rule_management:prebuilt_rules:run:serverless; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:rule_management:prebuilt_rules:run:serverless; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/security_solution_ai_assistant.sh b/.buildkite/scripts/steps/functional/security_solution_ai_assistant.sh index 4f77f790376fe3..1d2093c9bf037b 100644 --- a/.buildkite/scripts/steps/functional/security_solution_ai_assistant.sh +++ b/.buildkite/scripts/steps/functional/security_solution_ai_assistant.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/test/security_solution_cypress set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci sec-sol-cypress-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:ai_assistant:run:ess; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:ai_assistant:run:ess; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/security_solution_burn.sh b/.buildkite/scripts/steps/functional/security_solution_burn.sh index 755c5c6cd049dd..3474edbe5f9f36 100755 --- a/.buildkite/scripts/steps/functional/security_solution_burn.sh +++ b/.buildkite/scripts/steps/functional/security_solution_burn.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} diff --git a/.buildkite/scripts/steps/functional/security_solution_detection_engine.sh b/.buildkite/scripts/steps/functional/security_solution_detection_engine.sh index 523c2a88806753..f540d2b3568d2e 100644 --- a/.buildkite/scripts/steps/functional/security_solution_detection_engine.sh +++ b/.buildkite/scripts/steps/functional/security_solution_detection_engine.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/test/security_solution_cypress set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci sec-sol-cypress-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:detection_engine:run:ess; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:detection_engine:run:ess; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/security_solution_detection_engine_exceptions.sh b/.buildkite/scripts/steps/functional/security_solution_detection_engine_exceptions.sh index 68b830116b4c83..2927e7648f634e 100644 --- a/.buildkite/scripts/steps/functional/security_solution_detection_engine_exceptions.sh +++ b/.buildkite/scripts/steps/functional/security_solution_detection_engine_exceptions.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/test/security_solution_cypress set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci sec-sol-cypress-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:detection_engine:exceptions:run:ess; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:detection_engine:exceptions:run:ess; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/security_solution_entity_analytics.sh b/.buildkite/scripts/steps/functional/security_solution_entity_analytics.sh index 0c2fad86a45532..4a51268207985e 100755 --- a/.buildkite/scripts/steps/functional/security_solution_entity_analytics.sh +++ b/.buildkite/scripts/steps/functional/security_solution_entity_analytics.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/test/security_solution_cypress set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci sec-sol-cypress-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:entity_analytics:run:ess; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:entity_analytics:run:ess; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/security_solution_explore.sh b/.buildkite/scripts/steps/functional/security_solution_explore.sh index 8bd206138825b2..85cef92969fd87 100644 --- a/.buildkite/scripts/steps/functional/security_solution_explore.sh +++ b/.buildkite/scripts/steps/functional/security_solution_explore.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/test/security_solution_cypress set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci sec-sol-cypress-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:explore:run:ess; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:explore:run:ess; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/security_solution_investigations.sh b/.buildkite/scripts/steps/functional/security_solution_investigations.sh index 748c937eb6668a..15c1dd39a7fa3a 100644 --- a/.buildkite/scripts/steps/functional/security_solution_investigations.sh +++ b/.buildkite/scripts/steps/functional/security_solution_investigations.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/test/security_solution_cypress set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci sec-sol-cypress-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:investigations:run:ess; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:investigations:run:ess; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/security_solution_rule_management.sh b/.buildkite/scripts/steps/functional/security_solution_rule_management.sh index 24e42abc8ca9bf..7606649e572f9f 100644 --- a/.buildkite/scripts/steps/functional/security_solution_rule_management.sh +++ b/.buildkite/scripts/steps/functional/security_solution_rule_management.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/test/security_solution_cypress set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci sec-sol-cypress-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:rule_management:run:ess; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:rule_management:run:ess; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/security_solution_rule_management_prebuilt_rules.sh b/.buildkite/scripts/steps/functional/security_solution_rule_management_prebuilt_rules.sh index 91d0e2bdb9c2ef..97254dbf99310b 100644 --- a/.buildkite/scripts/steps/functional/security_solution_rule_management_prebuilt_rules.sh +++ b/.buildkite/scripts/steps/functional/security_solution_rule_management_prebuilt_rules.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-security-solution-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -15,4 +14,4 @@ cd x-pack/test/security_solution_cypress set +e BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci sec-sol-cypress-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:rule_management:prebuilt_rules:run:ess; status=$?; yarn junit:merge || :; exit $status \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn cypress:rule_management:prebuilt_rules:run:ess; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/steps/functional/threat_intelligence.sh b/.buildkite/scripts/steps/functional/threat_intelligence.sh index bd4fdd814b87b0..58a30294698918 100755 --- a/.buildkite/scripts/steps/functional/threat_intelligence.sh +++ b/.buildkite/scripts/steps/functional/threat_intelligence.sh @@ -3,7 +3,6 @@ set -euo pipefail source .buildkite/scripts/steps/functional/common.sh -source .buildkite/scripts/steps/functional/common_cypress.sh export JOB=kibana-threat-intelligence-chrome export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} @@ -12,4 +11,4 @@ echo "--- Threat Intelligence Cypress tests (Chrome)" BK_ANALYTICS_API_KEY=$(vault_get security-solution-ci threat-intelligence-bk-api-key) -BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn --cwd x-pack/plugins/threat_intelligence cypress:run \ No newline at end of file +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn --cwd x-pack/plugins/threat_intelligence cypress:run diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d8e8361061b78d..ed4759629b6592 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -593,8 +593,8 @@ x-pack/packages/ml/url_state @elastic/ml-ui packages/kbn-mock-idp-plugin @elastic/kibana-security packages/kbn-mock-idp-utils @elastic/kibana-security packages/kbn-monaco @elastic/appex-sharedux -x-pack/plugins/monitoring_collection @elastic/obs-ux-infra_services-team -x-pack/plugins/monitoring @elastic/obs-ux-infra_services-team +x-pack/plugins/monitoring_collection @elastic/stack-monitoring +x-pack/plugins/monitoring @elastic/stack-monitoring src/plugins/navigation @elastic/appex-sharedux src/plugins/newsfeed @elastic/kibana-core test/common/plugins/newsfeed @elastic/kibana-core @@ -864,6 +864,7 @@ x-pack/plugins/translations @elastic/kibana-localization x-pack/examples/triggers_actions_ui_example @elastic/response-ops x-pack/plugins/triggers_actions_ui @elastic/response-ops packages/kbn-triggers-actions-ui-types @elastic/response-ops +packages/kbn-try-in-console @elastic/enterprise-search-frontend packages/kbn-ts-projects @elastic/kibana-operations packages/kbn-ts-type-check-cli @elastic/kibana-operations packages/kbn-typed-react-router-config @elastic/obs-knowledge-team @elastic/obs-ux-management-team diff --git a/.i18nrc.json b/.i18nrc.json index 4d546716ffe2e8..c92cfe8b323662 100644 --- a/.i18nrc.json +++ b/.i18nrc.json @@ -119,6 +119,7 @@ "statusPage": "src/legacy/core_plugins/status_page", "telemetry": ["src/plugins/telemetry", "src/plugins/telemetry_management_section"], "timelion": ["src/plugins/vis_types/timelion"], + "tryInConsole": "packages/kbn-try-in-console/", "uiActions": ["src/plugins/ui_actions", "packages/kbn-ui-actions-browser"], "uiActionsEnhanced": "src/plugins/ui_actions_enhanced", "uiActionsExamples": "examples/ui_action_examples", diff --git a/.node-version b/.node-version index 87834047a6fa65..f203ab89b795f5 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -20.12.2 +20.13.1 diff --git a/.nvmrc b/.nvmrc index 87834047a6fa65..f203ab89b795f5 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -20.12.2 +20.13.1 diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel index 4be7fa6a9848ed..2b03b20803bd7f 100644 --- a/WORKSPACE.bazel +++ b/WORKSPACE.bazel @@ -22,13 +22,13 @@ load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install # Setup the Node.js toolchain for the architectures we want to support node_repositories( node_repositories = { - "20.12.2-darwin_amd64": ("node-v20.12.2-darwin-x64.tar.gz", "node-v20.12.2-darwin-x64", "cd5e9a80a38ccffc036a87b232a5402339c7bf8fa9a494ae0731a1a671687718"), - "20.12.2-darwin_arm64": ("node-v20.12.2-darwin-arm64.tar.gz", "node-v20.12.2-darwin-arm64", "98eb624b52efec2530079e1d11296ec0ac20771b94b087d21649250339cf5332"), - "20.12.2-linux_arm64": ("node-v20.12.2-linux-arm64.tar.xz", "node-v20.12.2-linux-arm64", "26f6dfac78a119e088458c1e6f2beb6c546a170d916060a23c92075718f92966"), - "20.12.2-linux_amd64": ("node-v20.12.2-linux-x64.tar.xz", "node-v20.12.2-linux-x64", "37756bc241b099e7435e20ba088dd9c13f39c6dc4235661c807cdd7b361371ef"), - "20.12.2-windows_amd64": ("node-v20.12.2-win-x64.zip", "node-v20.12.2-win-x64", "66dda1717cae30a13be6bb17ad96ee54b69f2c23c85acd9c3299b095fa26b452"), + "20.13.1-darwin_amd64": ("node-v20.13.1-darwin-x64.tar.gz", "node-v20.13.1-darwin-x64", "80bde95dc976b84db5ca566738c07305087ae578f5f3b05191e0e6ff54aaeaf2"), + "20.13.1-darwin_arm64": ("node-v20.13.1-darwin-arm64.tar.gz", "node-v20.13.1-darwin-arm64", "c30fe595f59dcd2c5158da6bf8bc251ffc85ca37304afa89db150fb3c62c4507"), + "20.13.1-linux_arm64": ("node-v20.13.1-linux-arm64.tar.xz", "node-v20.13.1-linux-arm64", "5a41797a5815f42e0e9e4d2185d07d5d395386dc681a5a914563586c735ae31f"), + "20.13.1-linux_amd64": ("node-v20.13.1-linux-x64.tar.xz", "node-v20.13.1-linux-x64", "eb449c4db6c5769c4219fdbfa1c7cbc8b367b9f8c7be1eb534dc8f6a3c80a97f"), + "20.13.1-windows_amd64": ("node-v20.13.1-win-x64.zip", "node-v20.13.1-win-x64", "555a55c0c7441cb90e441115c81f610fca712dd5b192034d5eaafd7c29924425"), }, - node_version = "20.12.2", + node_version = "20.13.1", node_urls = [ "https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/dist/v{version}/{filename}", ], diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 451c1b1ea22f9f..800da589af3c9c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index ac55b2bb8314eb..8ad979c3473be6 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index b7584372154ca8..c0f33d5f207608 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index e0492be8f792d4..c06124db14d071 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: 2024-05-13 +date: 2024-05-15 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 7f1c75d19103a6..6754e19612e344 100644 --- a/api_docs/alerting.devdocs.json +++ b/api_docs/alerting.devdocs.json @@ -5235,7 +5235,7 @@ }, " | ", "SanitizedRuleWithLegacyId", - ">; delete: (params: { id: string; }) => Promise<{}>; getGlobalExecutionLogWithAuth: (params: ", + ">; delete: (params: Readonly<{} & { id: string; }>) => Promise<{}>; getGlobalExecutionLogWithAuth: (params: ", "GetGlobalExecutionLogParams", ") => Promise<", { diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 1bb84ca6f090f6..797e3757716783 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: 2024-05-13 +date: 2024-05-15 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 d7cac23f6082c5..6931292f8d133f 100644 --- a/api_docs/apm.devdocs.json +++ b/api_docs/apm.devdocs.json @@ -5675,9 +5675,55 @@ "Type", "; end: ", "Type", - "; }>]>; }> | undefined; handler: ({}: ", + "; }>, ", + "TypeC", + "<{ documentType: ", + "UnionC", + "<[", + "LiteralC", + "<", + "ApmDocumentType", + ".ServiceTransactionMetric>, ", + "LiteralC", + "<", + "ApmDocumentType", + ".TransactionMetric>, ", + "LiteralC", + "<", + "ApmDocumentType", + ".TransactionEvent>]>; rollupInterval: ", + "UnionC", + "<[", + "LiteralC", + "<", + "RollupInterval", + ".OneMinute>, ", + "LiteralC", + "<", + "RollupInterval", + ".TenMinutes>, ", + "LiteralC", + "<", + "RollupInterval", + ".SixtyMinutes>, ", + "LiteralC", + "<", + "RollupInterval", + ".None>]>; }>, ", + "TypeC", + "<{ useDurationSummary: ", + "Type", + "; }>]>; }> | undefined; handler: ({}: ", "APMRouteHandlerResources", - " & { params: { query: { kuery: string; } & { start: number; end: number; }; }; }) => Promise<", + " & { params: { query: { kuery: string; } & { start: number; end: number; } & { documentType: ", + "ApmDocumentType", + ".TransactionMetric | ", + "ApmDocumentType", + ".ServiceTransactionMetric | ", + "ApmDocumentType", + ".TransactionEvent; rollupInterval: ", + "RollupInterval", + "; } & { useDurationSummary: boolean; }; }; }) => Promise<", "AssetServicesResponse", ">; } & ", "APMRouteCreateOptions", diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index ff484fffbedd48..d12b77805eb6cc 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 2fd4c46c4c6876..741774540df33a 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index 661355584ec55f..6d4d0afcc5b9c2 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager'] --- import assetManagerObj from './asset_manager.devdocs.json'; diff --git a/api_docs/assets_data_access.mdx b/api_docs/assets_data_access.mdx index 07ef589e5a2e96..38073cf88c424a 100644 --- a/api_docs/assets_data_access.mdx +++ b/api_docs/assets_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetsDataAccess title: "assetsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the assetsDataAccess plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetsDataAccess'] --- import assetsDataAccessObj from './assets_data_access.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 9cf97b5f48042b..c601f8e5a3fb4b 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: 2024-05-13 +date: 2024-05-15 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 4214c10ed39907..a6a0930a8e7a4f 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: 2024-05-13 +date: 2024-05-15 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 fe34cd822d0081..d9aac6b38d0101 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 3578a7daabd204..f4f0d8a4793d44 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 15dfbc4f855028..4e45a86fcd43b5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index eb4073530489b6..4023dcea3dc28a 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 727969a55cf3b5..fa21245743595b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index 4a70bed78bba17..a06203e3c4c1a2 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: 2024-05-13 +date: 2024-05-15 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 51c0f63b264cf7..0bcc674f5663a4 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: 2024-05-13 +date: 2024-05-15 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 b6662f4d0297fb..befd8cd34cf3ed 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 70e8ad1791669a..3e2f6add530e3e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx index b40c1b5d0a0346..d4e39bb7e27dc2 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index eb440c61b26051..90733b57ea5ec3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 065dbe5d50c57b..dea93eb9fe7824 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index d555389d187d37..af9a9be0a56448 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index 21cc64869a0ac9..aa640c82b0cff6 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 07fb1cf533bc78..6525268cc4c13e 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: 2024-05-13 +date: 2024-05-15 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 914b90f0ef6a25..0b54b0bf37aa9c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index dfde9b85621aad..3af63d89acda5f 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: 2024-05-13 +date: 2024-05-15 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 92d0b152ec4dec..6ee6e4b11577eb 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index e54990cc369105..45dd2204a032bb 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index 3c28b41780ae95..453858a611fd52 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 146ea9f65b96dd..da898e151823d1 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 099712df04a838..7a18b3d53b1a5c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.devdocs.json b/api_docs/dataset_quality.devdocs.json index 607e01fe7287f0..aab9fca4ec8497 100644 --- a/api_docs/dataset_quality.devdocs.json +++ b/api_docs/dataset_quality.devdocs.json @@ -161,24 +161,6 @@ "DatasetQualityRouteHandlerResources", " & { params: { query: { type?: \"metrics\" | \"synthetics\" | \"traces\" | \"logs\" | \"profiling\" | undefined; }; }; }) => Promise<{ integrations: ({ name: string; } & { title?: string | undefined; version?: string | undefined; icons?: ({ path: string; src: string; } & { title?: string | undefined; size?: string | undefined; type?: string | undefined; })[] | undefined; datasets?: { [x: string]: string; } | undefined; dashboards?: { id: string; title: string; }[] | undefined; })[]; }>; } & ", "DatasetQualityRouteCreateOptions", - "; \"GET /internal/dataset_quality/data_streams/estimated_data\": { endpoint: \"GET /internal/dataset_quality/data_streams/estimated_data\"; params?: ", - "TypeC", - "<{ query: ", - "IntersectionC", - "<[", - "PartialC", - "<{ type: ", - "KeyofC", - "<{ logs: null; metrics: null; traces: null; synthetics: null; profiling: null; }>; }>, ", - "TypeC", - "<{ start: ", - "Type", - "; end: ", - "Type", - "; }>]>; }> | undefined; handler: ({}: ", - "DatasetQualityRouteHandlerResources", - " & { params: { query: { type?: \"metrics\" | \"synthetics\" | \"traces\" | \"logs\" | \"profiling\" | undefined; } & { start: number; end: number; }; }; }) => Promise<{ estimatedDataInBytes: number | null; }>; } & ", - "DatasetQualityRouteCreateOptions", "; \"GET /internal/dataset_quality/data_streams/{dataStream}/settings\": { endpoint: \"GET /internal/dataset_quality/data_streams/{dataStream}/settings\"; params?: ", "TypeC", "<{ path: ", @@ -205,6 +187,28 @@ "DatasetQualityRouteHandlerResources", " & { params: { path: { dataStream: string; }; query: { start: number; end: number; }; }; }) => Promise<{ lastActivity?: number | undefined; degradedDocsCount?: number | undefined; docsCount?: number | undefined; sizeBytes?: number | null | undefined; services?: { [x: string]: string[]; } | undefined; hosts?: { [x: string]: string[]; } | undefined; }>; } & ", "DatasetQualityRouteCreateOptions", + "; \"GET /internal/dataset_quality/data_streams/non_aggregatable\": { endpoint: \"GET /internal/dataset_quality/data_streams/non_aggregatable\"; params?: ", + "TypeC", + "<{ query: ", + "IntersectionC", + "<[", + "TypeC", + "<{ start: ", + "Type", + "; end: ", + "Type", + "; }>, ", + "PartialC", + "<{ type: ", + "KeyofC", + "<{ logs: null; metrics: null; traces: null; synthetics: null; profiling: null; }>; }>, ", + "PartialC", + "<{ dataStream: ", + "StringC", + "; }>]>; }> | undefined; handler: ({}: ", + "DatasetQualityRouteHandlerResources", + " & { params: { query: { start: number; end: number; } & { type?: \"metrics\" | \"synthetics\" | \"traces\" | \"logs\" | \"profiling\" | undefined; } & { dataStream?: string | undefined; }; }; }) => Promise<{ aggregatable: boolean; datasets: string[]; }>; } & ", + "DatasetQualityRouteCreateOptions", "; \"GET /internal/dataset_quality/data_streams/degraded_docs\": { endpoint: \"GET /internal/dataset_quality/data_streams/degraded_docs\"; params?: ", "TypeC", "<{ query: ", @@ -225,7 +229,7 @@ "StringC", "; }>]>; }> | undefined; handler: ({}: ", "DatasetQualityRouteHandlerResources", - " & { params: { query: { start: number; end: number; } & { type?: \"metrics\" | \"synthetics\" | \"traces\" | \"logs\" | \"profiling\" | undefined; } & { datasetQuery?: string | undefined; }; }; }) => Promise<{ degradedDocs: { dataset: string; count: number; totalDocs: number; percentage: number; }[]; }>; } & ", + " & { params: { query: { start: number; end: number; } & { type?: \"metrics\" | \"synthetics\" | \"traces\" | \"logs\" | \"profiling\" | undefined; } & { datasetQuery?: string | undefined; }; }; }) => Promise<{ degradedDocs: { dataset: string; count: number; docsCount: number; percentage: number; }[]; }>; } & ", "DatasetQualityRouteCreateOptions", "; \"GET /internal/dataset_quality/data_streams/stats\": { endpoint: \"GET /internal/dataset_quality/data_streams/stats\"; params?: ", "TypeC", @@ -241,7 +245,7 @@ "StringC", "; }>]>; }> | undefined; handler: ({}: ", "DatasetQualityRouteHandlerResources", - " & { params: { query: { type?: \"metrics\" | \"synthetics\" | \"traces\" | \"logs\" | \"profiling\" | undefined; } & { datasetQuery?: string | undefined; }; }; }) => Promise<{ dataStreamsStats: ({ name: string; } & { size?: string | undefined; sizeBytes?: number | undefined; lastActivity?: number | undefined; integration?: string | undefined; })[]; }>; } & ", + " & { params: { query: { type?: \"metrics\" | \"synthetics\" | \"traces\" | \"logs\" | \"profiling\" | undefined; } & { datasetQuery?: string | undefined; }; }; }) => Promise<{ dataStreamsStats: ({ name: string; } & { size?: string | undefined; sizeBytes?: number | undefined; lastActivity?: number | undefined; integration?: string | undefined; totalDocs?: number | null | undefined; })[]; }>; } & ", "DatasetQualityRouteCreateOptions", "; }[TEndpoint] extends { endpoint: any; params?: infer TRouteParamsRT extends ", { @@ -296,24 +300,6 @@ "DatasetQualityRouteHandlerResources", " & { params: { query: { type?: \"metrics\" | \"synthetics\" | \"traces\" | \"logs\" | \"profiling\" | undefined; }; }; }) => Promise<{ integrations: ({ name: string; } & { title?: string | undefined; version?: string | undefined; icons?: ({ path: string; src: string; } & { title?: string | undefined; size?: string | undefined; type?: string | undefined; })[] | undefined; datasets?: { [x: string]: string; } | undefined; dashboards?: { id: string; title: string; }[] | undefined; })[]; }>; } & ", "DatasetQualityRouteCreateOptions", - "; \"GET /internal/dataset_quality/data_streams/estimated_data\": { endpoint: \"GET /internal/dataset_quality/data_streams/estimated_data\"; params?: ", - "TypeC", - "<{ query: ", - "IntersectionC", - "<[", - "PartialC", - "<{ type: ", - "KeyofC", - "<{ logs: null; metrics: null; traces: null; synthetics: null; profiling: null; }>; }>, ", - "TypeC", - "<{ start: ", - "Type", - "; end: ", - "Type", - "; }>]>; }> | undefined; handler: ({}: ", - "DatasetQualityRouteHandlerResources", - " & { params: { query: { type?: \"metrics\" | \"synthetics\" | \"traces\" | \"logs\" | \"profiling\" | undefined; } & { start: number; end: number; }; }; }) => Promise<{ estimatedDataInBytes: number | null; }>; } & ", - "DatasetQualityRouteCreateOptions", "; \"GET /internal/dataset_quality/data_streams/{dataStream}/settings\": { endpoint: \"GET /internal/dataset_quality/data_streams/{dataStream}/settings\"; params?: ", "TypeC", "<{ path: ", @@ -340,6 +326,28 @@ "DatasetQualityRouteHandlerResources", " & { params: { path: { dataStream: string; }; query: { start: number; end: number; }; }; }) => Promise<{ lastActivity?: number | undefined; degradedDocsCount?: number | undefined; docsCount?: number | undefined; sizeBytes?: number | null | undefined; services?: { [x: string]: string[]; } | undefined; hosts?: { [x: string]: string[]; } | undefined; }>; } & ", "DatasetQualityRouteCreateOptions", + "; \"GET /internal/dataset_quality/data_streams/non_aggregatable\": { endpoint: \"GET /internal/dataset_quality/data_streams/non_aggregatable\"; params?: ", + "TypeC", + "<{ query: ", + "IntersectionC", + "<[", + "TypeC", + "<{ start: ", + "Type", + "; end: ", + "Type", + "; }>, ", + "PartialC", + "<{ type: ", + "KeyofC", + "<{ logs: null; metrics: null; traces: null; synthetics: null; profiling: null; }>; }>, ", + "PartialC", + "<{ dataStream: ", + "StringC", + "; }>]>; }> | undefined; handler: ({}: ", + "DatasetQualityRouteHandlerResources", + " & { params: { query: { start: number; end: number; } & { type?: \"metrics\" | \"synthetics\" | \"traces\" | \"logs\" | \"profiling\" | undefined; } & { dataStream?: string | undefined; }; }; }) => Promise<{ aggregatable: boolean; datasets: string[]; }>; } & ", + "DatasetQualityRouteCreateOptions", "; \"GET /internal/dataset_quality/data_streams/degraded_docs\": { endpoint: \"GET /internal/dataset_quality/data_streams/degraded_docs\"; params?: ", "TypeC", "<{ query: ", @@ -360,7 +368,7 @@ "StringC", "; }>]>; }> | undefined; handler: ({}: ", "DatasetQualityRouteHandlerResources", - " & { params: { query: { start: number; end: number; } & { type?: \"metrics\" | \"synthetics\" | \"traces\" | \"logs\" | \"profiling\" | undefined; } & { datasetQuery?: string | undefined; }; }; }) => Promise<{ degradedDocs: { dataset: string; count: number; totalDocs: number; percentage: number; }[]; }>; } & ", + " & { params: { query: { start: number; end: number; } & { type?: \"metrics\" | \"synthetics\" | \"traces\" | \"logs\" | \"profiling\" | undefined; } & { datasetQuery?: string | undefined; }; }; }) => Promise<{ degradedDocs: { dataset: string; count: number; docsCount: number; percentage: number; }[]; }>; } & ", "DatasetQualityRouteCreateOptions", "; \"GET /internal/dataset_quality/data_streams/stats\": { endpoint: \"GET /internal/dataset_quality/data_streams/stats\"; params?: ", "TypeC", @@ -376,11 +384,29 @@ "StringC", "; }>]>; }> | undefined; handler: ({}: ", "DatasetQualityRouteHandlerResources", - " & { params: { query: { type?: \"metrics\" | \"synthetics\" | \"traces\" | \"logs\" | \"profiling\" | undefined; } & { datasetQuery?: string | undefined; }; }; }) => Promise<{ dataStreamsStats: ({ name: string; } & { size?: string | undefined; sizeBytes?: number | undefined; lastActivity?: number | undefined; integration?: string | undefined; })[]; }>; } & ", + " & { params: { query: { type?: \"metrics\" | \"synthetics\" | \"traces\" | \"logs\" | \"profiling\" | undefined; } & { datasetQuery?: string | undefined; }; }; }) => Promise<{ dataStreamsStats: ({ name: string; } & { size?: string | undefined; sizeBytes?: number | undefined; lastActivity?: number | undefined; integration?: string | undefined; totalDocs?: number | null | undefined; })[]; }>; } & ", "DatasetQualityRouteCreateOptions", "; }[TEndpoint] extends { endpoint: any; params?: any; handler: ({}: any) => Promise; } & ", "ServerRouteCreateOptions", - " ? TReturnType : never" + " ? TReturnType extends ", + { + "pluginId": "@kbn/core-http-server", + "scope": "common", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-common.IKibanaResponse", + "text": "IKibanaResponse" + }, + " | Error | Buffer | ", + "Stream", + " | { message: string | Error; attributes?: ", + { + "pluginId": "@kbn/core-http-server", + "scope": "common", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-common.ResponseErrorAttributes", + "text": "ResponseErrorAttributes" + }, + " | undefined; } | undefined> ? TWrappedResponseType : TReturnType : never" ], "path": "x-pack/plugins/observability_solution/dataset_quality/common/rest/create_call_dataset_quality_api.ts", "deprecated": false, diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index 45153bce89f9ef..4de4ca26e86047 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 329af37364bb4c..2acf4b51e3bba9 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -17,8 +17,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Referencing plugin(s) | Remove By | | ---------------|-----------|-----------| | | ml, stackAlerts | - | -| | visualizations, lens, controls, dashboard, aiops, maps, discover, ml, infra, profiling, slo, links | - | -| | lens, controls, dashboard, aiops, observabilityShared, ml, securitySolution | - | +| | visualizations, lens, controls, dashboard, maps, discover, ml, infra, profiling, slo, links | - | +| | lens, controls, dashboard, observabilityShared, ml | - | | | encryptedSavedObjects, actions, data, ml, logstash, securitySolution, cloudChat | - | | | actions, savedObjectsTagging, ml, enterpriseSearch | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core, savedObjects, visualizations, aiops, dataVisualizer, ml, dashboardEnhanced, graph, lens, securitySolution, eventAnnotation, @kbn/core-saved-objects-browser-mocks | - | @@ -114,6 +114,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | dataViews, dataViewManagement | - | | | dataViews, dataViewManagement | - | | | maps | - | +| | savedSearch, visualizations, lens, maps | - | | | dataViewManagement | - | | | dataViewManagement | - | | | unifiedSearch | - | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index f517aff2dda5c1..ca1977e5acbadf 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -412,8 +412,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [register_embeddable.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/embeddable/register_embeddable.ts#:~:text=registerEmbeddableFactory) | - | -| | [embeddable_change_point_chart_component.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart_component.tsx#:~:text=getEmbeddableFactory) | - | | | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/plugin.tsx#:~:text=license%24) | 8.8.0 | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/server/plugin.ts#:~:text=license%24) | 8.8.0 | | | [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) | - | @@ -865,6 +863,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/plugin.ts#:~:text=registerSavedObjectToPanelMethod) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/plugin.ts#:~:text=registerEmbeddableFactory) | - | | | [embeddable_component.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/embeddable/embeddable_component.tsx#:~:text=getEmbeddableFactory) | - | | | [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 | @@ -944,6 +943,7 @@ 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_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_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) | - | +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/plugin.ts#:~:text=registerSavedObjectToPanelMethod) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/plugin.ts#:~:text=registerEmbeddableFactory) | - | | | [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) | - | @@ -1145,6 +1145,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/public/plugin.ts#:~:text=registerSavedObjectToPanelMethod) | - | | | [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/public/services/saved_searches/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/public/services/saved_searches/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/public/services/saved_searches/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/public/services/saved_searches/types.ts#:~:text=ResolvedSimpleSavedObject) | - | | | [search_migrations.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/server/saved_objects/search_migrations.ts#:~:text=SavedObjectAttributes), [search_migrations.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/server/saved_objects/search_migrations.ts#:~:text=SavedObjectAttributes), [search_migrations.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/server/saved_objects/search_migrations.ts#:~:text=SavedObjectAttributes), [search_migrations.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/server/saved_objects/search_migrations.ts#:~:text=SavedObjectAttributes) | - | | | [search.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/server/saved_objects/search.ts#:~:text=migrations) | - | @@ -1198,7 +1199,6 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [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) | - | -| | [create_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/explore/network/components/embeddables/create_embeddable.tsx#:~:text=getEmbeddableFactory) | - | | | [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 | | | [get_is_alert_suppression_active.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.ts#:~:text=license%24), [create_threat_signals.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/indicator_match/threat_mapping/create_threat_signals.ts#:~:text=license%24), [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), [threshold.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/threshold/threshold.ts#:~:text=license%24), [get_is_alert_suppression_active.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts#:~:text=license%24), [get_is_alert_suppression_active.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts#:~:text=license%24), [get_is_alert_suppression_active.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/get_is_alert_suppression_active.test.ts#:~:text=license%24) | 8.8.0 | @@ -1398,6 +1398,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/plugin.ts#:~:text=registerSavedObjectToPanelMethod) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/plugin.ts#:~:text=registerEmbeddableFactory) | - | | | [search_selection.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/wizard/search_selection/search_selection.tsx#:~:text=includeFields), [visualize_embeddable_factory.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/embeddable/visualize_embeddable_factory.tsx#:~:text=includeFields) | - | | | [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) | - | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index b3fac3991faf7d..71931c2260f21c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index c05125eee839a9..afc7b6ed3a713f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 8dd3dfc878f048..0d11c2f6e7a9eb 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 9a88e43feaca30..647a5c70a8e670 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/discover_shared.mdx b/api_docs/discover_shared.mdx index b16b32190471db..a7b629b069b0fc 100644 --- a/api_docs/discover_shared.mdx +++ b/api_docs/discover_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverShared title: "discoverShared" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverShared plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverShared'] --- import discoverSharedObj from './discover_shared.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index 6ae3128cf130ca..e1136b1b38e1e5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index beb852a9da9689..6da4f23fc7358f 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.devdocs.json b/api_docs/embeddable.devdocs.json index 7b7c6fd7b56227..24e5f07f0453ae 100644 --- a/api_docs/embeddable.devdocs.json +++ b/api_docs/embeddable.devdocs.json @@ -8174,39 +8174,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "embeddable", - "id": "def-public.getReactEmbeddableSavedObjects", - "type": "Function", - "tags": [], - "label": "getReactEmbeddableSavedObjects", - "description": [], - "signature": [ - "() => IterableIterator<[string, ", - { - "pluginId": "embeddable", - "scope": "public", - "docId": "kibEmbeddablePluginApi", - "section": "def-public.ReactEmbeddableSavedObject", - "text": "ReactEmbeddableSavedObject" - }, - "]>" - ], - "path": "src/plugins/embeddable/public/lib/embeddable_saved_object_registry/embeddable_saved_object_registry.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "embeddable", "id": "def-public.isContextMenuTriggerContext", @@ -14039,7 +14006,9 @@ "type": "Function", "tags": [], "label": "registerReactEmbeddableSavedObject", - "description": [], + "description": [ + "\nRegister an embeddable API saved object with the Add from library flyout.\n" + ], "signature": [ "(savedObjectType: string, method: SavedObjectToPanelMethod) => void" ], "path": "src/plugins/embeddable/public/plugin.tsx", - "deprecated": false, + "deprecated": true, "trackAdoption": false, + "references": [ + { + "plugin": "savedSearch", + "path": "src/plugins/saved_search/public/plugin.ts" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/plugin.ts" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/plugin.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/public/plugin.ts" + } + ], "returnComment": [], "children": [ { @@ -14387,10 +14376,6 @@ "plugin": "dashboard", "path": "src/plugins/dashboard/public/plugin.tsx" }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/embeddable/register_embeddable.ts" - }, { "plugin": "maps", "path": "x-pack/plugins/maps/public/plugin.ts" @@ -14669,6 +14654,42 @@ ], "returnComment": [] }, + { + "parentPluginId": "embeddable", + "id": "def-public.EmbeddableStart.getReactEmbeddableSavedObjects", + "type": "Function", + "tags": [], + "label": "getReactEmbeddableSavedObjects", + "description": [ + "\n" + ], + "signature": [ + "() => IterableIterator<[string, ", + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.ReactEmbeddableSavedObject", + "text": "ReactEmbeddableSavedObject" + }, + "]>" + ], + "path": "src/plugins/embeddable/public/plugin.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [ + "An iterator over all {@link ReactEmbeddableSavedObject }s that have been registered using {@link registerReactEmbeddableSavedObject }." + ] + }, { "parentPluginId": "embeddable", "id": "def-public.EmbeddableStart.getEmbeddableFactory", @@ -14785,10 +14806,6 @@ "plugin": "dashboard", "path": "src/plugins/dashboard/public/dashboard_container/external_api/dashboard_renderer.tsx" }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart_component.tsx" - }, { "plugin": "observabilityShared", "path": "x-pack/plugins/observability_solution/observability_shared/public/components/profiling/embeddables/profiling_embeddable.tsx" @@ -14801,10 +14818,6 @@ "plugin": "ml", "path": "x-pack/plugins/ml/public/embeddables/get_embeddable_component.tsx" }, - { - "plugin": "securitySolution", - "path": "x-pack/plugins/security_solution/public/explore/network/components/embeddables/create_embeddable.tsx" - }, { "plugin": "dashboard", "path": "src/plugins/dashboard/public/services/embeddable/embeddable.stub.ts" diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 85f5365b1c8fac..c5b9300ac92ff7 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: 2024-05-13 +date: 2024-05-15 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 | |-------------------|-----------|------------------------|-----------------| -| 564 | 1 | 456 | 8 | +| 564 | 1 | 454 | 8 | ## Client diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 05f0a52fe80dea..fe405c9435a0ae 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index 1fd6609072a26b..ecbbdd716f5fcd 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 8abc2f966eeaf7..aa4cd7ece58512 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: 2024-05-13 +date: 2024-05-15 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 df2c2c01b27549..d9c6e3a0a175f8 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: 2024-05-13 +date: 2024-05-15 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 22449fca252171..1ad998271fa4a3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index 60fcf51d06dd43..a465531cd66335 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index 24d7b111398d2c..67fab675324c94 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 8cbe392b886579..a4b940157bbd3b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView'] --- import exploratoryViewObj from './exploratory_view.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index eed138329673ea..0d55bdc38dce05 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index f0c5d119dd5bff..8c79f0bb14d59d 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 110c1e322ac5db..dccdc6f896e381 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 22501bec29fa05..534aa011da70d0 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index f81af9049f2978..b4b679852ef961 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 281878b998edcf..1e4aa380fde51a 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 5abbf4b7113c04..129bb6b0b0e92b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index 37f472b9e2c6b1..24857bde432e50 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index 74813ef985202e..74f6afceeb2d57 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 67b1b7291666ea..939de0b35c697f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 5319d3ad4a2d19..75d31beb22f4cd 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index 672fb55c418333..639a835a246259 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index faeee8e3135e68..9842a0cad069be 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index 64ce87255ab96a..19842bb4d0afa1 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index df2a8b1c9f999d..a26fa10f05e9dd 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 8a44fd70851e7a..f229154684fded 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: 2024-05-13 +date: 2024-05-15 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 554c5c4fd0987b..1795614d169025 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index d67a8d7a04b0c0..36c79ab902af5c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index 378d7265b6b65d..ad8a16a3aba760 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.devdocs.json b/api_docs/fleet.devdocs.json index 6c794a3b912e88..06263703c93a77 100644 --- a/api_docs/fleet.devdocs.json +++ b/api_docs/fleet.devdocs.json @@ -18903,6 +18903,54 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "fleet", + "id": "def-common.isValidDataset", + "type": "Function", + "tags": [], + "label": "isValidDataset", + "description": [], + "signature": [ + "(dataset: string, allowBlank: boolean | undefined) => { valid: boolean; error?: string | undefined; }" + ], + "path": "x-pack/plugins/fleet/common/services/is_valid_namespace.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "fleet", + "id": "def-common.isValidDataset.$1", + "type": "string", + "tags": [], + "label": "dataset", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/plugins/fleet/common/services/is_valid_namespace.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "fleet", + "id": "def-common.isValidDataset.$2", + "type": "CompoundType", + "tags": [], + "label": "allowBlank", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/plugins/fleet/common/services/is_valid_namespace.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "fleet", "id": "def-common.isValidNamespace", diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index e3341a120f87c7..19158335f3481f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) for questi | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 1302 | 5 | 1181 | 66 | +| 1305 | 5 | 1184 | 66 | ## Client diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index c182adb5db5968..5feed9780b1a09 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index 05d837a8e007bb..1974ded8b2e73f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index eacf271d304eee..dcac7dff8353ff 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index e1184c2924c772..f3f9e1f18bc128 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: 2024-05-13 +date: 2024-05-15 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 ef97045c9ce4f2..7cb2f6f1be4dfd 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: 2024-05-13 +date: 2024-05-15 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 56df6bdbc591a7..332e1bec68b8d0 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: 2024-05-13 +date: 2024-05-15 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 1ba899d2803792..a458c63773456b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/ingest_pipelines.mdx b/api_docs/ingest_pipelines.mdx index 22c482a6d9e0e0..bb11e2d3beba6d 100644 --- a/api_docs/ingest_pipelines.mdx +++ b/api_docs/ingest_pipelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ingestPipelines title: "ingestPipelines" image: https://source.unsplash.com/400x175/?github description: API docs for the ingestPipelines plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ingestPipelines'] --- import ingestPipelinesObj from './ingest_pipelines.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index 42bfc4eb3e1f80..1bcd6949f2e5d4 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 3fb76abc21a0da..b6dc3ab4eb522a 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: 2024-05-13 +date: 2024-05-15 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 4749cc1716ef0c..5faf6f089cf861 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index c27a374d10a7cb..b7ae3fbdaee14c 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index df3b24bf322ecd..254d7c37fd6225 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_pattern_analysis.mdx b/api_docs/kbn_aiops_log_pattern_analysis.mdx index 1a148633e77db8..3472044c5e9cd4 100644 --- a/api_docs/kbn_aiops_log_pattern_analysis.mdx +++ b/api_docs/kbn_aiops_log_pattern_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-pattern-analysis title: "@kbn/aiops-log-pattern-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-pattern-analysis plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-pattern-analysis'] --- import kbnAiopsLogPatternAnalysisObj from './kbn_aiops_log_pattern_analysis.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_rate_analysis.mdx b/api_docs/kbn_aiops_log_rate_analysis.mdx index 3d5f55187b0ee0..203bf512999721 100644 --- a/api_docs/kbn_aiops_log_rate_analysis.mdx +++ b/api_docs/kbn_aiops_log_rate_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-rate-analysis title: "@kbn/aiops-log-rate-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-rate-analysis plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-rate-analysis'] --- import kbnAiopsLogRateAnalysisObj from './kbn_aiops_log_rate_analysis.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index 97719e0a2ae9d3..76e346c7c2a7dc 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 9c2d45c303fce8..53f4605d4f63c5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index da0b6206d65ac8..c6a29734574d45 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 7ecf717b211477..2c82090cc09ab6 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index 29a57a2f9cef60..11b64e87783cd6 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared'] --- import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index acd6edd3cc6014..a000b8ffa250b9 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: 2024-05-13 +date: 2024-05-15 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 2747e708b13092..151c555a48f727 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index cfe684830f5b99..e308d46ab2bc1f 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index dc69aaaa3395a2..50f2348bc09325 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: 2024-05-13 +date: 2024-05-15 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 85972604098d35..49b19e007df477 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: 2024-05-13 +date: 2024-05-15 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 7707410bca8402..865a1092a21c09 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: 2024-05-13 +date: 2024-05-15 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 572f35d8277815..314c557db82ae1 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index f40e7322cb6600..293fd590cc447d 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_data_view.mdx b/api_docs/kbn_apm_data_view.mdx index a96db00186a017..8242a876a94a38 100644 --- a/api_docs/kbn_apm_data_view.mdx +++ b/api_docs/kbn_apm_data_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-data-view title: "@kbn/apm-data-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-data-view plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-data-view'] --- import kbnApmDataViewObj from './kbn_apm_data_view.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 6812c080e10833..3cc650b959825a 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 1bfb6d7027d1ce..e70d18b81494b5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 7791f6a05f1ee2..15701e0b21fe57 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: 2024-05-13 +date: 2024-05-15 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 b3e315e1c3b7ab..58d28115f25d78 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_bfetch_error.mdx b/api_docs/kbn_bfetch_error.mdx index 705bbf3e13e646..bc614ca824dc11 100644 --- a/api_docs/kbn_bfetch_error.mdx +++ b/api_docs/kbn_bfetch_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-bfetch-error title: "@kbn/bfetch-error" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/bfetch-error plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bfetch-error'] --- import kbnBfetchErrorObj from './kbn_bfetch_error.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index 7de2ba5b9facaa..a5eb24c6b4f07b 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index c60a77c0d6501e..7ba5668281bc22 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 2dc43a41f1f15a..17680f994eec55 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: 2024-05-13 +date: 2024-05-15 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 13531714e1d509..6b9e7791e27e9a 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx index 89df1fc346e281..4f005b94b66ed1 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index 77f5359e8e6fc2..49b665fccba11c 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: 2024-05-13 +date: 2024-05-15 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 77eb4aea8ef9bc..2b83e41d519b53 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index 04c9746c74c368..4ccad194f73202 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index 1aa7b1c0ad3165..c162110c2ded6c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index 27f795f1df6928..60dcf6d0b1fca0 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index 9703af2ebfbf46..ba43eddc7c38b6 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mock.mdx b/api_docs/kbn_code_editor_mock.mdx index 28371278bbba9a..cc4329ec95eeaa 100644 --- a/api_docs/kbn_code_editor_mock.mdx +++ b/api_docs/kbn_code_editor_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mock title: "@kbn/code-editor-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mock plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mock'] --- import kbnCodeEditorMockObj from './kbn_code_editor_mock.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index bffe0fe647ee58..5072900dd3a701 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 4e076a111bc98a..1f28a56b8334c8 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index ea58470980398b..04eb8aa62c9199 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index f8527d84292505..5d69debff724c3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 09d5f771086f01..b04b69eda250ee 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index 3bd095bfd22e73..096961718f319b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index 2dba64e946bf9a..876bfbbf071839 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view'] --- import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx index af7167c8dd7ef0..2698fdf8e749d1 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index 7932e441bc6b2b..fd40ddeef7004e 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 7b49272a62c400..508896cc2b0cbc 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index f07085c0fc1eb9..ce514a79fb7ebc 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 2446cc5db7b44c..a109d6d3a94d5e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index 0094b23ea4631b..e503c23f587dea 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index 79e9c41ea1947b..03399131ad7d0f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index aa683a20848737..35c3b5f0f0e038 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index 106865235dc65b..31ed6da5788106 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index e5cdc2a3bd1ce7..56644d81985518 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index 48546675152722..4da682df10ed82 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index f03bf4fc8aae52..71285513fdd669 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index 9004dedbc5a4ee..2a9b1580533efd 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index 7e7c16ae3346cb..d569d27a50ac5c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index 9b19b85e6c579d..28425d10ba7dd6 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 7ea5f3b7f23e79..dcc9a4b7958cf0 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index 1c82b6007609cd..1e166185a86c7e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 9f7efc84305e96..25379dc69e5262 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index 802d3b4fc15b7c..90243c63e4a88d 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index fbf1a1bd912b80..6ddd103c440792 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index d1780a0b17c616..296794e8815c67 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index 8100a46fd42b98..fa165f27d0311b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 7a010ddd98565a..5f1f44b318bee0 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index bbcccff947209a..db4c86458d7af5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index e703c9a8fcb338..9aed7c1f3a049d 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index 2867d64c358057..609b03813f7c3f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index 9348f1d3a841f4..efb71de322d313 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index e985d0d19077a5..df85c0b7cecdc6 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index fbc53c69eba678..4e2cd9ce09fffe 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index 609d5657321fb6..551dcc8f1e6fc3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index 49ac65d64ca2ca..b48cc8eebd43d3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index d9f8f86be4d258..8cf8f25fe62ef7 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index 14983ea7e55aab..9b812bcb4a2cda 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index 95f5e2e3cd99b3..6fb1fd1251d9e1 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index e732d5577018be..0180a5c8d19ad9 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 861aee7858da12..8d7500894aeb52 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index 433b0b8e610b7a..77b11b112108d1 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index 780cf0590a8c96..1cb74c855b67c5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index 12e65a43e0a2cf..fb7bf153c26c82 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index 8fb96f23a0c6ba..ceab01df6fd639 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index de03d7eeb010b4..a81086bccbe8b6 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index 91a3020c89a767..80a686db225cc8 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index f360581170f099..f00d97d9e4b51d 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index 9089009f4ffa17..09be0d3f5f6afb 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index fd0faf93be812b..89a5d6ddd205c7 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index 2f2b08a110b06b..147b3de50c3a39 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index 49ca693de49e1a..2cbe3c2ea35a58 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index 93ba7503b742f4..7957a79fb973ce 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index 9b0ec900cc16f6..98be7556e9ed18 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index c1d28abb6bec21..8104ad2ec21995 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index ab96538bd59cca..b5ce524228214c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index fc99e91b8fca00..0e27860682b145 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index a672856ab64735..0f4cc03a767c1e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index d62de3ffc2eebf..9426761ff21bca 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index 0b88e69968aed5..3421ed047f9850 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index 39022ba03ab896..f92f4516ef9b68 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index 7e99482c0487f7..b50316bd575d34 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index 9765ecd3331443..9dbe6dd9bd930c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index e070e7aef7bd2f..c43c9fd36bc51c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index 41024eae75194b..5eb02f64ed9d94 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index d02c51dfe7105c..d3e6895d10befe 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index 5d1e441cba2d49..f3a192082e319b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index 96c773cb6b6cdb..5d5143a81ce1db 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index 26067edffd4808..2b50fd7a4e7061 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index a72dacc5fbcad1..66e7c76279558e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index 6e01c889ac7f82..6232954cf0dc6c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index b6ae6bc5ac8b66..485fca6cec266c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index f1a2950e646576..6464b288207cf5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index b3e3d9f739b12b..0fd6f9e1c5a7a9 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index 3c69dcf2a23b6f..689dfa385631cf 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index 8b29300949f80b..614ae03aefa539 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index 393eabf9a1c1ce..47c2216cb90d6d 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index 375e8091ada97a..33912a902a6706 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.devdocs.json b/api_docs/kbn_core_http_server.devdocs.json index 3e7bc1a1aed149..35e4843e884999 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -291,7 +291,7 @@ "label": "isKibanaResponse", "description": [], "signature": [ - "(response: Record) => boolean" + "(response: Record | undefined) => boolean" ], "path": "packages/core/http/core-http-server/src/router/response.ts", "deprecated": false, @@ -305,12 +305,12 @@ "label": "response", "description": [], "signature": [ - "Record" + "Record | undefined" ], "path": "packages/core/http/core-http-server/src/router/response.ts", "deprecated": false, "trackAdoption": false, - "isRequired": true + "isRequired": false } ], "returnComment": [], @@ -3554,6 +3554,10 @@ "plugin": "spaces", "path": "x-pack/plugins/spaces/server/routes/api/internal/get_active_space.ts" }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/routes/api/internal/get_content_summary.ts" + }, { "plugin": "taskManager", "path": "x-pack/plugins/task_manager/server/routes/health.ts" @@ -5534,6 +5538,10 @@ "plugin": "spaces", "path": "x-pack/plugins/spaces/server/routes/api/internal/get_active_space.test.ts" }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/routes/api/internal/get_content_summary.test.ts" + }, { "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/backfill/apis/get/get_backfill_route.test.ts" @@ -9424,7 +9432,7 @@ }, { "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/delete_rule.ts" + "path": "x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.ts" }, { "plugin": "alerting", @@ -9694,18 +9702,6 @@ "plugin": "actions", "path": "x-pack/plugins/actions/server/routes/delete.test.ts" }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/delete_rule.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/delete_rule.test.ts" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/server/routes/delete_rule.test.ts" - }, { "plugin": "globalSearch", "path": "x-pack/plugins/global_search/server/routes/index.test.ts" @@ -9786,6 +9782,18 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/maintenance_window/apis/delete/delete_maintenance_window_route.test.ts" }, + { + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.test.ts" + }, + { + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.test.ts" + }, + { + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.test.ts" + }, { "plugin": "indexManagement", "path": "x-pack/plugins/index_management/server/test/helpers/router_mock.ts" diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 91ea3849a2247b..b7068bc0175714 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index e52acedc9adb85..5120ab108bf1a0 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index bc9976dc7040ad..f66bc70244d89a 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 7dfb69c3dce87a..aa1c365d392fa0 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index 9cac837fb652fd..bce96d98492a70 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index bd9ca7e8057756..fc2688baf60da5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index e16a914cfacbff..8e9a5c375d7e10 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index 1252494980935f..87d2ce1515b82c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 3d236f38917c93..fd9b4f08fc7a8a 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index 723432a5071d6d..e68b9ad77e2736 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index 8b65a0d3aef0d7..29ad732a6bc0c7 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index 8bee03b7f87308..dcf4c579527bcc 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index 0af64f88bb4e30..24cc6ca4c65220 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index 5fa8a538ea7573..2c0efbf88ee960 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index 85d2a3238eead1..b46bbeccebc1db 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index 5e99372fc79e92..dade468cb4fcfa 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index 1d500b377d4931..f4e4bf5f1fac30 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 5c5666c13e0f72..74caad45fe3630 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index 2d2e1a9b28feb4..9d5f35727dfd6e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index 0e4b53f9a35153..838074ea58ba91 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index ff30d636d15bd8..fb1cd78b04d645 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index 70c99ff192398d..98a2ab58b43f21 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index 6eae7e4a06f435..b744938b1e5f4f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index 488c0a69841b1f..1664ca5f47c89b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index dd26f88aebd5e8..a568953f770312 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index ba15935ff6ea8b..2f12ad8656168d 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 95113ba26f3b5d..61eafce2e8d899 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index 35545a459cb086..67d28d62996c3e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index 233d97da2d5faa..57445b1d42edbb 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index b237842bf418a9..3da04dba86de50 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index 756c3e25793d22..5970ab18366e51 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index 1cd16ae7678147..77e16b71a4d6f4 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index dd7c0cc638bd30..25d6b5e66ddfcd 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index fcfc34edb6a129..714329093a89af 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index fc5c30ca1d21a4..2d99cade53e182 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index 09c0683245f11e..f719518c0a2baa 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index 39ccac8cf6d3e8..3d92dd835bb468 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index e6662e846a796d..c3f50e3690bede 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index 2c46d640776b11..6524bab9137cb1 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index c9013e1be3f84c..6fd7783010d3f5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index 34fc33ea645d30..a6bcd8696a437c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index 5f9a56656cae23..45a70837dab6f3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index 73f4742f6bf38b..1b7901bb8f2598 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 24749a9dc849fe..28a572bc4c59f9 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index 5c2cc67d6e8c33..66a34e2a6aff33 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index a3d0e350f98605..03b48395f04089 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index 18c6a9915ecf90..564f67f17a2a70 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index abdff2a84141a9..71e0985a1cc588 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 2e7436cbbc1a84..57a49fd89ea8cb 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index 234a2cbf4fa916..3c02bc250ad7d8 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 11c20ee300eb5d..e8de1b067592f9 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index 691e3b9ffbd1bb..e9ffb46b6f3bef 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index bfeaac141be3dc..03047ab168dd67 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index c8bb17d5de5ac0..b21d09960cdcb0 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index 7d56fced62c99c..e737597ce59375 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index b7621d09e89097..f33bd3ddbb28ce 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index 78cc4fdcd35416..f1ef19dc0148db 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index 3311c212f2b6ab..ac0294efbc4ca3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index 1e8176965549ed..ddd6bb9e620834 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index f84d235049fd63..d14a7bb9026a78 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 9c604f43a5da89..9b94ed9dcab7b6 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index ed85946eba0195..59655539c2cd79 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index 105909440af972..f4a06a7466168f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index dbeed332db436e..01836d711f948b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser.mdx b/api_docs/kbn_core_security_browser.mdx index 4c5cc1485c0e09..afdbdc0d78e0a1 100644 --- a/api_docs/kbn_core_security_browser.mdx +++ b/api_docs/kbn_core_security_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser title: "@kbn/core-security-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser'] --- import kbnCoreSecurityBrowserObj from './kbn_core_security_browser.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_internal.mdx b/api_docs/kbn_core_security_browser_internal.mdx index 8456e3d86770e4..18054d99fbf87b 100644 --- a/api_docs/kbn_core_security_browser_internal.mdx +++ b/api_docs/kbn_core_security_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-internal title: "@kbn/core-security-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-internal plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-internal'] --- import kbnCoreSecurityBrowserInternalObj from './kbn_core_security_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_mocks.mdx b/api_docs/kbn_core_security_browser_mocks.mdx index 8bd6316a03928e..08fb0c61e2e971 100644 --- a/api_docs/kbn_core_security_browser_mocks.mdx +++ b/api_docs/kbn_core_security_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-mocks title: "@kbn/core-security-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-mocks plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-mocks'] --- import kbnCoreSecurityBrowserMocksObj from './kbn_core_security_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_security_common.mdx b/api_docs/kbn_core_security_common.mdx index f4dc8a75bac066..a526a4f00c7395 100644 --- a/api_docs/kbn_core_security_common.mdx +++ b/api_docs/kbn_core_security_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-common title: "@kbn/core-security-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-common plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-common'] --- import kbnCoreSecurityCommonObj from './kbn_core_security_common.devdocs.json'; diff --git a/api_docs/kbn_core_security_server.mdx b/api_docs/kbn_core_security_server.mdx index 8d038be98d1e6a..fc666846d01706 100644 --- a/api_docs/kbn_core_security_server.mdx +++ b/api_docs/kbn_core_security_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server title: "@kbn/core-security-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server'] --- import kbnCoreSecurityServerObj from './kbn_core_security_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_internal.mdx b/api_docs/kbn_core_security_server_internal.mdx index 42fb7a79aeaae4..e34744a32f5dc8 100644 --- a/api_docs/kbn_core_security_server_internal.mdx +++ b/api_docs/kbn_core_security_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-internal title: "@kbn/core-security-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-internal plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-internal'] --- import kbnCoreSecurityServerInternalObj from './kbn_core_security_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_mocks.mdx b/api_docs/kbn_core_security_server_mocks.mdx index 35717de3ab3fb4..50f2ddf77f5bbe 100644 --- a/api_docs/kbn_core_security_server_mocks.mdx +++ b/api_docs/kbn_core_security_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-mocks title: "@kbn/core-security-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-mocks plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-mocks'] --- import kbnCoreSecurityServerMocksObj from './kbn_core_security_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 207d4c340b6169..34f9acce26d24f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index b4beddc9379c62..e62a9a3833bf10 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: 2024-05-13 +date: 2024-05-15 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 0ddc7935dfba7f..ae4c286fd80734 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index d6e5db73abf239..7862df0e7e52b5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index 083e45da3da916..ac74f71b52eccb 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index a805d3c6188acb..56254fccad70f3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index 1fbf616329e4af..0fadd3425b2863 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index e3bb9fef1814c2..18e3b3d8763617 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index b1cb8a8fa5b953..a02f80de152dca 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 3a507bbdca5bd3..10054b63fa106f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index 5d35baf0d91ef8..5089f1812eb0cb 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index f15b699565bb5d..82576a0e3845d5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index 3e93c778b42006..2a4f7f460bd840 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index a29dbefc197316..d33b7094096a49 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index 2099adca23f2af..cd5441745b9e8f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index 19b211ee9af59c..bf0e3e4286a423 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index ef2d20d572d3cb..f78ee8d8a80219 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index 3ba373403e7a84..49ffab6bda9b9a 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index bce8371d559d01..277622eb99b825 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index eb1c5c66ecb1dc..178e9235e6bafa 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index 3659f5fa86859e..c9ea97946120a4 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index be9ebc5eeae8c7..7a4f1370bcecd3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index d353f4ffd24e49..91dee9417b01e0 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser.mdx b/api_docs/kbn_core_user_profile_browser.mdx index bdfd9dcb221cf9..6b7d79a55bf3ec 100644 --- a/api_docs/kbn_core_user_profile_browser.mdx +++ b/api_docs/kbn_core_user_profile_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser title: "@kbn/core-user-profile-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser'] --- import kbnCoreUserProfileBrowserObj from './kbn_core_user_profile_browser.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_internal.mdx b/api_docs/kbn_core_user_profile_browser_internal.mdx index 7ce0bac9f7045e..a50d1426639f0c 100644 --- a/api_docs/kbn_core_user_profile_browser_internal.mdx +++ b/api_docs/kbn_core_user_profile_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-internal title: "@kbn/core-user-profile-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-internal plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-internal'] --- import kbnCoreUserProfileBrowserInternalObj from './kbn_core_user_profile_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_mocks.mdx b/api_docs/kbn_core_user_profile_browser_mocks.mdx index 0fb15daf946b9e..43980dc292e5ae 100644 --- a/api_docs/kbn_core_user_profile_browser_mocks.mdx +++ b/api_docs/kbn_core_user_profile_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-mocks title: "@kbn/core-user-profile-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-mocks plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-mocks'] --- import kbnCoreUserProfileBrowserMocksObj from './kbn_core_user_profile_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_common.mdx b/api_docs/kbn_core_user_profile_common.mdx index 20960d566d8e7b..af5b2279d016a7 100644 --- a/api_docs/kbn_core_user_profile_common.mdx +++ b/api_docs/kbn_core_user_profile_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-common title: "@kbn/core-user-profile-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-common plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-common'] --- import kbnCoreUserProfileCommonObj from './kbn_core_user_profile_common.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server.mdx b/api_docs/kbn_core_user_profile_server.mdx index 0e430f3fbef18f..5b641b9353f8e3 100644 --- a/api_docs/kbn_core_user_profile_server.mdx +++ b/api_docs/kbn_core_user_profile_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server title: "@kbn/core-user-profile-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server'] --- import kbnCoreUserProfileServerObj from './kbn_core_user_profile_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_internal.mdx b/api_docs/kbn_core_user_profile_server_internal.mdx index 6109976624f34f..47717ac5695b0d 100644 --- a/api_docs/kbn_core_user_profile_server_internal.mdx +++ b/api_docs/kbn_core_user_profile_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-internal title: "@kbn/core-user-profile-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-internal plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-internal'] --- import kbnCoreUserProfileServerInternalObj from './kbn_core_user_profile_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_mocks.mdx b/api_docs/kbn_core_user_profile_server_mocks.mdx index 2b2dfe9dd4c872..d05562f65a7934 100644 --- a/api_docs/kbn_core_user_profile_server_mocks.mdx +++ b/api_docs/kbn_core_user_profile_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-mocks title: "@kbn/core-user-profile-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-mocks plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-mocks'] --- import kbnCoreUserProfileServerMocksObj from './kbn_core_user_profile_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index 2df399a5622647..fb1065cfba2cf8 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index ebe2a68b89dda0..a414652b1ff133 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks'] --- import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index c282fef5e5c06c..b2611dda1c3703 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index 6af035990eaea3..6af8cddb25989e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index 4f52ae27d480ec..6e2988e385dc22 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index ddd8357e962277..c1576dabbbae47 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 9c4208ca2f44ab..79e493b8e67302 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_forge.mdx b/api_docs/kbn_data_forge.mdx index 0bed62a3530e2c..500de975c6b307 100644 --- a/api_docs/kbn_data_forge.mdx +++ b/api_docs/kbn_data_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-forge title: "@kbn/data-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-forge plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-forge'] --- import kbnDataForgeObj from './kbn_data_forge.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index 5f7324ac776df9..aef0129149fddf 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_data_stream_adapter.mdx b/api_docs/kbn_data_stream_adapter.mdx index e15a570a7e4a9f..8974333ee5b378 100644 --- a/api_docs/kbn_data_stream_adapter.mdx +++ b/api_docs/kbn_data_stream_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-stream-adapter title: "@kbn/data-stream-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-stream-adapter plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-stream-adapter'] --- import kbnDataStreamAdapterObj from './kbn_data_stream_adapter.devdocs.json'; diff --git a/api_docs/kbn_data_view_utils.mdx b/api_docs/kbn_data_view_utils.mdx index edb372792f7a8b..d335512606462a 100644 --- a/api_docs/kbn_data_view_utils.mdx +++ b/api_docs/kbn_data_view_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-view-utils title: "@kbn/data-view-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-view-utils plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-view-utils'] --- import kbnDataViewUtilsObj from './kbn_data_view_utils.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 00cbee4e975293..08be635398709e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx index 5fc6436c7e8170..b3c6260d9e73a7 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics'] --- import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx index 8c56b6f99a6114..bb69a3e584e82b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_fleet.mdx b/api_docs/kbn_deeplinks_fleet.mdx index 1b6a8d0c5d4e92..5de6426cfce38b 100644 --- a/api_docs/kbn_deeplinks_fleet.mdx +++ b/api_docs/kbn_deeplinks_fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-fleet title: "@kbn/deeplinks-fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-fleet plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-fleet'] --- import kbnDeeplinksFleetObj from './kbn_deeplinks_fleet.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index 76ae6fde16facd..c1e551550b7b2d 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index 3eaa5cc990e870..8c82638c584caa 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index b94db897ad7916..93d4a457a73d5d 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index 907aa29aaddb4d..022b1e4021f0af 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_security.mdx b/api_docs/kbn_deeplinks_security.mdx index a8a24ad171c058..e9a5fb3b222bfd 100644 --- a/api_docs/kbn_deeplinks_security.mdx +++ b/api_docs/kbn_deeplinks_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-security title: "@kbn/deeplinks-security" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-security plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-security'] --- import kbnDeeplinksSecurityObj from './kbn_deeplinks_security.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_shared.mdx b/api_docs/kbn_deeplinks_shared.mdx index 5ae28ab8d4e476..5ac3e89c94c9f8 100644 --- a/api_docs/kbn_deeplinks_shared.mdx +++ b/api_docs/kbn_deeplinks_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-shared title: "@kbn/deeplinks-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-shared plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-shared'] --- import kbnDeeplinksSharedObj from './kbn_deeplinks_shared.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index f894f258a801ce..6cc29d19b37065 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics'] --- import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx index ed5bd204299acf..e757bc0790fa46 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools'] --- import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json'; diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index efb59b88400df2..5da6f405cbec68 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index e4788e20e7e02e..dbd52dc4f2e28c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml'] --- import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 44a492f247fc8e..709d24b5d1bcde 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index 97a6604ed0c325..33c72348120972 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index 9902f3dfe637a1..27b9d4547f2f81 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index f5bcb70e4137ab..e0ecd46c7012a5 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: 2024-05-13 +date: 2024-05-15 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 5fa0a2a67eccb5..f9c0e318f4e5d5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.devdocs.json b/api_docs/kbn_doc_links.devdocs.json index a528f6716e84fc..947b9db8fccbe2 100644 --- a/api_docs/kbn_doc_links.devdocs.json +++ b/api_docs/kbn_doc_links.devdocs.json @@ -1008,7 +1008,7 @@ "label": "playground", "description": [], "signature": [ - "{ readonly chatPlayground: string; }" + "{ readonly chatPlayground: string; readonly retrievalOptimize: string; readonly retrieval: string; readonly context: string; readonly hiddenFields: string; }" ], "path": "packages/kbn-doc-links/src/types.ts", "deprecated": false, diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index e53eb90bafa805..25e279b9f9f2af 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index 43e6720e637334..a2408a3882cca1 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx index e9af43ad99a7fe..1b934ba204ec4c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop'] --- import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.devdocs.json b/api_docs/kbn_ebt_tools.devdocs.json index 2962bfceac8da7..ed143ac7aeec19 100644 --- a/api_docs/kbn_ebt_tools.devdocs.json +++ b/api_docs/kbn_ebt_tools.devdocs.json @@ -19,6 +19,38 @@ "common": { "classes": [], "functions": [ + { + "parentPluginId": "@kbn/ebt-tools", + "id": "def-common.PerformanceContextProvider", + "type": "Function", + "tags": [], + "label": "PerformanceContextProvider", + "description": [], + "signature": [ + "React.ForwardRefExoticComponent<{ children: React.ReactElement>; } & React.RefAttributes<{}>>" + ], + "path": "packages/kbn-ebt-tools/src/performance_metrics/index.tsx", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/ebt-tools", + "id": "def-common.PerformanceContextProvider.$1", + "type": "Uncategorized", + "tags": [], + "label": "props", + "description": [], + "signature": [ + "P" + ], + "path": "node_modules/@types/react/index.d.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/ebt-tools", "id": "def-common.registerPerformanceMetricEventType", @@ -157,6 +189,24 @@ ], "returnComment": [], "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/ebt-tools", + "id": "def-common.usePerformanceContext", + "type": "Function", + "tags": [], + "label": "usePerformanceContext", + "description": [], + "signature": [ + "() => ", + "PerformanceApi" + ], + "path": "packages/kbn-ebt-tools/src/performance_metrics/context/use_performance_context.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [ @@ -509,6 +559,43 @@ ], "enums": [], "misc": [], - "objects": [] + "objects": [ + { + "parentPluginId": "@kbn/ebt-tools", + "id": "def-common.perfomanceMarkers", + "type": "Object", + "tags": [], + "label": "perfomanceMarkers", + "description": [], + "path": "packages/kbn-ebt-tools/src/performance_metrics/performance_markers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/ebt-tools", + "id": "def-common.perfomanceMarkers.startPageChange", + "type": "string", + "tags": [], + "label": "startPageChange", + "description": [], + "path": "packages/kbn-ebt-tools/src/performance_metrics/performance_markers.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/ebt-tools", + "id": "def-common.perfomanceMarkers.endPageReady", + "type": "string", + "tags": [], + "label": "endPageReady", + "description": [], + "path": "packages/kbn-ebt-tools/src/performance_metrics/performance_markers.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ] } } \ No newline at end of file diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index e7415841b204f9..b9631fb61aa169 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; @@ -21,10 +21,13 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 27 | 0 | 19 | 0 | +| 33 | 0 | 24 | 1 | ## Common +### Objects + + ### Functions diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index 5a69b5b9ec68cf..9b0c34843da5f4 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index 26ae935ce022e9..ff67c8ca941e80 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index d36ab74574f19b..c76b74dc9f4d5b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index 6ea052035c3195..7aa49285ce6669 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 4850e52458ec92..0f51d14a01d478 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index 335202e8bdd1a8..d35e9fe91aeca2 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index d43f17a1c93550..c2492cb1d93f85 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index d4030fd8d70e74..a22a852d383582 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index 8b4359b8e1f378..898c0822194e71 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index baa11e34e0d80a..28f8f9d1de73f3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_esql_ast.mdx b/api_docs/kbn_esql_ast.mdx index 95c8c9bd631f57..ac39fa5b189492 100644 --- a/api_docs/kbn_esql_ast.mdx +++ b/api_docs/kbn_esql_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-ast title: "@kbn/esql-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-ast plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-ast'] --- import kbnEsqlAstObj from './kbn_esql_ast.devdocs.json'; diff --git a/api_docs/kbn_esql_utils.mdx b/api_docs/kbn_esql_utils.mdx index afbac129e9b987..41cdc11cfe45d4 100644 --- a/api_docs/kbn_esql_utils.mdx +++ b/api_docs/kbn_esql_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-utils title: "@kbn/esql-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-utils plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-utils'] --- import kbnEsqlUtilsObj from './kbn_esql_utils.devdocs.json'; diff --git a/api_docs/kbn_esql_validation_autocomplete.mdx b/api_docs/kbn_esql_validation_autocomplete.mdx index 0cb3b5f84ed8b2..10019eee1c1dcb 100644 --- a/api_docs/kbn_esql_validation_autocomplete.mdx +++ b/api_docs/kbn_esql_validation_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-validation-autocomplete title: "@kbn/esql-validation-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-validation-autocomplete plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-validation-autocomplete'] --- import kbnEsqlValidationAutocompleteObj from './kbn_esql_validation_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index b719c2a145503e..64748daa243b85 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index 841bc905c6ed93..e4eca2e1466ed8 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index e98013c2d01500..3486dfc476cbf4 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 9539e20b62b2cf..b2789cf6f112e9 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index cdf0cc5f299baf..3ced08f2fab8b2 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index bd78d8bd8410b1..deecec3938b7da 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_formatters.mdx b/api_docs/kbn_formatters.mdx index df87df5332017d..ecfb09ecd064e1 100644 --- a/api_docs/kbn_formatters.mdx +++ b/api_docs/kbn_formatters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-formatters title: "@kbn/formatters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/formatters plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/formatters'] --- import kbnFormattersObj from './kbn_formatters.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index 0ffe7b36f3d8b3..fbe5db40934f39 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index bca55eed686bd9..f15604af898be0 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 571c79c3bb1641..8812990f8c5a0c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx index f2aceea0233fc1..76dd71b3fae6f4 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions'] --- import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index 5af85fca0bc809..22f0cd9a95df93 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index f6c5a7e75a10b9..0bd066ed74aa96 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 8df4c4d90a6064..db90b46c353c2e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index bf345fe96f9d45..14f8af50fefe83 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index 34b6400fd5f051..6183e408531f70 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index 34d808a4f921cc..24a3d0884dc09f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index 012f5f5a518fd1..0bfe5fd1eb3d32 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index 1e38aa299fa1e6..091d64bb0efb3a 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index b39840096dad46..0ef1fe2a989a8f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index df88eedf3949ed..cc09b67e2548e7 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_index_management.mdx b/api_docs/kbn_index_management.mdx index ca9bf7df061bad..88e5c011d7ba48 100644 --- a/api_docs/kbn_index_management.mdx +++ b/api_docs/kbn_index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-management title: "@kbn/index-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-management plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-management'] --- import kbnIndexManagementObj from './kbn_index_management.devdocs.json'; diff --git a/api_docs/kbn_inference_integration_flyout.mdx b/api_docs/kbn_inference_integration_flyout.mdx index ed414157eebe9b..d87fbce0ba12df 100644 --- a/api_docs/kbn_inference_integration_flyout.mdx +++ b/api_docs/kbn_inference_integration_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference_integration_flyout title: "@kbn/inference_integration_flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference_integration_flyout plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference_integration_flyout'] --- import kbnInferenceIntegrationFlyoutObj from './kbn_inference_integration_flyout.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index 0a2805ca42f6fc..00b3b3fe8f67d2 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge'] --- import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index f1fbda749e4d44..86a41b523ac25e 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: 2024-05-13 +date: 2024-05-15 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 250343e45f3e15..a5484f44efca62 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_ipynb.mdx b/api_docs/kbn_ipynb.mdx index e70428e89118fb..777b20aca7cec0 100644 --- a/api_docs/kbn_ipynb.mdx +++ b/api_docs/kbn_ipynb.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ipynb title: "@kbn/ipynb" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ipynb plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ipynb'] --- import kbnIpynbObj from './kbn_ipynb.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 298616f35643df..932d861b8b6419 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index 5c8bd84d0bdad7..a05bdfafcc663f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index 9b6165220d6aec..3bc4fef73b1c45 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: 2024-05-13 +date: 2024-05-15 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 0af9a61477036c..b0df0bc84c7395 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx index 50971ac1f2f08e..7fddff24ad7f75 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 816eaa5bde7e4d..356cbf54de057b 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx index 05847a988a784f..952bbf193f3767 100644 --- a/api_docs/kbn_lens_formula_docs.mdx +++ b/api_docs/kbn_lens_formula_docs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-formula-docs title: "@kbn/lens-formula-docs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-formula-docs plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-formula-docs'] --- import kbnLensFormulaDocsObj from './kbn_lens_formula_docs.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 11608cef196420..66c0217ea79027 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index cac5a50f9a2397..1bf8f88cc721dd 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_content_badge.mdx b/api_docs/kbn_managed_content_badge.mdx index fe794f81e3e5c4..062abaa1badbb9 100644 --- a/api_docs/kbn_managed_content_badge.mdx +++ b/api_docs/kbn_managed_content_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-content-badge title: "@kbn/managed-content-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-content-badge plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-content-badge'] --- import kbnManagedContentBadgeObj from './kbn_managed_content_badge.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index 1ab255f1e87fd0..1fb3ce7743960e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index 068e634dca41de..8bb1673fc03e26 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 0f98b7220df927..2a3960f06f7d64 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index f9588131c1ef11..e56e85ff436e1f 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index 1cf99282980039..eec1a73b4fd130 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index 6776f3591ca137..d5e3496868934b 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index 701366e69d66d7..c17f916b61ed5e 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index 49b396a2017ff7..5a17ea7a34d1cd 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index ecabec04c27742..79964bd68fa214 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index c3427e15f390af..e868909f2da257 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index 6ff538bb75cebb..b8900af65be730 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index 5c77182dde9a6e..7b076804027515 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 5ed55573da06b5..871a503cef1c73 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index fcb5346052ef99..8d633465848df0 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx index 8e19cf40cdf6b8..c7966fac829d54 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index 6f93dff55bbe2e..8291f41a76acef 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index a78f1b5819800a..35e9b32778b0ae 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_cancellable_search.mdx b/api_docs/kbn_ml_cancellable_search.mdx index 06e0e17631700c..4d4d7503bd991e 100644 --- a/api_docs/kbn_ml_cancellable_search.mdx +++ b/api_docs/kbn_ml_cancellable_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-cancellable-search title: "@kbn/ml-cancellable-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-cancellable-search plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-cancellable-search'] --- import kbnMlCancellableSearchObj from './kbn_ml_cancellable_search.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 054801d5f0df86..fa157aec899589 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index 4efbcff937f7ec..13d0807033452b 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 7ab7b725738de6..42207e1d3de0e4 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils'] --- import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx index 2abec14bb797c0..21a0cd6150a3f4 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid'] --- import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index 0f7369c393678d..43d920ef940b22 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx index a35fee5e5810a5..98bd537659d5da 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils'] --- import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx index 22552f7a83ad0a..cc9add9874ac83 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx index 04dab818de4e1a..abd5d961e4586f 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] --- import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index 6fe0f4851f5072..a60edd5e5c3de9 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined'] --- import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index 8de01253f66549..3ebe85bc8ef3c1 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx index 40caba79cd8b76..910ec25e7088d1 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: 2024-05-13 +date: 2024-05-15 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 113ea8c1b160c7..dc6a77febc3398 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage'] --- import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json'; diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx index e4cb879d654f12..4d207bbaae6505 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property'] --- import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json'; diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx index f95b12fbf3c861..90a91d5d4633c3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index 3e3c3d0baadc06..44506ab4a159b3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils'] --- import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx index 1b17fff3a5aab0..a85a6ddec5d5b7 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils'] --- import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx index aa1b41d253bd33..9ec9f938278d89 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils'] --- import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx index e45696fd4511b9..3f8fbdafaad355 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils'] --- import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index 958d080ef80b84..519ad4ca967617 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_time_buckets.mdx b/api_docs/kbn_ml_time_buckets.mdx index da6009015a033d..ef8688ca5fa174 100644 --- a/api_docs/kbn_ml_time_buckets.mdx +++ b/api_docs/kbn_ml_time_buckets.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-time-buckets title: "@kbn/ml-time-buckets" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-time-buckets plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-time-buckets'] --- import kbnMlTimeBucketsObj from './kbn_ml_time_buckets.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index f62e582ef0f02d..e2d148659a9e7c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index 94e1d943f60aff..983c2eea42fd55 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 0d9d8032ec225e..92a050f7f0646b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_mock_idp_utils.mdx b/api_docs/kbn_mock_idp_utils.mdx index 76a817073878db..0e9064242d4783 100644 --- a/api_docs/kbn_mock_idp_utils.mdx +++ b/api_docs/kbn_mock_idp_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mock-idp-utils title: "@kbn/mock-idp-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mock-idp-utils plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mock-idp-utils'] --- import kbnMockIdpUtilsObj from './kbn_mock_idp_utils.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 547572b10fc753..0c086fa94649b8 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: 2024-05-13 +date: 2024-05-15 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 9f787e8838386b..4ebc72f1fde6de 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: 2024-05-13 +date: 2024-05-15 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 9b66eda1d633e8..5988e238a7a97b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index 7a7342c4d54921..9770582366846e 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index b1d889655ddaf6..04cabde325ad86 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index ad28637d088d3f..d8fb8c9befaf7a 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index b67edcfa34d1f2..9160da169ffbf0 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 325b7eac2aa4e6..4e451086759f73 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index 12537896a3a0a4..d8f9be4b766d55 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index e9d8a39fa11018..6e312059288936 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index a862e9c8438f48..515303b0d0a9a9 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index eb99a72481d652..c747a58c85640b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_check.mdx b/api_docs/kbn_plugin_check.mdx index 9a90328bd6e073..c516b762096a69 100644 --- a/api_docs/kbn_plugin_check.mdx +++ b/api_docs/kbn_plugin_check.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-check title: "@kbn/plugin-check" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-check plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-check'] --- import kbnPluginCheckObj from './kbn_plugin_check.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index fbd4d9c044c516..bccba46914d4d6 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index c841b3cdc8ebba..169cec38e8059e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_presentation_containers.mdx b/api_docs/kbn_presentation_containers.mdx index 3ffc979243db60..962f8be4adc644 100644 --- a/api_docs/kbn_presentation_containers.mdx +++ b/api_docs/kbn_presentation_containers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-containers title: "@kbn/presentation-containers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-containers plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-containers'] --- import kbnPresentationContainersObj from './kbn_presentation_containers.devdocs.json'; diff --git a/api_docs/kbn_presentation_publishing.devdocs.json b/api_docs/kbn_presentation_publishing.devdocs.json index 9ed088d73afe06..0c7f31ad4b1f9f 100644 --- a/api_docs/kbn_presentation_publishing.devdocs.json +++ b/api_docs/kbn_presentation_publishing.devdocs.json @@ -1353,6 +1353,55 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.getPanelDescription", + "type": "Function", + "tags": [], + "label": "getPanelDescription", + "description": [], + "signature": [ + "(api: Partial<", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesPanelDescription", + "text": "PublishesPanelDescription" + }, + ">) => string | undefined" + ], + "path": "packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.getPanelDescription.$1", + "type": "Object", + "tags": [], + "label": "api", + "description": [], + "signature": [ + "Partial<", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.PublishesPanelDescription", + "text": "PublishesPanelDescription" + }, + ">" + ], + "path": "packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/presentation-publishing", "id": "def-common.getPanelTitle", diff --git a/api_docs/kbn_presentation_publishing.mdx b/api_docs/kbn_presentation_publishing.mdx index ef72f91adf3a25..e0a25396912308 100644 --- a/api_docs/kbn_presentation_publishing.mdx +++ b/api_docs/kbn_presentation_publishing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-publishing title: "@kbn/presentation-publishing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-publishing plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-publishing'] --- import kbnPresentationPublishingObj from './kbn_presentation_publishing.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 | |-------------------|-----------|------------------------|-----------------| -| 192 | 0 | 161 | 5 | +| 194 | 0 | 163 | 5 | ## Common diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 0625eaa39e593e..2cc85d339e8239 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 3b055aea99b815..9b9f8190c346ac 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling'] --- import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 70592cb300b039..8b0fed3c94eb5b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_hooks.mdx b/api_docs/kbn_react_hooks.mdx index 1b9fa2ea8df2ae..e863cfbcc411e6 100644 --- a/api_docs/kbn_react_hooks.mdx +++ b/api_docs/kbn_react_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-hooks title: "@kbn/react-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-hooks plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-hooks'] --- import kbnReactHooksObj from './kbn_react_hooks.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index 84225190f9f180..b9d108459e2ab5 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index c76e62b93aa824..33eb4b18124830 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index 57c1593077f8fb..dcfe7f0f85e792 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index a6a75a658f9294..b2f34bae123921 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index bc8e26c4f1c49d..7c29bc28f0974f 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index 3f1696cbf7578d..6d1dbfd05ecbe6 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index b00d3b6b866e51..07d282eb947560 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index b8bada774c8a35..817be2823ccc7e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index 6d3d8577792738..b863b9b8f5cbfb 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index 3e3759534dba74..3cf8e68abad769 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx index ad17109c37605d..522fa76e065be7 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_csv_share_panel.mdx b/api_docs/kbn_reporting_csv_share_panel.mdx index 5a5d5a3509b70b..34793ebe4dcd72 100644 --- a/api_docs/kbn_reporting_csv_share_panel.mdx +++ b/api_docs/kbn_reporting_csv_share_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-csv-share-panel title: "@kbn/reporting-csv-share-panel" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-csv-share-panel plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-csv-share-panel'] --- import kbnReportingCsvSharePanelObj from './kbn_reporting_csv_share_panel.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index ba70c0267c1ea5..0f7c9bd0ce255f 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index 37b0ea5e95cc3c..b8bd93318aad4d 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index 63ac8855c89d64..ca4edd05fb810a 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index d1cb374532ae55..2e44803d4e8eb6 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index a6ae2526301fca..d6bfced2e826b4 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index 19cffa8eaa6a14..4fff3cbb05a7dd 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index 2632c9b6035fca..39259ccf797b76 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index 4ea7d08b27fc13..1c9e4f41ff319a 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index 7bb6101852bd1b..07bc8954f0754f 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index c8f5189925df7c..6e134ad9c64d39 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 354d8b82655979..543648963942a3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_router_to_openapispec.mdx b/api_docs/kbn_router_to_openapispec.mdx index fc364048100253..37dbc962e5a2e6 100644 --- a/api_docs/kbn_router_to_openapispec.mdx +++ b/api_docs/kbn_router_to_openapispec.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-to-openapispec title: "@kbn/router-to-openapispec" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-to-openapispec plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-to-openapispec'] --- import kbnRouterToOpenapispecObj from './kbn_router_to_openapispec.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 914aca0d13c7a7..2ee020cded88ff 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index dfdbe03991fe5b..c976712f27a8ea 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 9577e97fdc3d00..c9b97ce7a5132a 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx index 8bfbfd9ab895dd..6d41685d91949e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.devdocs.json b/api_docs/kbn_search_api_panels.devdocs.json index 625c13835abb92..6b64604da0fec2 100644 --- a/api_docs/kbn_search_api_panels.devdocs.json +++ b/api_docs/kbn_search_api_panels.devdocs.json @@ -598,53 +598,6 @@ "returnComment": [], "initialIsOpen": false }, - { - "parentPluginId": "@kbn/search-api-panels", - "id": "def-common.TryInConsoleButton", - "type": "Function", - "tags": [], - "label": "TryInConsoleButton", - "description": [], - "signature": [ - "({ request, application, consolePlugin, sharePlugin, content, showIcon, link, }: ", - { - "pluginId": "@kbn/search-api-panels", - "scope": "common", - "docId": "kibKbnSearchApiPanelsPluginApi", - "section": "def-common.TryInConsoleButtonProps", - "text": "TryInConsoleButtonProps" - }, - ") => JSX.Element | null" - ], - "path": "packages/kbn-search-api-panels/components/try_in_console_button.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-api-panels", - "id": "def-common.TryInConsoleButton.$1", - "type": "Object", - "tags": [], - "label": "{\n request,\n application,\n consolePlugin,\n sharePlugin,\n content,\n showIcon = true,\n link = false,\n}", - "description": [], - "signature": [ - { - "pluginId": "@kbn/search-api-panels", - "scope": "common", - "docId": "kibKbnSearchApiPanelsPluginApi", - "section": "def-common.TryInConsoleButtonProps", - "text": "TryInConsoleButtonProps" - } - ], - "path": "packages/kbn-search-api-panels/components/try_in_console_button.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/search-api-panels", "id": "def-common.WelcomeBanner", @@ -1280,139 +1233,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "@kbn/search-api-panels", - "id": "def-common.TryInConsoleButtonProps", - "type": "Interface", - "tags": [], - "label": "TryInConsoleButtonProps", - "description": [], - "path": "packages/kbn-search-api-panels/components/try_in_console_button.tsx", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-api-panels", - "id": "def-common.TryInConsoleButtonProps.request", - "type": "string", - "tags": [], - "label": "request", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "packages/kbn-search-api-panels/components/try_in_console_button.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-api-panels", - "id": "def-common.TryInConsoleButtonProps.application", - "type": "Object", - "tags": [], - "label": "application", - "description": [], - "signature": [ - { - "pluginId": "@kbn/core-application-browser", - "scope": "common", - "docId": "kibKbnCoreApplicationBrowserPluginApi", - "section": "def-common.ApplicationStart", - "text": "ApplicationStart" - }, - " | undefined" - ], - "path": "packages/kbn-search-api-panels/components/try_in_console_button.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-api-panels", - "id": "def-common.TryInConsoleButtonProps.consolePlugin", - "type": "Object", - "tags": [], - "label": "consolePlugin", - "description": [], - "signature": [ - { - "pluginId": "console", - "scope": "public", - "docId": "kibConsolePluginApi", - "section": "def-public.ConsolePluginStart", - "text": "ConsolePluginStart" - }, - " | undefined" - ], - "path": "packages/kbn-search-api-panels/components/try_in_console_button.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-api-panels", - "id": "def-common.TryInConsoleButtonProps.sharePlugin", - "type": "CompoundType", - "tags": [], - "label": "sharePlugin", - "description": [], - "signature": [ - { - "pluginId": "share", - "scope": "public", - "docId": "kibSharePluginApi", - "section": "def-public.SharePublicStart", - "text": "SharePublicStart" - }, - " | undefined" - ], - "path": "packages/kbn-search-api-panels/components/try_in_console_button.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-api-panels", - "id": "def-common.TryInConsoleButtonProps.content", - "type": "CompoundType", - "tags": [], - "label": "content", - "description": [], - "signature": [ - "string | React.ReactElement> | undefined" - ], - "path": "packages/kbn-search-api-panels/components/try_in_console_button.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-api-panels", - "id": "def-common.TryInConsoleButtonProps.showIcon", - "type": "CompoundType", - "tags": [], - "label": "showIcon", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "packages/kbn-search-api-panels/components/try_in_console_button.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-api-panels", - "id": "def-common.TryInConsoleButtonProps.link", - "type": "CompoundType", - "tags": [], - "label": "link", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "packages/kbn-search-api-panels/components/try_in_console_button.tsx", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/search-api-panels", "id": "def-common.WelcomeBannerProps", diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 85340fc5f4368a..5b31296005a0b9 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/te | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 84 | 0 | 84 | 0 | +| 74 | 0 | 74 | 0 | ## Common diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index ef4f1e82d3d49f..8df143df8877d2 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index 31a1c9c8d9e06f..580ed81024f7e2 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index cf58e393e2a86a..14120986b9bbaa 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index 3ef6ae4f137047..b9b556d4d9be2c 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_search_types.mdx b/api_docs/kbn_search_types.mdx index a0d78067a8cbdd..b845b832dbe7e2 100644 --- a/api_docs/kbn_search_types.mdx +++ b/api_docs/kbn_search_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-types title: "@kbn/search-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-types plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-types'] --- import kbnSearchTypesObj from './kbn_search_types.devdocs.json'; diff --git a/api_docs/kbn_security_hardening.mdx b/api_docs/kbn_security_hardening.mdx index 4d96ef7f8b84fb..1ad9d2e99437a9 100644 --- a/api_docs/kbn_security_hardening.mdx +++ b/api_docs/kbn_security_hardening.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-hardening title: "@kbn/security-hardening" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-hardening plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-hardening'] --- import kbnSecurityHardeningObj from './kbn_security_hardening.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index 14167f3ddc51c0..aee7fe0562e6a4 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index cb98061481fb94..7a2a8e54292136 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index 3c60a7e297cee0..c606a9e70b12db 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index b608f1dd5534cd..4047430eb11209 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index a1d48d1d12f0d3..a52ea387c65978 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index d3656f98c22a95..221760b8e22e07 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index c8fc2b77aafabe..1f7f1d90d7d2c6 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index eae95747806aa7..81585f508f51f9 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx index 67a59fce02a5fe..3f636f9cd44c0b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index 6be9dd1f9e2c08..4261ee66b65012 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index fda225c0b8f02b..b0e3742287282c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index 041726721bc2a9..c2db87d5110754 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx index fccb5d796fd04f..f400bc1a8bd51e 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: 2024-05-13 +date: 2024-05-15 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 635d56121aa361..6304a48d4a933a 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index c0b32039c5e9c9..08a56453421665 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index ba837073214e41..3e2372f7f0a079 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: 2024-05-13 +date: 2024-05-15 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 2c41386cc9b70b..51c9ef84f69037 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index be219d81b12a0b..dd69a058061ff5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index 6efa2071f71eab..cc6439e0215444 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index 74fc0f9e06a70b..d7fa5921c474e6 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index 58860f6e73baf5..6350b2ac8e56ce 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index 721ed246006198..bd8898f04cecf7 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index a4dd7d5c6f9784..1951fd15cd4c7d 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 30f3b9103e4a32..7b3a6ceaf075bb 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 87e7f7996f7dc4..67f759894eee6b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index 3664edd7b629f0..85e4e4e63ee3b5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.devdocs.json b/api_docs/kbn_server_route_repository.devdocs.json index 99bb9e6ee18f31..9d1eff9b4a4fdb 100644 --- a/api_docs/kbn_server_route_repository.devdocs.json +++ b/api_docs/kbn_server_route_repository.devdocs.json @@ -435,7 +435,25 @@ "signature": [ "TServerRouteRepository[TEndpoint] extends { endpoint: any; params?: any; handler: ({}: any) => Promise; } & ", "ServerRouteCreateOptions", - " ? TReturnType : never" + " ? TReturnType extends ", + { + "pluginId": "@kbn/core-http-server", + "scope": "common", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-common.IKibanaResponse", + "text": "IKibanaResponse" + }, + " | Error | Buffer | ", + "Stream", + " | { message: string | Error; attributes?: ", + { + "pluginId": "@kbn/core-http-server", + "scope": "common", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-common.ResponseErrorAttributes", + "text": "ResponseErrorAttributes" + }, + " | undefined; } | undefined> ? TWrappedResponseType : TReturnType : never" ], "path": "packages/kbn-server-route-repository/src/typings.ts", "deprecated": false, diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index 32ef52d49a75ab..270bf7489434af 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index 857e4454a0055c..aec2aa908e931e 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index a62b4ceae942b0..7f850015800d54 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index ff7555d34ad185..5f1bdca67f2378 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: 2024-05-13 +date: 2024-05-15 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_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index 82d6d015f65f89..48c2c29a6b6584 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index 6453f121dfc737..079018493fe7b1 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 23ec307ab68e4c..a49a58b0c52ca0 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config'] --- import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index db2d8727e1ea45..b1bba1086fb869 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index 1f1dc42aba621d..3abf1e25dfd7f2 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index 83f1d1719c665a..bb14142985a0b3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index a8bae1afbac1b4..96d34b8375d904 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index ee66dc505708ac..ac16eb5e3fc7ad 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index 8a9ffe0c8d0f98..e288ee7012531e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx index 1aead5cf0847de..0ef0ab01a10513 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index eeb7cb5c5d30b0..0d3a5823c91331 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index e87b55459dffc1..3c914ce9a1242e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index ceaca723391577..bd46297893bc01 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index 7b204019a5cdd7..b48fafb4325ec5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index 0d4d53dfc40966..de28bc7ba66189 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index 509c20b898315b..9ae5d4f58318c5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index cf7eb980eae8f8..7b6f0ee834700f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types'] --- import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index 3d3283556e4385..25676c1762bb8e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index 7f1afd45e7f7a3..9a90cb0757cf2f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index 9fd52a35d3fce0..dd3a2913a26869 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index d80492c073aa35..7035207a0337f1 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown.devdocs.json b/api_docs/kbn_shared_ux_markdown.devdocs.json index 64d9c06ad2ddc1..78a747e0ffc15a 100644 --- a/api_docs/kbn_shared_ux_markdown.devdocs.json +++ b/api_docs/kbn_shared_ux_markdown.devdocs.json @@ -27,7 +27,7 @@ "label": "Markdown", "description": [], "signature": [ - "({ ariaLabelContent, markdownContent, children, className, onRender, openLinksInNewTab, defaultValue, placeholder, height, readOnly, enableTooltipSupport, validateLinks, ...restProps }: ", + "({ ariaLabelContent, markdownContent, children, className, onRender, openLinksInNewTab, defaultValue, placeholder, height, readOnly, enableTooltipSupport, validateLinks, enableSoftLineBreaks, ...restProps }: ", "MarkdownProps", ") => JSX.Element" ], @@ -40,7 +40,7 @@ "id": "def-common.Markdown.$1", "type": "CompoundType", "tags": [], - "label": "{\n ariaLabelContent,\n markdownContent,\n children,\n className,\n onRender,\n openLinksInNewTab = true,\n defaultValue = '',\n placeholder = '',\n height = 'full',\n readOnly = false,\n enableTooltipSupport = false,\n validateLinks = false,\n ...restProps\n}", + "label": "{\n ariaLabelContent,\n markdownContent,\n children,\n className,\n onRender,\n openLinksInNewTab = true,\n defaultValue = '',\n placeholder = '',\n height = 'full',\n readOnly = false,\n enableTooltipSupport = false,\n validateLinks = false,\n enableSoftLineBreaks = false,\n ...restProps\n}", "description": [], "signature": [ "MarkdownProps" diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index 2895b8c83e5529..b542fa9c1edacc 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.devdocs.json b/api_docs/kbn_shared_ux_markdown_mocks.devdocs.json index c37175744b0e93..4523a5280635f5 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.devdocs.json +++ b/api_docs/kbn_shared_ux_markdown_mocks.devdocs.json @@ -348,6 +348,111 @@ ] } ] + }, + { + "parentPluginId": "@kbn/shared-ux-markdown-mocks", + "id": "def-common.MarkdownStorybookMock.propArguments.enableTooltipSupport", + "type": "Object", + "tags": [], + "label": "enableTooltipSupport", + "description": [], + "path": "packages/shared-ux/markdown/mocks/storybook.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-markdown-mocks", + "id": "def-common.MarkdownStorybookMock.propArguments.enableTooltipSupport.control", + "type": "string", + "tags": [], + "label": "control", + "description": [], + "path": "packages/shared-ux/markdown/mocks/storybook.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/shared-ux-markdown-mocks", + "id": "def-common.MarkdownStorybookMock.propArguments.enableTooltipSupport.defaultValue", + "type": "boolean", + "tags": [], + "label": "defaultValue", + "description": [], + "path": "packages/shared-ux/markdown/mocks/storybook.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/shared-ux-markdown-mocks", + "id": "def-common.MarkdownStorybookMock.propArguments.validateLinks", + "type": "Object", + "tags": [], + "label": "validateLinks", + "description": [], + "path": "packages/shared-ux/markdown/mocks/storybook.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-markdown-mocks", + "id": "def-common.MarkdownStorybookMock.propArguments.validateLinks.control", + "type": "string", + "tags": [], + "label": "control", + "description": [], + "path": "packages/shared-ux/markdown/mocks/storybook.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/shared-ux-markdown-mocks", + "id": "def-common.MarkdownStorybookMock.propArguments.validateLinks.defaultValue", + "type": "boolean", + "tags": [], + "label": "defaultValue", + "description": [], + "path": "packages/shared-ux/markdown/mocks/storybook.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/shared-ux-markdown-mocks", + "id": "def-common.MarkdownStorybookMock.propArguments.enableSoftLineBreaks", + "type": "Object", + "tags": [], + "label": "enableSoftLineBreaks", + "description": [], + "path": "packages/shared-ux/markdown/mocks/storybook.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/shared-ux-markdown-mocks", + "id": "def-common.MarkdownStorybookMock.propArguments.enableSoftLineBreaks.control", + "type": "string", + "tags": [], + "label": "control", + "description": [], + "path": "packages/shared-ux/markdown/mocks/storybook.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/shared-ux-markdown-mocks", + "id": "def-common.MarkdownStorybookMock.propArguments.enableSoftLineBreaks.defaultValue", + "type": "boolean", + "tags": [], + "label": "defaultValue", + "description": [], + "path": "packages/shared-ux/markdown/mocks/storybook.ts", + "deprecated": false, + "trackAdoption": false + } + ] } ] }, diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index 1d5c3aa723e792..3e7a6f03f27dde 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_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 | |-------------------|-----------|------------------------|-----------------| -| 32 | 0 | 31 | 0 | +| 41 | 0 | 40 | 0 | ## Common 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 4a9419f56e8cde..ce992f231810ed 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index 0c00b28cfdc755..148eb6698fc074 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index 8a0a7b0c4ce5d0..f4e5c3ae21ecf6 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index c69b1597665b34..a650de1d1bc220 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index 484644f30e5eb5..4bd7c51144440f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index 6b355aa26dabf3..a67eb6b2144473 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index ba7d2f3f4a9aee..68eb1478ea57ed 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index 0d11aba1f34f7c..e31676f4768992 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index fc1cc0a7b8df42..df7f857b8ec4fb 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index 313aff53f9ea28..55d40e2b601875 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index b294329d93acb4..f7fe8232801b06 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index ce872f710b5433..c0183df15b314d 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index f18c516b300558..18cac94561f768 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index 0a13f874bc92aa..2d4c6d84742d41 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index b87679063225d1..91020fa6c643da 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index 6617bd3d2cacdf..c59ea5eed3e3b0 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index b8408f7c87e46e..c0279c18ce9567 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 781738a0cebc1d..25083ed3b1fe89 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_tabbed_modal.mdx b/api_docs/kbn_shared_ux_tabbed_modal.mdx index 6431408fe6019f..b1fbb6b34c320a 100644 --- a/api_docs/kbn_shared_ux_tabbed_modal.mdx +++ b/api_docs/kbn_shared_ux_tabbed_modal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-tabbed-modal title: "@kbn/shared-ux-tabbed-modal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-tabbed-modal plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-tabbed-modal'] --- import kbnSharedUxTabbedModalObj from './kbn_shared_ux_tabbed_modal.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index d41afe001fb0f6..1655a6298451b1 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.devdocs.json b/api_docs/kbn_slo_schema.devdocs.json index 1df8c767cf1b37..185d897db1c04d 100644 --- a/api_docs/kbn_slo_schema.devdocs.json +++ b/api_docs/kbn_slo_schema.devdocs.json @@ -797,6 +797,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/slo-schema", + "id": "def-common.FiltersSchema", + "type": "Type", + "tags": [], + "label": "FiltersSchema", + "description": [], + "signature": [ + "{ meta: { alias?: string | null | undefined; disabled?: boolean | undefined; negate?: boolean | undefined; controlledBy?: string | undefined; group?: string | undefined; index?: string | undefined; isMultiIndex?: boolean | undefined; type?: string | undefined; key?: string | undefined; params?: any; value?: string | undefined; }; query: { [x: string]: any; }; }[]" + ], + "path": "x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.FindSLODefinitionsParams", @@ -3616,6 +3631,58 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/slo-schema", + "id": "def-common.filtersSchema", + "type": "Object", + "tags": [], + "label": "filtersSchema", + "description": [], + "signature": [ + "ArrayC", + "<", + "TypeC", + "<{ meta: ", + "PartialC", + "<{ alias: ", + "UnionC", + "<[", + "StringC", + ", ", + "NullC", + "]>; disabled: ", + "BooleanC", + "; negate: ", + "BooleanC", + "; controlledBy: ", + "StringC", + "; group: ", + "StringC", + "; index: ", + "StringC", + "; isMultiIndex: ", + "BooleanC", + "; type: ", + "StringC", + "; key: ", + "StringC", + "; params: ", + "AnyC", + "; value: ", + "StringC", + "; }>; query: ", + "RecordC", + "<", + "StringC", + ", ", + "AnyC", + ">; }>>" + ], + "path": "x-pack/packages/kbn-slo-schema/src/schema/indicators.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/slo-schema", "id": "def-common.findSloDefinitionsParamsSchema", diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index 2ecb76710bef5f..24304094ed556a 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 180 | 0 | 180 | 0 | +| 182 | 0 | 182 | 0 | ## Common diff --git a/api_docs/kbn_solution_nav_es.mdx b/api_docs/kbn_solution_nav_es.mdx index cb7a594cc876b0..18333da77f2423 100644 --- a/api_docs/kbn_solution_nav_es.mdx +++ b/api_docs/kbn_solution_nav_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-solution-nav-es title: "@kbn/solution-nav-es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/solution-nav-es plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/solution-nav-es'] --- import kbnSolutionNavEsObj from './kbn_solution_nav_es.devdocs.json'; diff --git a/api_docs/kbn_solution_nav_oblt.mdx b/api_docs/kbn_solution_nav_oblt.mdx index df275986149029..7c322496a97049 100644 --- a/api_docs/kbn_solution_nav_oblt.mdx +++ b/api_docs/kbn_solution_nav_oblt.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-solution-nav-oblt title: "@kbn/solution-nav-oblt" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/solution-nav-oblt plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/solution-nav-oblt'] --- import kbnSolutionNavObltObj from './kbn_solution_nav_oblt.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index fd52f920a47164..0f3d3d43bacf42 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_predicates.mdx b/api_docs/kbn_sort_predicates.mdx index 5709a91f0020dc..c9fc6aa38a9519 100644 --- a/api_docs/kbn_sort_predicates.mdx +++ b/api_docs/kbn_sort_predicates.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-predicates title: "@kbn/sort-predicates" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sort-predicates plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-predicates'] --- import kbnSortPredicatesObj from './kbn_sort_predicates.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index 68aac30f6ef509..fe0b0117b84900 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index d3c11909bc8a89..0b95798f659c6e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 983754c6abccb3..8c20ca17dfac87 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: 2024-05-13 +date: 2024-05-15 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 98beb0819b6954..a0c6b28a444846 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index ac7abd4e3dd1a1..fc93d907997cb5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_eui_helpers.mdx b/api_docs/kbn_test_eui_helpers.mdx index 0a2d91997f585e..2575bc7101ef51 100644 --- a/api_docs/kbn_test_eui_helpers.mdx +++ b/api_docs/kbn_test_eui_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-eui-helpers title: "@kbn/test-eui-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-eui-helpers plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-eui-helpers'] --- import kbnTestEuiHelpersObj from './kbn_test_eui_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 5c7ee351daf487..92d8ae76d9fac3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index e8752ee30b9253..b21b5e6e56bc98 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx index 52f9877a9409ec..21e0edb4d84552 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; diff --git a/api_docs/kbn_timerange.mdx b/api_docs/kbn_timerange.mdx index e84f941d9bc6da..a1305f6720d213 100644 --- a/api_docs/kbn_timerange.mdx +++ b/api_docs/kbn_timerange.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-timerange title: "@kbn/timerange" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/timerange plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/timerange'] --- import kbnTimerangeObj from './kbn_timerange.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 3a88cd192c4e8f..7c7ca0e8581999 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index 47996c5199d0ab..634549140ae5bc 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_try_in_console.devdocs.json b/api_docs/kbn_try_in_console.devdocs.json new file mode 100644 index 00000000000000..c7b351e280f0ec --- /dev/null +++ b/api_docs/kbn_try_in_console.devdocs.json @@ -0,0 +1,63 @@ +{ + "id": "@kbn/try-in-console", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/try-in-console", + "id": "def-common.TryInConsoleButton", + "type": "Function", + "tags": [], + "label": "TryInConsoleButton", + "description": [], + "signature": [ + "({ request, application, consolePlugin, sharePlugin, content, showIcon, link, }: ", + "TryInConsoleButtonProps", + ") => JSX.Element | null" + ], + "path": "packages/kbn-try-in-console/components/try_in_console_button.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/try-in-console", + "id": "def-common.TryInConsoleButton.$1", + "type": "Object", + "tags": [], + "label": "{\n request,\n application,\n consolePlugin,\n sharePlugin,\n content,\n showIcon = true,\n link = false,\n}", + "description": [], + "signature": [ + "TryInConsoleButtonProps" + ], + "path": "packages/kbn-try-in-console/components/try_in_console_button.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_try_in_console.mdx b/api_docs/kbn_try_in_console.mdx new file mode 100644 index 00000000000000..5fb348a422a6b5 --- /dev/null +++ b/api_docs/kbn_try_in_console.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: kibKbnTryInConsolePluginApi +slug: /kibana-dev-docs/api/kbn-try-in-console +title: "@kbn/try-in-console" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/try-in-console plugin +date: 2024-05-15 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/try-in-console'] +--- +import kbnTryInConsoleObj from './kbn_try_in_console.devdocs.json'; + + + +Contact [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 2 | 0 | 2 | 1 | + +## Common + +### Functions + + diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index dd3d451f2e73ab..f57f4d3c5d689e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index 308c7cef7c71d2..1f61e7dd589240 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index 0685469f8405da..dc121ebd559360 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index d39c7d994efc64..9356dcc403bdbc 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index eb70acf1811137..a942ac7f3efdfc 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index 1ed3d6d2fffb86..fcc776e3b743d2 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 8f074750a75e85..1169197284b871 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index 2fc7d15e859404..a351d0e910c470 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index 0e2303d26f7a87..ade519ba2be02d 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index f3b0e620743f9c..81fc768e7c919e 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index b88773cca93077..b962100c4a0ae0 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index affc33ab6e1066..77eb0c8a5608ad 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index ebe78f7f4430ae..3f17e41af0ed7d 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 6307a8d9017d2e..3d9f058837e894 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index 308527607bf127..8adfe463535106 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index c96f5b9f362694..5b2388d0e1fc98 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index 5a8dd34e5ab25d..1fa8a79d432f67 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 68731c1dbe89fe..2ea88fdc040eff 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index c1164c76393b9b..50e32143e6502d 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index f05c5b6d3e72df..8f6eef983217a1 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 3a62a214e68d0a..27b83cf975b8db 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index cfd5df799f0322..a32f56cab9812b 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: 2024-05-13 +date: 2024-05-15 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 28c6fc42e1ee96..b3215e370a47aa 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 694f938bcaf694..9cac255957dd6c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 3ada9303f2d341..be7babe2eb5e1b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 03a36e3401e78c..58fb37d6647d1f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 10edf9b39fccf4..9369a4a627fea8 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index f32bbcf0b9bf2e..fb7eb4c0fcec48 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 00c88bbdec2136..af7b54288f7f2e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/logs_data_access.devdocs.json b/api_docs/logs_data_access.devdocs.json index b874e0f36010e2..89d5df7f6c9383 100644 --- a/api_docs/logs_data_access.devdocs.json +++ b/api_docs/logs_data_access.devdocs.json @@ -11,7 +11,82 @@ "server": { "classes": [], "functions": [], - "interfaces": [], + "interfaces": [ + { + "parentPluginId": "logsDataAccess", + "id": "def-server.LogsRatesMetrics", + "type": "Interface", + "tags": [], + "label": "LogsRatesMetrics", + "description": [], + "path": "x-pack/plugins/observability_solution/logs_data_access/server/services/get_logs_rates_service/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "logsDataAccess", + "id": "def-server.LogsRatesMetrics.logRatePerMinute", + "type": "number", + "tags": [], + "label": "logRatePerMinute", + "description": [], + "path": "x-pack/plugins/observability_solution/logs_data_access/server/services/get_logs_rates_service/index.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "logsDataAccess", + "id": "def-server.LogsRatesMetrics.logErrorRate", + "type": "CompoundType", + "tags": [], + "label": "logErrorRate", + "description": [], + "signature": [ + "number | null" + ], + "path": "x-pack/plugins/observability_solution/logs_data_access/server/services/get_logs_rates_service/index.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "logsDataAccess", + "id": "def-server.LogsRatesServiceReturnType", + "type": "Interface", + "tags": [], + "label": "LogsRatesServiceReturnType", + "description": [], + "path": "x-pack/plugins/observability_solution/logs_data_access/server/services/get_logs_rates_service/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "logsDataAccess", + "id": "def-server.LogsRatesServiceReturnType.Unnamed", + "type": "IndexSignature", + "tags": [], + "label": "[serviceName: string]: LogsRatesMetrics", + "description": [], + "signature": [ + "[serviceName: string]: ", + { + "pluginId": "logsDataAccess", + "scope": "server", + "docId": "kibLogsDataAccessPluginApi", + "section": "def-server.LogsRatesMetrics", + "text": "LogsRatesMetrics" + } + ], + "path": "x-pack/plugins/observability_solution/logs_data_access/server/services/get_logs_rates_service/index.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], "enums": [], "misc": [], "objects": [], @@ -42,7 +117,13 @@ "{ services: { getLogsRatesService: ({ esClient, identifyingMetadata, serviceNames, timeFrom, timeTo, }: ", "LogsRatesServiceParams", ") => Promise<", - "LogsRatesServiceReturnType", + { + "pluginId": "logsDataAccess", + "scope": "server", + "docId": "kibLogsDataAccessPluginApi", + "section": "def-server.LogsRatesServiceReturnType", + "text": "LogsRatesServiceReturnType" + }, ">; }; }" ], "path": "x-pack/plugins/observability_solution/logs_data_access/server/plugin.ts", diff --git a/api_docs/logs_data_access.mdx b/api_docs/logs_data_access.mdx index b73c3a19f0ef24..5d630153986482 100644 --- a/api_docs/logs_data_access.mdx +++ b/api_docs/logs_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsDataAccess title: "logsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the logsDataAccess plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsDataAccess'] --- import logsDataAccessObj from './logs_data_access.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2 | 0 | 2 | 2 | +| 7 | 0 | 7 | 1 | ## Server @@ -31,3 +31,6 @@ Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux ### Start +### Interfaces + + diff --git a/api_docs/logs_explorer.mdx b/api_docs/logs_explorer.mdx index aa3ac50b2808bc..d52c2df8eb0326 100644 --- a/api_docs/logs_explorer.mdx +++ b/api_docs/logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsExplorer title: "logsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logsExplorer plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsExplorer'] --- import logsExplorerObj from './logs_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 07862e35c2ee4b..ec93621d9c90fa 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 79053c3b3e6042..95fee789cbaf82 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.devdocs.json b/api_docs/maps.devdocs.json index f10d07d9b6d91f..5dea201e259610 100644 --- a/api_docs/maps.devdocs.json +++ b/api_docs/maps.devdocs.json @@ -4342,7 +4342,7 @@ }, "<\"map\"> & { getLayerList: () => ", "ILayer", - "[]; } & ", + "[]; reload: () => void; } & ", { "pluginId": "@kbn/presentation-publishing", "scope": "common", diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 885b2bd4229797..a99c9a480228bc 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index d4a15097798d91..4e43d4f6bc5411 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index ae83f29a638a33..46e3397d2fc879 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index b258277057ac6c..9636c66101e510 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index 96a110f433b63f..b6a043650b94a3 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 540b800ef9cb89..b5649e5c80360d 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; -Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin. +Contact [@elastic/stack-monitoring](https://github.com/orgs/elastic/teams/stack-monitoring) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index f6b9fce4e54f27..2f6bf5886c8afd 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; -Contact [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) for questions regarding this plugin. +Contact [@elastic/stack-monitoring](https://github.com/orgs/elastic/teams/stack-monitoring) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 02a3d1c8cafef9..e348e039a59695 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index e039c1339aad93..459e472eb07e10 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index f1a48d34e812e3..07b232a53055f8 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 79516a80d8a22a..b502b659951db3 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: 2024-05-13 +date: 2024-05-15 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 901185fee6b366..d11d8994c958d6 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -8761,7 +8761,25 @@ }, "; }[TEndpoint] extends { endpoint: any; params?: any; handler: ({}: any) => Promise; } & ", "ServerRouteCreateOptions", - " ? TReturnType : never" + " ? TReturnType extends ", + { + "pluginId": "@kbn/core-http-server", + "scope": "common", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-common.IKibanaResponse", + "text": "IKibanaResponse" + }, + " | Error | Buffer | ", + "Stream", + " | { message: string | Error; attributes?: ", + { + "pluginId": "@kbn/core-http-server", + "scope": "common", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-common.ResponseErrorAttributes", + "text": "ResponseErrorAttributes" + }, + " | undefined; } | undefined> ? TWrappedResponseType : TReturnType : never" ], "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", "deprecated": false, diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 7f931381c22168..ccd3b7103187e3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.devdocs.json b/api_docs/observability_a_i_assistant.devdocs.json index f2e981c27e2929..c02bb4cb86da26 100644 --- a/api_docs/observability_a_i_assistant.devdocs.json +++ b/api_docs/observability_a_i_assistant.devdocs.json @@ -4175,7 +4175,25 @@ "ObservabilityAIAssistantRouteCreateOptions", "; }[TEndpoint] extends { endpoint: any; params?: any; handler: ({}: any) => Promise; } & ", "ServerRouteCreateOptions", - " ? TReturnType : never" + " ? TReturnType extends ", + { + "pluginId": "@kbn/core-http-server", + "scope": "common", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-common.IKibanaResponse", + "text": "IKibanaResponse" + }, + " | Error | Buffer | ", + "Stream", + " | { message: string | Error; attributes?: ", + { + "pluginId": "@kbn/core-http-server", + "scope": "common", + "docId": "kibKbnCoreHttpServerPluginApi", + "section": "def-common.ResponseErrorAttributes", + "text": "ResponseErrorAttributes" + }, + " | undefined; } | undefined> ? TWrappedResponseType : TReturnType : never" ], "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/api/index.ts", "deprecated": false, diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index e09e9147e9d2ad..701fd6fc027d90 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant_app.mdx b/api_docs/observability_a_i_assistant_app.mdx index 6c1f649052be84..d946ba6bfae25f 100644 --- a/api_docs/observability_a_i_assistant_app.mdx +++ b/api_docs/observability_a_i_assistant_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistantApp title: "observabilityAIAssistantApp" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistantApp plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistantApp'] --- import observabilityAIAssistantAppObj from './observability_a_i_assistant_app.devdocs.json'; diff --git a/api_docs/observability_ai_assistant_management.mdx b/api_docs/observability_ai_assistant_management.mdx index fab8f45fa48926..d116ce45c5aada 100644 --- a/api_docs/observability_ai_assistant_management.mdx +++ b/api_docs/observability_ai_assistant_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAiAssistantManagement title: "observabilityAiAssistantManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAiAssistantManagement plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAiAssistantManagement'] --- import observabilityAiAssistantManagementObj from './observability_ai_assistant_management.devdocs.json'; diff --git a/api_docs/observability_logs_explorer.mdx b/api_docs/observability_logs_explorer.mdx index e8f69858473ca6..824d8068e6032c 100644 --- a/api_docs/observability_logs_explorer.mdx +++ b/api_docs/observability_logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogsExplorer title: "observabilityLogsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogsExplorer plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogsExplorer'] --- import observabilityLogsExplorerObj from './observability_logs_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index c614dea32cfc45..da18389d6a2b47 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: 2024-05-13 +date: 2024-05-15 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 b5d906a2449269..351f5ce7c2a1dd 100644 --- a/api_docs/observability_shared.devdocs.json +++ b/api_docs/observability_shared.devdocs.json @@ -2356,6 +2356,108 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "observabilityShared", + "id": "def-public.AssetDetailsLocatorParams", + "type": "Interface", + "tags": [], + "label": "AssetDetailsLocatorParams", + "description": [], + "signature": [ + { + "pluginId": "observabilityShared", + "scope": "public", + "docId": "kibObservabilitySharedPluginApi", + "section": "def-public.AssetDetailsLocatorParams", + "text": "AssetDetailsLocatorParams" + }, + " extends ", + { + "pluginId": "@kbn/utility-types", + "scope": "common", + "docId": "kibKbnUtilityTypesPluginApi", + "section": "def-common.SerializableRecord", + "text": "SerializableRecord" + } + ], + "path": "x-pack/plugins/observability_solution/observability_shared/public/locators/infra/asset_details_locator.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityShared", + "id": "def-public.AssetDetailsLocatorParams.assetType", + "type": "string", + "tags": [], + "label": "assetType", + "description": [], + "path": "x-pack/plugins/observability_solution/observability_shared/public/locators/infra/asset_details_locator.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityShared", + "id": "def-public.AssetDetailsLocatorParams.assetId", + "type": "string", + "tags": [], + "label": "assetId", + "description": [], + "path": "x-pack/plugins/observability_solution/observability_shared/public/locators/infra/asset_details_locator.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityShared", + "id": "def-public.AssetDetailsLocatorParams.state", + "type": "Object", + "tags": [], + "label": "state", + "description": [], + "signature": [ + { + "pluginId": "@kbn/utility-types", + "scope": "common", + "docId": "kibKbnUtilityTypesPluginApi", + "section": "def-common.SerializableRecord", + "text": "SerializableRecord" + }, + " | undefined" + ], + "path": "x-pack/plugins/observability_solution/observability_shared/public/locators/infra/asset_details_locator.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityShared", + "id": "def-public.AssetDetailsLocatorParams._a", + "type": "Object", + "tags": [], + "label": "_a", + "description": [], + "signature": [ + "{ time?: { from?: string | undefined; to?: string | undefined; } | undefined; interval?: string | undefined; } | undefined" + ], + "path": "x-pack/plugins/observability_solution/observability_shared/public/locators/infra/asset_details_locator.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityShared", + "id": "def-public.AssetDetailsLocatorParams.assetDetails", + "type": "Object", + "tags": [], + "label": "assetDetails", + "description": [], + "signature": [ + "{ tabId?: string | undefined; dashboardId?: string | undefined; dateRange?: { from: string; to: string; } | undefined; } | undefined" + ], + "path": "x-pack/plugins/observability_solution/observability_shared/public/locators/infra/asset_details_locator.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "observabilityShared", "id": "def-public.EmbeddableProfilingSearchBarProps", diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index 535e1643e9627a..6fc5a87a0d1c9b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 348 | 1 | 343 | 22 | +| 354 | 1 | 349 | 22 | ## Client diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 0f26daca0f9592..d5f8e79ec4b35f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index e07eced4ed2c66..65e5b7acb78400 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 6d12646670f06d..c3e77273fedb69 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: 2024-05-13 +date: 2024-05-15 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 | |--------------|----------|------------------------| -| 795 | 683 | 42 | +| 796 | 684 | 43 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 48140 | 241 | 36727 | 1855 | +| 48165 | 241 | 36749 | 1856 | ## Plugin Directory @@ -70,7 +70,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | A stateful layer to register shared features and provide an access point to discover without a direct dependency | 16 | 0 | 15 | 2 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | APIs used to assess the quality of data in Elasticsearch indexes | 2 | 0 | 0 | 0 | | | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | Server APIs for the Elastic AI Assistant | 45 | 0 | 31 | 0 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 564 | 1 | 456 | 8 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 564 | 1 | 454 | 8 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Extends embeddable plugin with more functionality | 19 | 0 | 19 | 2 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides encryption and decryption utilities for saved objects containing sensitive information. | 53 | 0 | 46 | 1 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Adds dashboards for discovering and managing Enterprise Search products. | 5 | 0 | 5 | 0 | @@ -98,7 +98,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | The file upload plugin contains components and services for uploading a file, analyzing its data, and then importing the data into an Elasticsearch index. Supported file types include CSV, TSV, newline-delimited JSON and GeoJSON. | 84 | 0 | 84 | 8 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | File upload, download, sharing, and serving over HTTP implementation in Kibana. | 240 | 0 | 24 | 9 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Simple UI for managing files in Kibana | 2 | 0 | 2 | 0 | -| | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1302 | 5 | 1181 | 66 | +| | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | - | 1305 | 5 | 1184 | 66 | | ftrApis | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 72 | 0 | 14 | 5 | | globalSearchBar | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 0 | 0 | 0 | 0 | @@ -126,7 +126,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 117 | 0 | 42 | 10 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | A dashboard panel for creating links to dashboards or external links. | 57 | 0 | 57 | 6 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 226 | 0 | 97 | 52 | -| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 2 | 0 | 2 | 2 | +| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 7 | 0 | 7 | 1 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin provides a LogsExplorer component using the Discover customization framework, offering several affordances specifically designed for log consumption. | 117 | 4 | 117 | 22 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | Exposes the shared components and APIs to access and visualize logs. | 303 | 0 | 277 | 32 | | logstash | [@elastic/logstash](https://github.com/orgs/elastic/teams/logstash) | - | 0 | 0 | 0 | 0 | @@ -136,8 +136,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | Exposes utilities for accessing metrics data | 104 | 8 | 104 | 6 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | This plugin provides access to the machine learning features provided by Elastic. | 154 | 3 | 67 | 101 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 2 | 0 | 2 | 0 | -| | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 15 | 3 | 13 | 1 | -| | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 9 | 0 | 9 | 0 | +| | [@elastic/stack-monitoring](https://github.com/orgs/elastic/teams/stack-monitoring) | - | 15 | 3 | 13 | 1 | +| | [@elastic/stack-monitoring](https://github.com/orgs/elastic/teams/stack-monitoring) | - | 9 | 0 | 9 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 49 | 0 | 47 | 5 | | | [@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) | - | 3 | 0 | 3 | 0 | @@ -148,7 +148,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 2 | 0 | 2 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin exposes and registers observability log consumption features. | 21 | 0 | 21 | 1 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 16 | 0 | 16 | 0 | -| | [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observability-ui) | - | 348 | 1 | 343 | 22 | +| | [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observability-ui) | - | 354 | 1 | 349 | 22 | | | [@elastic/security-defend-workflows](https://github.com/orgs/elastic/teams/security-defend-workflows) | - | 23 | 0 | 23 | 7 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 2 | 0 | 2 | 0 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds a standardized Presentation panel which allows any forward ref component to interface with various Kibana systems. | 11 | 0 | 11 | 4 | @@ -479,7 +479,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/docs](https://github.com/orgs/elastic/teams/docs) | - | 77 | 0 | 77 | 2 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 5 | 0 | 5 | 1 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 41 | 0 | 27 | 6 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 27 | 0 | 19 | 0 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 33 | 0 | 24 | 1 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 13 | 0 | 5 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 35 | 0 | 34 | 0 | | | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | - | 173 | 0 | 146 | 9 | @@ -588,7 +588,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 1 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 1 | 0 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 64 | 0 | 60 | 1 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 192 | 0 | 161 | 5 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 194 | 0 | 163 | 5 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 168 | 0 | 55 | 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 | @@ -621,7 +621,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 16 | 0 | 16 | 1 | | | [@elastic/security-detections-response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 125 | 0 | 122 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 0 | -| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 84 | 0 | 84 | 0 | +| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 74 | 0 | 74 | 0 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 3647 | 0 | 3647 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 18 | 1 | 17 | 1 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 25 | 0 | 25 | 0 | @@ -680,7 +680,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 17 | 0 | 9 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 10 | 0 | 9 | 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) | - | 32 | 0 | 31 | 0 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 41 | 0 | 40 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 19 | 0 | 9 | 1 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 17 | 0 | 17 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 8 | 0 | 3 | 0 | @@ -701,7 +701,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 15 | 0 | 4 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 8 | 0 | 8 | 4 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 16 | 0 | 6 | 0 | -| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 180 | 0 | 180 | 0 | +| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 182 | 0 | 182 | 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) | - | 6 | 0 | 6 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 20 | 0 | 12 | 0 | @@ -718,6 +718,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 8 | 0 | 8 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 72 | 0 | 55 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 11 | 0 | 11 | 0 | +| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 2 | 0 | 2 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 39 | 0 | 25 | 1 | | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 86 | 0 | 86 | 1 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 42 | 0 | 28 | 0 | diff --git a/api_docs/presentation_panel.mdx b/api_docs/presentation_panel.mdx index 374ba33d506422..9feb870498f058 100644 --- a/api_docs/presentation_panel.mdx +++ b/api_docs/presentation_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationPanel title: "presentationPanel" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationPanel plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationPanel'] --- import presentationPanelObj from './presentation_panel.devdocs.json'; diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 01b9345b29a0dd..491597872c7160 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: 2024-05-13 +date: 2024-05-15 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 a432ee9fabffe5..8d8e6078d44cd9 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index dea210496234b8..0732ce7fe44a45 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 9a19b249d78b0e..a499e208233b65 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index 4181402ce69d30..1c8a79d68dc566 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index 1909c2e6523f38..bd6aa64620bdd0 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 4630f562528c5f..415a7699596da2 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index bf16cd2212c040..ad2ce6c238364d 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index dc2f507f45660b..cd3698818f628a 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index f640852cbd5703..4cb247414563ef 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 07973a3192b8b3..dd8e644138c1f4 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index d9ae5356e13933..46a0429b34c55e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index 3bfac85dfe100f..86b6eb2ffa86b4 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index 5e79a0f9699dda..b35c70d86435c3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index 41ddadc68ded8b..f0b47e5d1321dc 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index c3a8d962abea2f..6dddf226b9f2e1 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/search_connectors.mdx b/api_docs/search_connectors.mdx index 9596648ef61d62..2c262ae02fa7ce 100644 --- a/api_docs/search_connectors.mdx +++ b/api_docs/search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchConnectors title: "searchConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the searchConnectors plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchConnectors'] --- import searchConnectorsObj from './search_connectors.devdocs.json'; diff --git a/api_docs/search_notebooks.mdx b/api_docs/search_notebooks.mdx index 7a52d62fdebc68..c80434cf390e67 100644 --- a/api_docs/search_notebooks.mdx +++ b/api_docs/search_notebooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNotebooks title: "searchNotebooks" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNotebooks plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNotebooks'] --- import searchNotebooksObj from './search_notebooks.devdocs.json'; diff --git a/api_docs/search_playground.mdx b/api_docs/search_playground.mdx index 5bbcd64aa0cc97..e8f0c6d31ff17e 100644 --- a/api_docs/search_playground.mdx +++ b/api_docs/search_playground.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchPlayground title: "searchPlayground" image: https://source.unsplash.com/400x175/?github description: API docs for the searchPlayground plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchPlayground'] --- import searchPlaygroundObj from './search_playground.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 264b14638b0130..55a26c85bc5799 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index c1fc0f48585a8b..5d424ada825073 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index f2614a47539bea..97788ff92931c2 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index 7ece8ee7922d8c..6b69c85b90e382 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index 256fd9ccaa537b..6f8d9458ad57db 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless'] --- import serverlessObj from './serverless.devdocs.json'; diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx index 2a5a8127b1d2b7..4489200a20b5a8 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability'] --- import serverlessObservabilityObj from './serverless_observability.devdocs.json'; diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx index 407febe6f0f504..1f1ada8771f2e5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 5f854bb1d15c51..613806513e60b3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index ac098296f17a89..c0743559b3544d 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/slo.mdx b/api_docs/slo.mdx index b84afcc46b00ff..352a848a965eaa 100644 --- a/api_docs/slo.mdx +++ b/api_docs/slo.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/slo title: "slo" image: https://source.unsplash.com/400x175/?github description: API docs for the slo plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'slo'] --- import sloObj from './slo.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 17a0b57cc8fb31..dcf3bcec60d89d 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index f150fb542521e0..360972e183e6fd 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 1b8553b6135b82..d19c5a9b218c31 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index aeb0401903b201..ea9a1c5e0f1b58 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: 2024-05-13 +date: 2024-05-15 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 4cfcb50844fb5b..b8ded3a085baf5 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 0e27a41139dc28..4a31e92a718ba3 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index fc11bad1d2d4ad..2944874135df18 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: 2024-05-13 +date: 2024-05-15 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 160547b4deadb7..38b7c0ccb49934 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: 2024-05-13 +date: 2024-05-15 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 a9265f2dc5306a..93a7fd8abf59fb 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: 2024-05-13 +date: 2024-05-15 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 a6bc1ae899518c..1a9d688bbb0986 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: 2024-05-13 +date: 2024-05-15 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 854a7d311d365b..445e2b9ee995ac 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index d5e9a9fff3ad60..56e937af31947b 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index bf8448fc6f7022..24f677a94ccc8e 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 7fc93c65cb3ef4..41ba6410cb1555 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 45286fa1674520..874bc5a3735a60 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index b66613276fb755..74786bf92202a4 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index b4ce3eacfc7f1e..6d5fe8a25874f9 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 01840c4110822a..adbe62deb60475 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 9de85d772e0867..9860fdbb8d3b40 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index 42a97ae3092136..f9b757b72eb61a 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index 81606baa95d8db..6ee5e5b3b4ec0c 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 29790e12d14d26..97d24e77e46214 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 0b0f006322603c..f1cc69573ee7f8 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index d9025021b3532f..db294106e68ad2 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index c137686396d672..8d653b109772e9 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index e4865fecc70766..0faa797b716989 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 4a15a02a18bb40..3f17f92727116f 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index 2be5efe7e9e464..0ef7fba7261a3c 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index 9efcff25e56ecb..96dffd84540065 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index c2fc2317aee1d8..d82a8e35d6ed53 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index ed48387a78f4e4..dff8b2858286a0 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index 279fbb58215b42..079e5e8f46f7d8 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index bebf6bfef5ac01..134b75062f8991 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 20e9fac3cf7767..bc434f2c31a1ff 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 50737811a2616a..22d7dc5b88ec75 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: 2024-05-13 +date: 2024-05-15 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; diff --git a/dev_docs/key_concepts/embeddables.mdx b/dev_docs/key_concepts/embeddables.mdx index eb27dfbd5745d4..cb091e82c1ad52 100644 --- a/dev_docs/key_concepts/embeddables.mdx +++ b/dev_docs/key_concepts/embeddables.mdx @@ -7,5 +7,4 @@ date: 2024-05-09 tags: ['kibana', 'dev', 'contributor', 'api docs'] --- -Embeddable documentation and examples are bundled with Kibana and accessable by running `yarn start --run-examples`. -Navigate to `http://localhost:5601/app/embeddablesApp`. +Embeddable documentation available at [/src/plugins/embeddable/README.md](https://github.com/elastic/kibana/blob/main/src/plugins/embeddable/README.md) diff --git a/docs/developer/advanced/upgrading-nodejs.asciidoc b/docs/developer/advanced/upgrading-nodejs.asciidoc index c86666c8399981..bd9b0ee23ac893 100644 --- a/docs/developer/advanced/upgrading-nodejs.asciidoc +++ b/docs/developer/advanced/upgrading-nodejs.asciidoc @@ -19,7 +19,7 @@ These files must be updated when upgrading Node.js: - {kib-repo}blob/{branch}/WORKSPACE.bazel[`WORKSPACE.bazel`] - The version is specified in the `node_version` property. Besides this property, the list of files under `node_repositories` must be updated along with their respective SHA256 hashes. These can be found in the `SHASUMS256.txt` file inside the public `kibana-custom-node-artifacts` GCP bucket. - Example for Node.js v20.12.2: https://storage.googleapis.com/kibana-custom-node-artifacts/node-glibc-217/dist/v20.12.2/SHASUMS256.txt[kibana-custom-node-artifacts/node-glibc-217/dist/v20.12.2/SHASUMS256.txt] + Example for Node.js v20.13.1: https://storage.googleapis.com/kibana-custom-node-artifacts/node-glibc-217/dist/v20.13.1/SHASUMS256.txt[kibana-custom-node-artifacts/node-glibc-217/dist/v20.13.1/SHASUMS256.txt] See PR {kib-repo}pull/128123[#128123] for an example of how the Node.js version has been upgraded previously. @@ -43,7 +43,7 @@ The only difference between the offical Node.js build and our custom build, is t ==== How to start a new build To generate a new custom Node.js build, https://buildkite.com/elastic/kibana-custom-node-dot-js-builds#new[start a new build] on our dedicated Buildkite pipeline (requires Elastic employee permissions). -Give it a clear name (e.g. `Node 20.12.2`) and remember so set the custom `OVERRIDE_TARGET_VERSION` environment variable to the desired Node.js version - e.g. `OVERRIDE_TARGET_VERSION=20.12.2`. +Give it a clear name (e.g. `Node 20.13.1`) and remember so set the custom `OVERRIDE_TARGET_VERSION` environment variable to the desired Node.js version - e.g. `OVERRIDE_TARGET_VERSION=20.13.1`. You find the "Environment Variables" field by expanding "Options >" in the "New Build" dialog. === Backporting diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index 6aea45cfe68c32..5b6b7e4014bc7a 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -99,8 +99,7 @@ This API doesn't support angular, for registering angular dev tools, bootstrap a |{kib-repo}blob/{branch}/src/plugins/embeddable/README.md[embeddable] -|Embeddable documentation and examples are bundled with Kibana and accessable by running yarn start --run-examples. -Navigate to http://localhost:5601/app/embeddablesApp. +|Embeddables are React components that manage their own state, can be serialized and deserialized, and return an API that can be used to interact with them imperatively. |{kib-repo}blob/{branch}/src/plugins/es_ui_shared/README.md[esUiShared] diff --git a/docs/playground/index.asciidoc b/docs/playground/index.asciidoc index fe0aaea05a3056..426aa181fe0e66 100644 --- a/docs/playground/index.asciidoc +++ b/docs/playground/index.asciidoc @@ -72,6 +72,7 @@ Does not currently support streaming. a| * GPT-3 turbo * GPT-4 turbo +* GPT-4 omni a| | *Azure OpenAI* diff --git a/examples/embeddable_examples/public/app/overview.tsx b/examples/embeddable_examples/public/app/overview.tsx index e074cd148f77e1..c7ebb3578f4b72 100644 --- a/examples/embeddable_examples/public/app/overview.tsx +++ b/examples/embeddable_examples/public/app/overview.tsx @@ -7,16 +7,19 @@ */ import React from 'react'; - -import { EuiText } from '@elastic/eui'; +import { css } from '@emotion/react'; +import { EuiMarkdownFormat } from '@elastic/eui'; +// @ts-ignore +import overviewMarkdown from '!!raw-loader!@kbn/embeddable-plugin/README.md'; export const Overview = () => { return ( - -

- Embeddables are React components that manage their own state, can be serialized and - deserialized, and return an API that can be used to interact with them imperatively. -

-
+ + {overviewMarkdown} + ); }; diff --git a/examples/embeddable_examples/public/app/register_embeddable.tsx b/examples/embeddable_examples/public/app/register_embeddable.tsx index 351828cc66c6bc..ae4f2a09daa65a 100644 --- a/examples/embeddable_examples/public/app/register_embeddable.tsx +++ b/examples/embeddable_examples/public/app/register_embeddable.tsx @@ -24,9 +24,9 @@ export const RegisterEmbeddable = () => {

Register a new embeddable type

This plugin registers several embeddable types with{' '} - registerReactEmbeddableFactory during plugin start. The code example - below shows Search embeddable registration. Notice how the embeddable factory is imported - asynchronously to limit initial page load size. + registerReactEmbeddableFactory. The code example below shows Search + embeddable registration. The embeddable factory is imported asynchronously to limit + initial page load size.

diff --git a/examples/embeddable_examples/public/react_embeddables/search/search_embeddable_renderer.tsx b/examples/embeddable_examples/public/react_embeddables/search/search_embeddable_renderer.tsx index 39fa75234e3f46..cadaedbc29f6f7 100644 --- a/examples/embeddable_examples/public/react_embeddables/search/search_embeddable_renderer.tsx +++ b/examples/embeddable_examples/public/react_embeddables/search/search_embeddable_renderer.tsx @@ -41,13 +41,11 @@ export function SearchEmbeddableRenderer(props: Props) { }, [props.timeRange, parentApi.timeRange$]); return ( -
- - type={SEARCH_EMBEDDABLE_ID} - state={initialState} - parentApi={parentApi} - hidePanelChrome={true} - /> -
+ + type={SEARCH_EMBEDDABLE_ID} + state={initialState} + parentApi={parentApi} + hidePanelChrome={true} + /> ); } diff --git a/fleet_packages.json b/fleet_packages.json index 2e9d769d2dea8b..5102cd480eb487 100644 --- a/fleet_packages.json +++ b/fleet_packages.json @@ -42,12 +42,12 @@ }, { "name": "profiler_symbolizer", - "version": "8.14.0", + "version": "8.14.1", "forceAlignStackVersion": true }, { "name": "profiler_collector", - "version": "8.14.0", + "version": "8.14.1", "forceAlignStackVersion": true }, { @@ -58,4 +58,4 @@ "name": "security_detection_engine", "version": "8.13.6" } -] +] \ No newline at end of file diff --git a/package.json b/package.json index 4e2a2f6df494cd..7906af95566ca0 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "url": "https://github.com/elastic/kibana.git" }, "engines": { - "node": "20.12.2", + "node": "20.13.1", "yarn": "^1.22.19" }, "resolutions": { @@ -102,6 +102,7 @@ "@dnd-kit/sortable": "^8.0.0", "@dnd-kit/utilities": "^3.2.2", "@elastic/apm-rum": "^5.16.0", + "@elastic/apm-rum-core": "^5.21.0", "@elastic/apm-rum-react": "^2.0.2", "@elastic/charts": "64.1.0", "@elastic/datemath": "5.0.3", @@ -857,6 +858,7 @@ "@kbn/triggers-actions-ui-example-plugin": "link:x-pack/examples/triggers_actions_ui_example", "@kbn/triggers-actions-ui-plugin": "link:x-pack/plugins/triggers_actions_ui", "@kbn/triggers-actions-ui-types": "link:packages/kbn-triggers-actions-ui-types", + "@kbn/try-in-console": "link:packages/kbn-try-in-console", "@kbn/typed-react-router-config": "link:packages/kbn-typed-react-router-config", "@kbn/ui-actions-browser": "link:packages/kbn-ui-actions-browser", "@kbn/ui-actions-enhanced-examples-plugin": "link:x-pack/examples/ui_actions_enhanced_examples", @@ -1095,7 +1097,7 @@ "pretty-ms": "6.0.0", "prop-types": "^15.8.1", "proxy-from-env": "1.0.0", - "puppeteer": "22.3.0", + "puppeteer": "22.8.1", "query-string": "^6.13.2", "rbush": "^3.0.1", "re-resizable": "^6.9.9", @@ -1212,7 +1214,6 @@ "@babel/types": "7.21.2", "@bazel/ibazel": "^0.16.2", "@bazel/typescript": "4.6.2", - "@cypress/code-coverage": "^3.12.18", "@cypress/grep": "^4.0.1", "@cypress/webpack-preprocessor": "^6.0.1", "@elastic/eslint-plugin-eui": "0.0.2", @@ -1580,7 +1581,7 @@ "cssnano": "^5.1.12", "cssnano-preset-default": "^5.2.12", "csstype": "^3.0.2", - "cypress": "^13.6.3", + "cypress": "13.6.2", "cypress-axe": "^1.5.0", "cypress-file-upload": "^5.0.8", "cypress-multi-reporters": "^1.6.4", diff --git a/packages/core/analytics/core-analytics-browser-internal/src/analytics_service.test.ts b/packages/core/analytics/core-analytics-browser-internal/src/analytics_service.test.ts index 405d01a98052e3..0358b25f333753 100644 --- a/packages/core/analytics/core-analytics-browser-internal/src/analytics_service.test.ts +++ b/packages/core/analytics/core-analytics-browser-internal/src/analytics_service.test.ts @@ -23,10 +23,22 @@ function findRegisteredEventTypeByName(eventTypeName: string) { ([{ eventType }]) => eventType === eventTypeName )!; } +interface MockEntryList { + getEntries: () => [object]; +} +type ObsCallback = (_entries: MockEntryList, _obs: object) => undefined; describe('AnalyticsService', () => { let analyticsService: AnalyticsService; beforeEach(() => { + const mockObs = { observe: jest.fn, disconnect: jest.fn }; + const mockPerformanceObserver = function (callback: ObsCallback) { + callback({ getEntries: () => [{}] }, mockObs); + return mockObs; + }; + + (global.PerformanceObserver as unknown) = mockPerformanceObserver; + jest.clearAllMocks(); analyticsService = new AnalyticsService(coreContextMock.create()); }); diff --git a/packages/core/analytics/core-analytics-browser-internal/src/analytics_service.ts b/packages/core/analytics/core-analytics-browser-internal/src/analytics_service.ts index fc394702eadfa0..5de339ba5aa780 100644 --- a/packages/core/analytics/core-analytics-browser-internal/src/analytics_service.ts +++ b/packages/core/analytics/core-analytics-browser-internal/src/analytics_service.ts @@ -13,7 +13,9 @@ import { registerPerformanceMetricEventType } from '@kbn/ebt-tools'; import type { CoreContext } from '@kbn/core-base-browser-internal'; import type { InternalInjectedMetadataSetup } from '@kbn/core-injected-metadata-browser-internal'; import type { AnalyticsServiceSetup, AnalyticsServiceStart } from '@kbn/core-analytics-browser'; +import { trackPerformanceMeasureEntries } from './track_performance_measure_entries'; import { trackClicks } from './track_clicks'; + import { getSessionId } from './get_session_id'; import { createLogger } from './logger'; import { trackViewportSize } from './track_viewport_size'; @@ -44,6 +46,9 @@ export class AnalyticsService { this.registerSessionIdContext(); this.registerBrowserInfoAnalyticsContext(); this.subscriptionsHandler.add(trackClicks(this.analyticsClient, core.env.mode.dev)); + this.subscriptionsHandler.add( + trackPerformanceMeasureEntries(this.analyticsClient, core.env.mode.dev) + ); this.subscriptionsHandler.add(trackViewportSize(this.analyticsClient)); // Register a flush method in the browser so CI can explicitly call it before closing the browser. diff --git a/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.ts b/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.ts new file mode 100644 index 00000000000000..80826c03864adc --- /dev/null +++ b/packages/core/analytics/core-analytics-browser-internal/src/track_performance_measure_entries.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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import type { AnalyticsClient } from '@kbn/analytics-client'; +import { reportPerformanceMetricEvent } from '@kbn/ebt-tools'; + +export function trackPerformanceMeasureEntries(analytics: AnalyticsClient, isDevMode: boolean) { + function perfObserver( + list: PerformanceObserverEntryList, + observer: PerformanceObserver, + droppedEntriesCount: number + ) { + list.getEntries().forEach((entry: any) => { + if (entry.entryType === 'measure' && entry.detail?.type === 'kibana:performance') { + const target = entry?.name; + const duration = entry.duration; + + if (isDevMode) { + if (!target) { + // eslint-disable-next-line no-console + console.error(`Failed to report the performance entry. Measure name is undefined`); + } + + if (!duration) { + // eslint-disable-next-line no-console + console.error( + `Failed to report the performance entry. Duration for the measure: ${target} is undefined` + ); + } + + // eslint-disable-next-line no-console + console.log(`The measure ${target} completed in ${duration / 1000}s`); + } + + if (droppedEntriesCount > 0) { + // eslint-disable-next-line no-console + console.warn( + `${droppedEntriesCount} performance entries got dropped due to the buffer being full.` + ); + } + + try { + reportPerformanceMetricEvent(analytics, { + eventName: entry.detail.eventName, + duration, + meta: { + target, + }, + }); + } catch (error) { + if (isDevMode) { + // eslint-disable-next-line no-console + console.error(`Failed to report the performance event`, { event, error }); + } + } + } + }); + } + + const observer = new PerformanceObserver(perfObserver as PerformanceObserverCallback); + observer.observe({ type: 'measure', buffered: true }); +} diff --git a/packages/kbn-ebt-tools/index.ts b/packages/kbn-ebt-tools/index.ts index 9112f19423dfe4..83366d09dce95b 100644 --- a/packages/kbn-ebt-tools/index.ts +++ b/packages/kbn-ebt-tools/index.ts @@ -6,4 +6,6 @@ * Side Public License, v 1. */ +export * from './src/performance_metrics'; + export * from './src/performance_metric_events'; diff --git a/packages/kbn-ebt-tools/src/performance_metrics/context/performance_context.tsx b/packages/kbn-ebt-tools/src/performance_metrics/context/performance_context.tsx new file mode 100644 index 00000000000000..72f3d39d3c8259 --- /dev/null +++ b/packages/kbn-ebt-tools/src/performance_metrics/context/performance_context.tsx @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { useMemo, useState } from 'react'; +import { afterFrame } from '@elastic/apm-rum-core'; +import { useLocation } from 'react-router-dom'; +import { perfomanceMarkers } from '../performance_markers'; +import { PerformanceApi, PerformanceContext } from './use_performance_context'; + +function measureInteraction() { + performance.mark(perfomanceMarkers.startPageChange); + const trackedRoutes: string[] = []; + return { + /** + * Marks the end of the page ready state and measures the performance between the start of the page change and the end of the page ready state. + * @param pathname - The pathname of the page. + */ + pageReady(pathname: string) { + performance.mark(perfomanceMarkers.endPageReady); + + if (!trackedRoutes.includes(pathname)) { + performance.measure(pathname, { + detail: { eventName: 'kibana:plugin_render_time', type: 'kibana:performance' }, + start: perfomanceMarkers.startPageChange, + end: perfomanceMarkers.endPageReady, + }); + trackedRoutes.push(pathname); + } + }, + }; +} + +export function PerformanceContextProvider({ children }: { children: React.ReactElement }) { + const [isRendered, setIsRendered] = useState(false); + const location = useLocation(); + const interaction = measureInteraction(); + + React.useEffect(() => { + afterFrame(() => { + setIsRendered(true); + }); + return () => { + setIsRendered(false); + performance.clearMeasures(location.pathname); + }; + }, [location.pathname]); + + const api = useMemo( + () => ({ + onPageReady() { + if (isRendered) { + interaction.pageReady(location.pathname); + } + }, + }), + [isRendered, location.pathname, interaction] + ); + + return {children}; +} +// dynamic import +// eslint-disable-next-line import/no-default-export +export default PerformanceContextProvider; diff --git a/packages/kbn-ebt-tools/src/performance_metrics/context/use_performance_context.tsx b/packages/kbn-ebt-tools/src/performance_metrics/context/use_performance_context.tsx new file mode 100644 index 00000000000000..3bc083186a8699 --- /dev/null +++ b/packages/kbn-ebt-tools/src/performance_metrics/context/use_performance_context.tsx @@ -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 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 { createContext, useContext } from 'react'; + +export interface PerformanceApi { + onPageReady(): void; +} + +export const PerformanceContext = createContext(undefined); + +export function usePerformanceContext() { + const api = useContext(PerformanceContext); + + if (!api) { + throw new Error('Missing Performance API in context'); + } + + return api; +} diff --git a/packages/kbn-ebt-tools/src/performance_metrics/index.tsx b/packages/kbn-ebt-tools/src/performance_metrics/index.tsx new file mode 100644 index 00000000000000..54c5fe5d625121 --- /dev/null +++ b/packages/kbn-ebt-tools/src/performance_metrics/index.tsx @@ -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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { Suspense } from 'react'; + +type Loader> = () => Promise<{ + default: TElement; +}>; + +function dynamic, TRef = {}>(loader: Loader) { + const Component = React.lazy(loader); + + return React.forwardRef>((props, ref) => ( + {React.createElement(Component, { ...props, ref })} + )); +} + +export { usePerformanceContext } from './context/use_performance_context'; +export { perfomanceMarkers } from './performance_markers'; +export const PerformanceContextProvider = dynamic(() => import('./context/performance_context')); diff --git a/packages/kbn-ebt-tools/src/performance_metrics/performance_markers.ts b/packages/kbn-ebt-tools/src/performance_metrics/performance_markers.ts new file mode 100644 index 00000000000000..0cf201ba78e54a --- /dev/null +++ b/packages/kbn-ebt-tools/src/performance_metrics/performance_markers.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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. + */ + +// Time To First Meaningful Paint (ttfmp) +export const perfomanceMarkers = { + startPageChange: 'start::pageChange', + endPageReady: 'end::pageReady', +}; diff --git a/packages/kbn-ebt-tools/src/types/apm_rum_core.d.ts b/packages/kbn-ebt-tools/src/types/apm_rum_core.d.ts new file mode 100644 index 00000000000000..212002e799cdfd --- /dev/null +++ b/packages/kbn-ebt-tools/src/types/apm_rum_core.d.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +declare module '@elastic/apm-rum-core' { + export function afterFrame(callback: () => void): void; +} diff --git a/packages/kbn-ebt-tools/tsconfig.json b/packages/kbn-ebt-tools/tsconfig.json index 278801bc74c530..7dd6d0703f0732 100644 --- a/packages/kbn-ebt-tools/tsconfig.json +++ b/packages/kbn-ebt-tools/tsconfig.json @@ -2,19 +2,9 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "outDir": "target/types", - "types": [ - "jest", - "node" - ] + "types": ["jest", "node"] }, - "include": [ - "**/*.ts" - ], - "kbn_references": [ - "@kbn/analytics-client", - "@kbn/logging-mocks", - ], - "exclude": [ - "target/**/*", - ] + "include": ["**/*.ts", "**/*.tsx"], + "kbn_references": ["@kbn/analytics-client", "@kbn/logging-mocks"], + "exclude": ["target/**/*"] } diff --git a/packages/kbn-search-api-panels/components/code_box.tsx b/packages/kbn-search-api-panels/components/code_box.tsx index 5a4ff7cc13240b..57483af87e7963 100644 --- a/packages/kbn-search-api-panels/components/code_box.tsx +++ b/packages/kbn-search-api-panels/components/code_box.tsx @@ -25,9 +25,9 @@ import { i18n } from '@kbn/i18n'; import type { ApplicationStart } from '@kbn/core-application-browser'; import type { ConsolePluginStart } from '@kbn/console-plugin/public'; import type { SharePluginStart } from '@kbn/share-plugin/public'; +import { TryInConsoleButton } from '@kbn/try-in-console'; import { LanguageDefinition } from '../types'; -import { TryInConsoleButton } from './try_in_console_button'; import './code_box.scss'; interface CodeBoxProps { diff --git a/packages/kbn-search-api-panels/components/select_client.tsx b/packages/kbn-search-api-panels/components/select_client.tsx index 1dcd5c0458daf0..e8a596db21d31c 100644 --- a/packages/kbn-search-api-panels/components/select_client.tsx +++ b/packages/kbn-search-api-panels/components/select_client.tsx @@ -22,9 +22,9 @@ import { FormattedMessage } from '@kbn/i18n-react'; import type { ApplicationStart } from '@kbn/core-application-browser'; import type { SharePluginStart } from '@kbn/share-plugin/public'; import type { ConsolePluginStart } from '@kbn/console-plugin/public'; +import { TryInConsoleButton } from '@kbn/try-in-console'; import { OverviewPanel } from './overview_panel'; import './select_client.scss'; -import { TryInConsoleButton } from './try_in_console_button'; export interface SelectClientPanelProps { docLinks: { elasticsearchClients: string; kibanaRunApiInConsole: string }; diff --git a/packages/kbn-search-api-panels/index.tsx b/packages/kbn-search-api-panels/index.tsx index 8ba4b1337e6bf5..10276bc9c53256 100644 --- a/packages/kbn-search-api-panels/index.tsx +++ b/packages/kbn-search-api-panels/index.tsx @@ -20,7 +20,6 @@ export * from './components/language_client_panel'; export * from './components/overview_panel'; export * from './components/pipeline_panel'; export * from './components/select_client'; -export * from './components/try_in_console_button'; export * from './components/install_client'; export * from './components/preprocess_data'; diff --git a/packages/kbn-search-api-panels/tsconfig.json b/packages/kbn-search-api-panels/tsconfig.json index c407f56b9ea28f..20294566e4cc3c 100644 --- a/packages/kbn-search-api-panels/tsconfig.json +++ b/packages/kbn-search-api-panels/tsconfig.json @@ -22,6 +22,7 @@ "@kbn/i18n-react", "@kbn/security-plugin", "@kbn/console-plugin", - "@kbn/ui-theme" + "@kbn/ui-theme", + "@kbn/try-in-console" ] } diff --git a/packages/kbn-search-connectors/lib/fetch_connector_index_names.test.ts b/packages/kbn-search-connectors/lib/fetch_connector_index_names.test.ts new file mode 100644 index 00000000000000..9da9de7c72d341 --- /dev/null +++ b/packages/kbn-search-connectors/lib/fetch_connector_index_names.test.ts @@ -0,0 +1,117 @@ +/* + * Copyright 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 { errors } from '@elastic/elasticsearch'; + +import { ElasticsearchClient } from '@kbn/core/server'; + +import { fetchConnectorIndexNames } from './fetch_connector_index_names'; + +const otherError = { + meta: { + body: { + error: { + type: 'other_error', + }, + }, + }, +}; + +const indexNotFoundError = new errors.ResponseError({ + statusCode: 404, + body: { + error: { + type: `index_not_found_exception`, + }, + }, +} as any); + +describe('fetchConnectorIndexNames lib function', () => { + const mockClient = { + transport: { + request: jest.fn(), + }, + }; + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should fetch connector index names', async () => { + const mockResult = { + count: 2, + results: [ + { id: 'connectorId1', index_name: 'indexName1' }, + { id: 'connectorId2', index_name: 'indexName2' }, + ], + }; + mockClient.transport.request.mockResolvedValue(mockResult); + + await expect( + fetchConnectorIndexNames(mockClient as unknown as ElasticsearchClient) + ).resolves.toEqual(['indexName1', 'indexName2']); + expect(mockClient.transport.request).toHaveBeenCalledWith({ + method: 'GET', + path: `/_connector`, + querystring: { + from: 0, + size: 1000, + }, + }); + }); + + it('should return [] if no connectors are found', async () => { + const mockResult = { + count: 0, + results: [], + }; + mockClient.transport.request.mockResolvedValue(mockResult); + + await expect( + fetchConnectorIndexNames(mockClient as unknown as ElasticsearchClient) + ).resolves.toEqual([]); + + expect(mockClient.transport.request).toHaveBeenCalledWith({ + method: 'GET', + path: `/_connector`, + querystring: { + from: 0, + size: 1000, + }, + }); + }); + + it('should return [] if connector index is missing', async () => { + mockClient.transport.request.mockImplementationOnce(() => Promise.reject(indexNotFoundError)); + + await expect( + fetchConnectorIndexNames(mockClient as unknown as ElasticsearchClient) + ).resolves.toEqual([]); + + expect(mockClient.transport.request).toHaveBeenCalledWith({ + method: 'GET', + path: `/_connector`, + querystring: { + from: 0, + size: 1000, + }, + }); + }); + + it('should throw on other errors', async () => { + mockClient.transport.request.mockImplementationOnce(() => Promise.reject(otherError)); + await expect(fetchConnectorIndexNames(mockClient as any)).rejects.toEqual(otherError); + expect(mockClient.transport.request).toHaveBeenCalledWith({ + method: 'GET', + path: `/_connector`, + querystring: { + from: 0, + size: 1000, + }, + }); + }); +}); diff --git a/packages/kbn-search-connectors/lib/fetch_connector_index_names.ts b/packages/kbn-search-connectors/lib/fetch_connector_index_names.ts index bed99173c859bd..b7ef5efcddf616 100644 --- a/packages/kbn-search-connectors/lib/fetch_connector_index_names.ts +++ b/packages/kbn-search-connectors/lib/fetch_connector_index_names.ts @@ -8,18 +8,13 @@ import { ElasticsearchClient } from '@kbn/core/server'; -import { CONNECTORS_INDEX } from '..'; +import { fetchConnectors } from './fetch_connectors'; import { isIndexNotFoundException } from '../utils/identify_exceptions'; export async function fetchConnectorIndexNames(client: ElasticsearchClient): Promise { try { - const result = await client.search({ - _source: false, - fields: [{ field: 'index_name' }], - index: CONNECTORS_INDEX, - size: 10000, - }); - return (result?.hits.hits ?? []).map((field) => field.fields?.index_name[0] ?? ''); + const allConnectors = await fetchConnectors(client); + return (allConnectors ?? []).map((connector) => connector.index_name ?? ''); } catch (error) { if (isIndexNotFoundException(error)) { return []; diff --git a/packages/kbn-try-in-console/README.md b/packages/kbn-try-in-console/README.md new file mode 100644 index 00000000000000..3e22f6fc4e4b62 --- /dev/null +++ b/packages/kbn-try-in-console/README.md @@ -0,0 +1,3 @@ +# @kbn/try-in-console + +This package contains the TryInConsoleButton which can be used to open the console with a provided console code snippet. This button will check if the Persistent Dev Console is currently on the page and open it with the code snippet if it's available. Otherwise it will open the Console in Dev Tools in a new browser tab. diff --git a/packages/kbn-try-in-console/components/try_in_console_button.test.tsx b/packages/kbn-try-in-console/components/try_in_console_button.test.tsx new file mode 100644 index 00000000000000..8f7ed793fc7a48 --- /dev/null +++ b/packages/kbn-try-in-console/components/try_in_console_button.test.tsx @@ -0,0 +1,193 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import React from 'react'; +import { fireEvent, render, screen } from '@testing-library/react'; + +import type { ApplicationStart } from '@kbn/core-application-browser'; +import type { SharePluginStart } from '@kbn/share-plugin/public'; + +import { TryInConsoleButton, TryInConsoleButtonProps } from './try_in_console_button'; + +describe('TryInConsoleButton', () => { + let windowOpenSpy: jest.SpyInstance; + const mockApplication = { + capabilities: { + dev_tools: { + show: true, + }, + }, + }; + const mockLocatorUseUrl = jest.fn(); + const mockLocatorGet = jest.fn().mockReturnValue({ + useUrl: mockLocatorUseUrl, + }); + const mockShare = { + url: { + locators: { + get: mockLocatorGet, + }, + }, + }; + const mockConsole = { + openEmbeddedConsole: jest.fn(), + isEmbeddedConsoleAvailable: jest.fn(), + }; + + const defaultProps = ({ + request, + application, + consolePlugin, + sharePlugin, + content, + showIcon, + link, + }: Partial) => ({ + application: (application ?? mockApplication) as ApplicationStart, + sharePlugin: (sharePlugin ?? mockShare) as SharePluginStart | undefined, + request, + consolePlugin, + content, + showIcon, + link, + }); + beforeEach(() => { + jest.resetAllMocks(); + windowOpenSpy = jest.spyOn(window, 'open'); + windowOpenSpy.mockImplementation(() => {}); + mockLocatorUseUrl.mockReturnValue('/app/test/dev_tools'); + mockLocatorGet.mockReturnValue({ + useUrl: mockLocatorUseUrl, + }); + }); + afterEach(() => { + windowOpenSpy.mockRestore(); + }); + + it('renders expected button', async () => { + const props: Partial = { request: 'GET /_stats' }; + const wrapper = render(); + + expect(wrapper.getByTestId('tryInConsoleButton')).toBeTruthy(); + expect(wrapper.getByRole('button')).toHaveTextContent('Try in Console'); + expect(mockLocatorUseUrl).toHaveBeenCalledWith( + { + loadFrom: 'data:text/plain,OIUQKgBA9A+gzgFwIYLkA', + }, + undefined, + [props.request] + ); + }); + it('can render as a link', async () => { + const props: Partial = { request: 'GET /_stats', link: true }; + const wrapper = render(); + + expect(wrapper.getByTestId('tryInConsoleLink')).toBeTruthy(); + expect(wrapper.getByRole('button')).toHaveTextContent('Try in Console'); + }); + it('renders null if dev tools are unavailable', async () => { + const props: Partial = { + application: { + capabilities: { + dev_tools: { + show: false, + }, + }, + } as unknown as ApplicationStart, + }; + render(); + + expect(screen.queryAllByTestId('tryInConsoleButton').length).toBe(0); + expect(screen.queryAllByTestId('tryInConsoleLink').length).toBe(0); + }); + it('renders null if share plugin url is unavailable', async () => { + const props: Partial = { + sharePlugin: {} as unknown as SharePluginStart, + }; + render(); + + expect(screen.queryAllByTestId('tryInConsoleButton').length).toBe(0); + expect(screen.queryAllByTestId('tryInConsoleLink').length).toBe(0); + }); + it('renders null cant build dev tools url with share plugin', async () => { + const props: Partial = { + sharePlugin: { + url: { + locators: { + get: jest.fn().mockReturnValue(undefined), + }, + }, + } as unknown as SharePluginStart, + }; + render(); + + expect(screen.queryAllByTestId('tryInConsoleButton').length).toBe(0); + expect(screen.queryAllByTestId('tryInConsoleLink').length).toBe(0); + }); + it('can use custom content', async () => { + const props: Partial = { + request: 'GET /_stats', + content: 'Try my console!!', + }; + const wrapper = render(); + + expect(wrapper.getByTestId('tryInConsoleButton')).toBeTruthy(); + expect(wrapper.getByRole('button')).toHaveTextContent('Try my console!!'); + }); + it('can use custom content with a link', async () => { + const props: Partial = { + request: 'GET /_stats', + content: 'Try my console!!', + link: true, + }; + const wrapper = render(); + + expect(wrapper.getByTestId('tryInConsoleLink')).toBeTruthy(); + expect(wrapper.getByRole('button')).toHaveTextContent('Try my console!!'); + }); + it('opens expected location in new tab', async () => { + const props: Partial = { request: 'GET /_stats' }; + render(); + + fireEvent.click(screen.getByText('Try in Console')); + + expect(windowOpenSpy).toHaveBeenCalledTimes(1); + expect(windowOpenSpy).toHaveBeenCalledWith('/app/test/dev_tools', '_blank', 'noreferrer'); + }); + it('can open in new tab without data', async () => { + render(); + + fireEvent.click(screen.getByText('Try in Console')); + + expect(mockLocatorUseUrl).toHaveBeenCalledWith({}, undefined, [undefined]); + expect(windowOpenSpy).toHaveBeenCalledTimes(1); + expect(windowOpenSpy).toHaveBeenCalledWith('/app/test/dev_tools', '_blank', 'noreferrer'); + }); + it('opens persistent console when available', async () => { + mockConsole.isEmbeddedConsoleAvailable.mockReturnValue(true); + render( + + ); + + fireEvent.click(screen.getByText('Try in Console')); + + expect(windowOpenSpy).toHaveBeenCalledTimes(0); + expect(mockConsole.openEmbeddedConsole).toHaveBeenCalledTimes(1); + expect(mockConsole.openEmbeddedConsole).toHaveBeenCalledWith('GET /_stats'); + }); + it('opens a new tab is persistent console is not available on the page', async () => { + mockConsole.isEmbeddedConsoleAvailable.mockReturnValue(false); + render(); + + fireEvent.click(screen.getByText('Try in Console')); + + expect(windowOpenSpy).toHaveBeenCalledTimes(1); + expect(mockConsole.openEmbeddedConsole).toHaveBeenCalledTimes(0); + }); +}); diff --git a/packages/kbn-search-api-panels/components/try_in_console_button.tsx b/packages/kbn-try-in-console/components/try_in_console_button.tsx similarity index 77% rename from packages/kbn-search-api-panels/components/try_in_console_button.tsx rename to packages/kbn-try-in-console/components/try_in_console_button.tsx index bbcae475f11a8b..a49011749e14ef 100644 --- a/packages/kbn-search-api-panels/components/try_in_console_button.tsx +++ b/packages/kbn-try-in-console/components/try_in_console_button.tsx @@ -13,9 +13,11 @@ import type { ApplicationStart } from '@kbn/core-application-browser'; import type { SharePluginStart } from '@kbn/share-plugin/public'; import type { ConsolePluginStart } from '@kbn/console-plugin/public'; -import { FormattedMessage } from '@kbn/i18n-react'; +import { i18n } from '@kbn/i18n'; import { compressToEncodedURIComponent } from 'lz-string'; +const TRY_IN_CONSOLE = i18n.translate('tryInConsole.button', { defaultMessage: 'Try in Console' }); + export interface TryInConsoleButtonProps { request?: string; application?: ApplicationStart; @@ -64,29 +66,20 @@ export const TryInConsoleButton = ({ if (link) { return ( - - {content ? ( - content - ) : ( - - )} + + {content ?? TRY_IN_CONSOLE} ); } return ( - - {content ? ( - content - ) : ( - - )} + + {content ?? TRY_IN_CONSOLE} ); }; diff --git a/packages/kbn-try-in-console/index.ts b/packages/kbn-try-in-console/index.ts new file mode 100644 index 00000000000000..c812810572bfde --- /dev/null +++ b/packages/kbn-try-in-console/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { TryInConsoleButton } from './components/try_in_console_button'; diff --git a/packages/kbn-try-in-console/jest.config.js b/packages/kbn-try-in-console/jest.config.js new file mode 100644 index 00000000000000..047b43d82049e4 --- /dev/null +++ b/packages/kbn-try-in-console/jest.config.js @@ -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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../..', + roots: ['/packages/kbn-try-in-console'], + coverageReporters: ['text', 'html'], + setupFilesAfterEnv: ['/packages/kbn-try-in-console/setup_test.ts'], +}; diff --git a/packages/kbn-try-in-console/kibana.jsonc b/packages/kbn-try-in-console/kibana.jsonc new file mode 100644 index 00000000000000..59d0914ef7ad31 --- /dev/null +++ b/packages/kbn-try-in-console/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "type": "shared-common", + "id": "@kbn/try-in-console", + "owner": "@elastic/enterprise-search-frontend" +} diff --git a/packages/kbn-try-in-console/package.json b/packages/kbn-try-in-console/package.json new file mode 100644 index 00000000000000..68018aed391aa2 --- /dev/null +++ b/packages/kbn-try-in-console/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/try-in-console", + "private": true, + "version": "1.0.0", + "license": "SSPL-1.0 OR Elastic License 2.0" +} \ No newline at end of file diff --git a/packages/kbn-try-in-console/setup_test.ts b/packages/kbn-try-in-console/setup_test.ts new file mode 100644 index 00000000000000..bb55d97ec93028 --- /dev/null +++ b/packages/kbn-try-in-console/setup_test.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +// eslint-disable-next-line import/no-extraneous-dependencies +import '@testing-library/jest-dom'; diff --git a/packages/kbn-try-in-console/tsconfig.json b/packages/kbn-try-in-console/tsconfig.json new file mode 100644 index 00000000000000..2b3c781740cf05 --- /dev/null +++ b/packages/kbn-try-in-console/tsconfig.json @@ -0,0 +1,25 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node", + "react" + ] + }, + "include": [ + "index.ts", + "**/*.ts", + "**/*.tsx", + ], + "exclude": [ + "target/**/*", + ], + "kbn_references": [ + "@kbn/core-application-browser", + "@kbn/i18n", + "@kbn/share-plugin", + "@kbn/console-plugin", + ] +} diff --git a/packages/presentation/presentation_publishing/index.ts b/packages/presentation/presentation_publishing/index.ts index 52027ffe908396..c2669c19c32548 100644 --- a/packages/presentation/presentation_publishing/index.ts +++ b/packages/presentation/presentation_publishing/index.ts @@ -109,6 +109,7 @@ export { export { apiPublishesPanelDescription, apiPublishesWritablePanelDescription, + getPanelDescription, type PublishesPanelDescription, type PublishesWritablePanelDescription, } from './interfaces/titles/publishes_panel_description'; diff --git a/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.test.ts b/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.test.ts new file mode 100644 index 00000000000000..2fde4feed021e9 --- /dev/null +++ b/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.test.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { BehaviorSubject } from 'rxjs'; +import { getPanelDescription } from './publishes_panel_description'; + +describe('getPanelDescription', () => { + test('should return default description when description is undefined', () => { + const api = { + panelDescription: new BehaviorSubject(undefined), + defaultPanelDescription: new BehaviorSubject('default description'), + }; + expect(getPanelDescription(api)).toBe('default description'); + }); + + test('should return empty description when description is empty string', () => { + const api = { + panelDescription: new BehaviorSubject(''), + defaultPanelDescription: new BehaviorSubject('default description'), + }; + expect(getPanelDescription(api)).toBe(''); + }); + + test('should return description when description is provided', () => { + const api = { + panelDescription: new BehaviorSubject('custom description'), + defaultPanelDescription: new BehaviorSubject('default description'), + }; + expect(getPanelDescription(api)).toBe('custom description'); + }); +}); diff --git a/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.ts b/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.ts index 7cf0f06a8a9fdf..f7275ea364cca1 100644 --- a/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.ts +++ b/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.ts @@ -13,6 +13,10 @@ export interface PublishesPanelDescription { defaultPanelDescription?: PublishingSubject; } +export function getPanelDescription(api: Partial): string | undefined { + return api.panelDescription?.value ?? api.defaultPanelDescription?.value; +} + export type PublishesWritablePanelDescription = PublishesPanelDescription & { setPanelDescription: (newTitle: string | undefined) => void; }; diff --git a/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_title.test.ts b/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_title.test.ts index df8d1a0d9a9163..e0724af40d5be3 100644 --- a/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_title.test.ts +++ b/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_title.test.ts @@ -18,12 +18,12 @@ describe('getPanelTitle', () => { expect(getPanelTitle(api)).toBe('default title'); }); - test('should return default title when title is empty string', () => { + test('should return empty title when title is empty string', () => { const api = { panelTitle: new BehaviorSubject(''), defaultPanelTitle: new BehaviorSubject('default title'), }; - expect(getPanelTitle(api)).toBe('default title'); + expect(getPanelTitle(api)).toBe(''); }); test('should return title when title is provided', () => { diff --git a/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_title.ts b/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_title.ts index 56cc8a55268262..c91704da80f6a0 100644 --- a/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_title.ts +++ b/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_title.ts @@ -15,7 +15,7 @@ export interface PublishesPanelTitle { } export function getPanelTitle(api: Partial): string | undefined { - return api.panelTitle?.value || api.defaultPanelTitle?.value; + return api.panelTitle?.value ?? api.defaultPanelTitle?.value; } export type PublishesWritablePanelTitle = PublishesPanelTitle & { diff --git a/packages/shared-ux/markdown/impl/markdown.tsx b/packages/shared-ux/markdown/impl/markdown.tsx index 78bfc230afef6d..954a69c5c67e61 100644 --- a/packages/shared-ux/markdown/impl/markdown.tsx +++ b/packages/shared-ux/markdown/impl/markdown.tsx @@ -11,7 +11,6 @@ import { EuiMarkdownEditor, EuiMarkdownEditorProps, EuiMarkdownFormat, - euiMarkdownLinkValidator, getDefaultEuiMarkdownPlugins, } from '@elastic/eui'; import React, { useState } from 'react'; @@ -30,6 +29,10 @@ export type MarkdownProps = Partial< * allow opt in to default EUI link validation behavior, see {@link https://eui.elastic.co/#/editors-syntax/markdown-plugins#link-validation-security} */ validateLinks?: boolean; + /** + * enables regular line breaks to be rendered in HTML without `
` tags, see {@link https://github.github.com/gfm/#soft-line-breaks} + */ + enableSoftLineBreaks?: boolean; /** * provides a way to signal to a parent component that the component rendered successfully */ @@ -57,6 +60,7 @@ export const Markdown = ({ readOnly = false, enableTooltipSupport = false, validateLinks = false, + enableSoftLineBreaks = false, ...restProps }: MarkdownProps) => { const [value, setValue] = useState(defaultValue); @@ -66,20 +70,18 @@ export const Markdown = ({ onRender?.(); }, [onRender]); + const excludingPlugins = Array<'lineBreaks' | 'linkValidator' | 'tooltip'>(); + if (!enableTooltipSupport) excludingPlugins.push('tooltip'); + if (!validateLinks) excludingPlugins.push('linkValidator'); + if (enableSoftLineBreaks) excludingPlugins.push('lineBreaks'); + const { parsingPlugins, processingPlugins, uiPlugins } = getDefaultEuiMarkdownPlugins({ - exclude: enableTooltipSupport ? undefined : ['tooltip'], + exclude: excludingPlugins, }); // openLinksInNewTab functionality from https://codesandbox.io/s/relaxed-yalow-hy69r4?file=/demo.js:482-645 processingPlugins[1][1].components.a = (props) => ; - const _parsingPlugins = validateLinks - ? parsingPlugins - : // @ts-expect-error - parsingPlugins.filter(([plugin]) => { - return plugin !== euiMarkdownLinkValidator; - }); - // Render EuiMarkdownFormat when readOnly set to true if (readOnly) { if (!children && !markdownContent) { @@ -91,7 +93,7 @@ export const Markdown = ({ color={'inherit'} className={className} aria-label={ariaLabelContent ?? 'markdown component'} - parsingPluginList={_parsingPlugins} + parsingPluginList={parsingPlugins} processingPluginList={openLinksInNewTab ? processingPlugins : undefined} data-test-subj={restProps['data-test-subj']} // There was a trick to pass style as a part of props in the legacy React component @@ -112,7 +114,7 @@ export const Markdown = ({ onChange={setValue} height={height} uiPlugins={uiPlugins} - parsingPluginList={_parsingPlugins} + parsingPluginList={parsingPlugins} processingPluginList={openLinksInNewTab ? processingPlugins : undefined} data-test-subj={restProps['data-test-subj']} /> diff --git a/packages/shared-ux/markdown/impl/markdown_format.stories.tsx b/packages/shared-ux/markdown/impl/markdown_format.stories.tsx index ed0a575c0192b0..1105f9f2e10ccc 100644 --- a/packages/shared-ux/markdown/impl/markdown_format.stories.tsx +++ b/packages/shared-ux/markdown/impl/markdown_format.stories.tsx @@ -37,9 +37,11 @@ export const MarkdownStoryComponent = (params: MarkdownStorybookParams) => { markdownContent={'My content in **markdown** format set as the *markdownContent prop*'} /> - { - 'My content in **markdown** format passed as *children* [test link to open in new tab or not](https://www.elastic.co)' - } + {`My content in **markdown** format passed as *children* + \`openLinksInNewTab\` [test link to open in new tab or not](https://www.elastic.co) + \`enableTooltipSupport\` !{tooltip[anchor text](Tooltip content)} + \`validateLinks\` [link with non-standard scheme](testing-testing-this-is-a-non-standatd-scheme://) + `} diff --git a/packages/shared-ux/markdown/mocks/storybook.ts b/packages/shared-ux/markdown/mocks/storybook.ts index 74c865365583be..1afcde96de038b 100644 --- a/packages/shared-ux/markdown/mocks/storybook.ts +++ b/packages/shared-ux/markdown/mocks/storybook.ts @@ -66,6 +66,18 @@ export class MarkdownStorybookMock extends AbstractStorybookMock< options: [0, 20, 50, 'full'], }, }, + enableTooltipSupport: { + control: 'boolean', + defaultValue: false, + }, + validateLinks: { + control: 'boolean', + defaultValue: false, + }, + enableSoftLineBreaks: { + control: 'boolean', + defaultValue: false, + }, }; serviceArguments = {}; diff --git a/src/core/server/integration_tests/saved_objects/migrations/group3/split_failed_to_clone.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group3/split_failed_to_clone.test.ts index ac777d7172ca28..801660292473ff 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group3/split_failed_to_clone.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group3/split_failed_to_clone.test.ts @@ -59,7 +59,8 @@ const RELOCATE_TYPES: Record = { export const logFilePath = Path.join(__dirname, 'split_failed_to_clone.test.log'); -describe('when splitting .kibana into multiple indices and one clone fails', () => { +// Failing: See https://github.com/elastic/kibana/issues/163253 +describe.skip('when splitting .kibana into multiple indices and one clone fails', () => { let esServer: TestElasticsearchUtils['es']; let typeRegistry: ISavedObjectTypeRegistry; let migratorTestKitFactory: () => Promise; diff --git a/src/dev/build/args.test.ts b/src/dev/build/args.test.ts index 1bb50cf3cd9c16..85f799daa8a0d0 100644 --- a/src/dev/build/args.test.ts +++ b/src/dev/build/args.test.ts @@ -31,6 +31,7 @@ it('build default and oss dist for current platform, without packages, by defaul "createArchives": true, "createCdnAssets": true, "createDebPackage": false, + "createDockerChainguard": false, "createDockerCloud": false, "createDockerContexts": true, "createDockerFIPS": false, @@ -71,6 +72,7 @@ it('builds packages if --all-platforms is passed', () => { "createArchives": true, "createCdnAssets": true, "createDebPackage": true, + "createDockerChainguard": true, "createDockerCloud": true, "createDockerContexts": true, "createDockerFIPS": true, @@ -111,6 +113,7 @@ it('limits packages if --rpm passed with --all-platforms', () => { "createArchives": true, "createCdnAssets": true, "createDebPackage": false, + "createDockerChainguard": false, "createDockerCloud": false, "createDockerContexts": true, "createDockerFIPS": false, @@ -151,6 +154,7 @@ it('limits packages if --deb passed with --all-platforms', () => { "createArchives": true, "createCdnAssets": true, "createDebPackage": true, + "createDockerChainguard": false, "createDockerCloud": false, "createDockerContexts": true, "createDockerFIPS": false, @@ -192,6 +196,7 @@ it('limits packages if --docker passed with --all-platforms', () => { "createArchives": true, "createCdnAssets": true, "createDebPackage": false, + "createDockerChainguard": true, "createDockerCloud": true, "createDockerContexts": true, "createDockerFIPS": true, @@ -240,6 +245,7 @@ it('limits packages if --docker passed with --skip-docker-ubi and --all-platform "createArchives": true, "createCdnAssets": true, "createDebPackage": false, + "createDockerChainguard": true, "createDockerCloud": true, "createDockerContexts": true, "createDockerFIPS": true, @@ -281,6 +287,7 @@ it('limits packages if --all-platforms passed with --skip-docker-ubuntu', () => "createArchives": true, "createCdnAssets": true, "createDebPackage": true, + "createDockerChainguard": true, "createDockerCloud": true, "createDockerContexts": true, "createDockerFIPS": true, @@ -322,6 +329,7 @@ it('limits packages if --all-platforms passed with --skip-docker-fips', () => { "createArchives": true, "createCdnAssets": true, "createDebPackage": true, + "createDockerChainguard": true, "createDockerCloud": true, "createDockerContexts": true, "createDockerFIPS": false, diff --git a/src/dev/build/args.ts b/src/dev/build/args.ts index 0996a8688ef22d..9526d10eb2ae11 100644 --- a/src/dev/build/args.ts +++ b/src/dev/build/args.ts @@ -31,6 +31,7 @@ export function readCliArgs(argv: string[]) { 'skip-docker-contexts', 'skip-docker-ubi', 'skip-docker-ubuntu', + 'skip-docker-chainguard', 'skip-docker-cloud', 'skip-docker-serverless', 'skip-docker-fips', @@ -139,6 +140,8 @@ export function readCliArgs(argv: string[]) { createDebPackage: isOsPackageDesired('deb'), createDockerUbuntu: isOsPackageDesired('docker-images') && !Boolean(flags['skip-docker-ubuntu']), + createDockerChainguard: + isOsPackageDesired('docker-images') && !Boolean(flags['skip-docker-chainguard']), createDockerCloud: isOsPackageDesired('docker-images') && !Boolean(flags['skip-docker-cloud']), createDockerServerless: isOsPackageDesired('docker-images') && !Boolean(flags['skip-docker-serverless']), diff --git a/src/dev/build/build_distributables.ts b/src/dev/build/build_distributables.ts index ab9731e4ba112b..cc23b57530a680 100644 --- a/src/dev/build/build_distributables.ts +++ b/src/dev/build/build_distributables.ts @@ -31,6 +31,7 @@ export interface BuildOptions { createDebPackage: boolean; createDockerUBI: boolean; createDockerUbuntu: boolean; + createDockerChainguard: boolean; createDockerCloud: boolean; createDockerServerless: boolean; createDockerContexts: boolean; @@ -150,6 +151,10 @@ export async function buildDistributables(log: ToolingLog, options: BuildOptions await run(Tasks.CreateDockerUbuntu); } + if (options.createDockerChainguard) { + // control w/ --docker-images or --skip-docker-chainguard or --skip-os-packages + await run(Tasks.CreateDockerChainguard); + } if (options.createDockerCloud) { // control w/ --docker-images and --skip-docker-cloud if (options.downloadCloudDependencies) { diff --git a/src/dev/build/cli.ts b/src/dev/build/cli.ts index e9acd8245af02c..86160988c0f726 100644 --- a/src/dev/build/cli.ts +++ b/src/dev/build/cli.ts @@ -46,6 +46,7 @@ if (showHelp) { --skip-cdn-assets {dim Don't build CDN assets} --skip-docker-ubi {dim Don't build the docker ubi image} --skip-docker-ubuntu {dim Don't build the docker ubuntu image} + --skip-docker-chainguard {dim Don't build the docker chainguard image} --skip-docker-fips {dim Don't build the docker fips image} --release {dim Produce a release-ready distributable} --version-qualifier {dim Suffix version with a qualifier} diff --git a/src/dev/build/tasks/os_packages/create_os_package_tasks.ts b/src/dev/build/tasks/os_packages/create_os_package_tasks.ts index e623dd86b9d6fc..b71f900986380a 100644 --- a/src/dev/build/tasks/os_packages/create_os_package_tasks.ts +++ b/src/dev/build/tasks/os_packages/create_os_package_tasks.ts @@ -80,6 +80,27 @@ export const CreateDockerUbuntu: Task = { }, }; +export const CreateDockerChainguard: Task = { + description: 'Creating Docker Chainguard image', + + async run(config, log, build) { + await runDockerGenerator(config, log, build, { + architecture: 'x64', + baseImage: 'chainguard', + context: false, + image: true, + dockerBuildDate, + }); + await runDockerGenerator(config, log, build, { + architecture: 'aarch64', + baseImage: 'chainguard', + context: false, + image: true, + dockerBuildDate, + }); + }, +}; + export const CreateDockerServerless: Task = { description: 'Creating Docker Serverless image', @@ -161,6 +182,12 @@ export const CreateDockerContexts: Task = { image: false, dockerBuildDate, }); + await runDockerGenerator(config, log, build, { + baseImage: 'chainguard', + context: true, + image: false, + dockerBuildDate, + }); await runDockerGenerator(config, log, build, { baseImage: 'ubi', context: true, diff --git a/src/dev/build/tasks/os_packages/docker_generator/resources/fips/openssl/nodejs.cnf b/src/dev/build/tasks/os_packages/docker_generator/resources/fips/openssl/nodejs.cnf index bd8fece6674d70..f4f3a076975eb9 100644 --- a/src/dev/build/tasks/os_packages/docker_generator/resources/fips/openssl/nodejs.cnf +++ b/src/dev/build/tasks/os_packages/docker_generator/resources/fips/openssl/nodejs.cnf @@ -9,7 +9,7 @@ ########################################################################## nodejs_conf = nodejs_init -.include /usr/local/ssl/fipsmodule.cnf +.include /usr/share/kibana/openssl/ssl/fipsmodule.cnf [nodejs_init] providers = provider_sect diff --git a/src/dev/build/tasks/os_packages/docker_generator/run.ts b/src/dev/build/tasks/os_packages/docker_generator/run.ts index cf2ddd34913b8f..a0aed0a71c1f7e 100644 --- a/src/dev/build/tasks/os_packages/docker_generator/run.ts +++ b/src/dev/build/tasks/os_packages/docker_generator/run.ts @@ -29,7 +29,7 @@ export async function runDockerGenerator( build: Build, flags: { architecture?: string; - baseImage: 'none' | 'ubi' | 'ubuntu'; + baseImage: 'none' | 'chainguard' | 'ubi' | 'ubuntu'; context: boolean; image: boolean; ironbank?: boolean; @@ -42,9 +42,12 @@ export async function runDockerGenerator( let baseImageName = ''; if (flags.baseImage === 'ubuntu') baseImageName = 'ubuntu:20.04'; if (flags.baseImage === 'ubi') baseImageName = 'docker.elastic.co/ubi9/ubi-minimal:latest'; + if (flags.baseImage === 'chainguard') + baseImageName = 'docker.elastic.co/wolfi/chainguard-base:20230214'; let imageFlavor = ''; if (flags.baseImage === 'ubi') imageFlavor += `-ubi`; + if (flags.baseImage === 'chainguard') imageFlavor += `-chainguard`; if (flags.ironbank) imageFlavor += '-ironbank'; if (flags.cloud) imageFlavor += '-cloud'; if (flags.serverless) imageFlavor += '-serverless'; diff --git a/src/dev/build/tasks/os_packages/docker_generator/template_context.ts b/src/dev/build/tasks/os_packages/docker_generator/template_context.ts index 7734c347edfaa9..b6cdd9e5499562 100644 --- a/src/dev/build/tasks/os_packages/docker_generator/template_context.ts +++ b/src/dev/build/tasks/os_packages/docker_generator/template_context.ts @@ -24,7 +24,7 @@ export interface TemplateContext { dockerBuildDate: string; usePublicArtifact?: boolean; publicArtifactSubdomain: string; - baseImage: 'none' | 'ubi' | 'ubuntu'; + baseImage: 'none' | 'ubi' | 'ubuntu' | 'chainguard'; baseImageName: string; cloud?: boolean; serverless?: boolean; diff --git a/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile b/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile index e42d2a7ec1dcd1..9a58281ba55b3b 100644 --- a/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile +++ b/src/dev/build/tasks/os_packages/docker_generator/templates/base/Dockerfile @@ -12,11 +12,14 @@ FROM {{{baseImageName}}} AS builder {{#ubi}} -RUN {{packageManager}} install -y findutils tar gzip +RUN microdnf install -y findutils tar gzip {{/ubi}} {{#ubuntu}} -RUN {{packageManager}} update && DEBIAN_FRONTEND=noninteractive {{packageManager}} install -y curl +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y curl {{/ubuntu}} +{{#chainguard}} +RUN apk --no-cache add curl +{{/chainguard}} {{#usePublicArtifact}} RUN cd /tmp && \ @@ -32,8 +35,8 @@ COPY {{artifactTarball}} /tmp/kibana.tar.gz RUN mkdir /usr/share/kibana WORKDIR /usr/share/kibana RUN tar \ -# Exclude serverless.yml disabled assets {{#serverless}} +# Exclude serverless.yml disabled assets --exclude=screenshotting-plugin/chromium \ --exclude=screenshotting-plugin/server/assets \ {{/serverless}} @@ -44,8 +47,33 @@ RUN tar \ # OpenShift does this, for example. # REF: https://docs.openshift.org/latest/creating_images/guidelines.html RUN chmod -R g=u /usr/share/kibana -{{#cloud}} +# Add an init process, check the checksum to make sure it's a match +RUN set -e ; \ + TINI_BIN="" ; \ + case "$(arch)" in \ + aarch64) \ + TINI_BIN='tini-arm64' ; \ + ;; \ + x86_64) \ + TINI_BIN='tini-amd64' ; \ + ;; \ + *) echo >&2 "Unsupported architecture $(arch)" ; exit 1 ;; \ + esac ; \ + TINI_VERSION='v0.19.0' ; \ + curl --retry 8 -S -L -O "https://github.com/krallin/tini/releases/download/${TINI_VERSION}/${TINI_BIN}" ; \ + curl --retry 8 -S -L -O "https://github.com/krallin/tini/releases/download/${TINI_VERSION}/${TINI_BIN}.sha256sum" ; \ + sha256sum -c "${TINI_BIN}.sha256sum" ; \ + rm "${TINI_BIN}.sha256sum" ; \ + mv "${TINI_BIN}" /bin/tini ; \ + chmod +x /bin/tini +{{^serverless}} +RUN mkdir -p /usr/share/fonts/local && \ + curl --retry 8 -S -L -o /usr/share/fonts/local/NotoSansCJK-Regular.ttc https://github.com/googlefonts/noto-cjk/raw/NotoSansV2.001/NotoSansCJK-Regular.ttc && \ + echo "5dcd1c336cc9344cb77c03a0cd8982ca8a7dc97d620fd6c9c434e02dcb1ceeb3 /usr/share/fonts/local/NotoSansCJK-Regular.ttc" | sha256sum -c - +{{/serverless}} + +{{#cloud}} COPY {{filebeatTarball}} /tmp/filebeat.tar.gz COPY {{metricbeatTarball}} /tmp/metricbeat.tar.gz @@ -65,10 +93,10 @@ EXPOSE 5601 {{#ubi}} RUN for iter in {1..10}; do \ - {{packageManager}} update --setopt=tsflags=nodocs -y && \ - {{packageManager}} install --setopt=tsflags=nodocs -y \ + microdnf update --setopt=tsflags=nodocs -y && \ + microdnf install --setopt=tsflags=nodocs -y \ fontconfig freetype shadow-utils nss findutils {{#fips}}perl make gcc tar {{/fips}}&& \ - {{packageManager}} clean all && exit_code=0 && break || exit_code=$? && echo "{{packageManager}} error: retry $iter in 10s" && \ + microdnf clean all && exit_code=0 && break || exit_code=$? && echo "microdnf error: retry $iter in 10s" && \ sleep 10; \ done; \ (exit $exit_code) @@ -76,47 +104,31 @@ RUN for iter in {1..10}; do \ {{#ubuntu}} RUN for iter in {1..10}; do \ export DEBIAN_FRONTEND=noninteractive && \ - {{packageManager}} update && \ - {{packageManager}} upgrade -y && \ - {{packageManager}} install -y --no-install-recommends \ - fontconfig fonts-liberation libnss3 libfontconfig1 ca-certificates curl && \ - {{packageManager}} clean && \ - rm -rf /var/lib/apt/lists/* && exit_code=0 && break || exit_code=$? && echo "{{packageManager}} error: retry $iter in 10s" && \ + apt-get update && \ + apt-get upgrade -y && \ + apt-get install -y --no-install-recommends \ + fontconfig libnss3 ca-certificates && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* && exit_code=0 && break || exit_code=$? && echo "apt-get error: retry $iter in 10s" && \ sleep 10; \ done; \ (exit $exit_code) {{/ubuntu}} - -# Add an init process, check the checksum to make sure it's a match -RUN set -e ; \ - TINI_BIN="" ; \ - case "$(arch)" in \ - aarch64) \ - TINI_BIN='tini-arm64' ; \ - ;; \ - x86_64) \ - TINI_BIN='tini-amd64' ; \ - ;; \ - *) echo >&2 "Unsupported architecture $(arch)" ; exit 1 ;; \ - esac ; \ - TINI_VERSION='v0.19.0' ; \ - curl --retry 8 -S -L -O "https://github.com/krallin/tini/releases/download/${TINI_VERSION}/${TINI_BIN}" ; \ - curl --retry 8 -S -L -O "https://github.com/krallin/tini/releases/download/${TINI_VERSION}/${TINI_BIN}.sha256sum" ; \ - sha256sum -c "${TINI_BIN}.sha256sum" ; \ - rm "${TINI_BIN}.sha256sum" ; \ - mv "${TINI_BIN}" /bin/tini ; \ - chmod +x /bin/tini - -RUN mkdir /usr/share/fonts/local -RUN curl --retry 8 -S -L -o /usr/share/fonts/local/NotoSansCJK-Regular.ttc https://github.com/googlefonts/noto-cjk/raw/NotoSansV2.001/NotoSansCJK-Regular.ttc -RUN echo "5dcd1c336cc9344cb77c03a0cd8982ca8a7dc97d620fd6c9c434e02dcb1ceeb3 /usr/share/fonts/local/NotoSansCJK-Regular.ttc" | sha256sum -c - -RUN fc-cache -v +{{#chainguard}} +RUN apk --no-cache add bash curl fontconfig libstdc++ freetype nss findutils shadow +{{/chainguard}} # Bring in Kibana from the initial stage. COPY --from=builder --chown=1000:0 /usr/share/kibana /usr/share/kibana +COPY --from=builder --chown=0:0 /bin/tini /bin/tini {{#cloud}} COPY --from=builder --chown=0:0 /opt /opt {{/cloud}} +{{^serverless}} +# Load reporting fonts +COPY --from=builder --chown=0:0 /usr/share/fonts/local/NotoSansCJK-Regular.ttc /usr/share/fonts/local/NotoSansCJK-Regular.ttc +RUN fc-cache -v +{{/serverless}} WORKDIR /usr/share/kibana {{#fips}} @@ -127,26 +139,28 @@ WORKDIR /usr/share/kibana # https://github.com/openssl/openssl/blob/openssl-3.0/README-FIPS.md # https://www.openssl.org/docs/man3.0/man7/fips_module.html -# Ideally we would handle this in the builder step, but make is installing over the OS version -# of OpenSSL and requires linking of many submodules. +# Ideally we would handle this in the builder step, but OpenSSL requires linking of many submodules. RUN set -e ; \ - curl --retry 8 -S -L -O https://www.openssl.org/source/openssl-3.0.8.tar.gz ; \ - curl --retry 8 -S -L -O https://www.openssl.org/source/openssl-3.0.8.tar.gz.sha256 ; \ - echo "$(cat openssl-3.0.8.tar.gz.sha256) openssl-3.0.8.tar.gz" | sha256sum -c ; \ - tar -zxf openssl-3.0.8.tar.gz ; \ - rm -rf openssl-3.0.8.tar* ; \ - cd /usr/share/kibana/openssl-3.0.8 ; \ - ./Configure enable-fips ; \ - make -j $(nproc) ; \ - make install ; \ - ldconfig /usr/local/lib64/ ; \ - chown -R 1000:0 /usr/share/kibana/openssl-3.0.8 + OPENSSL_VERSION='3.0.8'; \ + OPENSSL_PATH=/usr/share/kibana/openssl ; \ + mkdir "${OPENSSL_PATH}"; \ + curl --retry 8 -S -L -O "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz" ; \ + curl --retry 8 -S -L -O "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz.sha256" ; \ + echo "$(cat openssl-${OPENSSL_VERSION}.tar.gz.sha256) openssl-${OPENSSL_VERSION}.tar.gz" | sha256sum -c ; \ + tar -zxf "openssl-${OPENSSL_VERSION}.tar.gz" ; \ + rm -rf openssl-${OPENSSL_VERSION}.tar* ; \ + cd "/usr/share/kibana/openssl-${OPENSSL_VERSION}" ; \ + ./Configure --prefix="${OPENSSL_PATH}" --openssldir="${OPENSSL_PATH}/ssl" --libdir="${OPENSSL_PATH}/lib" enable-fips; \ + make -j $(nproc) > /dev/null ; \ + make install > /dev/null ; \ + rm -rf "/usr/share/kibana/openssl-${OPENSSL_VERSION}" ; \ + chown -R 1000:0 "${OPENSSL_PATH}"; # Enable FIPS for Kibana only. In the future we can override OS wide with ENV OPENSSL_CONF RUN /usr/bin/echo -e '\n--enable-fips' >> config/node.options -RUN /usr/bin/echo '--openssl-config=/usr/share/kibana/openssl-3.0.8/nodejs.cnf' >> config/node.options -COPY --chown=1000:0 openssl/nodejs.cnf /usr/share/kibana/openssl-3.0.8/nodejs.cnf -ENV OPENSSL_MODULES=/usr/local/lib64/ossl-modules +RUN /usr/bin/echo '--openssl-config=/usr/share/kibana/config/nodejs.cnf' >> config/node.options +COPY --chown=1000:0 openssl/nodejs.cnf "/usr/share/kibana/config/nodejs.cnf" +ENV OPENSSL_MODULES=/usr/share/kibana/openssl/lib/ossl-modules {{/fips}} RUN ln -s /usr/share/kibana /opt/kibana diff --git a/src/dev/build/tasks/os_packages/docker_generator/templates/dockerfile.template.ts b/src/dev/build/tasks/os_packages/docker_generator/templates/dockerfile.template.ts index dd35323808d514..b07be8b073747e 100755 --- a/src/dev/build/tasks/os_packages/docker_generator/templates/dockerfile.template.ts +++ b/src/dev/build/tasks/os_packages/docker_generator/templates/dockerfile.template.ts @@ -16,7 +16,7 @@ function generator(options: TemplateContext) { const dir = options.ironbank ? 'ironbank' : 'base'; const template = readFileSync(resolve(__dirname, dir, './Dockerfile')); return Mustache.render(template.toString(), { - packageManager: options.baseImage === 'ubi' ? 'microdnf' : 'apt-get', + chainguard: options.baseImage === 'chainguard', ubi: options.baseImage === 'ubi', ubuntu: options.baseImage === 'ubuntu', opensslLegacyProvider: !(options.cloud || options.serverless || options.fips), diff --git a/src/plugins/console/public/application/containers/editor/monaco/hooks/index.ts b/src/plugins/console/public/application/containers/editor/monaco/hooks/index.ts new file mode 100644 index 00000000000000..e0a56ebf655d01 --- /dev/null +++ b/src/plugins/console/public/application/containers/editor/monaco/hooks/index.ts @@ -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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { useResizeCheckerUtils } from './use_resize_checker_utils'; +export { useSetInitialValue } from './use_set_initial_value'; +export { useSetupAutocompletePolling } from './use_setup_autocomplete_polling'; +export { useSetupAutosave } from './use_setup_autosave'; diff --git a/src/plugins/console/public/application/containers/editor/monaco/use_resize_checker_utils.ts b/src/plugins/console/public/application/containers/editor/monaco/hooks/use_resize_checker_utils.ts similarity index 100% rename from src/plugins/console/public/application/containers/editor/monaco/use_resize_checker_utils.ts rename to src/plugins/console/public/application/containers/editor/monaco/hooks/use_resize_checker_utils.ts diff --git a/src/plugins/console/public/application/containers/editor/monaco/use_set_initial_value.ts b/src/plugins/console/public/application/containers/editor/monaco/hooks/use_set_initial_value.ts similarity index 98% rename from src/plugins/console/public/application/containers/editor/monaco/use_set_initial_value.ts rename to src/plugins/console/public/application/containers/editor/monaco/hooks/use_set_initial_value.ts index 9d963bb2cf00f5..ccd45a3a98106d 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/use_set_initial_value.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/hooks/use_set_initial_value.ts @@ -12,7 +12,7 @@ import { IToasts } from '@kbn/core-notifications-browser'; import { decompressFromEncodedURIComponent } from 'lz-string'; import { i18n } from '@kbn/i18n'; import { useEffect } from 'react'; -import { DEFAULT_INPUT_VALUE } from '../../../../../common/constants'; +import { DEFAULT_INPUT_VALUE } from '../../../../../../common/constants'; interface QueryParams { load_from: string; diff --git a/src/plugins/console/public/application/containers/editor/monaco/use_setup_autocomplete_polling.ts b/src/plugins/console/public/application/containers/editor/monaco/hooks/use_setup_autocomplete_polling.ts similarity index 94% rename from src/plugins/console/public/application/containers/editor/monaco/use_setup_autocomplete_polling.ts rename to src/plugins/console/public/application/containers/editor/monaco/hooks/use_setup_autocomplete_polling.ts index c1bf0640ba8dbb..9ec3f17ec6b3f2 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/use_setup_autocomplete_polling.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/hooks/use_setup_autocomplete_polling.ts @@ -7,7 +7,7 @@ */ import { useEffect } from 'react'; -import { AutocompleteInfo, Settings } from '../../../../services'; +import { AutocompleteInfo, Settings } from '../../../../../services'; interface SetupAutocompletePollingParams { /** The Console autocomplete service. */ diff --git a/src/plugins/console/public/application/containers/editor/monaco/use_setup_autosave.ts b/src/plugins/console/public/application/containers/editor/monaco/hooks/use_setup_autosave.ts similarity index 96% rename from src/plugins/console/public/application/containers/editor/monaco/use_setup_autosave.ts rename to src/plugins/console/public/application/containers/editor/monaco/hooks/use_setup_autosave.ts index 323279045fa6ba..0076711b97163f 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/use_setup_autosave.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/hooks/use_setup_autosave.ts @@ -7,7 +7,7 @@ */ import { useEffect, useRef } from 'react'; -import { useSaveCurrentTextObject } from '../../../hooks'; +import { useSaveCurrentTextObject } from '../../../../hooks'; import { readLoadFromParam } from './use_set_initial_value'; interface SetupAutosaveParams { diff --git a/src/plugins/console/public/application/containers/editor/monaco/monaco_editor.tsx b/src/plugins/console/public/application/containers/editor/monaco/monaco_editor.tsx index f4a8cd17f7f303..3a80742615ad29 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/monaco_editor.tsx +++ b/src/plugins/console/public/application/containers/editor/monaco/monaco_editor.tsx @@ -18,12 +18,14 @@ import { useEditorReadContext, useRequestActionContext, } from '../../../contexts'; -import { useSetInitialValue } from './use_set_initial_value'; +import { + useSetInitialValue, + useSetupAutocompletePolling, + useSetupAutosave, + useResizeCheckerUtils, +} from './hooks'; import { MonacoEditorActionsProvider } from './monaco_editor_actions_provider'; -import { useSetupAutocompletePolling } from './use_setup_autocomplete_polling'; -import { useSetupAutosave } from './use_setup_autosave'; import { getSuggestionProvider } from './monaco_editor_suggestion_provider'; -import { useResizeCheckerUtils } from './use_resize_checker_utils'; export interface EditorProps { initialTextValue: string; diff --git a/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_actions_provider.ts b/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_actions_provider.ts index 5c5d454ff1c04b..38fa543b363230 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_actions_provider.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_actions_provider.ts @@ -8,24 +8,22 @@ import { CSSProperties, Dispatch } from 'react'; import { debounce } from 'lodash'; -import { - ConsoleParsedRequestsProvider, - getParsedRequestsProvider, - monaco, - ParsedRequest, -} from '@kbn/monaco'; +import { ConsoleParsedRequestsProvider, getParsedRequestsProvider, monaco } from '@kbn/monaco'; import { IToasts } from '@kbn/core-notifications-browser'; import { i18n } from '@kbn/i18n'; import type { HttpSetup } from '@kbn/core-http-browser'; import { DEFAULT_VARIABLES } from '../../../../../common/constants'; import { getStorage, StorageKeys } from '../../../../services'; -import { sendRequest } from '../../../hooks/use_send_current_request/send_request'; +import { sendRequest } from '../../../hooks'; import { MetricsTracker } from '../../../../types'; import { Actions } from '../../../stores/request'; + import { + AutocompleteType, containsUrlParams, + getBodyCompletionItems, getCurlRequest, - getDocumentationLink, + getDocumentationLinkFromAutocomplete, getLineTokens, getMethodCompletionItems, getRequestEndLineNumber, @@ -33,28 +31,12 @@ import { getUrlParamsCompletionItems, getUrlPathCompletionItems, replaceRequestVariables, + SELECTED_REQUESTS_CLASSNAME, stringifyRequest, trackSentRequests, } from './utils'; -const selectedRequestsClass = 'console__monaco_editor__selectedRequests'; - -export interface EditorRequest { - method: string; - url: string; - data: string[]; -} - -interface AdjustedParsedRequest extends ParsedRequest { - startLineNumber: number; - endLineNumber: number; -} -enum AutocompleteType { - PATH = 'path', - URL_PARAMS = 'url_params', - METHOD = 'method', - BODY = 'body', -} +import type { AdjustedParsedRequest } from './types'; export class MonacoEditorActionsProvider { private parsedRequestsProvider: ConsoleParsedRequestsProvider; @@ -125,7 +107,7 @@ export class MonacoEditorActionsProvider { range: selectedRange, options: { isWholeLine: true, - className: selectedRequestsClass, + className: SELECTED_REQUESTS_CLASSNAME, }, }, ]); @@ -255,7 +237,7 @@ export class MonacoEditorActionsProvider { } const request = requests[0]; - return getDocumentationLink(request, docLinkVersion); + return getDocumentationLinkFromAutocomplete(request, docLinkVersion); } private async getAutocompleteType( @@ -302,7 +284,11 @@ export class MonacoEditorActionsProvider { return AutocompleteType.BODY; } - private async getSuggestions(model: monaco.editor.ITextModel, position: monaco.Position) { + private async getSuggestions( + model: monaco.editor.ITextModel, + position: monaco.Position, + context: monaco.languages.CompletionContext + ) { // determine autocomplete type const autocompleteType = await this.getAutocompleteType(model, position); if (!autocompleteType) { @@ -328,6 +314,23 @@ export class MonacoEditorActionsProvider { }; } + if (autocompleteType === AutocompleteType.BODY) { + // suggestions only when triggered by " or keyboard + if (context.triggerCharacter && context.triggerCharacter !== '"') { + return { suggestions: [] }; + } + const requests = await this.getRequestsBetweenLines( + model, + position.lineNumber, + position.lineNumber + ); + const requestStartLineNumber = requests[0].startLineNumber; + const suggestions = getBodyCompletionItems(model, position, requestStartLineNumber); + return { + suggestions, + }; + } + return { suggestions: [], }; @@ -338,6 +341,6 @@ export class MonacoEditorActionsProvider { context: monaco.languages.CompletionContext, token: monaco.CancellationToken ): monaco.languages.ProviderResult { - return this.getSuggestions(model, position); + return this.getSuggestions(model, position, context); } } diff --git a/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_output.tsx b/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_output.tsx index f11ea7479d461e..4480538544d9bc 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_output.tsx +++ b/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_output.tsx @@ -22,7 +22,7 @@ import { safeExpandLiteralStrings, languageForContentType, } from '../utilities'; -import { useResizeCheckerUtils } from './use_resize_checker_utils'; +import { useResizeCheckerUtils } from './hooks'; export const MonacoEditorOutput: FunctionComponent = () => { const { settings: readOnlySettings } = useEditorReadContext(); diff --git a/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_suggestion_provider.ts b/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_suggestion_provider.ts index 7dab08f855b300..95b9e98faaff7a 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_suggestion_provider.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_suggestion_provider.ts @@ -15,7 +15,7 @@ export const getSuggestionProvider = ( ): monaco.languages.CompletionItemProvider => { return { // force suggestions when these characters are used - triggerCharacters: ['/', '.', '_', ',', '?', '=', '&'], + triggerCharacters: ['/', '.', '_', ',', '?', '=', '&', '"'], provideCompletionItems: (...args) => { if (actionsProvider.current) { return actionsProvider.current?.provideCompletionItems(...args); diff --git a/src/plugins/console/public/application/containers/editor/monaco/types.ts b/src/plugins/console/public/application/containers/editor/monaco/types.ts new file mode 100644 index 00000000000000..07e823aed8e089 --- /dev/null +++ b/src/plugins/console/public/application/containers/editor/monaco/types.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { ParsedRequest } from '@kbn/monaco'; + +export interface EditorRequest { + method: string; + url: string; + data: string[]; +} + +export interface AdjustedParsedRequest extends ParsedRequest { + startLineNumber: number; + endLineNumber: number; +} diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils.ts b/src/plugins/console/public/application/containers/editor/monaco/utils.ts deleted file mode 100644 index 669869adc40216..00000000000000 --- a/src/plugins/console/public/application/containers/editor/monaco/utils.ts +++ /dev/null @@ -1,395 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { monaco, ParsedRequest } from '@kbn/monaco'; -import { i18n } from '@kbn/i18n'; -import { getTopLevelUrlCompleteComponents } from '../../../../lib/kb'; -import { AutoCompleteContext } from '../../../../lib/autocomplete/types'; -import { constructUrl } from '../../../../lib/es'; -import type { DevToolsVariable } from '../../../components'; -import { EditorRequest } from './monaco_editor_actions_provider'; -import { MetricsTracker } from '../../../../types'; -import { populateContext } from '../../../../lib/autocomplete/engine'; - -/* - * Helper constants - */ -const whitespacesRegex = /\s+/; -const slashRegex = /\//; -const ampersandRegex = /&/; -const equalsSignRegex = /=/; -const variableTemplateRegex = /\${(\w+)}/g; -const endOfUrlToken = '__url_path_end__'; - -/* - * Helper interfaces - */ -export interface ParsedLineTokens { - method: string; - urlPathTokens: string[]; - urlParamsTokens: string[][]; -} - -/* - * i18n for autocomplete labels - */ -const methodDetailLabel = i18n.translate('console.autocompleteSuggestions.methodLabel', { - defaultMessage: 'method', -}); -const endpointDetailLabel = i18n.translate('console.autocompleteSuggestions.endpointLabel', { - defaultMessage: 'endpoint', -}); -const paramDetailLabel = i18n.translate('console.autocompleteSuggestions.paramLabel', { - defaultMessage: 'param', -}); - -/* - * This functions removes any trailing inline comments, for example - * "_search // comment" -> "_search" - * Ideally the parser would do that, but currently they are included in url. - */ -export const removeTrailingWhitespaces = (url: string): string => { - return url.trim().split(whitespacesRegex)[0]; -}; - -export const stringifyRequest = (parsedRequest: ParsedRequest): EditorRequest => { - const url = removeTrailingWhitespaces(parsedRequest.url); - const method = parsedRequest.method.toUpperCase(); - const data = parsedRequest.data?.map((parsedData) => JSON.stringify(parsedData, null, 2)); - return { url, method, data: data ?? [] }; -}; - -const replaceVariables = (text: string, variables: DevToolsVariable[]): string => { - if (variableTemplateRegex.test(text)) { - text = text.replaceAll(variableTemplateRegex, (match, key) => { - const variable = variables.find(({ name }) => name === key); - - return variable?.value ?? match; - }); - } - return text; -}; - -export const replaceRequestVariables = ( - { method, url, data }: EditorRequest, - variables: DevToolsVariable[] -): EditorRequest => { - return { - method, - url: replaceVariables(url, variables), - data: data.map((dataObject) => replaceVariables(dataObject, variables)), - }; -}; - -export const getCurlRequest = ( - { method, url, data }: EditorRequest, - elasticsearchBaseUrl: string -): string => { - const curlUrl = constructUrl(elasticsearchBaseUrl, url); - let curlRequest = `curl -X${method} "${curlUrl}" -H "kbn-xsrf: reporting"`; - if (data.length > 0) { - curlRequest += ` -H "Content-Type: application/json" -d'\n`; - curlRequest += data.join('\n'); - curlRequest += "'"; - } - return curlRequest; -}; - -export const trackSentRequests = ( - requests: EditorRequest[], - trackUiMetric: MetricsTracker -): void => { - requests.map(({ method, url }) => { - const eventName = `${method}_${url}`; - trackUiMetric.count(eventName); - }); -}; - -/* - * This function initializes the autocomplete context for the request - * and returns a documentation link from the endpoint object - * with the branch in the url replaced by the current version "docLinkVersion" - */ -export const getDocumentationLink = (request: EditorRequest, docLinkVersion: string) => { - // get the url parts from the request url - const { urlPathTokens } = parseUrlTokens(request.url); - // remove the last token, if it's empty - if (!urlPathTokens[urlPathTokens.length - 1]) { - urlPathTokens.pop(); - } - // add the end of url token - urlPathTokens.push(endOfUrlToken); - const { endpoint } = populateContextForMethodAndUrl(request.method, urlPathTokens); - if (endpoint && endpoint.documentation && endpoint.documentation.indexOf('http') !== -1) { - return endpoint.documentation - .replace('/master/', `/${docLinkVersion}/`) - .replace('/current/', `/${docLinkVersion}/`) - .replace('/{branch}/', `/${docLinkVersion}/`); - } - return null; -}; - -/* - * This function converts the start offset value of the parsed request to a line number in the model - */ -export const getRequestStartLineNumber = ( - parsedRequest: ParsedRequest, - model: monaco.editor.ITextModel -): number => { - return model.getPositionAt(parsedRequest.startOffset).lineNumber; -}; - -/* - * This function converts the end offset value of the parsed request to a line number in the model. - * If there is no end offset (the parser was not able to parse this request completely), - * then the last non-empty line is returned or the line before the next request. - */ -export const getRequestEndLineNumber = ( - parsedRequest: ParsedRequest, - model: monaco.editor.ITextModel, - index: number, - parsedRequests: ParsedRequest[] -): number => { - let endLineNumber: number; - if (parsedRequest.endOffset) { - // if the parser set an end offset for this request, then find the line number for it - endLineNumber = model.getPositionAt(parsedRequest.endOffset).lineNumber; - } else { - // if no end offset, try to find the line before the next request starts - const nextRequest = parsedRequests.at(index + 1); - if (nextRequest) { - const nextRequestStartLine = model.getPositionAt(nextRequest.startOffset).lineNumber; - endLineNumber = nextRequestStartLine - 1; - } else { - // if there is no next request, take the last line of the model - endLineNumber = model.getLineCount(); - } - } - // if the end line is empty, go up to find the first non-empty line - let lineContent = model.getLineContent(endLineNumber).trim(); - while (!lineContent) { - endLineNumber = endLineNumber - 1; - lineContent = model.getLineContent(endLineNumber).trim(); - } - return endLineNumber; -}; - -/* - * This function returns an array of completion items for the request method - */ -const autocompleteMethods = ['GET', 'PUT', 'POST', 'DELETE', 'HEAD', 'PATCH']; -export const getMethodCompletionItems = ( - model: monaco.editor.ITextModel, - position: monaco.Position -): monaco.languages.CompletionItem[] => { - // get the word before suggestions to replace when selecting a suggestion from the list - const wordUntilPosition = model.getWordUntilPosition(position); - return autocompleteMethods.map((method) => ({ - label: method, - insertText: method, - detail: methodDetailLabel, - // only used to configure the icon - kind: monaco.languages.CompletionItemKind.Constant, - range: { - // replace the whole word with the suggestion - startColumn: wordUntilPosition.startColumn, - startLineNumber: position.lineNumber, - endColumn: position.column, - endLineNumber: position.lineNumber, - }, - })); -}; - -/* - * This function splits a string on whitespaces and returns its parts as an array - */ -export const getLineTokens = (lineContent: string): string[] => { - return lineContent.split(whitespacesRegex); -}; - -/* - * This function checks if the url contains url params - */ -const questionMarkRegex = /\?/; -export const containsUrlParams = (lineContent: string): boolean => { - return questionMarkRegex.test(lineContent); -}; - -/* - * This function initializes the autocomplete context for the provided method and url token path. - */ -const populateContextForMethodAndUrl = (method: string, urlTokenPath: string[]) => { - // get autocomplete components for the request method - const components = getTopLevelUrlCompleteComponents(method); - // this object will contain the information later, it needs to be initialized with some data - // similar to the old ace editor context - const context: AutoCompleteContext = { - method, - urlTokenPath, - }; - - // mutate the context object and put the autocomplete information there - populateContext(urlTokenPath, context, undefined, true, components); - - return context; -}; - -/* - * This function returns an array of completion items for the request method and the url path - */ -export const getUrlPathCompletionItems = ( - model: monaco.editor.ITextModel, - position: monaco.Position -): monaco.languages.CompletionItem[] => { - const { lineNumber, column } = position; - // get the content of the line up until the current position - const lineContent = model.getValueInRange({ - startLineNumber: lineNumber, - startColumn: 1, - endLineNumber: lineNumber, - endColumn: column, - }); - - // get the method and previous url parts for context - const { method, urlPathTokens } = parseLineContent(lineContent); - // remove the last token that is either empty if the url has like "_search/" as the last char - // or it's a word that need to be replaced with autocomplete suggestions like "_search/s" - urlPathTokens.pop(); - const { autoCompleteSet } = populateContextForMethodAndUrl(method, urlPathTokens); - - const wordUntilPosition = model.getWordUntilPosition(position); - const range = { - startLineNumber: position.lineNumber, - // replace the whole word with the suggestion - startColumn: lineContent.endsWith('.') - ? // if there is a dot at the end of the content, it's ignored in the wordUntilPosition - wordUntilPosition.startColumn - 1 - : wordUntilPosition.startColumn, - endLineNumber: position.lineNumber, - endColumn: position.column, - }; - if (autoCompleteSet && autoCompleteSet.length > 0) { - return ( - autoCompleteSet - // filter autocomplete items without a name - .filter(({ name }) => Boolean(name)) - // map autocomplete items to completion items - .map((item) => { - return { - label: item.name!, - insertText: item.name!, - detail: item.meta ?? endpointDetailLabel, - // the kind is only used to configure the icon - kind: monaco.languages.CompletionItemKind.Constant, - range, - }; - }) - ); - } - return []; -}; - -/* - * This function returns an array of completion items for the url params - */ -export const getUrlParamsCompletionItems = ( - model: monaco.editor.ITextModel, - position: monaco.Position -): monaco.languages.CompletionItem[] => { - const { lineNumber, column } = position; - // get the content of the line up until the current position - const lineContent = model.getValueInRange({ - startLineNumber: lineNumber, - startColumn: 1, - endLineNumber: lineNumber, - endColumn: column, - }); - - // get the method and previous url parts for context - const { method, urlPathTokens, urlParamsTokens } = parseLineContent(lineContent); - urlPathTokens.push(endOfUrlToken); - const context = populateContextForMethodAndUrl(method, urlPathTokens); - - const urlParamsComponents = context.endpoint?.paramsAutocomplete.getTopLevelComponents(method); - - const currentUrlParamToken = urlParamsTokens.pop(); - // check if we are at the param name or the param value - const urlParamTokenPath = []; - // if there are 2 tokens in the current url param, then we have the name and the value of the param - if (currentUrlParamToken && currentUrlParamToken.length > 1) { - urlParamTokenPath.push(currentUrlParamToken![0]); - } - - populateContext(urlParamTokenPath, context, undefined, true, urlParamsComponents); - - if (context.autoCompleteSet && context.autoCompleteSet.length > 0) { - const wordUntilPosition = model.getWordUntilPosition(position); - const range = { - startLineNumber: position.lineNumber, - // replace the whole word with the suggestion - startColumn: wordUntilPosition.startColumn, - endLineNumber: position.lineNumber, - endColumn: position.column, - }; - return ( - context.autoCompleteSet - // filter autocomplete items without a name - .filter(({ name }) => Boolean(name)) - // map autocomplete items to completion items - .map((item) => { - return { - label: item.name!, - insertText: item.name!, - detail: item.meta ?? paramDetailLabel, - // the kind is only used to configure the icon - kind: monaco.languages.CompletionItemKind.Constant, - range, - }; - }) - ); - } - return []; -}; - -const parseLineContent = (lineContent: string): ParsedLineTokens => { - // try to parse into method and url (split on whitespace) - const parts = lineContent.split(whitespacesRegex); - // 1st part is the method - const method = parts[0]; - // 2nd part is the url - const url = parts[1]; - // try to parse into url path and url params (split on question mark) - const { urlPathTokens, urlParamsTokens } = parseUrlTokens(url); - return { method, urlPathTokens, urlParamsTokens }; -}; - -const parseUrlTokens = ( - url: string -): { - urlPathTokens: ParsedLineTokens['urlPathTokens']; - urlParamsTokens: ParsedLineTokens['urlParamsTokens']; -} => { - let urlPathTokens: ParsedLineTokens['urlPathTokens'] = []; - let urlParamsTokens: ParsedLineTokens['urlParamsTokens'] = []; - const urlParts = url.split(questionMarkRegex); - // 1st part is the url path - const urlPath = urlParts[0]; - // try to parse into url path tokens (split on slash) - if (urlPath) { - urlPathTokens = urlPath.split(slashRegex); - } - // 2nd part is the url params - const urlParams = urlParts[1]; - // try to parse into url param tokens - if (urlParams) { - urlParamsTokens = urlParams.split(ampersandRegex).map((urlParamsPart) => { - return urlParamsPart.split(equalsSignRegex); - }); - } - return { urlPathTokens, urlParamsTokens }; -}; diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.test.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.test.ts new file mode 100644 index 00000000000000..9755bf4e8f442c --- /dev/null +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.test.ts @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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. + */ +/* + * Mock the function "populateContext" that accesses the autocomplete definitions + */ +const mockPopulateContext = jest.fn(); + +jest.mock('../../../../../lib/autocomplete/engine', () => { + return { + populateContext: (...args: any) => { + mockPopulateContext(args); + }, + }; +}); +import { AutoCompleteContext } from '../../../../../lib/autocomplete/types'; +import { getDocumentationLinkFromAutocomplete } from './autocomplete_utils'; + +describe('autocomplete_utils', () => { + describe('getDocumentationLinkFromAutocomplete', () => { + const mockRequest = { method: 'GET', url: '_search', data: [] }; + const version = '8.13'; + const expectedLink = 'http://elastic.co/8.13/_search'; + + it('correctly replaces {branch} with the version', () => { + const endpoint = { + documentation: 'http://elastic.co/{branch}/_search', + } as AutoCompleteContext['endpoint']; + // mock the populateContext function that finds the correct autocomplete endpoint object and puts it into the context object + mockPopulateContext.mockImplementation((...args) => { + const context = args[0][1]; + context.endpoint = endpoint; + }); + const link = getDocumentationLinkFromAutocomplete(mockRequest, version); + expect(link).toBe(expectedLink); + }); + + it('correctly replaces /master/ with the version', () => { + const endpoint = { + documentation: 'http://elastic.co/master/_search', + } as AutoCompleteContext['endpoint']; + // mock the populateContext function that finds the correct autocomplete endpoint object and puts it into the context object + mockPopulateContext.mockImplementation((...args) => { + const context = args[0][1]; + context.endpoint = endpoint; + }); + const link = getDocumentationLinkFromAutocomplete(mockRequest, version); + expect(link).toBe(expectedLink); + }); + + it('correctly replaces /current/ with the version', () => { + const endpoint = { + documentation: 'http://elastic.co/current/_search', + } as AutoCompleteContext['endpoint']; + // mock the populateContext function that finds the correct autocomplete endpoint object and puts it into the context object + mockPopulateContext.mockImplementation((...args) => { + const context = args[0][1]; + context.endpoint = endpoint; + }); + const link = getDocumentationLinkFromAutocomplete(mockRequest, version); + expect(link).toBe(expectedLink); + }); + }); +}); diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.ts new file mode 100644 index 00000000000000..75a46590143c49 --- /dev/null +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.ts @@ -0,0 +1,319 @@ +/* + * Copyright 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 { monaco } from '@kbn/monaco'; +import { + getEndpointBodyCompleteComponents, + getGlobalAutocompleteComponents, + getTopLevelUrlCompleteComponents, + getUnmatchedEndpointComponents, +} from '../../../../../lib/kb'; +import { AutoCompleteContext, ResultTerm } from '../../../../../lib/autocomplete/types'; +import { populateContext } from '../../../../../lib/autocomplete/engine'; +import type { EditorRequest } from '../types'; +import { parseBody, parseLine, parseUrl } from './tokens_utils'; +import { END_OF_URL_TOKEN, i18nTexts, newLineRegex } from './constants'; + +/* + * This function initializes the autocomplete context for the request + * and returns a documentation link from the endpoint object + * with the branch in the url replaced by the current version "docLinkVersion" + */ +export const getDocumentationLinkFromAutocomplete = ( + request: EditorRequest, + docLinkVersion: string +) => { + // get the url parts from the request url + const { urlPathTokens } = parseUrl(request.url); + // remove the last token, if it's empty + if (!urlPathTokens[urlPathTokens.length - 1]) { + urlPathTokens.pop(); + } + // add the end of url token + urlPathTokens.push(END_OF_URL_TOKEN); + const { endpoint } = populateContextForMethodAndUrl(request.method, urlPathTokens); + if (endpoint && endpoint.documentation && endpoint.documentation.indexOf('http') !== -1) { + return endpoint.documentation + .replace('/master/', `/${docLinkVersion}/`) + .replace('/current/', `/${docLinkVersion}/`) + .replace('/{branch}/', `/${docLinkVersion}/`); + } + return null; +}; + +/* + * This function returns an array of completion items for the request method + */ +const autocompleteMethods = ['GET', 'PUT', 'POST', 'DELETE', 'HEAD', 'PATCH']; +export const getMethodCompletionItems = ( + model: monaco.editor.ITextModel, + position: monaco.Position +): monaco.languages.CompletionItem[] => { + // get the word before suggestions to replace when selecting a suggestion from the list + const wordUntilPosition = model.getWordUntilPosition(position); + return autocompleteMethods.map((method) => ({ + label: method, + insertText: method, + detail: i18nTexts.method, + // only used to configure the icon + kind: monaco.languages.CompletionItemKind.Constant, + range: { + // replace the whole word with the suggestion + startColumn: wordUntilPosition.startColumn, + startLineNumber: position.lineNumber, + endColumn: position.column, + endLineNumber: position.lineNumber, + }, + })); +}; + +/* + * This function initializes the autocomplete context for the provided method and url token path. + */ +const populateContextForMethodAndUrl = (method: string, urlTokenPath: string[]) => { + // get autocomplete components for the request method + const components = getTopLevelUrlCompleteComponents(method); + // this object will contain the information later, it needs to be initialized with some data + // similar to the old ace editor context + const context: AutoCompleteContext = { + method, + urlTokenPath, + }; + + // mutate the context object and put the autocomplete information there + populateContext(urlTokenPath, context, undefined, true, components); + + return context; +}; + +/* + * This function returns an array of completion items for the request method and the url path + */ +export const getUrlPathCompletionItems = ( + model: monaco.editor.ITextModel, + position: monaco.Position +): monaco.languages.CompletionItem[] => { + const { lineNumber, column } = position; + // get the content of the line up until the current position + const lineContent = model.getValueInRange({ + startLineNumber: lineNumber, + startColumn: 1, + endLineNumber: lineNumber, + endColumn: column, + }); + + // get the method and previous url parts for context + const { method, urlPathTokens } = parseLine(lineContent); + // remove the last token that is either empty if the url has like "_search/" as the last char + // or it's a word that need to be replaced with autocomplete suggestions like "_search/s" + urlPathTokens.pop(); + const { autoCompleteSet } = populateContextForMethodAndUrl(method, urlPathTokens); + + const wordUntilPosition = model.getWordUntilPosition(position); + const range = { + startLineNumber: position.lineNumber, + // replace the whole word with the suggestion + startColumn: lineContent.endsWith('.') + ? // if there is a dot at the end of the content, it's ignored in the wordUntilPosition + wordUntilPosition.startColumn - 1 + : wordUntilPosition.startColumn, + endLineNumber: position.lineNumber, + endColumn: position.column, + }; + if (autoCompleteSet && autoCompleteSet.length > 0) { + return ( + autoCompleteSet + // filter autocomplete items without a name + .filter(({ name }) => Boolean(name)) + // map autocomplete items to completion items + .map((item) => { + return { + label: item.name!, + insertText: item.name!, + detail: item.meta ?? i18nTexts.endpoint, + // the kind is only used to configure the icon + kind: monaco.languages.CompletionItemKind.Constant, + range, + }; + }) + ); + } + return []; +}; + +/* + * This function returns an array of completion items for the url params + */ +export const getUrlParamsCompletionItems = ( + model: monaco.editor.ITextModel, + position: monaco.Position +): monaco.languages.CompletionItem[] => { + const { lineNumber, column } = position; + // get the content of the line up until the current position + const lineContent = model.getValueInRange({ + startLineNumber: lineNumber, + startColumn: 1, + endLineNumber: lineNumber, + endColumn: column, + }); + + // get the method and previous url parts for context + const { method, urlPathTokens, urlParamsTokens } = parseLine(lineContent); + urlPathTokens.push(END_OF_URL_TOKEN); + const context = populateContextForMethodAndUrl(method, urlPathTokens); + + const urlParamsComponents = context.endpoint?.paramsAutocomplete.getTopLevelComponents(method); + + const currentUrlParamToken = urlParamsTokens.pop(); + // check if we are at the param name or the param value + const urlParamTokenPath = []; + // if there are 2 tokens in the current url param, then we have the name and the value of the param + if (currentUrlParamToken && currentUrlParamToken.length > 1) { + urlParamTokenPath.push(currentUrlParamToken![0]); + } + + populateContext(urlParamTokenPath, context, undefined, true, urlParamsComponents); + + if (context.autoCompleteSet && context.autoCompleteSet.length > 0) { + const wordUntilPosition = model.getWordUntilPosition(position); + const range = { + startLineNumber: position.lineNumber, + // replace the whole word with the suggestion + startColumn: wordUntilPosition.startColumn, + endLineNumber: position.lineNumber, + endColumn: position.column, + }; + return ( + context.autoCompleteSet + // filter autocomplete items without a name + .filter(({ name }) => Boolean(name)) + // map autocomplete items to completion items + .map((item) => { + return { + label: item.name!, + insertText: item.name!, + detail: item.meta ?? i18nTexts.param, + // the kind is only used to configure the icon + kind: monaco.languages.CompletionItemKind.Constant, + range, + }; + }) + ); + } + return []; +}; + +/* + * This function returns an array of completion items for the request body params + */ +export const getBodyCompletionItems = ( + model: monaco.editor.ITextModel, + position: monaco.Position, + requestStartLineNumber: number +): monaco.languages.CompletionItem[] => { + const { lineNumber, column } = position; + + // get the content on the method+url line + const lineContent = model.getLineContent(requestStartLineNumber); + // get the method and previous url parts for context + const { method, urlPathTokens } = parseLine(lineContent); + urlPathTokens.push(END_OF_URL_TOKEN); + const context = populateContextForMethodAndUrl(method, urlPathTokens); + + // get the content of the request body up until this position + const bodyRange: monaco.IRange = { + startLineNumber: requestStartLineNumber + 1, + startColumn: 1, + endLineNumber: lineNumber, + endColumn: column, + }; + const bodyContent = model.getValueInRange(bodyRange); + + const bodyTokens = parseBody(bodyContent); + // needed for scope linking + global term resolving + context.endpointComponentResolver = getEndpointBodyCompleteComponents; + context.globalComponentResolver = getGlobalAutocompleteComponents; + let components: unknown; + if (context.endpoint) { + components = context.endpoint.bodyAutocompleteRootComponents; + } else { + components = getUnmatchedEndpointComponents(); + } + populateContext(bodyTokens, context, undefined, true, components); + + if (context.autoCompleteSet && context.autoCompleteSet.length > 0) { + const wordUntilPosition = model.getWordUntilPosition(position); + // if there is " after the cursor, replace it + let endColumn = position.column; + const charAfterPosition = model.getValueInRange({ + startLineNumber: position.lineNumber, + startColumn: position.column, + endLineNumber: position.lineNumber, + endColumn: position.column + 1, + }); + if (charAfterPosition === '"') { + endColumn = endColumn + 1; + } + const range = { + startLineNumber: position.lineNumber, + // replace the whole word with the suggestion + startColumn: wordUntilPosition.startColumn, + endLineNumber: position.lineNumber, + endColumn, + }; + return ( + context.autoCompleteSet + // filter autocomplete items without a name + .filter(({ name }) => Boolean(name)) + // map autocomplete items to completion items + .map((item) => { + const suggestion = { + // convert name to a string + label: item.name + '', + insertText: getInsertText(item, bodyContent), + detail: i18nTexts.api, + // the kind is only used to configure the icon + kind: monaco.languages.CompletionItemKind.Constant, + range, + insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, + }; + return suggestion; + }) + ); + } + return []; +}; + +const getInsertText = ( + { name, insertValue, template, value }: ResultTerm, + bodyContent: string +): string => { + let insertText = bodyContent.endsWith('"') ? '' : '"'; + if (insertValue && insertValue !== '{' && insertValue !== '[') { + insertText += `${insertValue}"`; + } else { + insertText += `${name}"`; + } + // check if there is template to add + if (template !== undefined) { + let templateLines; + const { __raw, value: templateValue } = template; + if (__raw && templateValue) { + templateLines = templateValue.split(newLineRegex); + } else { + templateLines = JSON.stringify(template, null, 2).split(newLineRegex); + } + // TODO add correct indentation + insertText += ': ' + templateLines.join('\n'); + } else if (value === '{') { + insertText += '{}'; + } else if (value === '[') { + insertText += '[]'; + } + return insertText; +}; diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/constants.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/constants.ts new file mode 100644 index 00000000000000..c0616fc4dc0a17 --- /dev/null +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/constants.ts @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; + +/* + * CSS class name used for the styling of highlighted requests + */ +export const SELECTED_REQUESTS_CLASSNAME = 'console__monaco_editor__selectedRequests'; + +export const whitespacesRegex = /\s+/; +export const newLineRegex = /\n/; +export const slashRegex = /\//; +export const ampersandRegex = /&/; +export const equalsSignRegex = /=/; +export const questionMarkRegex = /\?/; +export const variableTemplateRegex = /\${(\w+)}/g; +export const numberStartRegex = /[-\d]/; +export const digitRegex = /[\d]/; +export const END_OF_URL_TOKEN = '__url_path_end__'; + +/* + * i18n for autocomplete labels + */ +export const i18nTexts = { + method: i18n.translate('console.autocompleteSuggestions.methodLabel', { + defaultMessage: 'method', + }), + endpoint: i18n.translate('console.autocompleteSuggestions.endpointLabel', { + defaultMessage: 'endpoint', + }), + param: i18n.translate('console.autocompleteSuggestions.paramLabel', { + defaultMessage: 'param', + }), + api: i18n.translate('console.autocompleteSuggestions.apiLabel', { + defaultMessage: 'API', + }), +}; + +export enum AutocompleteType { + PATH = 'path', + URL_PARAMS = 'url_params', + METHOD = 'method', + BODY = 'body', +} diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/index.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/index.ts new file mode 100644 index 00000000000000..2b117bcfd558d3 --- /dev/null +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/index.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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { AutocompleteType, SELECTED_REQUESTS_CLASSNAME } from './constants'; +export { + getRequestStartLineNumber, + getRequestEndLineNumber, + stringifyRequest, + replaceRequestVariables, + getCurlRequest, + trackSentRequests, +} from './requests_utils'; +export { + getDocumentationLinkFromAutocomplete, + getMethodCompletionItems, + getUrlPathCompletionItems, + getUrlParamsCompletionItems, + getBodyCompletionItems, +} from './autocomplete_utils'; +export { getLineTokens, containsUrlParams } from './tokens_utils'; diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils.test.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/requests_utils.test.ts similarity index 63% rename from src/plugins/console/public/application/containers/editor/monaco/utils.test.ts rename to src/plugins/console/public/application/containers/editor/monaco/utils/requests_utils.test.ts index c1472c7627fac5..14235e57c6f016 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/utils.test.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/requests_utils.test.ts @@ -8,29 +8,13 @@ import { getCurlRequest, - getDocumentationLink, - removeTrailingWhitespaces, replaceRequestVariables, stringifyRequest, trackSentRequests, -} from './utils'; -import { MetricsTracker } from '../../../../types'; -import { AutoCompleteContext } from '../../../../lib/autocomplete/types'; +} from './requests_utils'; +import { MetricsTracker } from '../../../../../types'; -/* - * Mock the function "populateContext" that accesses the autocomplete definitions - */ -const mockPopulateContext = jest.fn(); - -jest.mock('../../../../lib/autocomplete/engine', () => { - return { - populateContext: (...args: any) => { - mockPopulateContext(args); - }, - }; -}); - -describe('monaco editor utils', () => { +describe('requests_utils', () => { const dataObjects = [ { query: { @@ -41,24 +25,6 @@ describe('monaco editor utils', () => { test: 'test', }, ]; - describe('removeTrailingWhitespaces', () => { - it(`works with an empty string`, () => { - const url = ''; - const result = removeTrailingWhitespaces(url); - expect(result).toBe(url); - }); - it(`doesn't change the string if no trailing whitespaces`, () => { - const url = '_search'; - const result = removeTrailingWhitespaces(url); - expect(result).toBe(url); - }); - it(`removes any text after the first whitespace`, () => { - const url = '_search some_text'; - const result = removeTrailingWhitespaces(url); - expect(result).toBe('_search'); - }); - }); - describe('stringifyRequest', () => { const request = { startOffset: 0, @@ -194,49 +160,4 @@ describe('monaco editor utils', () => { expect(mockMetricsTracker.count).toHaveBeenNthCalledWith(2, 'POST__test'); }); }); - - describe('getDocumentationLink', () => { - const mockRequest = { method: 'GET', url: '_search', data: [] }; - const version = '8.13'; - const expectedLink = 'http://elastic.co/8.13/_search'; - - it('correctly replaces {branch} with the version', () => { - const endpoint = { - documentation: 'http://elastic.co/{branch}/_search', - } as AutoCompleteContext['endpoint']; - // mock the populateContext function that finds the correct autocomplete endpoint object and puts it into the context object - mockPopulateContext.mockImplementation((...args) => { - const context = args[0][1]; - context.endpoint = endpoint; - }); - const link = getDocumentationLink(mockRequest, version); - expect(link).toBe(expectedLink); - }); - - it('correctly replaces /master/ with the version', () => { - const endpoint = { - documentation: 'http://elastic.co/master/_search', - } as AutoCompleteContext['endpoint']; - // mock the populateContext function that finds the correct autocomplete endpoint object and puts it into the context object - mockPopulateContext.mockImplementation((...args) => { - const context = args[0][1]; - context.endpoint = endpoint; - }); - const link = getDocumentationLink(mockRequest, version); - expect(link).toBe(expectedLink); - }); - - it('correctly replaces /current/ with the version', () => { - const endpoint = { - documentation: 'http://elastic.co/current/_search', - } as AutoCompleteContext['endpoint']; - // mock the populateContext function that finds the correct autocomplete endpoint object and puts it into the context object - mockPopulateContext.mockImplementation((...args) => { - const context = args[0][1]; - context.endpoint = endpoint; - }); - const link = getDocumentationLink(mockRequest, version); - expect(link).toBe(expectedLink); - }); - }); }); diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/requests_utils.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/requests_utils.ts new file mode 100644 index 00000000000000..7f9babb333e894 --- /dev/null +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/requests_utils.ts @@ -0,0 +1,132 @@ +/* + * Copyright 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 { monaco, ParsedRequest } from '@kbn/monaco'; +import { constructUrl } from '../../../../../lib/es'; +import { MetricsTracker } from '../../../../../types'; +import type { DevToolsVariable } from '../../../../components'; +import type { EditorRequest } from '../types'; +import { variableTemplateRegex } from './constants'; +import { removeTrailingWhitespaces } from './tokens_utils'; + +/* + * This function stringifies and normalizes the parsed request: + * - the method is converted to upper case + * - any trailing comments are removed from the url + * - the request body is stringified from an object using JSON.stringify + */ +export const stringifyRequest = (parsedRequest: ParsedRequest): EditorRequest => { + const url = removeTrailingWhitespaces(parsedRequest.url); + const method = parsedRequest.method.toUpperCase(); + const data = parsedRequest.data?.map((parsedData) => JSON.stringify(parsedData, null, 2)); + return { url, method, data: data ?? [] }; +}; + +/* + * This function replaces any variables with its values stored in localStorage. + * For example 'GET ${exampleVariable1} -> 'GET _search'. + */ +export const replaceRequestVariables = ( + { method, url, data }: EditorRequest, + variables: DevToolsVariable[] +): EditorRequest => { + return { + method, + url: replaceVariables(url, variables), + data: data.map((dataObject) => replaceVariables(dataObject, variables)), + }; +}; + +/* + * This function converts a request into a corresponding CURL command. + */ +export const getCurlRequest = ( + { method, url, data }: EditorRequest, + elasticsearchBaseUrl: string +): string => { + const curlUrl = constructUrl(elasticsearchBaseUrl, url); + let curlRequest = `curl -X${method} "${curlUrl}" -H "kbn-xsrf: reporting"`; + if (data.length > 0) { + curlRequest += ` -H "Content-Type: application/json" -d'\n`; + curlRequest += data.join('\n'); + curlRequest += "'"; + } + return curlRequest; +}; + +/* + * This function uses the telemetry to track requests sent via Console. + */ +export const trackSentRequests = ( + requests: EditorRequest[], + trackUiMetric: MetricsTracker +): void => { + requests.map(({ method, url }) => { + const eventName = `${method}_${url}`; + trackUiMetric.count(eventName); + }); +}; + +/* + * This function converts the start offset value of the parsed request to a line number in the model + */ +export const getRequestStartLineNumber = ( + parsedRequest: ParsedRequest, + model: monaco.editor.ITextModel +): number => { + return model.getPositionAt(parsedRequest.startOffset).lineNumber; +}; + +/* + * This function converts the end offset value of the parsed request to a line number in the model. + * If there is no end offset (the parser was not able to parse this request completely), + * then the last non-empty line is returned or the line before the next request. + */ +export const getRequestEndLineNumber = ( + parsedRequest: ParsedRequest, + model: monaco.editor.ITextModel, + index: number, + parsedRequests: ParsedRequest[] +): number => { + let endLineNumber: number; + if (parsedRequest.endOffset) { + // if the parser set an end offset for this request, then find the line number for it + endLineNumber = model.getPositionAt(parsedRequest.endOffset).lineNumber; + } else { + // if no end offset, try to find the line before the next request starts + const nextRequest = parsedRequests.at(index + 1); + if (nextRequest) { + const nextRequestStartLine = model.getPositionAt(nextRequest.startOffset).lineNumber; + endLineNumber = nextRequestStartLine - 1; + } else { + // if there is no next request, take the last line of the model + endLineNumber = model.getLineCount(); + } + } + // if the end line is empty, go up to find the first non-empty line + let lineContent = model.getLineContent(endLineNumber).trim(); + while (!lineContent) { + endLineNumber = endLineNumber - 1; + lineContent = model.getLineContent(endLineNumber).trim(); + } + return endLineNumber; +}; + +/* + * Internal helpers + */ +const replaceVariables = (text: string, variables: DevToolsVariable[]): string => { + if (variableTemplateRegex.test(text)) { + text = text.replaceAll(variableTemplateRegex, (match, key) => { + const variable = variables.find(({ name }) => name === key); + + return variable?.value ?? match; + }); + } + return text; +}; diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/tokens_utils.test.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/tokens_utils.test.ts new file mode 100644 index 00000000000000..56d9dea22b743e --- /dev/null +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/tokens_utils.test.ts @@ -0,0 +1,130 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 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 { parseBody, removeTrailingWhitespaces } from './tokens_utils'; + +describe('tokens_utils', () => { + describe('removeTrailingWhitespaces', () => { + it(`works with an empty string`, () => { + const url = ''; + const result = removeTrailingWhitespaces(url); + expect(result).toBe(url); + }); + it(`doesn't change the string if no trailing whitespaces`, () => { + const url = '_search'; + const result = removeTrailingWhitespaces(url); + expect(result).toBe(url); + }); + it(`removes any text after the first whitespace`, () => { + const url = '_search some_text'; + const result = removeTrailingWhitespaces(url); + expect(result).toBe('_search'); + }); + }); + + describe('parseBody', () => { + const testCases: Array<{ value: string; tokens: string[] }> = [ + { + // add opening curly brackets to tokens + value: '{', + tokens: ['{'], + }, + { + // allow whitespaces + value: ' {', + tokens: ['{'], + }, + { + // allow line comments + value: '//comment\n{', + tokens: ['{'], + }, + { + // inside the object line comment are ignored + value: '{//comment', + tokens: ['{'], + }, + { + value: '{//comment\n"test":', + tokens: ['{', 'test'], + }, + { + // do not add property name if no colon (:) + value: '{"test"', + tokens: ['{'], + }, + { + // add property names to tokens (double quotes are removed) + value: '{"test":', + tokens: ['{', 'test'], + }, + { + // add nested object to tokens + value: '{"test":{', + tokens: ['{', 'test', '{'], + }, + { + // empty object + value: '{}', + tokens: [], + }, + { + // empty object with inline comment + value: '{//comment\n}', + tokens: [], + }, + { + value: '{"test":[', + tokens: ['{', 'test', '['], + }, + { + value: '{"test":123,', + tokens: ['{'], + }, + { + value: '{"test":{},', + tokens: ['{'], + }, + { + value: '{"test":[],', + tokens: ['{'], + }, + { + value: '{"property1":["nested1", []],"', + tokens: ['{'], + }, + { + value: '{"property1":"value1","property2":', + tokens: ['{', 'property2'], + }, + { + value: '{"property1":[123,', + tokens: ['{', 'property1', '['], + }, + { + value: '{"property1":[123,"test"]', + tokens: ['{'], + }, + { + value: '{"property1":{"nested1":"value"},"', + tokens: ['{'], + }, + { + value: '{"property1":{"nested1":"value","nested2":{}},"', + tokens: ['{'], + }, + ]; + for (const testCase of testCases) { + const { value, tokens } = testCase; + it(`${value}`, () => { + const parsedTokens = parseBody(value); + expect(parsedTokens).toEqual(tokens); + }); + } + }); +}); diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/tokens_utils.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/tokens_utils.ts new file mode 100644 index 00000000000000..76e6e9672252fc --- /dev/null +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/tokens_utils.ts @@ -0,0 +1,480 @@ +/* + * Copyright 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 { + ampersandRegex, + digitRegex, + equalsSignRegex, + newLineRegex, + numberStartRegex, + questionMarkRegex, + slashRegex, + whitespacesRegex, +} from './constants'; + +/* + * This function parses a line with the method and url. + * The url is parsed into path and params, each parsed into tokens. + * Returns method, urlPathTokens and urlParamsTokens which are arrays of strings. + */ +export const parseLine = (line: string): ParsedLineTokens => { + // try to parse into method and url (split on whitespace) + const parts = line.split(whitespacesRegex); + // 1st part is the method + const method = parts[0]; + // 2nd part is the url + const url = parts[1]; + // try to parse into url path and url params (split on question mark) + const { urlPathTokens, urlParamsTokens } = parseUrl(url); + return { method, urlPathTokens, urlParamsTokens }; +}; + +/* + * This function parses an url into path and params, each parsed into tokens. + * Returns urlPathTokens and urlParamsTokens which are arrays of strings. + */ +export const parseUrl = ( + url: string +): { + urlPathTokens: ParsedLineTokens['urlPathTokens']; + urlParamsTokens: ParsedLineTokens['urlParamsTokens']; +} => { + let urlPathTokens: ParsedLineTokens['urlPathTokens'] = []; + let urlParamsTokens: ParsedLineTokens['urlParamsTokens'] = []; + const urlParts = url.split(questionMarkRegex); + // 1st part is the url path + const urlPath = urlParts[0]; + // try to parse into url path tokens (split on slash) + if (urlPath) { + urlPathTokens = urlPath.split(slashRegex); + } + // 2nd part is the url params + const urlParams = urlParts[1]; + // try to parse into url param tokens + if (urlParams) { + urlParamsTokens = urlParams.split(ampersandRegex).map((urlParamsPart) => { + return urlParamsPart.split(equalsSignRegex); + }); + } + return { urlPathTokens, urlParamsTokens }; +}; + +/* + * This function parses the body of the request into tokens. + * For example '{ "test": [' -> ['{', 'test', '[']. This array is used for autocomplete. + * Returns array of strings representing body tokens for autocomplete. + */ +export const parseBody = (value: string): string[] => { + let currentToken = ''; + const tokens = []; + let index = 0; + let char = value.charAt(index); + const next = () => { + index++; + char = value.charAt(index); + }; + const peek = (offset: number): string => { + return value.charAt(index + offset); + }; + const skipWhitespace = () => { + while (whitespacesRegex.test(char)) { + next(); + } + }; + const skipUntilAfterNewLine = () => { + while (char && !isNewLine(char)) { + next(); + } + // skip the new line + if (isNewLine(char)) { + next(); + } + }; + const skipComments = () => { + // # comment + if (isHashChar(char)) { + // first skip # + next(); + skipUntilAfterNewLine(); + } else if ( + // // comment + isSlash(char) && + isSlash(peek(1)) + ) { + // first skip // + next(); + next(); + skipUntilAfterNewLine(); + } else if ( + // multi line comment starting with /* + isSlash(char) && + isStar(peek(1)) + ) { + next(); + next(); + // skip until closing */ is found + while (char && !(isStar(char) && isSlash(peek(1)))) { + next(); + } + if (isStar(char) && isSlash(peek(1))) { + next(); + next(); + } else { + throw new Error('Not able to parse multi-line comment'); + } + } + }; + const parseString = () => { + // first check if it's a triple quote + if (isTripleQuote(char, peek(1), peek(2))) { + // skip the opening triple quote + next(); + next(); + next(); + // skip to the next triple quote + while (char && !isTripleQuote(char, peek(1), peek(2))) { + next(); + } + if (isTripleQuote(char, peek(1), peek(2))) { + // skip the closing triple quote + next(); + next(); + next(); + } else { + throw new Error('Missing closing triple quote'); + } + } else if (isDoubleQuote(char)) { + // skip the opening double quote + next(); + while (char && !isDoubleQuote(char)) { + next(); + } + if (isDoubleQuote(char)) { + // skip the closing double quote + next(); + } else { + throw new Error('Missing closing double quote'); + } + } else { + throw new Error('Not able to parse as string'); + } + }; + const parseNumber = () => { + // check the first char + if (!isNumberStartChar(char)) { + throw new Error('Not able to parse as number'); + } + if (isMinusSign(char)) { + next(); + } + // check that there is at least 1 digit + if (!isDigit(char)) { + throw new Error('Not able to parse as number'); + } + // skip digits + while (isDigit(char)) { + next(); + } + // optionally there is a dot + if (isDot(char)) { + next(); + // needs at least 1 digit after the dot + if (!isDigit(char)) { + throw new Error('Missing digits after a dot'); + } + while (isDigit(char)) { + next(); + } + } + // optionally there is E notation + if (isENotation(char)) { + next(); + // needs at least 1 digit after e or E + if (!isDigit(char)) { + throw new Error('Missing digits after E notation'); + } + while (isDigit(char)) { + next(); + } + } + // number parsing is complete + }; + const parseKeyword = () => { + switch (char) { + case 'n': { + if (peek(1) === 'u' && peek(2) === 'l' && peek(3) === 'l') { + next(); + next(); + next(); + next(); + } else { + throw new Error('Not able to parse as null'); + } + break; + } + case 't': { + if (peek(1) === 'r' && peek(2) === 'u' && peek(3) === 'e') { + next(); + next(); + next(); + next(); + } else { + throw new Error('Not able to parse as true'); + } + break; + } + case 'f': { + if (peek(1) === 'a' && peek(2) === 'l' && peek(3) === 's' && peek(3) === 'e') { + next(); + next(); + next(); + next(); + next(); + } else { + throw new Error('Not able to parse as false'); + } + break; + } + default: { + throw new Error('Not able to parse as null, true or false'); + } + } + }; + const parsePropertyName = () => { + if (!isDoubleQuote(char)) { + throw new Error('Missing " at the start of string'); + } + next(); + let propertyName = ''; + while (char && !isDoubleQuote(char)) { + propertyName = propertyName + char; + next(); + } + if (!isDoubleQuote(char)) { + throw new Error('Missing " at the end of string'); + } + next(); + if (!propertyName) { + throw new Error('Empty string used as property name'); + } + return propertyName; + }; + + try { + while (char) { + // the value in currentToken determines the state of the parser + if (!currentToken) { + // the start of the object + skipWhitespace(); + skipComments(); + // look for opening curly bracket + if (char === '{') { + tokens.push(char); + currentToken = char; + next(); + } else { + throw new Error('Missing { at object start'); + } + } else if ( + // inside an object + currentToken === '{' + ) { + skipWhitespace(); + skipComments(); + // inspect the current char + if (isDoubleQuote(char)) { + // property name: parse the string and add to tokens + const propertyName = parsePropertyName(); + // allow whitespace + skipWhitespace(); + // expecting a colon, otherwise the parser fails + if (!isColon(char)) { + throw new Error('Not able to parse'); + } + // add the property name to the tokens + tokens.push(propertyName); + currentToken = propertyName; + next(); + } else if (char === '}') { + // empty object: remove the corresponding opening { from tokens + tokens.pop(); + currentToken = tokens[tokens.length - 1]; + next(); + + skipWhitespace(); + // check if the empty object was used as a property value + if (isPropertyName(currentToken)) { + // the empty object was the value for this property name, remove it from tokens + tokens.pop(); + currentToken = tokens[tokens.length - 1]; + } + } else if (isComma(char)) { + // ignore the comma + next(); + } else { + throw new Error('Not able to parse'); + } + } else if ( + // inside an array + currentToken === '[' + ) { + skipWhitespace(); + skipComments(); + + // inspect the current char + if (char === ']') { + // an empty array + tokens.pop(); + currentToken = tokens[tokens.length - 1]; + next(); + + skipWhitespace(); + // check if empty array was used as a property value + if (isPropertyName(currentToken)) { + // the empty array was the value for this property name, remove it from tokens + tokens.pop(); + currentToken = tokens[tokens.length - 1]; + } + } else if (isComma(char)) { + // ignore the comma + next(); + } else { + // parsing array items + + // object or array: add to tokens + if (char === '{' || char === '[') { + tokens.push(char); + currentToken = char; + next(); + } else { + // simple values + if (isDoubleQuote(char)) { + parseString(); + } else if (isNumberStartChar(char)) { + parseNumber(); + } else if (isKeywordChar(char)) { + parseKeyword(); + } else { + throw new Error('Not able to parse'); + } + } + } + } else if ( + // parsing property value after a property name was found + isPropertyName(currentToken) + ) { + skipWhitespace(); + skipComments(); + if (char === '{' || char === '[') { + // nested object or array + tokens.push(char); + currentToken = char; + next(); + } else { + // simple values + if (isDoubleQuote(char)) { + parseString(); + } else if (isNumberStartChar(char)) { + parseNumber(); + } else if (isKeywordChar(char)) { + parseKeyword(); + } else { + throw new Error('Not able to parse'); + } + // after parsing a simple value, this property name is parsed and can be removed from tokens + tokens.pop(); + currentToken = tokens[tokens.length - 1]; + } + } else { + throw new Error('Not able to parse'); + } + } + return tokens; + } catch (e) { + return tokens; + } +}; + +/* + * This functions removes any trailing inline comments, for example + * "_search // comment" -> "_search" + * Ideally the parser would do that, but currently they are included in url. + */ +export const removeTrailingWhitespaces = (url: string): string => { + return url.trim().split(whitespacesRegex)[0]; +}; + +/* + * This function splits a string on whitespaces and returns its parts as an array. + */ +export const getLineTokens = (lineContent: string): string[] => { + return lineContent.split(whitespacesRegex); +}; + +/* + * This function checks if the url contains url params. + */ +export const containsUrlParams = (lineContent: string): boolean => { + return questionMarkRegex.test(lineContent); +}; + +/* + * Internal helpers + */ +interface ParsedLineTokens { + method: string; + urlPathTokens: string[]; + urlParamsTokens: string[][]; +} + +const isNewLine = (char: string): boolean => { + return newLineRegex.test(char); +}; +const isDoubleQuote = (char: string): boolean => { + return char === '"'; +}; +const isColon = (char: string): boolean => { + return char === ':'; +}; +const isComma = (char: string): boolean => { + return char === ','; +}; +const isHashChar = (char: string): boolean => { + return char === '#'; +}; +const isSlash = (char: string): boolean => { + return char === '/'; +}; +const isStar = (char: string): boolean => { + return char === '*'; +}; +const isPropertyName = (token: string): boolean => { + // we only have {, [ or property name in tokens + return token !== '{' && token !== '['; +}; +const isTripleQuote = (char1: string, char2: string, char3: string): boolean => { + return isDoubleQuote(char1) && isDoubleQuote(char2) && isDoubleQuote(char3); +}; +const isNumberStartChar = (char: string): boolean => { + return numberStartRegex.test(char); +}; +const isMinusSign = (char: string): boolean => { + return char === '-'; +}; +const isDigit = (char: string): boolean => { + return digitRegex.test(char); +}; +const isDot = (char: string): boolean => { + return char === '.'; +}; +const isENotation = (char: string): boolean => { + return char === 'e' || char === 'E'; +}; +const isKeywordChar = (char: string): boolean => { + // null, true or false + return char === 'n' || char === 't' || char === 'f'; +}; diff --git a/src/plugins/console/public/application/hooks/index.ts b/src/plugins/console/public/application/hooks/index.ts index 1996330bef66b6..0bdedac7364547 100644 --- a/src/plugins/console/public/application/hooks/index.ts +++ b/src/plugins/console/public/application/hooks/index.ts @@ -8,6 +8,6 @@ export { useSetInputEditor } from './use_set_input_editor'; export { useRestoreRequestFromHistory } from './use_restore_request_from_history'; -export { useSendCurrentRequest } from './use_send_current_request'; +export { useSendCurrentRequest, sendRequest } from './use_send_current_request'; export { useSaveCurrentTextObject } from './use_save_current_text_object'; export { useDataInit } from './use_data_init'; diff --git a/src/plugins/console/public/application/hooks/use_send_current_request/index.ts b/src/plugins/console/public/application/hooks/use_send_current_request/index.ts index 33bdbef87f2efd..beb40449657391 100644 --- a/src/plugins/console/public/application/hooks/use_send_current_request/index.ts +++ b/src/plugins/console/public/application/hooks/use_send_current_request/index.ts @@ -7,3 +7,4 @@ */ export { useSendCurrentRequest } from './use_send_current_request'; +export { sendRequest } from './send_request'; diff --git a/src/plugins/console/public/lib/autocomplete/autocomplete.ts b/src/plugins/console/public/lib/autocomplete/autocomplete.ts index 04bfaa4a57b596..bdb2a16c879abe 100644 --- a/src/plugins/console/public/lib/autocomplete/autocomplete.ts +++ b/src/plugins/console/public/lib/autocomplete/autocomplete.ts @@ -423,12 +423,7 @@ export default function ({ }); } - function applyTerm(term: { - value?: string; - context?: AutoCompleteContext; - template?: { __raw?: boolean; value?: string; [key: string]: unknown }; - insertValue?: string; - }) { + function applyTerm(term: ResultTerm) { const context = term.context!; if (context?.endpoint && term.value) { diff --git a/src/plugins/console/public/lib/autocomplete/types.ts b/src/plugins/console/public/lib/autocomplete/types.ts index 919d273b7a0901..7d1fb383f52a57 100644 --- a/src/plugins/console/public/lib/autocomplete/types.ts +++ b/src/plugins/console/public/lib/autocomplete/types.ts @@ -15,6 +15,7 @@ export interface ResultTerm { name?: string; value?: string; score?: number; + template?: { __raw?: boolean; value?: string; [key: string]: unknown }; } export interface DataAutoCompleteRulesOneOf { diff --git a/src/plugins/console/server/lib/spec_definitions/json/generated/esql.query.json b/src/plugins/console/server/lib/spec_definitions/json/generated/esql.query.json index 452ab7c7b7eb9d..f109f849be68c9 100644 --- a/src/plugins/console/server/lib/spec_definitions/json/generated/esql.query.json +++ b/src/plugins/console/server/lib/spec_definitions/json/generated/esql.query.json @@ -17,7 +17,7 @@ "documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/{branch}/esql-rest.html", "availability": { "stack": true, - "serverless": false + "serverless": true } } } diff --git a/src/plugins/dashboard/public/dashboard_container/component/viewport/_dashboard_viewport.scss b/src/plugins/dashboard/public/dashboard_container/component/viewport/_dashboard_viewport.scss index 7cfd8ec50a6a4c..d5196f140292fb 100644 --- a/src/plugins/dashboard/public/dashboard_container/component/viewport/_dashboard_viewport.scss +++ b/src/plugins/dashboard/public/dashboard_container/component/viewport/_dashboard_viewport.scss @@ -2,6 +2,9 @@ flex: auto; display: flex; flex-direction: column; + &--defaultBg { + background: $euiColorEmptyShade; + } } .dshDashboardViewport { diff --git a/src/plugins/dashboard/public/dashboard_container/component/viewport/dashboard_viewport.tsx b/src/plugins/dashboard/public/dashboard_container/component/viewport/dashboard_viewport.tsx index 4d6cf2d4bf357d..cc0397a5af1e33 100644 --- a/src/plugins/dashboard/public/dashboard_container/component/viewport/dashboard_viewport.tsx +++ b/src/plugins/dashboard/public/dashboard_container/component/viewport/dashboard_viewport.tsx @@ -53,6 +53,7 @@ export const DashboardViewportComponent = () => { const viewMode = dashboard.select((state) => state.explicitInput.viewMode); const dashboardTitle = dashboard.select((state) => state.explicitInput.title); + const useMargins = dashboard.select((state) => state.explicitInput.useMargins); const description = dashboard.select((state) => state.explicitInput.description); const focusedPanelId = dashboard.select((state) => state.componentState.focusedPanelId); const expandedPanelId = dashboard.select((state) => state.componentState.expandedPanelId); @@ -65,7 +66,11 @@ export const DashboardViewportComponent = () => { }); return ( -
+
{controlGroup && viewMode !== ViewMode.PRINT ? (
0 ? 'dshDashboardViewport-controls' : ''} diff --git a/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_renderer.test.tsx b/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_renderer.test.tsx index c91eba0eec4218..c77429508db074 100644 --- a/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_renderer.test.tsx +++ b/src/plugins/dashboard/public/dashboard_container/external_api/dashboard_renderer.test.tsx @@ -32,6 +32,7 @@ describe('dashboard renderer', () => { render: jest.fn(), select: jest.fn(), navigateToDashboard: jest.fn().mockResolvedValue({}), + getInput: jest.fn().mockResolvedValue({}), } as unknown as DashboardContainer; mockDashboardFactory = { create: jest.fn().mockReturnValue(mockDashboardContainer), @@ -148,6 +149,7 @@ describe('dashboard renderer', () => { render: jest.fn(), navigateToDashboard: jest.fn(), select: jest.fn(), + getInput: jest.fn().mockResolvedValue({}), } as unknown as DashboardContainer; const mockSuccessFactory = { create: jest.fn().mockReturnValue(mockSuccessEmbeddable), @@ -242,6 +244,7 @@ describe('dashboard renderer', () => { render: jest.fn(), navigateToDashboard: jest.fn(), select: jest.fn().mockReturnValue('WhatAnExpandedPanel'), + getInput: jest.fn().mockResolvedValue({}), } as unknown as DashboardContainer; const mockSuccessFactory = { create: jest.fn().mockReturnValue(mockSuccessEmbeddable), @@ -263,4 +266,34 @@ describe('dashboard renderer', () => { wrapper!.find('#superParent').getDOMNode().classList.contains('dshDashboardViewportWrapper') ).toBe(true); }); + + test('adds a class to apply default background color when dashboard has use margin option set to false', async () => { + const mockUseMarginFalseEmbeddable = { + ...mockDashboardContainer, + getInput: jest.fn().mockResolvedValue({ useMargins: false }), + } as unknown as DashboardContainer; + + const mockUseMarginFalseFactory = { + create: jest.fn().mockReturnValue(mockUseMarginFalseEmbeddable), + } as unknown as DashboardContainerFactory; + pluginServices.getServices().embeddable.getEmbeddableFactory = jest + .fn() + .mockReturnValue(mockUseMarginFalseFactory); + + let wrapper: ReactWrapper; + await act(async () => { + wrapper = await mountWithIntl( +
+ +
+ ); + }); + + expect( + wrapper! + .find('#superParent') + .getDOMNode() + .classList.contains('dshDashboardViewportWrapper--defaultBg') + ).not.toBe(null); + }); }); diff --git a/src/plugins/data/common/search/search_source/search_source.ts b/src/plugins/data/common/search/search_source/search_source.ts index 434de1cd3c4e95..2fbd162bbb7d3d 100644 --- a/src/plugins/data/common/search/search_source/search_source.ts +++ b/src/plugins/data/common/search/search_source/search_source.ts @@ -59,7 +59,18 @@ */ import { setWith } from '@kbn/safer-lodash-set'; -import { difference, isEqual, isFunction, isObject, keyBy, pick, uniqueId, concat } from 'lodash'; +import { + difference, + isEqual, + isFunction, + isObject, + keyBy, + pick, + uniqueId, + concat, + omitBy, + isNil, +} from 'lodash'; import { catchError, finalize, first, last, map, shareReplay, switchMap, tap } from 'rxjs'; import { defer, EMPTY, from, lastValueFrom, Observable } from 'rxjs'; import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; @@ -769,7 +780,7 @@ export class SearchSource { const { getConfig } = this.dependencies; const searchRequest = this.mergeProps(); searchRequest.body = searchRequest.body || {}; - const { body, index, query, filters, highlightAll, pit } = searchRequest; + const { body, index, query, filters, highlightAll } = searchRequest; searchRequest.indexType = this.getIndexType(index); const metaFields = getConfig(UI_SETTINGS.META_FIELDS) ?? []; @@ -867,32 +878,12 @@ export class SearchSource { // remove _source, since everything's coming from fields API, scripted, or stored fields body._source = false; - // if items that are in the docvalueFields are provided, we should - // inject the format from the computed fields if one isn't given - const docvaluesIndex = keyBy(filteredDocvalueFields, 'field'); - const bodyFields = this.getFieldsWithoutSourceFilters(index, body.fields); - - const uniqueFieldNames = new Set(); - const uniqueFields = []; - for (const field of bodyFields.concat(filteredDocvalueFields)) { - const fieldName = this.getFieldName(field); - if (metaFields.includes(fieldName) || uniqueFieldNames.has(fieldName)) { - continue; - } - uniqueFieldNames.add(fieldName); - if (Object.keys(docvaluesIndex).includes(fieldName)) { - // either provide the field object from computed docvalues, - // or merge the user-provided field with the one in docvalues - uniqueFields.push( - typeof field === 'string' - ? docvaluesIndex[field] - : this.getFieldFromDocValueFieldsOrIndexPattern(docvaluesIndex, field, index) - ); - } else { - uniqueFields.push(field); - } - } - body.fields = uniqueFields; + body.fields = this.getUniqueFields({ + index, + fields: body.fields, + metaFields, + filteredDocvalueFields, + }); } } else { body.fields = filteredDocvalueFields; @@ -932,11 +923,54 @@ export class SearchSource { delete searchRequest.highlightAll; } - if (pit) { - body.pit = pit; - } + const omitByIsNil = (object: Record) => omitBy(object, isNil); - return searchRequest; + const bodyToReturn = { + ...searchRequest.body, + pit: searchRequest.pit, + }; + + return omitByIsNil({ ...searchRequest, body: omitByIsNil(bodyToReturn) }) as SearchRequest; + } + + private getUniqueFields({ + index, + fields, + metaFields, + filteredDocvalueFields, + }: { + index?: DataView; + fields: any; + metaFields: string; + filteredDocvalueFields: any; + }) { + const bodyFields = this.getFieldsWithoutSourceFilters(index, fields); + // if items that are in the docvalueFields are provided, we should + // inject the format from the computed fields if one isn't given + const docvaluesIndex = keyBy(filteredDocvalueFields, 'field'); + const docValuesIndexKeys = new Set(Object.keys(docvaluesIndex)); + + const uniqueFieldNames = new Set(); + const uniqueFields = []; + for (const field of bodyFields.concat(filteredDocvalueFields)) { + const fieldName = this.getFieldName(field); + if (metaFields.includes(fieldName) || uniqueFieldNames.has(fieldName)) { + continue; + } + uniqueFieldNames.add(fieldName); + if (docValuesIndexKeys.has(fieldName)) { + // either provide the field object from computed docvalues, + // or merge the user-provided field with the one in docvalues + uniqueFields.push( + typeof field === 'string' + ? docvaluesIndex[field] + : this.getFieldFromDocValueFieldsOrIndexPattern(docvaluesIndex, field, index) + ); + } else { + uniqueFields.push(field); + } + } + return uniqueFields; } /** diff --git a/src/plugins/data/public/search/search_interceptor/search_interceptor.test.ts b/src/plugins/data/public/search/search_interceptor/search_interceptor.test.ts index 3306ac90ab288e..600f06f3159528 100644 --- a/src/plugins/data/public/search/search_interceptor/search_interceptor.test.ts +++ b/src/plugins/data/public/search/search_interceptor/search_interceptor.test.ts @@ -362,27 +362,12 @@ describe('SearchInterceptor', () => { }); test('should DELETE a running async search on async timeout after first response', async () => { - const responses = [ - { - time: 10, - value: { - isPartial: true, - isRunning: true, - rawResponse: {}, - id: 1, - }, - }, - { - time: 2000, - value: { - isPartial: false, - isRunning: false, - rawResponse: {}, - id: 1, - }, - }, - ]; - mockFetchImplementation(responses); + fetchMock.mockResolvedValue({ + isPartial: true, + isRunning: true, + rawResponse: {}, + id: 1, + }); const response = searchInterceptor.search({}, { pollInterval: 0 }); response.subscribe({ next, error }); @@ -394,36 +379,21 @@ describe('SearchInterceptor', () => { expect(fetchMock).toHaveBeenCalled(); expect(mockCoreSetup.http.delete).not.toHaveBeenCalled(); - // Long enough to reach the timeout but not long enough to reach the next response + // Long enough to reach the timeout await timeTravel(1000); - // Expect 3 calls to fetch - the two polls and a final request for the results before deleting - expect(fetchMock).toHaveBeenCalledTimes(3); expect(mockCoreSetup.http.delete).toHaveBeenCalledTimes(1); }); test('should return the last response on async timeout', async () => { - const responses = [ - { - time: 10, - value: { - isPartial: true, - isRunning: true, - rawResponse: {}, - id: 1, - }, + fetchMock.mockResolvedValue({ + isPartial: true, + isRunning: true, + rawResponse: { + foo: 'bar', }, - { - time: 2000, - value: { - isPartial: false, - isRunning: false, - rawResponse: {}, - id: 1, - }, - }, - ]; - mockFetchImplementation(responses); + id: 1, + }); const response = searchInterceptor.search({}, { pollInterval: 0 }); response.subscribe({ next, error }); @@ -438,18 +408,15 @@ describe('SearchInterceptor', () => { // Long enough to reach the timeout but not long enough to reach the next response await timeTravel(1000); - expect(next).toHaveBeenCalledTimes(2); + expect(next).toHaveBeenCalledTimes(3); expect(next.mock.calls[1]).toMatchInlineSnapshot(` Array [ Object { "id": 1, "isPartial": true, - "isRunning": false, - "meta": Object { - "size": 10, - }, + "isRunning": true, "rawResponse": Object { - "timed_out": true, + "foo": "bar", }, }, ] diff --git a/src/plugins/data/public/search/search_interceptor/search_interceptor.ts b/src/plugins/data/public/search/search_interceptor/search_interceptor.ts index ec0585fe8469ec..7f54c63592b144 100644 --- a/src/plugins/data/public/search/search_interceptor/search_interceptor.ts +++ b/src/plugins/data/public/search/search_interceptor/search_interceptor.ts @@ -358,7 +358,8 @@ export class SearchInterceptor { ); const cancel = async () => { - if (!id || isSavedToBackground) return; + // If the request times out, we handle cancellation after we make the last call to retrieve the results + if (!id || isSavedToBackground || searchAbortController.isTimeout()) return; try { await sendCancelRequest(); } catch (e) { @@ -400,9 +401,22 @@ export class SearchInterceptor { : response; }), catchError((e: Error) => { - searchTracker?.error(); - cancel(); - return throwError(e); + // If we aborted (search:timeout advanced setting) and there was a partial response, return it instead of just erroring out + if (searchAbortController.isTimeout()) { + return from( + this.runSearch({ id, ...request }, { ...options, retrieveResults: true }) + ).pipe( + map(toPartialResponseAfterTimeout), + tap(async () => { + await sendCancelRequest(); + this.handleSearchError(e, request?.params?.body ?? {}, options, true); + }) + ); + } else { + searchTracker?.error(); + cancel(); + return throwError(e); + } }), finalize(() => { searchAbortController.cleanup(); @@ -534,17 +548,6 @@ export class SearchInterceptor { return response$.pipe( takeUntil(aborted$), catchError((e) => { - // If we aborted (search:timeout advanced setting) and there was a partial response, return it instead of just erroring out - if (searchAbortController.isTimeout()) { - return from( - this.runSearch(request, { ...searchOptions, retrieveResults: true }) - ).pipe( - tap(() => - this.handleSearchError(e, request?.params?.body ?? {}, searchOptions, true) - ), - map(toPartialResponseAfterTimeout) - ); - } return throwError( this.handleSearchError( e, diff --git a/src/plugins/data/server/search/routes/search.ts b/src/plugins/data/server/search/routes/search.ts index ef9b39f2f6b995..7d05c27cd5781b 100644 --- a/src/plugins/data/server/search/routes/search.ts +++ b/src/plugins/data/server/search/routes/search.ts @@ -36,6 +36,7 @@ export function registerSearchRoute(router: DataPluginRouter): void { sessionId: schema.maybe(schema.string()), isStored: schema.maybe(schema.boolean()), isRestore: schema.maybe(schema.boolean()), + retrieveResults: schema.maybe(schema.boolean()), }, { unknowns: 'allow' } ), @@ -48,6 +49,7 @@ export function registerSearchRoute(router: DataPluginRouter): void { sessionId, isStored, isRestore, + retrieveResults, ...searchRequest } = request.body; const { strategy, id } = request.params; @@ -65,6 +67,7 @@ export function registerSearchRoute(router: DataPluginRouter): void { sessionId, isStored, isRestore, + retrieveResults, } ) .pipe(first()) diff --git a/src/plugins/embeddable/README.md b/src/plugins/embeddable/README.md index 12cbca12aa939f..d4c9a5ca231939 100644 --- a/src/plugins/embeddable/README.md +++ b/src/plugins/embeddable/README.md @@ -1,4 +1,21 @@ -# Documentation and examples +Embeddables are React components that manage their own state, can be serialized and deserialized, and return an API that can be used to interact with them imperatively. -Embeddable documentation and examples are bundled with Kibana and accessable by running `yarn start --run-examples`. -Navigate to `http://localhost:5601/app/embeddablesApp`. \ No newline at end of file +#### Guiding principles +* **Coupled to React:** Kibana is a React application, and the minimum unit of sharing is the React component. Embeddables enforce this by requiring a React component during registration. +* **Composition over inheritence:** Rather than an inheritance-based system with classes, imperative APIs are plain old typescript objects that implement any number of shared interfaces. Interfaces are enforced via type guards and are shared via Packages. +* **Internal state management:** Each embeddable manages its own state. This is because the embeddable system allows a page to render a registry of embeddable types that can change over time. This makes it untenable for a single page to manage state for every type of embeddable. The page is only responsible for persisting and providing the last persisted state to the embeddable on startup. + +#### Best practices +* **Do not use Embeddables to share Components between plugins: ** Only create an embeddable if your Component is rendered on a page that persists embeddable state and renders multiple embeddable types. For example, create an embeddable to render your Component on a Dashboard. Otherwise, use a vanilla React Component to share Components between plugins. +* **Do not use Embeddables to avoid circular plugin dependencies: ** Break your Component into a Package or another plugin to avoid circular plugin dependencies. +* **Minimal API surface area: ** Embeddable APIs are accessable to all Kibana systems and all embeddable siblings and parents. Functions and state that are internal to an embeddable including any child components should not be added to the API. Consider passing internal state to child as props or react context. + +#### Examples +Examples available at [/examples/embeddable_examples](https://github.com/elastic/kibana/tree/main/examples/embeddable_examples) +* [Register an embeddable](https://github.com/elastic/kibana/blob/main/examples/embeddable_examples/public/react_embeddables/search/register_search_embeddable.ts) +* [Embeddable that responds to Unified search](https://github.com/elastic/kibana/blob/main/examples/embeddable_examples/public/react_embeddables/search/search_react_embeddable.tsx) +* [Embeddable that interacts with sibling embeddables](https://github.com/elastic/kibana/blob/main/examples/embeddable_examples/public/react_embeddables/data_table/data_table_react_embeddable.tsx) +* [Render an embeddable](https://github.com/elastic/kibana/blob/main/examples/embeddable_examples/public/react_embeddables/search/search_embeddable_renderer.tsx) + +Run examples with `yarn start --run-examples` +To access example embeddables, create a new dashboard, click "Add panel" and finally select "Embeddable examples". \ No newline at end of file diff --git a/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/customize_panel_editor.test.tsx b/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/customize_panel_editor.test.tsx index 44d1847af1dce2..25a86366144bcc 100644 --- a/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/customize_panel_editor.test.tsx +++ b/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/customize_panel_editor.test.tsx @@ -19,19 +19,17 @@ import { CustomizePanelEditor } from './customize_panel_editor'; describe('customize panel editor', () => { let api: CustomizePanelActionApi; - let setTitle: (title: string | undefined) => void; + let setTitle: (title?: string) => void; let setViewMode: (viewMode: ViewMode) => void; - let setDescription: (description: string | undefined) => void; + let setDescription: (description?: string) => void; beforeEach(() => { const titleSubject = new BehaviorSubject(undefined); - setTitle = jest.fn().mockImplementation((title) => titleSubject.next(title)); + setTitle = jest.fn((title) => titleSubject.next(title)); const descriptionSubject = new BehaviorSubject(undefined); - setDescription = jest - .fn() - .mockImplementation((description) => descriptionSubject.next(description)); + setDescription = jest.fn((description) => descriptionSubject.next(description)); const viewMode = new BehaviorSubject('edit'); - setViewMode = jest.fn().mockImplementation((nextViewMode) => viewMode.next(nextViewMode)); + setViewMode = jest.fn((nextViewMode) => viewMode.next(nextViewMode)); api = { viewMode, @@ -75,27 +73,44 @@ describe('customize panel editor', () => { ); }); - it('Sets panel title on apply', () => { + it('should set panel title on apply', () => { renderPanelEditor(); userEvent.type(screen.getByTestId('customEmbeddablePanelTitleInput'), 'New title'); userEvent.click(screen.getByTestId('saveCustomizePanelButton')); expect(setTitle).toBeCalledWith('New title'); }); + it('should use default title when title is undefined', () => { + api.defaultPanelTitle = new BehaviorSubject('Default title'); + setTitle(undefined); + renderPanelEditor(); + const titleInput = screen.getByTestId('customEmbeddablePanelTitleInput'); + expect(titleInput).toHaveValue('Default title'); + }); + + it('should use title even when empty string', () => { + api.defaultPanelTitle = new BehaviorSubject('Default title'); + setTitle(''); + renderPanelEditor(); + const titleInput = screen.getByTestId('customEmbeddablePanelTitleInput'); + expect(titleInput).toHaveValue(''); + }); + it('Resets panel title to default when reset button is pressed', () => { api.defaultPanelTitle = new BehaviorSubject('Default title'); + setTitle('Initial title'); renderPanelEditor(); userEvent.type(screen.getByTestId('customEmbeddablePanelTitleInput'), 'New title'); userEvent.click(screen.getByTestId('resetCustomEmbeddablePanelTitleButton')); expect(screen.getByTestId('customEmbeddablePanelTitleInput')).toHaveValue('Default title'); }); - it('Reset panel title to undefined on apply', () => { - setTitle('very cool title'); + it('should hide title reset when no default exists', () => { + api.defaultPanelTitle = new BehaviorSubject(undefined); + setTitle('Initial title'); renderPanelEditor(); - userEvent.click(screen.getByTestId('resetCustomEmbeddablePanelTitleButton')); - userEvent.click(screen.getByTestId('saveCustomizePanelButton')); - expect(setTitle).toBeCalledWith(undefined); + userEvent.type(screen.getByTestId('customEmbeddablePanelTitleInput'), 'New title'); + expect(screen.queryByTestId('resetCustomEmbeddablePanelTitleButton')).not.toBeInTheDocument(); }); test('title input receives focus when `focusOnTitle` is `true`', async () => { @@ -128,7 +143,7 @@ describe('customize panel editor', () => { ); }); - it('Sets panel description on apply', () => { + it('should set panel description on apply', () => { renderPanelEditor(); userEvent.type( screen.getByTestId('customEmbeddablePanelDescriptionInput'), @@ -138,22 +153,47 @@ describe('customize panel editor', () => { expect(setDescription).toBeCalledWith('New description'); }); - it('Resets panel desription to default when reset button is pressed', () => { + it('should use default description when description is undefined', () => { + api.defaultPanelDescription = new BehaviorSubject('Default description'); + setDescription(undefined); + renderPanelEditor(); + const descriptionInput = screen.getByTestId('customEmbeddablePanelDescriptionInput'); + expect(descriptionInput).toHaveValue('Default description'); + }); + + it('should use description even when empty string', () => { api.defaultPanelDescription = new BehaviorSubject('Default description'); + setDescription(''); renderPanelEditor(); - userEvent.type(screen.getByTestId('customEmbeddablePanelDescriptionInput'), 'New desription'); + const descriptionInput = screen.getByTestId('customEmbeddablePanelDescriptionInput'); + expect(descriptionInput).toHaveValue(''); + }); + + it('Resets panel description to default when reset button is pressed', () => { + api.defaultPanelDescription = new BehaviorSubject('Default description'); + setDescription('Initial description'); + renderPanelEditor(); + userEvent.type( + screen.getByTestId('customEmbeddablePanelDescriptionInput'), + 'New description' + ); userEvent.click(screen.getByTestId('resetCustomEmbeddablePanelDescriptionButton')); expect(screen.getByTestId('customEmbeddablePanelDescriptionInput')).toHaveValue( 'Default description' ); }); - it('Reset panel description to undefined on apply', () => { - setDescription('very cool description'); + it('should hide description reset when no default exists', () => { + api.defaultPanelDescription = new BehaviorSubject(undefined); + setDescription('Initial description'); renderPanelEditor(); - userEvent.click(screen.getByTestId('resetCustomEmbeddablePanelDescriptionButton')); - userEvent.click(screen.getByTestId('saveCustomizePanelButton')); - expect(setDescription).toBeCalledWith(undefined); + userEvent.type( + screen.getByTestId('customEmbeddablePanelDescriptionInput'), + 'New description' + ); + expect( + screen.queryByTestId('resetCustomEmbeddablePanelDescriptionButton') + ).not.toBeInTheDocument(); }); }); diff --git a/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/customize_panel_editor.tsx b/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/customize_panel_editor.tsx index d74b55a69dae4c..ba6ae9280a07ac 100644 --- a/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/customize_panel_editor.tsx +++ b/src/plugins/presentation_panel/public/panel_actions/customize_panel_action/customize_panel_editor.tsx @@ -33,6 +33,7 @@ import { apiPublishesTimeRange, apiPublishesUnifiedSearch, getInheritedViewMode, + getPanelDescription, getPanelTitle, PublishesUnifiedSearch, } from '@kbn/presentation-publishing'; @@ -62,10 +63,8 @@ export const CustomizePanelEditor = ({ */ const editMode = getInheritedViewMode(api) === 'edit'; const [hideTitle, setHideTitle] = useState(api.hidePanelTitle?.value); - const [panelDescription, setPanelDescription] = useState( - api.panelDescription?.value ?? api.defaultPanelDescription?.value - ); const [panelTitle, setPanelTitle] = useState(getPanelTitle(api)); + const [panelDescription, setPanelDescription] = useState(getPanelDescription(api)); const [timeRange, setTimeRange] = useState( api.timeRange$?.value ?? api.parentApi?.timeRange$?.value ); @@ -121,7 +120,6 @@ export const CustomizePanelEditor = ({ } labelAppend={ - setPanelTitle(api.defaultPanelTitle?.value)} - disabled={hideTitle || !editMode || api?.defaultPanelTitle?.value === panelTitle} - aria-label={i18n.translate( - 'presentationPanel.action.customizePanel.flyout.optionsMenuForm.resetCustomTitleButtonAriaLabel', - { - defaultMessage: 'Reset title', - } - )} - > - - + api?.defaultPanelTitle?.value && ( + setPanelTitle(api.defaultPanelTitle?.value)} + disabled={hideTitle || panelTitle === api?.defaultPanelTitle?.value} + aria-label={i18n.translate( + 'presentationPanel.action.customizePanel.flyout.optionsMenuForm.resetCustomTitleButtonAriaLabel', + { + defaultMessage: 'Reset title to default', + } + )} + > + + + ) } > setPanelTitle(e.target.value)} aria-label={i18n.translate( @@ -185,23 +185,25 @@ export const CustomizePanelEditor = ({ /> } labelAppend={ - setPanelDescription(api.defaultPanelDescription?.value)} - disabled={!editMode || api.defaultPanelDescription?.value === panelDescription} - aria-label={i18n.translate( - 'presentationPanel.action.customizePanel.flyout.optionsMenuForm.resetCustomDescriptionButtonAriaLabel', - { - defaultMessage: 'Reset description', - } - )} - > - - + api.defaultPanelDescription?.value && ( + setPanelDescription(api.defaultPanelDescription?.value)} + disabled={api.defaultPanelDescription?.value === panelDescription} + aria-label={i18n.translate( + 'presentationPanel.action.customizePanel.flyout.optionsMenuForm.resetCustomDescriptionButtonAriaLabel', + { + defaultMessage: 'Reset description to default', + } + )} + > + + + ) } > { const panelTitle = getPanelTitle(embeddable) || i18n.translate('presentationPanel.action.inspectPanel.untitledEmbeddableFilename', { - defaultMessage: 'untitled', + defaultMessage: '[No Title]', }); const session = inspector.open(adapters, { title: panelTitle, diff --git a/src/plugins/saved_objects/public/save_modal/__snapshots__/saved_object_save_modal.test.tsx.snap b/src/plugins/saved_objects/public/save_modal/__snapshots__/saved_object_save_modal.test.tsx.snap index cb03cc72047cfa..c32c8d6d403310 100644 --- a/src/plugins/saved_objects/public/save_modal/__snapshots__/saved_object_save_modal.test.tsx.snap +++ b/src/plugins/saved_objects/public/save_modal/__snapshots__/saved_object_save_modal.test.tsx.snap @@ -79,7 +79,7 @@ exports[`SavedObjectSaveModal should render matching snapshot 1`] = ` labelType="label" > > diff --git a/test/functional/apps/dashboard/group6/embeddable_library.ts b/test/functional/apps/dashboard/group6/embeddable_library.ts index f2bc3147095a2c..aa0a7341e17c00 100644 --- a/test/functional/apps/dashboard/group6/embeddable_library.ts +++ b/test/functional/apps/dashboard/group6/embeddable_library.ts @@ -41,7 +41,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await dashboardAddPanel.closeAddPanel(); const originalPanel = await testSubjects.find('embeddablePanelHeading-RenderingTest:heatmap'); - await panelActions.legacyUnlinkFromLibary(originalPanel); + await panelActions.legacyUnlinkFromLibrary(originalPanel); await testSubjects.existOrFail('unlinkPanelSuccess'); const updatedPanel = await testSubjects.find('embeddablePanelHeading-RenderingTest:heatmap'); diff --git a/test/functional/apps/discover/ccs_compatibility/_timeout_results.ts b/test/functional/apps/discover/ccs_compatibility/_timeout_results.ts index cf163ce7c1f7ab..f8f81a44bdf8c6 100644 --- a/test/functional/apps/discover/ccs_compatibility/_timeout_results.ts +++ b/test/functional/apps/discover/ccs_compatibility/_timeout_results.ts @@ -21,8 +21,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const remoteEsArchiver = getService('remoteEsArchiver' as 'esArchiver'); - // Failing: See https://github.com/elastic/kibana/issues/181493 - describe.skip('discover search CCS timeout', () => { + describe('discover search CCS timeout', () => { before(async () => { await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); await remoteEsArchiver.loadIfNeeded( diff --git a/test/functional/page_objects/dashboard_page.ts b/test/functional/page_objects/dashboard_page.ts index 665c5f824390c4..66ce19c3d6d4fd 100644 --- a/test/functional/page_objects/dashboard_page.ts +++ b/test/functional/page_objects/dashboard_page.ts @@ -589,7 +589,7 @@ export class DashboardPageObject extends FtrService { public async getPanelTitles() { this.log.debug('in getPanelTitles'); const titleObjects = await this.find.allByCssSelector( - '[data-test-subj=embeddablePanelTitleInner] .embPanel__titleText' + '[data-test-subj="embeddablePanelTitleInner"] .embPanel__titleText' ); return await Promise.all(titleObjects.map(async (title) => await title.getVisibleText())); } diff --git a/test/functional/page_objects/time_to_visualize_page.ts b/test/functional/page_objects/time_to_visualize_page.ts index 26b2927fbb1d70..7c4e4cc6354d84 100644 --- a/test/functional/page_objects/time_to_visualize_page.ts +++ b/test/functional/page_objects/time_to_visualize_page.ts @@ -14,6 +14,7 @@ interface SaveModalArgs { dashboardId?: string; saveAsNew?: boolean; redirectToOrigin?: boolean; + description?: string; } type DashboardPickerOption = @@ -65,13 +66,27 @@ export class TimeToVisualizePageObject extends FtrService { public async setSaveModalValues( vizName: string, - { saveAsNew, redirectToOrigin, addToDashboard, dashboardId, saveToLibrary }: SaveModalArgs = {} + { + saveAsNew, + redirectToOrigin, + addToDashboard, + dashboardId, + saveToLibrary, + description, + }: SaveModalArgs = {} ) { await this.testSubjects.setValue('savedObjectTitle', vizName, { typeCharByChar: true, clearWithKeyboard: true, }); + if (description !== undefined) { + await this.testSubjects.setValue('savedObjectDescription', description, { + typeCharByChar: true, + clearWithKeyboard: true, + }); + } + const hasSaveAsNew = await this.testSubjects.exists('saveAsNewCheckbox'); if (hasSaveAsNew && saveAsNew !== undefined) { const state = saveAsNew ? 'check' : 'uncheck'; diff --git a/test/functional/page_objects/visualize_page.ts b/test/functional/page_objects/visualize_page.ts index 521d2afe578c4f..d12e7f6b4a3fd6 100644 --- a/test/functional/page_objects/visualize_page.ts +++ b/test/functional/page_objects/visualize_page.ts @@ -447,7 +447,7 @@ export class VisualizePageObject extends FtrService { await this.testSubjects.setValue('savedObjectTitle', vizName); if (description) { - await this.testSubjects.setValue('viewDescription', description); + await this.testSubjects.setValue('savedObjectDescription', description); } const saveAsNewCheckboxExists = await this.testSubjects.exists('saveAsNewCheckbox'); diff --git a/test/functional/services/dashboard/panel_actions.ts b/test/functional/services/dashboard/panel_actions.ts index 49a6f0ee1cebac..3e63d526760efd 100644 --- a/test/functional/services/dashboard/panel_actions.ts +++ b/test/functional/services/dashboard/panel_actions.ts @@ -91,7 +91,16 @@ export class DashboardPanelActionsService extends FtrService { await this.clickContextMenuMoreItem(); } - private async navigateToEditorFromFlyout() { + async clickContextMenuItem(itemSelector: string, parent?: WebElementWrapper) { + await this.openContextMenu(parent); + const exists = await this.testSubjects.exists(itemSelector); + if (!exists) { + await this.clickContextMenuMoreItem(); + } + await this.testSubjects.click(itemSelector); + } + + async navigateToEditorFromFlyout() { await this.testSubjects.clickWhenNotDisabledWithoutRetry(INLINE_EDIT_PANEL_DATA_TEST_SUBJ); await this.header.waitUntilLoadingHasFinished(); await this.testSubjects.click(EDIT_IN_LENS_EDITOR_DATA_TEST_SUBJ); @@ -113,7 +122,8 @@ export class DashboardPanelActionsService extends FtrService { await this.common.waitForTopNavToBeVisible(); } - /** The dashboard/canvas panels can be either edited on their editor or inline. + /** + * The dashboard/canvas panels can be either edited on their editor or inline. * The inline editing panels allow the navigation to the editor after the flyout opens */ async clickEdit() { @@ -135,7 +145,8 @@ export class DashboardPanelActionsService extends FtrService { await this.common.waitForTopNavToBeVisible(); } - /** The dashboard/canvas panels can be either edited on their editor or inline. + /** + * The dashboard/canvas panels can be either edited on their editor or inline. * The inline editing panels allow the navigation to the editor after the flyout opens */ async editPanelByTitle(title?: string) { @@ -253,35 +264,20 @@ export class DashboardPanelActionsService extends FtrService { } async openInspector(parent?: WebElementWrapper) { - await this.openContextMenu(parent); - const exists = await this.testSubjects.exists(OPEN_INSPECTOR_TEST_SUBJ); - if (!exists) { - await this.clickContextMenuMoreItem(); - } - await this.testSubjects.click(OPEN_INSPECTOR_TEST_SUBJ); + await this.clickContextMenuItem(OPEN_INSPECTOR_TEST_SUBJ, parent); } - async legacyUnlinkFromLibary(parent?: WebElementWrapper) { + async legacyUnlinkFromLibrary(parent?: WebElementWrapper) { this.log.debug('legacyUnlinkFromLibrary'); - await this.openContextMenu(parent); - const exists = await this.testSubjects.exists(LEGACY_UNLINK_FROM_LIBRARY_TEST_SUBJ); - if (!exists) { - await this.clickContextMenuMoreItem(); - } - await this.testSubjects.click(LEGACY_UNLINK_FROM_LIBRARY_TEST_SUBJ); + await this.clickContextMenuItem(LEGACY_UNLINK_FROM_LIBRARY_TEST_SUBJ, parent); await this.testSubjects.waitForDeleted( 'embeddablePanelNotification-ACTION_LIBRARY_NOTIFICATION' ); } - async unlinkFromLibary(parent?: WebElementWrapper) { + async unlinkFromLibrary(parent?: WebElementWrapper) { this.log.debug('unlinkFromLibrary'); - await this.openContextMenu(parent); - const exists = await this.testSubjects.exists(UNLINK_FROM_LIBRARY_TEST_SUBJ); - if (!exists) { - await this.clickContextMenuMoreItem(); - } - await this.testSubjects.click(UNLINK_FROM_LIBRARY_TEST_SUBJ); + await this.clickContextMenuItem(UNLINK_FROM_LIBRARY_TEST_SUBJ, parent); await this.testSubjects.waitForDeleted( 'embeddablePanelNotification-ACTION_LIBRARY_NOTIFICATION' ); @@ -289,12 +285,7 @@ export class DashboardPanelActionsService extends FtrService { async legacySaveToLibrary(newTitle: string, parent?: WebElementWrapper) { this.log.debug('legacySaveToLibrary'); - await this.openContextMenu(parent); - const exists = await this.testSubjects.exists(LEGACY_SAVE_TO_LIBRARY_TEST_SUBJ); - if (!exists) { - await this.clickContextMenuMoreItem(); - } - await this.testSubjects.click(LEGACY_SAVE_TO_LIBRARY_TEST_SUBJ); + await this.clickContextMenuItem(LEGACY_SAVE_TO_LIBRARY_TEST_SUBJ, parent); await this.testSubjects.setValue('savedObjectTitle', newTitle, { clearWithKeyboard: true, }); @@ -308,12 +299,7 @@ export class DashboardPanelActionsService extends FtrService { async saveToLibrary(newTitle: string, parent?: WebElementWrapper) { this.log.debug('saveToLibrary'); - await this.openContextMenu(parent); - const exists = await this.testSubjects.exists(SAVE_TO_LIBRARY_TEST_SUBJ); - if (!exists) { - await this.clickContextMenuMoreItem(); - } - await this.testSubjects.click(SAVE_TO_LIBRARY_TEST_SUBJ); + await this.clickContextMenuItem(SAVE_TO_LIBRARY_TEST_SUBJ, parent); await this.testSubjects.setValue('savedObjectTitle', newTitle, { clearWithKeyboard: true, }); diff --git a/test/functional/services/dashboard/panel_settings.ts b/test/functional/services/dashboard/panel_settings.ts index 7927d513e6e713..7bb428047698e0 100644 --- a/test/functional/services/dashboard/panel_settings.ts +++ b/test/functional/services/dashboard/panel_settings.ts @@ -124,6 +124,11 @@ export function DashboardCustomizePanelProvider({ getService, getPageObject }: F await testSubjects.click('customEmbeddablePanelHideTitleSwitch'); } + public async getCustomPanelTitle() { + log.debug('getCustomPanelTitle'); + return (await testSubjects.find('customEmbeddablePanelTitleInput')).getAttribute('value'); + } + public async setCustomPanelTitle(customTitle: string) { log.debug('setCustomPanelTitle'); await testSubjects.setValue('customEmbeddablePanelTitleInput', customTitle, { @@ -136,6 +141,13 @@ export function DashboardCustomizePanelProvider({ getService, getPageObject }: F await testSubjects.click('resetCustomEmbeddablePanelTitleButton'); } + public async getCustomPanelDescription() { + log.debug('getCustomPanelDescription'); + return (await testSubjects.find('customEmbeddablePanelDescriptionInput')).getAttribute( + 'value' + ); + } + public async setCustomPanelDescription(customDescription: string) { log.debug('setCustomPanelDescription'); await testSubjects.setValue('customEmbeddablePanelDescriptionInput', customDescription, { diff --git a/tsconfig.base.json b/tsconfig.base.json index 814033d8be3949..f87d111ac27aff 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1722,6 +1722,8 @@ "@kbn/triggers-actions-ui-plugin/*": ["x-pack/plugins/triggers_actions_ui/*"], "@kbn/triggers-actions-ui-types": ["packages/kbn-triggers-actions-ui-types"], "@kbn/triggers-actions-ui-types/*": ["packages/kbn-triggers-actions-ui-types/*"], + "@kbn/try-in-console": ["packages/kbn-try-in-console"], + "@kbn/try-in-console/*": ["packages/kbn-try-in-console/*"], "@kbn/ts-projects": ["packages/kbn-ts-projects"], "@kbn/ts-projects/*": ["packages/kbn-ts-projects/*"], "@kbn/ts-type-check-cli": ["packages/kbn-ts-type-check-cli"], diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/assistant/index.tsx index b589cd5626a870..082a747c04b86d 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/index.tsx @@ -230,14 +230,28 @@ const AssistantComponent: React.FC = ({ if (deepEqual(prev, nextConversation)) return prev; - return ( + const conversationToReturn = (nextConversation && conversations[ nextConversation?.id !== '' ? nextConversation?.id : nextConversation?.title ]) ?? conversations[WELCOME_CONVERSATION_TITLE] ?? - getDefaultConversation({ cTitle: WELCOME_CONVERSATION_TITLE, isFlyoutMode }) - ); + getDefaultConversation({ cTitle: WELCOME_CONVERSATION_TITLE, isFlyoutMode }); + + if ( + prev && + prev.id === conversationToReturn.id && + // if the conversation id has not changed and the previous conversation has more messages + // it is because the local conversation has a readable stream running + // and it has not yet been persisted to the stored conversation + prev.messages.length > conversationToReturn.messages.length + ) { + return { + ...conversationToReturn, + messages: prev.messages, + }; + } + return conversationToReturn; }); } }, [ @@ -758,6 +772,29 @@ const AssistantComponent: React.FC = ({ refetchConversationsState, ]); + const disclaimer = useMemo( + () => + isNewConversation && ( + + {i18n.DISCLAIMER} + + ), + [isFlyoutMode, isNewConversation] + ); + const flyoutBodyContent = useMemo(() => { if (isWelcomeSetup) { return ( @@ -946,7 +983,10 @@ const AssistantComponent: React.FC = ({ ) } > - {flyoutBodyContent} + + {flyoutBodyContent} + {disclaimer} + {/* = ({ )} - {getWrapper( - <> - {comments} - - {!isDisabled && showMissingConnectorCallout && areConnectorsFetched && ( + + + {' '} + {getWrapper( <> - - - - 0} - isSettingsModalVisible={isSettingsModalVisible} - setIsSettingsModalVisible={setIsSettingsModalVisible} - isFlyoutMode={isFlyoutMode} - /> - - - + {comments} + + {!isDisabled && showMissingConnectorCallout && areConnectorsFetched && ( + <> + + + + 0} + isSettingsModalVisible={isSettingsModalVisible} + setIsSettingsModalVisible={setIsSettingsModalVisible} + isFlyoutMode={isFlyoutMode} + /> + + + + )} + , + !embeddedLayout )} - , - !embeddedLayout - )} + + {disclaimer} + = React.memo( iconType: 'check', title: i18n.SETTINGS_UPDATED_TOAST_TITLE, }); + setHasPendingChanges(false); }, [ conversationSettings, defaultSelectedConversation.title, diff --git a/x-pack/packages/kbn-elastic-assistant/impl/assistant/translations.ts b/x-pack/packages/kbn-elastic-assistant/impl/assistant/translations.ts index 0d2cdbe62cec64..8a2dc63c701c80 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/assistant/translations.ts +++ b/x-pack/packages/kbn-elastic-assistant/impl/assistant/translations.ts @@ -69,3 +69,8 @@ export const WELCOME_SCREEN_DESCRIPTION = i18n.translate( "First things first, we'll need to set up a Generative AI Connector to get this chat experience going!", } ); + +export const DISCLAIMER = i18n.translate('xpack.elasticAssistant.assistant.disclaimer', { + defaultMessage: + 'Responses from Al systems may not always be entirely accurate, although they can seem convincing. For more information on the assistant feature and its usage, please reference the documentation.', +}); diff --git a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_modal/index.tsx b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_modal/index.tsx index e7bd7b368e6699..e689bc564329dc 100644 --- a/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_modal/index.tsx +++ b/x-pack/packages/kbn-elastic-assistant/impl/data_anonymization_editor/context_editor_modal/index.tsx @@ -113,8 +113,12 @@ const SelectedPromptContextEditorModalComponent = ({ onClose, onSave, promptCont } else { acc.create?.push({ field: item.field, - allowed: item.operation === 'add', - anonymized: item.operation === 'add', + allowed: + item.operation === 'add' && + (item.update === 'allow' || item.update === 'defaultAllow'), + anonymized: + item.operation === 'add' && + (item.update === 'allowReplacement' || item.update === 'defaultAllowReplacement'), }); acc.create = uniqBy(acc.create, 'field'); } diff --git a/x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts b/x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts index 165ba84c7d604d..f3a0d5aa86b149 100644 --- a/x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts +++ b/x-pack/packages/kbn-slo-schema/src/rest_specs/indicators.ts @@ -15,6 +15,7 @@ import { kqlWithFiltersSchema, metricCustomIndicatorSchema, querySchema, + filtersSchema, groupingsSchema, syntheticsAvailabilityIndicatorSchema, timesliceMetricBasicMetricWithField, @@ -42,6 +43,7 @@ type HistogramIndicator = t.OutputOf; type KQLCustomIndicator = t.OutputOf; type KqlWithFiltersSchema = t.TypeOf; type QuerySchema = t.TypeOf; +type FiltersSchema = t.TypeOf; type GroupingsSchema = t.TypeOf; export type { @@ -59,5 +61,6 @@ export type { KQLCustomIndicator, KqlWithFiltersSchema, QuerySchema, + FiltersSchema, GroupingsSchema, }; diff --git a/x-pack/packages/kbn-slo-schema/src/schema/indicators.ts b/x-pack/packages/kbn-slo-schema/src/schema/indicators.ts index b7f6848273e881..51a48f7c79b0e2 100644 --- a/x-pack/packages/kbn-slo-schema/src/schema/indicators.ts +++ b/x-pack/packages/kbn-slo-schema/src/schema/indicators.ts @@ -10,29 +10,31 @@ import { allOrAnyString } from './common'; const kqlQuerySchema = t.string; +const filtersSchema = t.array( + t.type({ + meta: t.partial({ + alias: t.union([t.string, t.null]), + disabled: t.boolean, + negate: t.boolean, + // controlledBy is there to identify who owns the filter + controlledBy: t.string, + // allows grouping of filters + group: t.string, + // index and type are optional only because when you create a new filter, there are no defaults + index: t.string, + isMultiIndex: t.boolean, + type: t.string, + key: t.string, + params: t.any, + value: t.string, + }), + query: t.record(t.string, t.any), + }) +); + const kqlWithFiltersSchema = t.type({ kqlQuery: t.string, - filters: t.array( - t.type({ - meta: t.partial({ - alias: t.union([t.string, t.null]), - disabled: t.boolean, - negate: t.boolean, - // controlledBy is there to identify who owns the filter - controlledBy: t.string, - // allows grouping of filters - group: t.string, - // index and type are optional only because when you create a new filter, there are no defaults - index: t.string, - isMultiIndex: t.boolean, - type: t.string, - key: t.string, - params: t.any, - value: t.string, - }), - query: t.record(t.string, t.any), - }) - ), + filters: filtersSchema, }); const querySchema = t.union([kqlQuerySchema, kqlWithFiltersSchema]); @@ -314,6 +316,7 @@ export { kqlQuerySchema, kqlWithFiltersSchema, querySchema, + filtersSchema, apmTransactionDurationIndicatorSchema, apmTransactionDurationIndicatorTypeSchema, apmTransactionErrorRateIndicatorSchema, 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 8fff372570505c..03ebe7b57ed031 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 @@ -63,6 +63,8 @@ export const ProgressControls: FC> = (pr runAnalysisDisabled = false, } = props; + const progressOutput = Math.round(progress * 100); + const { euiTheme } = useEuiTheme(); const runningProgressBarStyles = useAnimatedProgressBarBackground(euiTheme.colors.success); const analysisCompleteStyle = { display: 'none' }; @@ -147,7 +149,7 @@ export const ProgressControls: FC> = (pr data-test-subj="aiopsProgressTitleMessage" id="xpack.aiops.progressTitle" defaultMessage="Progress: {progress}% — {progressMessage}" - values={{ progress: Math.round(progress * 100), progressMessage }} + values={{ progress: progressOutput, progressMessage }} /> @@ -156,7 +158,7 @@ export const ProgressControls: FC> = (pr aria-label={i18n.translate('xpack.aiops.progressAriaLabel', { defaultMessage: 'Progress', })} - value={Math.round(progress * 100)} + value={progressOutput} max={100} size="m" /> diff --git a/x-pack/packages/ml/aiops_log_rate_analysis/api/stream_reducer.ts b/x-pack/packages/ml/aiops_log_rate_analysis/api/stream_reducer.ts index ca6148c133ccad..c4bde0b90c0fd9 100644 --- a/x-pack/packages/ml/aiops_log_rate_analysis/api/stream_reducer.ts +++ b/x-pack/packages/ml/aiops_log_rate_analysis/api/stream_reducer.ts @@ -34,12 +34,8 @@ export const initialState: StreamState = { export function streamReducer( state: StreamState, - action: AiopsLogRateAnalysisApiAction | AiopsLogRateAnalysisApiAction[] + action: AiopsLogRateAnalysisApiAction ): StreamState { - if (Array.isArray(action)) { - return action.reduce(streamReducer, state); - } - switch (action.type) { case API_ACTION_NAME.ADD_SIGNIFICANT_ITEMS: return { ...state, significantItems: [...state.significantItems, ...action.payload] }; diff --git a/x-pack/packages/ml/response_stream/client/fetch_stream.ts b/x-pack/packages/ml/response_stream/client/fetch_stream.ts index 7c4ad7789a3b67..6c45d8c99ce732 100644 --- a/x-pack/packages/ml/response_stream/client/fetch_stream.ts +++ b/x-pack/packages/ml/response_stream/client/fetch_stream.ts @@ -44,7 +44,7 @@ export async function* fetchStream body?: B, ndjson = true, headers?: HttpFetchOptions['headers'] -): AsyncGenerator<[GeneratorError, ReducerAction | Array> | undefined]> { +): AsyncGenerator<[GeneratorError, ReducerAction | undefined]> { let stream: Readonly | undefined; try { @@ -112,7 +112,9 @@ export async function* fetchStream : parts ) as Array>; - yield [null, actions]; + for (const action of actions) { + yield [null, action]; + } } catch (error) { if (error.name !== 'AbortError') { yield [error.toString(), undefined]; diff --git a/x-pack/packages/ml/response_stream/client/index.ts b/x-pack/packages/ml/response_stream/client/index.ts index 750442161a5699..a8b02cecd9cf6b 100644 --- a/x-pack/packages/ml/response_stream/client/index.ts +++ b/x-pack/packages/ml/response_stream/client/index.ts @@ -5,4 +5,5 @@ * 2.0. */ +export { fetchStream } from './fetch_stream'; export { useFetchStream } from './use_fetch_stream'; diff --git a/x-pack/packages/ml/response_stream/client/string_reducer.ts b/x-pack/packages/ml/response_stream/client/string_reducer.ts index f77b31e1fed1e0..d14990947fd059 100644 --- a/x-pack/packages/ml/response_stream/client/string_reducer.ts +++ b/x-pack/packages/ml/response_stream/client/string_reducer.ts @@ -7,20 +7,14 @@ import type { Reducer, ReducerAction, ReducerState } from 'react'; -type StringReducerPayload = string | string[] | undefined; +type StringReducerPayload = string | undefined; export type StringReducer = Reducer; /** * The `stringReducer` is provided to handle plain string based streams with `streamFactory()`. * * @param state - The current state, being the string fetched so far. - * @param payload — The state update can be a plain string, an array of strings or `undefined`. - * * An array of strings will be joined without a delimiter and added to the current string. - * In combination with `useFetchStream`'s buffering this allows to do bulk updates - * within the reducer without triggering a React/DOM update on every stream chunk. - * * `undefined` can be used to reset the state to an empty string, for example, when a - * UI has the option to trigger a refetch of a stream. - * + * @param payload — The state update can be a plain string to be added or `undefined` to reset the state. * @returns The updated state, a string that combines the previous string and the payload. */ export function stringReducer( @@ -31,5 +25,5 @@ export function stringReducer( return ''; } - return `${state}${Array.isArray(payload) ? payload.join('') : payload}`; + return `${state}${payload}`; } 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 309d53e8dd4bda..55950c6ee8f774 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 @@ -7,14 +7,12 @@ import { useEffect, - useReducer, useRef, useState, type Reducer, - type ReducerAction, type ReducerState, + type ReducerAction, } from 'react'; -import useThrottle from 'react-use/lib/useThrottle'; import type { HttpSetup, HttpFetchOptions } from '@kbn/core/public'; import { isPopulatedObject } from '@kbn/ml-is-populated-object'; @@ -22,6 +20,8 @@ import { isPopulatedObject } from '@kbn/ml-is-populated-object'; import { fetchStream } from './fetch_stream'; import { stringReducer, type StringReducer } from './string_reducer'; +const DATA_THROTTLE_MS = 100; + // This pattern with a dual ternary allows us to default to StringReducer // and if a custom reducer is supplied fall back to that one instead. // The complexity in here allows us to create a simpler API surface where @@ -57,6 +57,7 @@ function isReducerOptions(arg: unknown): arg is CustomReducer { * @param apiVersion Optional API version. * @param body Optional API request body. * @param customReducer Optional custom reducer and initial state. + * @param headers Optional headers. * @returns An object with streaming data and methods to act on the stream. */ export function useFetchStream>( @@ -75,11 +76,41 @@ export function useFetchStream>( ? customReducer : ({ reducer: stringReducer, initialState: '' } as FetchStreamCustomReducer); - const [data, dispatch] = useReducer( - reducerWithFallback.reducer, - reducerWithFallback.initialState - ); - const dataThrottled = useThrottle(data, 100); + // We used `useReducer` in previous iterations of this hook, but it caused + // a lot of unnecessary re-renders even in combination with `useThrottle`. + // We're now using `dataRef` to allow updates outside of the render cycle. + // When the stream is running, we'll update `data` with the `dataRef` value + // periodically. + const [data, setData] = useState(reducerWithFallback.initialState); + const dataRef = useRef(reducerWithFallback.initialState); + + // This effect is used to throttle the data updates while the stream is running. + // It will update the `data` state with the current `dataRef` value every 100ms. + useEffect(() => { + // We cannot check against `isRunning` in the `setTimeout` callback, because + // we would check against a stale value. Instead, we use a mutable + // object to keep track of the current state of the effect. + const effectState = { isActive: true }; + + if (isRunning) { + setData(dataRef.current); + + function updateData() { + setTimeout(() => { + setData(dataRef.current); + if (effectState.isActive) { + updateData(); + } + }, DATA_THROTTLE_MS); + } + + updateData(); + } + + return () => { + effectState.isActive = false; + }; + }, [isRunning]); const abortCtrl = useRef(new AbortController()); @@ -99,7 +130,7 @@ export function useFetchStream>( abortCtrl.current = new AbortController(); - for await (const [fetchStreamError, actions] of fetchStream>( + for await (const [fetchStreamError, action] of fetchStream>( http, endpoint, apiVersion, @@ -110,14 +141,26 @@ export function useFetchStream>( )) { if (fetchStreamError !== null) { addError(fetchStreamError); - } else if (Array.isArray(actions) && actions.length > 0) { - dispatch(actions as ReducerAction>); + } else if (action) { + dataRef.current = reducerWithFallback.reducer(dataRef.current, action) as ReducerState< + CustomReducer + >; } } setIsRunning(false); }; + // This custom dispatch function allows us to update the `dataRef` value and will + // then trigger an update of `data` right away as we don't want to have the + // throttling in place for these types of updates. + const dispatch = (action: ReducerAction['reducer']>) => { + dataRef.current = reducerWithFallback.reducer(dataRef.current, action) as ReducerState< + CustomReducer + >; + setData(dataRef.current); + }; + const cancel = () => { abortCtrl.current.abort(); setIsCancelled(true); @@ -131,10 +174,10 @@ export function useFetchStream>( return { cancel, - // 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 + // To avoid a race condition where the stream already ended but the throttling would + // yet have to trigger another update within the interval, we'll return // the unthrottled data once the stream is complete. - data: isRunning ? dataThrottled : data, + data: isRunning ? data : dataRef.current, dispatch, errors, isCancelled, diff --git a/x-pack/packages/ml/response_stream/server/index.ts b/x-pack/packages/ml/response_stream/server/index.ts index 2beb7223026174..ae337aa99898f2 100644 --- a/x-pack/packages/ml/response_stream/server/index.ts +++ b/x-pack/packages/ml/response_stream/server/index.ts @@ -8,5 +8,6 @@ export { streamFactory, type StreamFactoryReturnType, + type StreamResponseWithHeaders, type UncompressedResponseStream, } from './stream_factory'; diff --git a/x-pack/packages/ml/response_stream/server/stream_factory.ts b/x-pack/packages/ml/response_stream/server/stream_factory.ts index 29c570c2fb564d..779e3457c7dac3 100644 --- a/x-pack/packages/ml/response_stream/server/stream_factory.ts +++ b/x-pack/packages/ml/response_stream/server/stream_factory.ts @@ -26,35 +26,25 @@ export class UncompressedResponseStream extends Stream.PassThrough {} const DELIMITER = '\n'; -type StreamType = 'string' | 'ndjson'; +type StreamTypeUnion = string | object; +type StreamType = T extends string + ? string + : T extends object + ? T + : never; + +export interface StreamResponseWithHeaders { + body: zlib.Gzip | UncompressedResponseStream; + headers?: ResponseHeaders; +} -export interface StreamFactoryReturnType { +export interface StreamFactoryReturnType { DELIMITER: string; end: () => void; - push: (d: T, drain?: boolean) => void; - responseWithHeaders: { - body: zlib.Gzip | UncompressedResponseStream; - headers?: ResponseHeaders; - }; + push: (d: StreamType, drain?: boolean) => void; + responseWithHeaders: StreamResponseWithHeaders; } -/** - * Overload to set up a string based response stream with support - * for gzip compression depending on provided request headers. - * - * @param headers - Request headers. - * @param logger - Kibana logger. - * @param compressOverride - Optional flag to override header based compression setting. - * @param flushFix - Adds an attribute with a random string payload to overcome buffer flushing with certain proxy configurations. - * - * @returns An object with stream attributes and methods. - */ -export function streamFactory( - headers: Headers, - logger: Logger, - compressOverride?: boolean, - flushFix?: boolean -): StreamFactoryReturnType; /** * Sets up a response stream with support for gzip compression depending on provided * request headers. Any non-string data pushed to the stream will be streamed as NDJSON. @@ -66,13 +56,13 @@ export function streamFactory( * * @returns An object with stream attributes and methods. */ -export function streamFactory( +export function streamFactory( headers: Headers, logger: Logger, compressOverride: boolean = true, flushFix: boolean = false ): StreamFactoryReturnType { - let streamType: StreamType; + let streamType: 'string' | 'ndjson'; const isCompressed = compressOverride && acceptCompression(headers); const flushPayload = flushFix ? crypto.randomBytes(FLUSH_PAYLOAD_SIZE).toString('hex') @@ -82,7 +72,7 @@ export function streamFactory( const stream = isCompressed ? zlib.createGzip() : new UncompressedResponseStream(); // If waiting for draining of the stream, items will be added to this buffer. - const backPressureBuffer: T[] = []; + const backPressureBuffer: Array> = []; // Flag will be set when the "drain" listener is active so we can avoid setting multiple listeners. let waitForDrain = false; @@ -120,7 +110,7 @@ export function streamFactory( } } - function push(d: T, drain = false) { + function push(d: StreamType, drain = false) { logDebugMessage( `Push to stream. Current backPressure buffer size: ${backPressureBuffer.length}, drain flag: ${drain}` ); @@ -144,7 +134,7 @@ export function streamFactory( function repeat() { if (!tryToEnd) { if (responseSizeSinceLastKeepAlive < FLUSH_PAYLOAD_SIZE) { - push({ flushPayload } as unknown as T); + push({ flushPayload, type: 'flushPayload' } as StreamType); } responseSizeSinceLastKeepAlive = 0; setTimeout(repeat, FLUSH_KEEP_ALIVE_INTERVAL_MS); @@ -222,7 +212,7 @@ export function streamFactory( } } - const responseWithHeaders: StreamFactoryReturnType['responseWithHeaders'] = { + const responseWithHeaders: StreamResponseWithHeaders = { body: stream, headers: { ...(isCompressed ? { 'content-encoding': 'gzip' } : {}), diff --git a/x-pack/plugins/alerting/common/routes/rule/apis/delete/index.ts b/x-pack/plugins/alerting/common/routes/rule/apis/delete/index.ts new file mode 100644 index 00000000000000..d1440870677560 --- /dev/null +++ b/x-pack/plugins/alerting/common/routes/rule/apis/delete/index.ts @@ -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 { deleteRuleRequestParamsSchema } from './schemas/latest'; +export type { DeleteRuleRequestParams } from './types/latest'; + +export { deleteRuleRequestParamsSchema as deleteRuleRequestParamsSchemaV1 } from './schemas/v1'; +export type { DeleteRuleRequestParams as DeleteRuleRequestParamsV1 } from './types/v1'; diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/index.ts b/x-pack/plugins/alerting/common/routes/rule/apis/delete/schemas/latest.ts similarity index 91% rename from x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/index.ts rename to x-pack/plugins/alerting/common/routes/rule/apis/delete/schemas/latest.ts index 3b2a320ae181f5..25300c97a6d2e1 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/index.ts +++ b/x-pack/plugins/alerting/common/routes/rule/apis/delete/schemas/latest.ts @@ -5,4 +5,4 @@ * 2.0. */ -export * from './src'; +export * from './v1'; diff --git a/x-pack/plugins/alerting/common/routes/rule/apis/delete/schemas/v1.ts b/x-pack/plugins/alerting/common/routes/rule/apis/delete/schemas/v1.ts new file mode 100644 index 00000000000000..bd79d1b7f395ee --- /dev/null +++ b/x-pack/plugins/alerting/common/routes/rule/apis/delete/schemas/v1.ts @@ -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. + */ + +import { schema } from '@kbn/config-schema'; + +export const deleteRuleRequestParamsSchema = schema.object({ + id: schema.string(), +}); diff --git a/x-pack/plugins/alerting/common/routes/rule/apis/delete/types/latest.ts b/x-pack/plugins/alerting/common/routes/rule/apis/delete/types/latest.ts new file mode 100644 index 00000000000000..25300c97a6d2e1 --- /dev/null +++ b/x-pack/plugins/alerting/common/routes/rule/apis/delete/types/latest.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './v1'; diff --git a/x-pack/plugins/alerting/common/routes/rule/apis/delete/types/v1.ts b/x-pack/plugins/alerting/common/routes/rule/apis/delete/types/v1.ts new file mode 100644 index 00000000000000..8e019949e8139d --- /dev/null +++ b/x-pack/plugins/alerting/common/routes/rule/apis/delete/types/v1.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { TypeOf } from '@kbn/config-schema'; +import { deleteRuleRequestParamsSchemaV1 } from '..'; + +export type DeleteRuleRequestParams = TypeOf; diff --git a/x-pack/plugins/alerting/server/rules_client/tests/delete.test.ts b/x-pack/plugins/alerting/server/application/rule/methods/delete/delete_rule.test.ts similarity index 89% rename from x-pack/plugins/alerting/server/rules_client/tests/delete.test.ts rename to x-pack/plugins/alerting/server/application/rule/methods/delete/delete_rule.test.ts index ca62ca9f5ad7f0..8d96334ca8713f 100644 --- a/x-pack/plugins/alerting/server/rules_client/tests/delete.test.ts +++ b/x-pack/plugins/alerting/server/application/rule/methods/delete/delete_rule.test.ts @@ -7,7 +7,7 @@ import { AlertConsumers } from '@kbn/rule-data-utils'; -import { RulesClient, ConstructorOptions } from '../rules_client'; +import { RulesClient, ConstructorOptions } from '../../../../rules_client/rules_client'; import { savedObjectsClientMock, loggingSystemMock, @@ -15,21 +15,21 @@ import { uiSettingsServiceMock, } from '@kbn/core/server/mocks'; import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; -import { ruleTypeRegistryMock } from '../../rule_type_registry.mock'; -import { alertingAuthorizationMock } from '../../authorization/alerting_authorization.mock'; +import { ruleTypeRegistryMock } from '../../../../rule_type_registry.mock'; +import { alertingAuthorizationMock } from '../../../../authorization/alerting_authorization.mock'; import { encryptedSavedObjectsMock } from '@kbn/encrypted-saved-objects-plugin/server/mocks'; import { actionsAuthorizationMock } from '@kbn/actions-plugin/server/mocks'; -import { AlertingAuthorization } from '../../authorization/alerting_authorization'; +import { AlertingAuthorization } from '../../../../authorization/alerting_authorization'; import { ActionsAuthorization } from '@kbn/actions-plugin/server'; import { auditLoggerMock } from '@kbn/security-plugin/server/audit/mocks'; -import { getBeforeSetup } from './lib'; -import { bulkMarkApiKeysForInvalidation } from '../../invalidate_pending_api_keys/bulk_mark_api_keys_for_invalidation'; -import { migrateLegacyActions } from '../lib'; -import { ConnectorAdapterRegistry } from '../../connector_adapters/connector_adapter_registry'; -import { RULE_SAVED_OBJECT_TYPE } from '../../saved_objects'; -import { backfillClientMock } from '../../backfill_client/backfill_client.mock'; - -jest.mock('../lib/siem_legacy_actions/migrate_legacy_actions', () => { +import { getBeforeSetup } from '../../../../rules_client/tests/lib'; +import { bulkMarkApiKeysForInvalidation } from '../../../../invalidate_pending_api_keys/bulk_mark_api_keys_for_invalidation'; +import { migrateLegacyActions } from '../../../../rules_client/lib'; +import { ConnectorAdapterRegistry } from '../../../../connector_adapters/connector_adapter_registry'; +import { RULE_SAVED_OBJECT_TYPE } from '../../../../saved_objects'; +import { backfillClientMock } from '../../../../backfill_client/backfill_client.mock'; + +jest.mock('../../../../rules_client/lib/siem_legacy_actions/migrate_legacy_actions', () => { return { migrateLegacyActions: jest.fn(), }; @@ -40,7 +40,7 @@ jest.mock('../lib/siem_legacy_actions/migrate_legacy_actions', () => { resultedReferences: [], }); -jest.mock('../../invalidate_pending_api_keys/bulk_mark_api_keys_for_invalidation', () => ({ +jest.mock('../../../../invalidate_pending_api_keys/bulk_mark_api_keys_for_invalidation', () => ({ bulkMarkApiKeysForInvalidation: jest.fn(), })); @@ -140,7 +140,11 @@ describe('delete()', () => { test('successfully removes an alert', async () => { const result = await rulesClient.delete({ id: '1' }); expect(result).toEqual({ success: true }); - expect(unsecuredSavedObjectsClient.delete).toHaveBeenCalledWith(RULE_SAVED_OBJECT_TYPE, '1'); + expect(unsecuredSavedObjectsClient.delete).toHaveBeenCalledWith( + RULE_SAVED_OBJECT_TYPE, + '1', + undefined + ); expect(taskManager.removeIfExists).toHaveBeenCalledWith('task-123'); expect(bulkMarkApiKeysForInvalidation).toHaveBeenCalledTimes(1); expect(bulkMarkApiKeysForInvalidation).toHaveBeenCalledWith( @@ -163,10 +167,18 @@ describe('delete()', () => { const result = await rulesClient.delete({ id: '1' }); expect(result).toEqual({ success: true }); - expect(unsecuredSavedObjectsClient.delete).toHaveBeenCalledWith(RULE_SAVED_OBJECT_TYPE, '1'); + expect(unsecuredSavedObjectsClient.delete).toHaveBeenCalledWith( + RULE_SAVED_OBJECT_TYPE, + '1', + undefined + ); expect(taskManager.removeIfExists).toHaveBeenCalledWith('task-123'); expect(unsecuredSavedObjectsClient.create).not.toHaveBeenCalled(); - expect(unsecuredSavedObjectsClient.get).toHaveBeenCalledWith(RULE_SAVED_OBJECT_TYPE, '1'); + expect(unsecuredSavedObjectsClient.get).toHaveBeenCalledWith( + RULE_SAVED_OBJECT_TYPE, + '1', + undefined + ); expect(rulesClientParams.logger.error).toHaveBeenCalledWith( 'delete(): Failed to load API key to invalidate on alert 1: Fail' ); diff --git a/x-pack/plugins/alerting/server/application/rule/methods/delete/delete_rule.ts b/x-pack/plugins/alerting/server/application/rule/methods/delete/delete_rule.ts new file mode 100644 index 00000000000000..75163b8dff5cb4 --- /dev/null +++ b/x-pack/plugins/alerting/server/application/rule/methods/delete/delete_rule.ts @@ -0,0 +1,127 @@ +/* + * Copyright 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 Boom from '@hapi/boom'; +import { AlertConsumers } from '@kbn/rule-data-utils'; +import { RawRule } from '../../../../types'; +import { WriteOperations, AlertingAuthorizationEntity } from '../../../../authorization'; +import { retryIfConflicts } from '../../../../lib/retry_if_conflicts'; +import { bulkMarkApiKeysForInvalidation } from '../../../../invalidate_pending_api_keys/bulk_mark_api_keys_for_invalidation'; +import { ruleAuditEvent, RuleAuditAction } from '../../../../rules_client/common/audit_events'; +import { RulesClientContext } from '../../../../rules_client/types'; +import { untrackRuleAlerts, migrateLegacyActions } from '../../../../rules_client/lib'; +import { RuleAttributes } from '../../../../data/rule/types'; +import { RULE_SAVED_OBJECT_TYPE } from '../../../../saved_objects'; +import { DeleteRuleParams } from './types'; +import { deleteRuleParamsSchema } from './schemas'; +import { deleteRuleSo, getDecryptedRuleSo, getRuleSo } from '../../../../data/rule'; + +export async function deleteRule(context: RulesClientContext, params: DeleteRuleParams) { + try { + deleteRuleParamsSchema.validate(params); + } catch (error) { + throw Boom.badRequest(`Error validating delete params - ${error.message}`); + } + + const { id } = params; + + return await retryIfConflicts( + context.logger, + `rulesClient.delete('${id}')`, + async () => await deleteRuleWithOCC(context, { id }) + ); +} + +async function deleteRuleWithOCC(context: RulesClientContext, { id }: { id: string }) { + let taskIdToRemove: string | undefined | null; + let apiKeyToInvalidate: string | null = null; + let apiKeyCreatedByUser: boolean | undefined | null = false; + let attributes: RuleAttributes; + + try { + const decryptedRule = await getDecryptedRuleSo({ + encryptedSavedObjectsClient: context.encryptedSavedObjectsClient, + id, + savedObjectsGetOptions: { + namespace: context.namespace, + }, + }); + apiKeyToInvalidate = decryptedRule.attributes.apiKey; + apiKeyCreatedByUser = decryptedRule.attributes.apiKeyCreatedByUser; + taskIdToRemove = decryptedRule.attributes.scheduledTaskId; + attributes = decryptedRule.attributes; + } catch (e) { + // We'll skip invalidating the API key since we failed to load the decrypted saved object + context.logger.error( + `delete(): Failed to load API key to invalidate on alert ${id}: ${e.message}` + ); + + // Still attempt to load the scheduledTaskId using SOC + const rule = await getRuleSo({ + savedObjectsClient: context.unsecuredSavedObjectsClient, + id, + }); + taskIdToRemove = rule.attributes.scheduledTaskId; + attributes = rule.attributes; + } + + try { + await context.authorization.ensureAuthorized({ + ruleTypeId: attributes.alertTypeId, + consumer: attributes.consumer, + operation: WriteOperations.Delete, + entity: AlertingAuthorizationEntity.Rule, + }); + } catch (error) { + context.auditLogger?.log( + ruleAuditEvent({ + action: RuleAuditAction.DELETE, + savedObject: { type: RULE_SAVED_OBJECT_TYPE, id }, + error, + }) + ); + throw error; + } + + await untrackRuleAlerts(context, id, attributes); + + // migrate legacy actions only for SIEM rules + // TODO (http-versioning): Remove this cast, this enables us to move forward + // without fixing all of other solution types + if (attributes.consumer === AlertConsumers.SIEM) { + await migrateLegacyActions(context, { + ruleId: id, + attributes: attributes as RawRule, + skipActionsValidation: true, + }); + } + + context.auditLogger?.log( + ruleAuditEvent({ + action: RuleAuditAction.DELETE, + outcome: 'unknown', + savedObject: { type: RULE_SAVED_OBJECT_TYPE, id }, + }) + ); + const removeResult = await deleteRuleSo({ + savedObjectsClient: context.unsecuredSavedObjectsClient, + id, + }); + + await Promise.all([ + taskIdToRemove ? context.taskManager.removeIfExists(taskIdToRemove) : null, + apiKeyToInvalidate && !apiKeyCreatedByUser + ? bulkMarkApiKeysForInvalidation( + { apiKeys: [apiKeyToInvalidate] }, + context.logger, + context.unsecuredSavedObjectsClient + ) + : null, + ]); + + return removeResult; +} diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/src/index.ts b/x-pack/plugins/alerting/server/application/rule/methods/delete/index.ts similarity index 68% rename from x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/src/index.ts rename to x-pack/plugins/alerting/server/application/rule/methods/delete/index.ts index a28f2651edff37..0785c2af23f5c1 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/src/index.ts +++ b/x-pack/plugins/alerting/server/application/rule/methods/delete/index.ts @@ -5,7 +5,5 @@ * 2.0. */ -export * from './state_machine'; -export * from './types'; -export * from './defaults'; -export * from './notifications'; +export type { DeleteRuleParams } from './types'; +export { deleteRule } from './delete_rule'; diff --git a/x-pack/plugins/alerting/server/application/rule/methods/delete/schemas/delete_rule_params_schema.ts b/x-pack/plugins/alerting/server/application/rule/methods/delete/schemas/delete_rule_params_schema.ts new file mode 100644 index 00000000000000..720d2db4c24f6e --- /dev/null +++ b/x-pack/plugins/alerting/server/application/rule/methods/delete/schemas/delete_rule_params_schema.ts @@ -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. + */ + +import { schema } from '@kbn/config-schema'; + +export const deleteRuleParamsSchema = schema.object({ + id: schema.string(), +}); diff --git a/x-pack/plugins/alerting/server/application/rule/methods/delete/schemas/index.ts b/x-pack/plugins/alerting/server/application/rule/methods/delete/schemas/index.ts new file mode 100644 index 00000000000000..717d448c4fad2e --- /dev/null +++ b/x-pack/plugins/alerting/server/application/rule/methods/delete/schemas/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './delete_rule_params_schema'; diff --git a/x-pack/plugins/alerting/server/application/rule/methods/delete/types/delete_rule_params.ts b/x-pack/plugins/alerting/server/application/rule/methods/delete/types/delete_rule_params.ts new file mode 100644 index 00000000000000..69d54b9387f726 --- /dev/null +++ b/x-pack/plugins/alerting/server/application/rule/methods/delete/types/delete_rule_params.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { TypeOf } from '@kbn/config-schema'; +import { deleteRuleParamsSchema } from '../schemas'; + +export type DeleteRuleParams = TypeOf; diff --git a/x-pack/plugins/alerting/server/application/rule/methods/delete/types/index.ts b/x-pack/plugins/alerting/server/application/rule/methods/delete/types/index.ts new file mode 100644 index 00000000000000..f67d751e9ad37f --- /dev/null +++ b/x-pack/plugins/alerting/server/application/rule/methods/delete/types/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './delete_rule_params'; diff --git a/x-pack/plugins/alerting/server/routes/index.ts b/x-pack/plugins/alerting/server/routes/index.ts index 527b4ba48c0823..c695a0420c55b4 100644 --- a/x-pack/plugins/alerting/server/routes/index.ts +++ b/x-pack/plugins/alerting/server/routes/index.ts @@ -16,7 +16,7 @@ import { AlertingRequestHandlerContext } from '../types'; import { createRuleRoute } from './rule/apis/create'; import { getRuleRoute, getInternalRuleRoute } from './rule/apis/get/get_rule_route'; import { updateRuleRoute } from './rule/apis/update/update_rule_route'; -import { deleteRuleRoute } from './delete_rule'; +import { deleteRuleRoute } from './rule/apis/delete/delete_rule_route'; import { aggregateRulesRoute } from './rule/apis/aggregate/aggregate_rules_route'; import { disableRuleRoute } from './disable_rule'; import { enableRuleRoute } from './enable_rule'; diff --git a/x-pack/plugins/alerting/server/routes/delete_rule.test.ts b/x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.test.ts similarity index 87% rename from x-pack/plugins/alerting/server/routes/delete_rule.test.ts rename to x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.test.ts index 71222d859d3c85..488caab4281ac6 100644 --- a/x-pack/plugins/alerting/server/routes/delete_rule.test.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.test.ts @@ -5,16 +5,16 @@ * 2.0. */ -import { deleteRuleRoute } from './delete_rule'; +import { deleteRuleRoute } from './delete_rule_route'; import { httpServiceMock } from '@kbn/core/server/mocks'; -import { licenseStateMock } from '../lib/license_state.mock'; -import { verifyApiAccess } from '../lib/license_api_access'; -import { mockHandlerArguments } from './_mock_handler_arguments'; -import { rulesClientMock } from '../rules_client.mock'; +import { licenseStateMock } from '../../../../lib/license_state.mock'; +import { verifyApiAccess } from '../../../../lib/license_api_access'; +import { mockHandlerArguments } from '../../../_mock_handler_arguments'; +import { rulesClientMock } from '../../../../rules_client.mock'; const rulesClient = rulesClientMock.create(); -jest.mock('../lib/license_api_access', () => ({ +jest.mock('../../../../lib/license_api_access', () => ({ verifyApiAccess: jest.fn(), })); diff --git a/x-pack/plugins/alerting/server/routes/delete_rule.ts b/x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.ts similarity index 66% rename from x-pack/plugins/alerting/server/routes/delete_rule.ts rename to x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.ts index e4ccd491046d1a..bdd264ee21bf93 100644 --- a/x-pack/plugins/alerting/server/routes/delete_rule.ts +++ b/x-pack/plugins/alerting/server/routes/rule/apis/delete/delete_rule_route.ts @@ -6,14 +6,13 @@ */ import { IRouter } from '@kbn/core/server'; -import { schema } from '@kbn/config-schema'; -import { ILicenseState } from '../lib'; -import { verifyAccessAndContext } from './lib'; -import { AlertingRequestHandlerContext, BASE_ALERTING_API_PATH } from '../types'; - -const paramSchema = schema.object({ - id: schema.string(), -}); +import { ILicenseState } from '../../../../lib'; +import { verifyAccessAndContext } from '../../../lib'; +import { + deleteRuleRequestParamsSchemaV1, + DeleteRuleRequestParamsV1, +} from '../../../../../common/routes/rule/apis/delete'; +import { AlertingRequestHandlerContext, BASE_ALERTING_API_PATH } from '../../../../types'; export const deleteRuleRoute = ( router: IRouter, @@ -23,14 +22,16 @@ export const deleteRuleRoute = ( { path: `${BASE_ALERTING_API_PATH}/rule/{id}`, validate: { - params: paramSchema, + params: deleteRuleRequestParamsSchemaV1, }, }, router.handleLegacyErrors( verifyAccessAndContext(licenseState, async function (context, req, res) { const rulesClient = (await context.alerting).getRulesClient(); - const { id } = req.params; - await rulesClient.delete({ id }); + + const params: DeleteRuleRequestParamsV1 = req.params; + + await rulesClient.delete({ id: params.id }); return res.noContent(); }) ) 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 7b0d4352cbb532..e7922b069f8f10 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 @@ -18,7 +18,7 @@ import { import { retrieveMigratedLegacyActions } from './retrieve_migrated_legacy_actions'; import { findRules } from '../../../application/rule/methods/find/find_rules'; -import { deleteRule } from '../../methods/delete'; +import { deleteRule } from '../../../application/rule/methods/delete/delete_rule'; jest.mock('../../../application/rule/methods/find/find_rules', () => { return { @@ -26,7 +26,7 @@ jest.mock('../../../application/rule/methods/find/find_rules', () => { }; }); -jest.mock('../../methods/delete', () => { +jest.mock('../../../application/rule/methods/delete/delete_rule', () => { return { deleteRule: jest.fn(), }; 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 a9ab748cfa3d90..d11e679fd1f564 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 @@ -10,7 +10,7 @@ import { RULE_SAVED_OBJECT_TYPE } from '../../../saved_objects'; import type { RulesClientContext } from '../..'; import { RawRuleAction } from '../../../types'; import { findRules } from '../../../application/rule/methods/find/find_rules'; -import { deleteRule } from '../../methods/delete'; +import { deleteRule } from '../../../application/rule/methods/delete/delete_rule'; import { LegacyIRuleActionsAttributes, legacyRuleActionsSavedObjectType } from './types'; import { transformFromLegacyActions } from './transform_legacy_actions'; diff --git a/x-pack/plugins/alerting/server/rules_client/methods/delete.ts b/x-pack/plugins/alerting/server/rules_client/methods/delete.ts deleted file mode 100644 index 53baa548d783c4..00000000000000 --- a/x-pack/plugins/alerting/server/rules_client/methods/delete.ts +++ /dev/null @@ -1,106 +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 { AlertConsumers } from '@kbn/rule-data-utils'; -import { RawRule } from '../../types'; -import { WriteOperations, AlertingAuthorizationEntity } from '../../authorization'; -import { retryIfConflicts } from '../../lib/retry_if_conflicts'; -import { bulkMarkApiKeysForInvalidation } from '../../invalidate_pending_api_keys/bulk_mark_api_keys_for_invalidation'; -import { ruleAuditEvent, RuleAuditAction } from '../common/audit_events'; -import { RulesClientContext } from '../types'; -import { untrackRuleAlerts, migrateLegacyActions } from '../lib'; -import { RuleAttributes } from '../../data/rule/types'; -import { RULE_SAVED_OBJECT_TYPE } from '../../saved_objects'; - -export async function deleteRule(context: RulesClientContext, { id }: { id: string }) { - return await retryIfConflicts( - context.logger, - `rulesClient.delete('${id}')`, - async () => await deleteWithOCC(context, { id }) - ); -} - -async function deleteWithOCC(context: RulesClientContext, { id }: { id: string }) { - let taskIdToRemove: string | undefined | null; - let apiKeyToInvalidate: string | null = null; - let apiKeyCreatedByUser: boolean | undefined | null = false; - let attributes: RawRule; - - try { - const decryptedAlert = - await context.encryptedSavedObjectsClient.getDecryptedAsInternalUser( - RULE_SAVED_OBJECT_TYPE, - id, - { - namespace: context.namespace, - } - ); - apiKeyToInvalidate = decryptedAlert.attributes.apiKey; - apiKeyCreatedByUser = decryptedAlert.attributes.apiKeyCreatedByUser; - taskIdToRemove = decryptedAlert.attributes.scheduledTaskId; - attributes = decryptedAlert.attributes; - } catch (e) { - // We'll skip invalidating the API key since we failed to load the decrypted saved object - context.logger.error( - `delete(): Failed to load API key to invalidate on alert ${id}: ${e.message}` - ); - // Still attempt to load the scheduledTaskId using SOC - const alert = await context.unsecuredSavedObjectsClient.get( - RULE_SAVED_OBJECT_TYPE, - id - ); - taskIdToRemove = alert.attributes.scheduledTaskId; - attributes = alert.attributes; - } - - try { - await context.authorization.ensureAuthorized({ - ruleTypeId: attributes.alertTypeId, - consumer: attributes.consumer, - operation: WriteOperations.Delete, - entity: AlertingAuthorizationEntity.Rule, - }); - } catch (error) { - context.auditLogger?.log( - ruleAuditEvent({ - action: RuleAuditAction.DELETE, - savedObject: { type: RULE_SAVED_OBJECT_TYPE, id }, - error, - }) - ); - throw error; - } - - await untrackRuleAlerts(context, id, attributes as RuleAttributes); - - // migrate legacy actions only for SIEM rules - if (attributes.consumer === AlertConsumers.SIEM) { - await migrateLegacyActions(context, { ruleId: id, attributes, skipActionsValidation: true }); - } - - context.auditLogger?.log( - ruleAuditEvent({ - action: RuleAuditAction.DELETE, - outcome: 'unknown', - savedObject: { type: RULE_SAVED_OBJECT_TYPE, id }, - }) - ); - const removeResult = await context.unsecuredSavedObjectsClient.delete(RULE_SAVED_OBJECT_TYPE, id); - - await Promise.all([ - taskIdToRemove ? context.taskManager.removeIfExists(taskIdToRemove) : null, - apiKeyToInvalidate && !apiKeyCreatedByUser - ? bulkMarkApiKeysForInvalidation( - { apiKeys: [apiKeyToInvalidate] }, - context.logger, - context.unsecuredSavedObjectsClient - ) - : null, - ]); - - return removeResult; -} diff --git a/x-pack/plugins/alerting/server/rules_client/rules_client.ts b/x-pack/plugins/alerting/server/rules_client/rules_client.ts index 86be428ed40788..bc5918875c1933 100644 --- a/x-pack/plugins/alerting/server/rules_client/rules_client.ts +++ b/x-pack/plugins/alerting/server/rules_client/rules_client.ts @@ -39,7 +39,7 @@ import { import { findRules, FindRulesParams } from '../application/rule/methods/find'; import { AggregateParams } from '../application/rule/methods/aggregate/types'; import { aggregateRules } from '../application/rule/methods/aggregate'; -import { deleteRule } from './methods/delete'; +import { deleteRule, DeleteRuleParams } from '../application/rule/methods/delete'; import { bulkDeleteRules, BulkDeleteRulesRequestBody, @@ -131,7 +131,7 @@ export class RulesClient { cloneRule(this.context, params); public create = (params: CreateRuleParams) => createRule(this.context, params); - public delete = (params: { id: string }) => deleteRule(this.context, params); + public delete = (params: DeleteRuleParams) => deleteRule(this.context, params); public find = (params?: FindRulesParams) => findRules(this.context, params); public get = (params: GetRuleParams) => diff --git a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts index 5f5b069fe75e7d..79f810b35de6db 100644 --- a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts +++ b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts @@ -93,6 +93,7 @@ import { RuleResultService } from '../monitoring/rule_result_service'; import { ruleResultServiceMock } from '../monitoring/rule_result_service.mock'; import { backfillClientMock } from '../backfill_client/backfill_client.mock'; import { UntypedNormalizedRuleType } from '../rule_type_registry'; +import * as getExecutorServicesModule from './get_executor_services'; jest.mock('uuid', () => ({ v4: () => '5f6aa57d-3e22-484e-bae8-cbed868f4d28', @@ -106,6 +107,8 @@ jest.mock('../lib/alerting_event_logger/alerting_event_logger'); jest.mock('../monitoring/rule_result_service'); +jest.spyOn(getExecutorServicesModule, 'getExecutorServices'); + let fakeTimer: sinon.SinonFakeTimers; const logger: ReturnType = loggingSystemMock.createLogger(); @@ -1924,6 +1927,35 @@ describe('Task Runner', () => { expect(mockUsageCounter.incrementCounter).not.toHaveBeenCalled(); }); + test('should set unexpected errors as framework-error', async () => { + (getExecutorServicesModule.getExecutorServices as jest.Mock).mockRejectedValue( + new Error('test') + ); + + const taskRunner = new TaskRunner({ + ruleType, + internalSavedObjectsRepository, + taskInstance: mockedTaskInstance, + context: taskRunnerFactoryInitializerParams, + inMemoryMetrics, + }); + expect(AlertingEventLogger).toHaveBeenCalled(); + rulesClient.getAlertFromRaw.mockReturnValue(mockedRuleTypeSavedObject as Rule); + encryptedSavedObjectsClient.getDecryptedAsInternalUser.mockResolvedValue(mockedRawRuleSO); + + await taskRunner.run(); + + expect(logger.error).toBeCalledTimes(1); + + const loggerCall = logger.error.mock.calls[0][0]; + const loggerMeta = logger.error.mock.calls[0][1]; + const loggerCallPrefix = (loggerCall as string).split('-'); + expect(loggerCallPrefix[0].trim()).toMatchInlineSnapshot( + `"Executing Rule default:test:1 has resulted in Error: test"` + ); + expect(loggerMeta?.tags).toEqual(['test', '1', 'rule-run-failed', 'framework-error']); + }); + test('recovers gracefully when the RuleType executor throws an exception', async () => { const taskRunError = new Error(GENERIC_ERROR_MESSAGE); diff --git a/x-pack/plugins/alerting/server/task_runner/task_runner.ts b/x-pack/plugins/alerting/server/task_runner/task_runner.ts index 713ee520152391..b163617c089eb0 100644 --- a/x-pack/plugins/alerting/server/task_runner/task_runner.ts +++ b/x-pack/plugins/alerting/server/task_runner/task_runner.ts @@ -17,7 +17,7 @@ import { throwUnrecoverableError, } from '@kbn/task-manager-plugin/server'; import { nanosToMillis } from '@kbn/event-log-plugin/server'; -import { getErrorSource } from '@kbn/task-manager-plugin/server/task_running'; +import { getErrorSource, isUserError } from '@kbn/task-manager-plugin/server/task_running'; import { ExecutionHandler, RunResult } from './execution_handler'; import { RuleRunnerErrorStackTraceLog, @@ -686,8 +686,10 @@ export class TaskRunner< const { errors: errorsFromLastRun } = this.ruleResult.getLastRunResults(); if (errorsFromLastRun.length > 0) { - const isUserError = !errorsFromLastRun.some((lastRunError) => !lastRunError.userError); - const errorSource = isUserError ? TaskErrorSource.USER : TaskErrorSource.FRAMEWORK; + const isLastRunUserError = !errorsFromLastRun.some( + (lastRunError) => !lastRunError.userError + ); + const errorSource = isLastRunUserError ? TaskErrorSource.USER : TaskErrorSource.FRAMEWORK; const lasRunErrorMessages = errorsFromLastRun .map((lastRunError) => lastRunError.message) .join(','); @@ -709,14 +711,15 @@ export class TaskRunner< (ruleRunStateWithMetrics: RuleTaskStateAndMetrics) => transformRunStateToTaskState(ruleRunStateWithMetrics), (err: ElasticsearchError) => { - const errorSource = `${getErrorSource(err)}-error`; + const errorSource = isUserError(err) ? TaskErrorSource.USER : TaskErrorSource.FRAMEWORK; + const errorSourceTag = `${errorSource}-error`; if (isAlertSavedObjectNotFoundError(err, ruleId)) { const message = `Executing Rule ${spaceId}:${ this.ruleType.id }:${ruleId} has resulted in Error: ${getEsErrorMessage(err)}`; this.logger.debug(message, { - tags: [this.ruleType.id, ruleId, 'rule-run-failed', errorSource], + tags: [this.ruleType.id, ruleId, 'rule-run-failed', errorSourceTag], }); } else { const error = this.stackTraceLog ? this.stackTraceLog.message : err; @@ -725,7 +728,7 @@ export class TaskRunner< this.ruleType.id }:${ruleId} has resulted in Error: ${getEsErrorMessage(error)} - ${stack ?? ''}`; this.logger.error(message, { - tags: [this.ruleType.id, ruleId, 'rule-run-failed', errorSource], + tags: [this.ruleType.id, ruleId, 'rule-run-failed', errorSourceTag], error: { stack_trace: stack }, }); } diff --git a/x-pack/plugins/cases/public/components/connectors/resilient/use_get_incident_types.test.tsx b/x-pack/plugins/cases/public/components/connectors/resilient/use_get_incident_types.test.tsx index 4d7183d9985f56..7bff41383b77a3 100644 --- a/x-pack/plugins/cases/public/components/connectors/resilient/use_get_incident_types.test.tsx +++ b/x-pack/plugins/cases/public/components/connectors/resilient/use_get_incident_types.test.tsx @@ -19,7 +19,8 @@ jest.mock('./api'); const useKibanaMock = useKibana as jest.Mocked; -describe('useGetIncidentTypes', () => { +// FLAKY: https://github.com/elastic/kibana/issues/182845 +describe.skip('useGetIncidentTypes', () => { const { http } = useKibanaMock().services; let appMockRender: AppMockRenderer; diff --git a/x-pack/plugins/cases/public/containers/use_get_case_connectors.test.tsx b/x-pack/plugins/cases/public/containers/use_get_case_connectors.test.tsx index 220d37deefb5bd..802ea2d163d871 100644 --- a/x-pack/plugins/cases/public/containers/use_get_case_connectors.test.tsx +++ b/x-pack/plugins/cases/public/containers/use_get_case_connectors.test.tsx @@ -15,7 +15,8 @@ import { useGetCaseConnectors } from './use_get_case_connectors'; jest.mock('./api'); jest.mock('../common/lib/kibana'); -describe('useGetCaseConnectors', () => { +// FLAKY: https://github.com/elastic/kibana/issues/174356 +describe.skip('useGetCaseConnectors', () => { const caseId = 'test-id'; const abortCtrl = new AbortController(); const addSuccess = jest.fn(); diff --git a/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/types.ts b/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/types.ts index 0e7925df202811..ce2833fa144804 100644 --- a/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/types.ts +++ b/x-pack/plugins/elastic_assistant/server/lib/langchain/executors/types.ts @@ -13,7 +13,7 @@ import { KibanaRequest, ResponseHeaders } from '@kbn/core-http-server'; import type { LangChainTracer } from '@langchain/core/tracers/tracer_langchain'; import type { AnalyticsServiceSetup } from '@kbn/core-analytics-server'; import { ExecuteConnectorRequestBody, Message, Replacements } from '@kbn/elastic-assistant-common'; -import { StreamFactoryReturnType } from '@kbn/ml-response-stream/server'; +import { StreamResponseWithHeaders } from '@kbn/ml-response-stream/server'; import { AnonymizationFieldResponse } from '@kbn/elastic-assistant-common/impl/schemas/anonymization_fields/bulk_crud_anonymization_fields_route.gen'; import { ResponseBody } from '../types'; import type { AssistantTool } from '../../../types'; @@ -51,7 +51,7 @@ export interface StaticReturnType { headers: ResponseHeaders; } export type AgentExecutorResponse = T extends true - ? StreamFactoryReturnType['responseWithHeaders'] + ? StreamResponseWithHeaders : StaticReturnType; export type AgentExecutor = ( diff --git a/x-pack/plugins/elastic_assistant/server/routes/post_actions_connector_execute.ts b/x-pack/plugins/elastic_assistant/server/routes/post_actions_connector_execute.ts index e579996eb13d19..e76b7cd3377835 100644 --- a/x-pack/plugins/elastic_assistant/server/routes/post_actions_connector_execute.ts +++ b/x-pack/plugins/elastic_assistant/server/routes/post_actions_connector_execute.ts @@ -8,7 +8,7 @@ import { IRouter, Logger } from '@kbn/core/server'; import { transformError } from '@kbn/securitysolution-es-utils'; import { getRequestAbortedSignal } from '@kbn/data-plugin/server'; -import { StreamFactoryReturnType } from '@kbn/ml-response-stream/server'; +import { StreamResponseWithHeaders } from '@kbn/ml-response-stream/server'; import { schema } from '@kbn/config-schema'; import { @@ -323,42 +323,41 @@ export const postActionsConnectorExecuteRoute = ( page: 1, }); - const result: StreamFactoryReturnType['responseWithHeaders'] | StaticReturnType = - await callAgentExecutor({ - abortSignal, - alertsIndexPattern: request.body.alertsIndexPattern, - anonymizationFields: anonymizationFieldsRes - ? transformESSearchToAnonymizationFields(anonymizationFieldsRes.data) - : undefined, - actions, - isEnabledKnowledgeBase: request.body.isEnabledKnowledgeBase ?? false, - assistantTools, - connectorId, - elserId, - esClient, - isStream: - // TODO implement llmClass for bedrock streaming - // tracked here: https://github.com/elastic/security-team/issues/7363 - request.body.subAction !== 'invokeAI' && actionTypeId === '.gen-ai', - llmType: getLlmType(actionTypeId), - kbResource: ESQL_RESOURCE, - langChainMessages, - logger, - onNewReplacements, - onLlmResponse, - request, - replacements: request.body.replacements, - size: request.body.size, - telemetry, - traceOptions: { + const result: StreamResponseWithHeaders | StaticReturnType = await callAgentExecutor({ + abortSignal, + alertsIndexPattern: request.body.alertsIndexPattern, + anonymizationFields: anonymizationFieldsRes + ? transformESSearchToAnonymizationFields(anonymizationFieldsRes.data) + : undefined, + actions, + isEnabledKnowledgeBase: request.body.isEnabledKnowledgeBase ?? false, + assistantTools, + connectorId, + elserId, + esClient, + isStream: + // TODO implement llmClass for bedrock streaming + // tracked here: https://github.com/elastic/security-team/issues/7363 + request.body.subAction !== 'invokeAI' && actionTypeId === '.gen-ai', + llmType: getLlmType(actionTypeId), + kbResource: ESQL_RESOURCE, + langChainMessages, + logger, + onNewReplacements, + onLlmResponse, + request, + replacements: request.body.replacements, + size: request.body.size, + telemetry, + traceOptions: { + projectName: langSmithProject, + tracers: getLangSmithTracer({ + apiKey: langSmithApiKey, projectName: langSmithProject, - tracers: getLangSmithTracer({ - apiKey: langSmithApiKey, - projectName: langSmithProject, - logger, - }), - }, - }); + logger, + }), + }, + }); telemetry.reportEvent(INVOKE_ASSISTANT_SUCCESS_EVENT.eventType, { actionTypeId, @@ -371,9 +370,7 @@ export const postActionsConnectorExecuteRoute = ( request.body.subAction !== 'invokeAI' && actionTypeId === '.gen-ai', }); - return response.ok< - StreamFactoryReturnType['responseWithHeaders']['body'] | StaticReturnType['body'] - >(result); + return response.ok(result); } catch (err) { logger.error(err); const error = transformError(err); diff --git a/x-pack/plugins/enterprise_search/public/applications/vector_search/components/dev_tools_console_code_block/dev_tools_console_code_block.tsx b/x-pack/plugins/enterprise_search/public/applications/vector_search/components/dev_tools_console_code_block/dev_tools_console_code_block.tsx index 16db95597f74ec..d48011d54cdff5 100644 --- a/x-pack/plugins/enterprise_search/public/applications/vector_search/components/dev_tools_console_code_block/dev_tools_console_code_block.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/vector_search/components/dev_tools_console_code_block/dev_tools_console_code_block.tsx @@ -21,7 +21,7 @@ import { EuiThemeProvider, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; -import { TryInConsoleButton } from '@kbn/search-api-panels'; +import { TryInConsoleButton } from '@kbn/try-in-console'; import { KibanaLogic } from '../../../shared/kibana'; diff --git a/x-pack/plugins/enterprise_search/tsconfig.json b/x-pack/plugins/enterprise_search/tsconfig.json index 4bd4ee55807a56..6161461b48b89a 100644 --- a/x-pack/plugins/enterprise_search/tsconfig.json +++ b/x-pack/plugins/enterprise_search/tsconfig.json @@ -74,6 +74,7 @@ "@kbn/index-management", "@kbn/deeplinks-search", "@kbn/react-kibana-context-theme", - "@kbn/search-types" + "@kbn/search-types", + "@kbn/try-in-console" ] } diff --git a/x-pack/plugins/fleet/common/constants/mappings.ts b/x-pack/plugins/fleet/common/constants/mappings.ts index f869889bf6cdea..69eaee1dfed566 100644 --- a/x-pack/plugins/fleet/common/constants/mappings.ts +++ b/x-pack/plugins/fleet/common/constants/mappings.ts @@ -166,6 +166,9 @@ export const AGENT_MAPPINGS = { }, }, }, + unprivileged: { + type: 'boolean', + }, }, }, }, diff --git a/x-pack/plugins/fleet/common/index.ts b/x-pack/plugins/fleet/common/index.ts index 0c729823f33912..fed73a5653313e 100644 --- a/x-pack/plugins/fleet/common/index.ts +++ b/x-pack/plugins/fleet/common/index.ts @@ -73,6 +73,7 @@ export { fleetSetupRouteService, // Package policy helpers isValidNamespace, + isValidDataset, INVALID_NAMESPACE_CHARACTERS, getFileMetadataIndexName, getFileDataIndexName, diff --git a/x-pack/plugins/fleet/common/services/index.ts b/x-pack/plugins/fleet/common/services/index.ts index 3d1fc77f2a373e..db7cb41d5fea0f 100644 --- a/x-pack/plugins/fleet/common/services/index.ts +++ b/x-pack/plugins/fleet/common/services/index.ts @@ -16,7 +16,11 @@ export { } from './package_to_package_policy'; export { fullAgentPolicyToYaml } from './full_agent_policy_to_yaml'; export { isPackageLimited, doesAgentPolicyAlreadyIncludePackage } from './limited_package'; -export { isValidNamespace, INVALID_NAMESPACE_CHARACTERS } from './is_valid_namespace'; +export { + isValidDataset, + isValidNamespace, + INVALID_NAMESPACE_CHARACTERS, +} from './is_valid_namespace'; export { isDiffPathProtocol } from './is_diff_path_protocol'; export { LicenseService } from './license'; export * from './is_agent_upgradeable'; diff --git a/x-pack/plugins/fleet/common/services/is_valid_namespace.ts b/x-pack/plugins/fleet/common/services/is_valid_namespace.ts index 49332c4a88156e..dcc1a2b9b5cbfb 100644 --- a/x-pack/plugins/fleet/common/services/is_valid_namespace.ts +++ b/x-pack/plugins/fleet/common/services/is_valid_namespace.ts @@ -14,37 +14,71 @@ export function isValidNamespace( namespace: string, allowBlankNamespace?: boolean ): { valid: boolean; error?: string } { - if (!namespace.trim() && !allowBlankNamespace) { + return isValidEntity(namespace, 'Namespace', allowBlankNamespace); +} + +export function isValidDataset( + dataset: string, + allowBlank?: boolean +): { valid: boolean; error?: string } { + const { valid, error } = isValidEntity(dataset, 'Dataset', allowBlank); + if (!valid) { + return { valid, error }; + } + if (dataset.startsWith('_') || dataset.startsWith('.')) { + return { + valid: false, + error: i18n.translate( + 'xpack.fleet.datasetValidation.datasetStartsWithUnderscoreErrorMessage', + { + defaultMessage: 'Dataset cannot start with an underscore or dot', + } + ), + }; + } + return { valid, error }; +} + +function isValidEntity( + name: string, + type: string, + allowBlank?: boolean +): { valid: boolean; error?: string } { + if (!name.trim() && !allowBlank) { return { valid: false, error: i18n.translate('xpack.fleet.namespaceValidation.requiredErrorMessage', { - defaultMessage: 'Namespace is required', + defaultMessage: '{type} is required', + values: { type }, }), }; - } else if (namespace !== namespace.toLowerCase()) { + } else if (name !== name.toLowerCase()) { return { valid: false, error: i18n.translate('xpack.fleet.namespaceValidation.lowercaseErrorMessage', { - defaultMessage: 'Namespace must be lowercase', + defaultMessage: '{type} must be lowercase', + values: { type }, }), }; - } else if (INVALID_NAMESPACE_CHARACTERS.test(namespace)) { + } else if (INVALID_NAMESPACE_CHARACTERS.test(name)) { return { valid: false, error: i18n.translate('xpack.fleet.namespaceValidation.invalidCharactersErrorMessage', { - defaultMessage: 'Namespace contains invalid characters', + defaultMessage: '{type} contains invalid characters', + values: { type }, }), }; } // Node.js doesn't have Blob, and browser doesn't have Buffer :) else if ( - (typeof Blob === 'function' && new Blob([namespace]).size > 100) || - (typeof Buffer === 'function' && Buffer.from(namespace).length > 100) + (typeof Blob === 'function' && new Blob([name]).size > 100) || + (typeof Buffer === 'function' && Buffer.from(name).length > 100) ) { return { valid: false, error: i18n.translate('xpack.fleet.namespaceValidation.tooLongErrorMessage', { - defaultMessage: 'Namespace cannot be more than 100 bytes', + defaultMessage: '{type} cannot be more than 100 bytes', + values: { type }, }), }; } diff --git a/x-pack/plugins/fleet/common/services/validate_package_policy.test.ts b/x-pack/plugins/fleet/common/services/validate_package_policy.test.ts index 7f5c6999bce9c7..3f443838d485e7 100644 --- a/x-pack/plugins/fleet/common/services/validate_package_policy.test.ts +++ b/x-pack/plugins/fleet/common/services/validate_package_policy.test.ts @@ -1079,4 +1079,144 @@ describe('Fleet - validatePackagePolicyConfig', () => { expect(res).toEqual(['Secret reference is invalid, id must be a string']); }); }); + + describe('Dataset', () => { + const datasetError = 'Dataset contains invalid characters'; + + const validateDataset = (dataset: string) => { + return validatePackagePolicyConfig( + { + type: 'text', + value: { dataset, package: 'log' }, + }, + { + name: 'data_stream.dataset', + type: 'text', + }, + 'data_stream.dataset', + safeLoad, + 'input' + ); + }; + + it('should return an error message if the value has *', () => { + const res = validateDataset('test*'); + + expect(res).toEqual([datasetError]); + }); + + it('should return an error message if the value has uppercase letter', () => { + const res = validateDataset('Test'); + + expect(res).toEqual(['Dataset must be lowercase']); + }); + + it('should return an error message if the value has _ in the beginning', () => { + const res = validateDataset('_test'); + + expect(res).toEqual(['Dataset cannot start with an underscore or dot']); + }); + + it('should return an error message if the value has . in the beginning', () => { + const res = validateDataset('.test'); + + expect(res).toEqual(['Dataset cannot start with an underscore or dot']); + }); + + it('should not return an error message if the value is valid', () => { + const res = validateDataset('fleet_server.test_dataset'); + + expect(res).toEqual(null); + }); + + it('should not return an error message if the value is undefined', () => { + const res = validatePackagePolicyConfig( + { + type: 'text', + value: undefined, + }, + { + name: 'data_stream.dataset', + type: 'text', + }, + 'data_stream.dataset', + safeLoad, + 'input' + ); + + expect(res).toEqual(null); + }); + + it('should not return an error message if the package is not input type', () => { + const res = validatePackagePolicyConfig( + { + type: 'text', + value: { dataset: 'Test', package: 'log' }, + }, + { + name: 'data_stream.dataset', + type: 'text', + }, + 'data_stream.dataset', + safeLoad, + 'integration' + ); + + expect(res).toEqual(null); + }); + + it('should not return an error message if the var is not dataset', () => { + const res = validatePackagePolicyConfig( + { + type: 'text', + value: { dataset: 'Test', package: 'log' }, + }, + { + name: 'test_field', + type: 'text', + }, + 'test_field', + safeLoad, + 'input' + ); + + expect(res).toEqual(null); + }); + + it('should return an error message if the string dataset value has special characters', () => { + const res = validatePackagePolicyConfig( + { + type: 'text', + value: 'test*', + }, + { + name: 'data_stream.dataset', + type: 'text', + }, + 'data_stream.dataset', + safeLoad, + 'input' + ); + + expect(res).toEqual(['Dataset contains invalid characters']); + }); + + it('should return an error message if the dataset value has special characters', () => { + const res = validatePackagePolicyConfig( + { + type: 'text', + value: { dataset: 'test*', package: 'log' }, + }, + { + name: 'data_stream.dataset', + type: 'text', + }, + 'data_stream.dataset', + safeLoad, + 'input' + ); + + expect(res).toEqual(['Dataset contains invalid characters']); + }); + }); }); diff --git a/x-pack/plugins/fleet/common/services/validate_package_policy.ts b/x-pack/plugins/fleet/common/services/validate_package_policy.ts index 8cbaf56b546dbd..1de38822cbc80e 100644 --- a/x-pack/plugins/fleet/common/services/validate_package_policy.ts +++ b/x-pack/plugins/fleet/common/services/validate_package_policy.ts @@ -19,6 +19,8 @@ import type { RegistryVarsEntry, } from '../types'; +import { DATASET_VAR_NAME } from '../constants'; + import { isValidNamespace, doesPackageHaveIntegrations, @@ -26,6 +28,7 @@ import { getNormalizedDataStreams, } from '.'; import { packageHasNoPolicyTemplates } from './policy_template'; +import { isValidDataset } from './is_valid_namespace'; type Errors = string[] | null; @@ -173,7 +176,13 @@ export const validatePackagePolicy = ( results[name] = input.enabled && stream.enabled - ? validatePackagePolicyConfig(configEntry, streamVarDefs[name], name, safeLoadYaml) + ? validatePackagePolicyConfig( + configEntry, + streamVarDefs[name], + name, + safeLoadYaml, + packageInfo.type + ) : null; return results; @@ -202,7 +211,8 @@ export const validatePackagePolicyConfig = ( configEntry: PackagePolicyConfigRecordEntry | undefined, varDef: RegistryVarsEntry, varName: string, - safeLoadYaml: (yaml: string) => any + safeLoadYaml: (yaml: string) => any, + packageType?: string ): string[] | null => { const errors = []; @@ -357,6 +367,16 @@ export const validatePackagePolicyConfig = ( } } + if (varName === DATASET_VAR_NAME && packageType === 'input' && parsedValue !== undefined) { + const { valid, error } = isValidDataset( + parsedValue.dataset ? parsedValue.dataset : parsedValue, + false + ); + if (!valid && error) { + errors.push(error); + } + } + return errors.length ? errors : null; }; diff --git a/x-pack/plugins/fleet/common/settings/agent_policy_settings.ts b/x-pack/plugins/fleet/common/settings/agent_policy_settings.ts index 26d828acde9e17..4257f47c7c33d2 100644 --- a/x-pack/plugins/fleet/common/settings/agent_policy_settings.ts +++ b/x-pack/plugins/fleet/common/settings/agent_policy_settings.ts @@ -27,10 +27,10 @@ export const AGENT_POLICY_ADVANCED_SETTINGS: SettingsConfig[] = [ { name: 'agent.limits.go_max_procs', title: i18n.translate('xpack.fleet.settings.agentPolicyAdvanced.goMaxProcsTitle', { - defaultMessage: 'GO_MAX_PROCS', + defaultMessage: 'Limit CPU usage', }), description: i18n.translate('xpack.fleet.settings.agentPolicyAdvanced.goMaxProcsDescription', { - defaultMessage: 'Limits the maximum number of CPUs that can be executing simultaneously', + defaultMessage: 'Limits the maximum number of CPUs that can be executing simultaneously.', }), learnMoreLink: 'https://www.elastic.co/guide/en/fleet/current/enable-custom-policy-settings.html#limit-cpu-usage', @@ -48,7 +48,7 @@ export const AGENT_POLICY_ADVANCED_SETTINGS: SettingsConfig[] = [ description: i18n.translate( 'xpack.fleet.settings.agentPolicyAdvanced.downloadTimeoutDescription', { - defaultMessage: 'Timeout for downloading the agent binary', + defaultMessage: 'Timeout for downloading the agent binary.', } ), learnMoreLink: @@ -73,7 +73,7 @@ export const AGENT_POLICY_ADVANCED_SETTINGS: SettingsConfig[] = [ description: i18n.translate( 'xpack.fleet.settings.agentPolicyAdvanced.agentDownloadTargetDirectoryDescription', { - defaultMessage: 'The disk path to which the agent binary will be downloaded', + defaultMessage: 'The disk path to which the agent binary will be downloaded.', } ), learnMoreLink: @@ -95,7 +95,7 @@ export const AGENT_POLICY_ADVANCED_SETTINGS: SettingsConfig[] = [ description: i18n.translate( 'xpack.fleet.settings.agentPolicyAdvanced.agentLoggingMetricsPeriodDescription', { - defaultMessage: 'The frequency of agent metrics logging', + defaultMessage: 'The frequency of logging the internal Elastic Agent metrics.', } ), learnMoreLink: @@ -104,27 +104,27 @@ export const AGENT_POLICY_ADVANCED_SETTINGS: SettingsConfig[] = [ }, { name: 'agent.monitoring.http', - hidden: true, api_field: { name: 'agent_monitoring_http', }, title: i18n.translate('xpack.fleet.settings.agentPolicyAdvanced.agentMonitoringHttpTitle', { - defaultMessage: 'Agent HTTP monitoring', + defaultMessage: 'HTTP monitoring endpoint', }), description: i18n.translate( 'xpack.fleet.settings.agentPolicyAdvanced.agentMonitoringHttpDescription', { - defaultMessage: 'Agent HTTP monitoring settings', + defaultMessage: + 'Enables a liveness HTTP endpoint that returns the overall health of Elastic Agent. This can be used by Kubernetes to restart the container, for example.', } ), learnMoreLink: 'https://www.elastic.co/guide/en/fleet/current/enable-custom-policy-settings.html#override-default-monitoring-port', schema: z .object({ - enabled: z.boolean().describe('Enabled').default(false), + // enabled: z.boolean().describe('Enabled').default(false), host: z.string().describe('Host').default('localhost'), port: z.number().describe('Port').min(0).max(65353).default(6791), - 'buffer.enabled': z.boolean().describe('Buffer Enabled').default(false), + // 'buffer.enabled': z.boolean().describe('Buffer Enabled').default(false), }) .default({}), }, @@ -132,13 +132,13 @@ export const AGENT_POLICY_ADVANCED_SETTINGS: SettingsConfig[] = [ name: 'agent.logging.level', hidden: true, title: i18n.translate('xpack.fleet.settings.agentPolicyAdvanced.agentLoggingLevelTitle', { - defaultMessage: 'Agent Logging Level', + defaultMessage: 'Agent logging level', }), description: i18n.translate( 'xpack.fleet.settings.agentPolicyAdvanced.agentLoggingLevelDescription', { defaultMessage: - 'Sets the log level for all the agents on the policy. The default log level is "info"', + 'Sets the log level for all the agents on the policy. The default log level is "info".', } ), api_field: { diff --git a/x-pack/plugins/fleet/common/settings/types.ts b/x-pack/plugins/fleet/common/settings/types.ts index da22e15dc2609d..b555f1a5faa3d5 100644 --- a/x-pack/plugins/fleet/common/settings/types.ts +++ b/x-pack/plugins/fleet/common/settings/types.ts @@ -12,7 +12,7 @@ export type SettingsSection = 'AGENT_POLICY_ADVANCED_SETTINGS'; export interface SettingsConfig { name: string; title: string; - description: string; + description: string | React.ReactNode; learnMoreLink?: string; schema: z.ZodTypeAny; api_field: { diff --git a/x-pack/plugins/fleet/public/applications/fleet/components/form_settings/settings_field_wrapper.tsx b/x-pack/plugins/fleet/public/applications/fleet/components/form_settings/settings_field_wrapper.tsx index 6f92966c914706..08c83277d363b5 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/components/form_settings/settings_field_wrapper.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/components/form_settings/settings_field_wrapper.tsx @@ -7,6 +7,7 @@ import { z, ZodFirstPartyTypeKind } from 'zod'; import React, { useState } from 'react'; +import { FormattedMessage } from '@kbn/i18n-react'; import { EuiDescribedFormGroup, EuiFormRow, EuiLink } from '@elastic/eui'; import type { SettingsConfig } from '../../../../../common/settings/types'; @@ -75,10 +76,13 @@ export const SettingsFieldWrapper: React.FC<{ title={

{settingsConfig.title}

} description={ <> - {settingsConfig.description}.{' '} + {settingsConfig.description}{' '} {settingsConfig.learnMoreLink && ( - Learn more. + )} diff --git a/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.test.tsx index ebbbeb0814bcf6..3c005750abb405 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/components/search_bar.test.tsx @@ -170,7 +170,7 @@ describe('SearchBar', () => { describe('getFieldSpecs', () => { it('returns fieldSpecs for fleet-agents', () => { - expect(getFieldSpecs(`.${AGENTS_PREFIX}`)).toHaveLength(66); + expect(getFieldSpecs(`.${AGENTS_PREFIX}`)).toHaveLength(67); }); it('returns getFieldSpecs for fleet-enrollment-api-keys', () => { const indexPattern = `.${FLEET_ENROLLMENT_API_PREFIX}`; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/index.tsx index b3f3236772ffdd..9cd7a0b99af02f 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/index.tsx @@ -138,7 +138,7 @@ export const AgentPolicyAdvancedOptionsContent: React.FunctionComponent = + />{' '} {!policyHasElasticDefend && ( =

@@ -624,62 +624,6 @@ export const AgentPolicyAdvancedOptionsContent: React.FunctionComponent = /> - - -   - - - - - } - description={ - - } - > - - { - updateAgentPolicy({ - unenroll_timeout: e.target.value ? Number(e.target.value) : 0, - }); - }} - isInvalid={Boolean(touchedFields.unenroll_timeout && validation.unenroll_timeout)} - onBlur={() => setTouchedFields({ ...touchedFields, unenroll_timeout: true })} - /> - - @@ -766,6 +710,62 @@ export const AgentPolicyAdvancedOptionsContent: React.FunctionComponent = /> + + +   + + + + + } + description={ + + } + > + + { + updateAgentPolicy({ + unenroll_timeout: e.target.value ? Number(e.target.value) : 0, + }); + }} + isInvalid={Boolean(touchedFields.unenroll_timeout && validation.unenroll_timeout)} + onBlur={() => setTouchedFields({ ...touchedFields, unenroll_timeout: true })} + /> + + ); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/components/dataset_combo.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/components/dataset_combo.tsx deleted file mode 100644 index 180060db52f1c6..00000000000000 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/components/dataset_combo.tsx +++ /dev/null @@ -1,133 +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 } from 'react'; -import { EuiComboBox, EuiIcon, EuiLink, EuiSpacer, EuiText, EuiToolTip } from '@elastic/eui'; -import { i18n } from '@kbn/i18n'; - -import { FormattedMessage } from '@kbn/i18n-react'; - -import type { DataStream } from '../../../../../../../../../common/types'; -import { GENERIC_DATASET_NAME } from '../../../../../../../../../common/constants'; - -interface SelectedDataset { - dataset: string; - package: string; -} - -export const DatasetComboBox: React.FC<{ - value?: SelectedDataset | string; - onChange: (newValue: SelectedDataset) => void; - datastreams: DataStream[]; - pkgName?: string; - isDisabled?: boolean; -}> = ({ value, onChange, datastreams, isDisabled, pkgName = '' }) => { - const datasetOptions = - datastreams.map((datastream: DataStream) => ({ - label: datastream.dataset, - value: datastream, - })) ?? []; - const existingGenericStream = datasetOptions.find((ds) => ds.label === GENERIC_DATASET_NAME); - const valueAsOption = value - ? typeof value === 'string' - ? { label: value, value: { dataset: value, package: pkgName } } - : { label: value.dataset, value: { dataset: value.dataset, package: value.package } } - : undefined; - const defaultOption = valueAsOption || - existingGenericStream || { - label: GENERIC_DATASET_NAME, - value: { dataset: GENERIC_DATASET_NAME, package: pkgName }, - }; - - const [selectedOptions, setSelectedOptions] = useState>([defaultOption]); - - useEffect(() => { - if (!value || typeof value === 'string') onChange(defaultOption.value as SelectedDataset); - }, [value, defaultOption.value, onChange, pkgName]); - - const onDatasetChange = (newSelectedOptions: Array<{ label: string; value?: DataStream }>) => { - setSelectedOptions(newSelectedOptions); - const dataStream = newSelectedOptions[0].value; - onChange({ - dataset: newSelectedOptions[0].label, - package: !dataStream || typeof dataStream === 'string' ? pkgName : dataStream.package, - }); - }; - - const onCreateOption = (searchValue: string = '') => { - const normalizedSearchValue = searchValue.trim().toLowerCase(); - if (!normalizedSearchValue) { - return; - } - const newOption = { - label: searchValue, - value: { dataset: searchValue, package: pkgName }, - }; - setSelectedOptions([newOption]); - onChange({ - dataset: searchValue, - package: pkgName, - }); - }; - return ( - <> - - {valueAsOption && valueAsOption.value.package !== pkgName && ( - <> - - - -   - - } - > - - {i18n.translate('xpack.fleet.datasetCombo.learnMoreLink', { - defaultMessage: 'learn more', - })} - - - ), - }} - /> - - - )} - - ); -}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/components/dataset_component.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/components/dataset_component.test.tsx new file mode 100644 index 00000000000000..e45da365e74aa3 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/components/dataset_component.test.tsx @@ -0,0 +1,71 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { fireEvent } from '@testing-library/react'; + +import { createFleetTestRendererMock } from '../../../../../../../../mock'; + +import { DatasetComponent } from './dataset_component'; + +describe('DatasetComponent', () => { + function render(value = 'generic', datastreams: any = []) { + const renderer = createFleetTestRendererMock(); + const mockOnChange = jest.fn(); + const fieldLabel = 'Dataset name'; + + const utils = renderer.render( + + ); + + return { utils, mockOnChange }; + } + + it('should show validation error if dataset is invalid', () => { + const { utils } = render(); + + const inputEl = utils.getByTestId('comboBoxSearchInput'); + fireEvent.change(inputEl, { target: { value: 'generic*' } }); + fireEvent.keyDown(inputEl, { key: 'Enter', code: 'Enter' }); + + utils.getByText('Dataset contains invalid characters'); + }); + + it('should not show validation error if dataset is valid', () => { + const { utils } = render(); + + const inputEl = utils.getByTestId('comboBoxSearchInput'); + fireEvent.change(inputEl, { target: { value: 'test' } }); + fireEvent.keyDown(inputEl, { key: 'Enter', code: 'Enter' }); + + expect(utils.queryByText('Dataset contains invalid characters')).toBeNull(); + }); + + it('should not show validation error if valid dataset selected from select', () => { + const { utils, mockOnChange } = render(undefined, [ + { dataset: 'fleet_server.test_ds', package: 'log' }, + ]); + + const inputEl = utils.getByTestId('comboBoxSearchInput'); + fireEvent.click(inputEl); + const option = utils.getByText('fleet_server.test_ds'); + fireEvent.click(option); + + expect(utils.queryByText('Dataset contains invalid characters')).toBeNull(); + expect(mockOnChange).toHaveBeenCalledWith({ dataset: 'fleet_server.test_ds', package: 'log' }); + }); +}); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/components/dataset_component.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/components/dataset_component.tsx new file mode 100644 index 00000000000000..bac9f76b5cf540 --- /dev/null +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/components/dataset_component.tsx @@ -0,0 +1,174 @@ +/* + * Copyright 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 } from 'react'; +import { + EuiComboBox, + EuiFormRow, + EuiIcon, + EuiLink, + EuiSpacer, + EuiText, + EuiToolTip, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import styled from 'styled-components'; +import ReactMarkdown from 'react-markdown'; + +import { FormattedMessage } from '@kbn/i18n-react'; + +import type { DataStream } from '../../../../../../../../../common/types'; +import { GENERIC_DATASET_NAME } from '../../../../../../../../../common/constants'; +import { isValidDataset } from '../../../../../../../../../common'; + +const FormRow = styled(EuiFormRow)` + .euiFormRow__label { + flex: 1; + } + + .euiFormRow__fieldWrapper > .euiPanel { + padding: ${(props) => props.theme.eui?.euiSizeXS}; + } +`; + +interface SelectedDataset { + dataset: string; + package: string; +} + +export const DatasetComponent: React.FC<{ + value?: SelectedDataset | string; + onChange: (newValue: SelectedDataset) => void; + datastreams: DataStream[]; + pkgName?: string; + isDisabled?: boolean; + fieldLabel: string; + description?: string; +}> = ({ value, onChange, datastreams, isDisabled, pkgName = '', fieldLabel, description }) => { + const datasetOptions = + datastreams.map((datastream: DataStream) => ({ + label: datastream.dataset, + value: datastream, + })) ?? []; + const existingGenericStream = datasetOptions.find((ds) => ds.label === GENERIC_DATASET_NAME); + const valueAsOption = value + ? typeof value === 'string' + ? { label: value, value: { dataset: value, package: pkgName } } + : { label: value.dataset, value: { dataset: value.dataset, package: value.package } } + : undefined; + const defaultOption = valueAsOption || + existingGenericStream || { + label: GENERIC_DATASET_NAME, + value: { dataset: GENERIC_DATASET_NAME, package: pkgName }, + }; + + const [selectedOptions, setSelectedOptions] = useState>([defaultOption]); + const [isInvalid, setIsInvalid] = useState(false); + const [error, setError] = useState(undefined); + + useEffect(() => { + if (!value || typeof value === 'string') onChange(defaultOption.value as SelectedDataset); + }, [value, defaultOption.value, onChange, pkgName]); + + const onDatasetChange = (newSelectedOptions: Array<{ label: string; value?: DataStream }>) => { + setSelectedOptions(newSelectedOptions); + const dataStream = newSelectedOptions[0].value; + const { valid, error: dsError } = isValidDataset(newSelectedOptions[0].label, false); + setIsInvalid(!valid); + setError(dsError); + onChange({ + dataset: newSelectedOptions[0].label, + package: !dataStream || typeof dataStream === 'string' ? pkgName : dataStream.package, + }); + }; + + const onCreateOption = (searchValue: string = '') => { + const normalizedSearchValue = searchValue.trim().toLowerCase(); + if (!normalizedSearchValue) { + return; + } + const newOption = { + label: searchValue, + value: { dataset: searchValue, package: pkgName }, + }; + setSelectedOptions([newOption]); + const { valid, error: dsError } = isValidDataset(searchValue, false); + setIsInvalid(!valid); + setError(dsError); + onChange({ + dataset: searchValue, + package: pkgName, + }); + }; + return ( + } + fullWidth + > + <> + + {valueAsOption && valueAsOption.value.package !== pkgName && ( + <> + + + +   + + } + > + + {i18n.translate('xpack.fleet.datasetCombo.learnMoreLink', { + defaultMessage: 'learn more', + })} + + + ), + }} + /> + + + )} + + + ); +}; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/components/package_policy_input_var_field.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/components/package_policy_input_var_field.tsx index 9464d60402a1da..653986a7128de2 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/components/package_policy_input_var_field.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/components/steps/components/package_policy_input_var_field.tsx @@ -36,7 +36,7 @@ import { DATASET_VAR_NAME } from '../../../../../../../../../common/constants'; import type { DataStream, RegistryVarsEntry } from '../../../../../../types'; import { MultiTextInput } from './multi_text_input'; -import { DatasetComboBox } from './dataset_combo'; +import { DatasetComponent } from './dataset_component'; const FixedHeightDiv = styled.div` height: 300px; @@ -88,7 +88,6 @@ export const PackagePolicyInputVarField: React.FunctionComponent { const fleetStatus = useFleetStatus(); - const [isDirty, setIsDirty] = useState(false); const { required, type, title, name, description } = varDef; const isInvalid = Boolean((isDirty || forceShowErrors) && !!varErrors?.length); @@ -101,6 +100,20 @@ export const PackagePolicyInputVarField: React.FunctionComponent + ); + } + let field: JSX.Element; if (useSecretsUi) { @@ -127,10 +140,6 @@ export const PackagePolicyInputVarField: React.FunctionComponent ); } - if (name === DATASET_VAR_NAME && packageType === 'input') { - return ( - - ); - } switch (type) { case 'textarea': return ( diff --git a/x-pack/plugins/fleet/public/components/linked_agent_count.tsx b/x-pack/plugins/fleet/public/components/linked_agent_count.tsx index 9626e055609e8e..1007c5ab54db85 100644 --- a/x-pack/plugins/fleet/public/components/linked_agent_count.tsx +++ b/x-pack/plugins/fleet/public/components/linked_agent_count.tsx @@ -35,8 +35,11 @@ export const LinkedAgentCount = memo< count ); const kuery = `${AGENTS_PREFIX}.policy_id : ${agentPolicyId}${ - privilegeMode && - ` and ${privilegeMode === 'unprivileged' ? UNPRIVILEGED_AGENT_KUERY : PRIVILEGED_AGENT_KUERY}` + privilegeMode + ? ` and ${ + privilegeMode === 'unprivileged' ? UNPRIVILEGED_AGENT_KUERY : PRIVILEGED_AGENT_KUERY + }` + : '' }`; return count > 0 ? ( diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/mappings.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/mappings.ts index f872405a31ef54..1455c220e852ec 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/mappings.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/mappings.ts @@ -26,6 +26,9 @@ export function getDefaultProperties(field: Field): Properties { if (field.copy_to) { properties.copy_to = field.copy_to; } + if (field.store !== undefined) { + properties.store = field.store; + } return properties; } diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/template.test.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/template.test.ts index 0ea833172e0288..7ea6fa0b692e8e 100644 --- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/template.test.ts +++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/template.test.ts @@ -346,6 +346,26 @@ describe('EPM template', () => { expect(mappings).toEqual(keywordWithIndexFalseMapping); }); + it('tests processing text field with store true', () => { + const textWithStoreTrueYml = ` +- name: someTextId + type: text + store: true +`; + const textWithStoreTrueMapping = { + properties: { + someTextId: { + type: 'text', + store: true, + }, + }, + }; + const fields: Field[] = safeLoad(textWithStoreTrueYml); + const processedFields = processFields(fields); + const mappings = generateMappings(processedFields); + expect(mappings).toEqual(textWithStoreTrueMapping); + }); + it('tests processing text field with multi fields', () => { const textWithMultiFieldsLiteralYml = ` - name: textWithMultiFields @@ -1320,6 +1340,38 @@ describe('EPM template', () => { expect(mappings).toEqual(runtimeFieldMapping); }); + it('tests processing store true in a dynamic template', () => { + const textWithRuntimeFieldsLiteralYml = ` +- name: messages.* + type: text + store: true +`; + const runtimeFieldMapping = { + properties: { + messages: { + type: 'object', + dynamic: true, + }, + }, + dynamic_templates: [ + { + 'messages.*': { + match_mapping_type: 'string', + path_match: 'messages.*', + mapping: { + type: 'text', + store: true, + }, + }, + }, + ], + }; + const fields: Field[] = safeLoad(textWithRuntimeFieldsLiteralYml); + const processedFields = processFields(fields); + const mappings = generateMappings(processedFields); + expect(mappings).toEqual(runtimeFieldMapping); + }); + it('tests processing dimension fields on a dynamic template object', () => { const textWithRuntimeFieldsLiteralYml = ` - name: labels.* diff --git a/x-pack/plugins/fleet/server/services/epm/fields/field.ts b/x-pack/plugins/fleet/server/services/epm/fields/field.ts index b8ca555c95a9b7..b0f8338c89775b 100644 --- a/x-pack/plugins/fleet/server/services/epm/fields/field.ts +++ b/x-pack/plugins/fleet/server/services/epm/fields/field.ts @@ -41,6 +41,7 @@ export interface Field { default_field?: boolean; runtime?: boolean | string; subobjects?: boolean; + store?: boolean; // Fields specific of the aggregate_metric_double type metrics?: string[]; diff --git a/x-pack/plugins/fleet/server/services/security/uninstall_token_service/index.test.ts b/x-pack/plugins/fleet/server/services/security/uninstall_token_service/index.test.ts index 4c47fe7366c583..55df92f552674a 100644 --- a/x-pack/plugins/fleet/server/services/security/uninstall_token_service/index.test.ts +++ b/x-pack/plugins/fleet/server/services/security/uninstall_token_service/index.test.ts @@ -363,7 +363,11 @@ describe('UninstallTokenService', () => { }); describe('prepareSearchString', () => { - let prepareSearchString: (str: string | undefined, wildcard: string) => string; + let prepareSearchString: ( + str: string | undefined, + charactersToEscape: RegExp, + wildcard: string + ) => string | undefined; beforeEach(() => { ({ prepareSearchString } = uninstallTokenService as unknown as { @@ -372,31 +376,26 @@ describe('UninstallTokenService', () => { }); it('should generate search string with given wildcard', () => { - expect(prepareSearchString('input', '*')).toEqual('*input*'); - expect(prepareSearchString('another', '.*')).toEqual('.*another.*'); + expect(prepareSearchString('input', /^$/, '*')).toEqual('*input*'); + expect(prepareSearchString('another', /^$/, '.*')).toEqual('.*another.*'); }); - it('should remove special characters', () => { - expect(prepareSearchString('_in:put', '*')).toEqual('*in*put*'); - expect(prepareSearchString('', '*')).toEqual('*input*'); - expect(prepareSearchString('inp"ut"', '*')).toEqual('*inp*ut*'); - expect(prepareSearchString('"input"', '*')).toEqual('*input*'); + it('should escape given special characters', () => { + expect(prepareSearchString('_in:put', /[:]/, '*')).toEqual('*_in\\:put*'); }); - it('should replace multiple special characters with only one wildcard', () => { - expect(prepareSearchString('<<<>>>>', '*')).toEqual('*inp*ut*'); + it('should escape multiple characters', () => { + expect(prepareSearchString('<>', /[<>]/, '*')).toEqual('*\\<\\\\>*'); }); it('should keep digits, letters and dash', () => { - expect(prepareSearchString('123-ABC-XYZ-4567890', '*')).toEqual('*123-ABC-XYZ-4567890*'); - }); - - it('should return undefined if there are no useful characters', () => { - expect(prepareSearchString('<<<<""""">>>>>', '*')).toEqual(undefined); + expect(prepareSearchString('123-ABC-XYZ-4567890', /^$/, '*')).toEqual( + '*123-ABC-XYZ-4567890*' + ); }); it('should return undefined if input is undefined', () => { - expect(prepareSearchString(undefined, '*')).toEqual(undefined); + expect(prepareSearchString(undefined, /^$/, '*')).toEqual(undefined); }); }); }); diff --git a/x-pack/plugins/fleet/server/services/security/uninstall_token_service/index.ts b/x-pack/plugins/fleet/server/services/security/uninstall_token_service/index.ts index 63753401cc4171..944eab70d23c37 100644 --- a/x-pack/plugins/fleet/server/services/security/uninstall_token_service/index.ts +++ b/x-pack/plugins/fleet/server/services/security/uninstall_token_service/index.ts @@ -188,9 +188,14 @@ export class UninstallTokenService implements UninstallTokenServiceInterface { : null; } - private prepareSearchString(str: string | undefined, wildcard: string): string | undefined { + private prepareSearchString( + str: string | undefined, + charactersToEscape: RegExp, + wildcard: string + ): string | undefined { const strWithoutSpecialCharacters = str - ?.split(/[^-\da-z]+/gi) + ?.replace(new RegExp(charactersToEscape, 'g'), '\\$&') + .split(/ +/gi) .filter((x) => x) .join(wildcard); @@ -199,6 +204,14 @@ export class UninstallTokenService implements UninstallTokenServiceInterface { : undefined; } + private prepareRegexpQuery(str: string | undefined): string | undefined { + return this.prepareSearchString(str, /[@#&*+()[\]{}|.?~"<]/, '.*'); + } + + private prepareQueryStringQuery(str: string | undefined): string | undefined { + return this.prepareSearchString(str, /[":*(){}\\<>]/, '*'); + } + private async searchPoliciesByName(policyNameSearchString: string): Promise { const policyNameFilter = `${AGENT_POLICY_SAVED_OBJECT_TYPE}.attributes.name:${policyNameSearchString}`; @@ -217,10 +230,10 @@ export class UninstallTokenService implements UninstallTokenServiceInterface { perPage = 20, excludedPolicyIds?: string[] ): Promise { - const policyIdFilter = this.prepareSearchString(policyIdSearchTerm, '.*'); + const policyIdFilter = this.prepareRegexpQuery(policyIdSearchTerm); let policyIdsFoundByName: string[] | undefined; - const policyNameSearchString = this.prepareSearchString(policyNameSearchTerm, '*'); + const policyNameSearchString = this.prepareQueryStringQuery(policyNameSearchTerm); if (policyNameSearchString) { policyIdsFoundByName = await this.searchPoliciesByName(policyNameSearchString); } diff --git a/x-pack/plugins/global_search_bar/public/components/search_bar.tsx b/x-pack/plugins/global_search_bar/public/components/search_bar.tsx index 991b7d6af62598..53f749fc3f7ad0 100644 --- a/x-pack/plugins/global_search_bar/public/components/search_bar.tsx +++ b/x-pack/plugins/global_search_bar/public/components/search_bar.tsx @@ -108,7 +108,7 @@ export const SearchBar: FC = (opts) => { resultToOption( option, searchTagIds?.filter((id) => id !== UNKNOWN_TAG_ID) ?? [], - taggingApi?.ui.getTag + taggingApi?.ui.getTagList ) ), ]); @@ -125,20 +125,22 @@ export const SearchBar: FC = (opts) => { searchSubscription.current = null; } - const suggestions = loadSuggestions(searchValue); + const suggestions = loadSuggestions(searchValue.toLowerCase()); let aggregatedResults: GlobalSearchResult[] = []; if (searchValue.length !== 0) { reportEvent.searchRequest(); } - const rawParams = parseSearchParams(searchValue); - const tagIds = - taggingApi && rawParams.filters.tags - ? rawParams.filters.tags.map( - (tagName) => taggingApi.ui.getTagIdFromName(tagName) ?? UNKNOWN_TAG_ID - ) - : undefined; + const rawParams = parseSearchParams(searchValue.toLowerCase()); + let tagIds: string[] | undefined; + if (taggingApi && rawParams.filters.tags) { + tagIds = rawParams.filters.tags.map( + (tagName) => taggingApi.ui.getTagIdFromName(tagName.toLowerCase()) ?? UNKNOWN_TAG_ID + ); + } else { + tagIds = undefined; + } const searchParams: GlobalSearchFindParams = { term: rawParams.term, types: rawParams.filters.types, diff --git a/x-pack/plugins/global_search_bar/public/lib/result_to_option.test.ts b/x-pack/plugins/global_search_bar/public/lib/result_to_option.test.ts index e1fbd25b824ab5..0a2c5c57e725ca 100644 --- a/x-pack/plugins/global_search_bar/public/lib/result_to_option.test.ts +++ b/x-pack/plugins/global_search_bar/public/lib/result_to_option.test.ts @@ -115,21 +115,20 @@ describe('resultToOption', () => { meta: { categoryLabel: 'category', displayName: 'foo', tagIds: ['known', 'unknown'] }, }); - const getTag = (tagId: string): Tag | undefined => { - if (tagId === 'known') { - return { + const getTagList = (): Tag[] => { + return [ + { id: 'known', name: 'Known', description: 'Known', managed: false, color: '#000000', - }; - } + }, + ]; }; - const logSpy = jest.spyOn(console, 'warn').mockImplementation(); - const option = resultToOption(input, [], getTag); + const option = resultToOption(input, [], getTagList); expect(logSpy).toBeCalledWith( 'SearchBar: Tag with id "unknown" not found. Tag "unknown" is referenced by the search result "dashboard:id". Skipping displaying the missing tag.' ); diff --git a/x-pack/plugins/global_search_bar/public/lib/result_to_option.tsx b/x-pack/plugins/global_search_bar/public/lib/result_to_option.tsx index 1e5de6bf3b7888..7b28844f9e4ad7 100644 --- a/x-pack/plugins/global_search_bar/public/lib/result_to_option.tsx +++ b/x-pack/plugins/global_search_bar/public/lib/result_to_option.tsx @@ -16,7 +16,7 @@ const cleanMeta = (str: string) => (str.charAt(0).toUpperCase() + str.slice(1)). export const resultToOption = ( result: GlobalSearchResult, searchTagIds: string[], - getTag?: SavedObjectTaggingPluginStart['ui']['getTag'] + getTagList?: SavedObjectTaggingPluginStart['ui']['getTagList'] ): EuiSelectableTemplateSitewideOption => { const { id, title, url, icon, type, meta = {} } = result; const { tagIds = [], categoryLabel = '' } = meta as { tagIds: string[]; categoryLabel: string }; @@ -42,21 +42,22 @@ export const resultToOption = ( ? [{ text: categoryLabel }] : [{ text: cleanMeta((meta.displayName as string) ?? type) }]; - if (getTag && tagIds.length) { - const tags = tagIds.map(getTag).filter((tag, index) => { - if (!tag) { - // eslint-disable-next-line no-console + if (tagIds.length && getTagList) { + const tagList = getTagList(); + const tags: Tag[] = []; + for (let i = 0; i < tagIds.length; i++) { + const foundTag = tagList.find((tag) => tag.id === tagIds[i]); + if (!foundTag) { + // eslint-disable-next-line no-console console.warn( - `SearchBar: Tag with id "${tagIds[index]}" not found. Tag "${tagIds[index]}" is referenced by the search result "${result.type}:${result.id}". Skipping displaying the missing tag.` + `SearchBar: Tag with id "${tagIds[i]}" not found. Tag "${tagIds[i]}" is referenced by the search result "${result.type}:${result.id}". Skipping displaying the missing tag.` ); - return false; + } else { + tags.push(foundTag); } - - return true; - }) as Tag[]; + } if (tags.length) { - // TODO #85189 - refactor to use TagList instead of getTag option.append = ; } } diff --git a/x-pack/plugins/global_search_bar/public/suggestions/get_suggestions.test.ts b/x-pack/plugins/global_search_bar/public/suggestions/get_suggestions.test.ts index dceb2c93254c04..555182a84c2f1c 100644 --- a/x-pack/plugins/global_search_bar/public/suggestions/get_suggestions.test.ts +++ b/x-pack/plugins/global_search_bar/public/suggestions/get_suggestions.test.ts @@ -95,6 +95,20 @@ describe('getSuggestions', () => { suggestedSearch: 'tag:BAR', }) ); + + const suggestions1 = getSuggestions({ + searchTerm: 'Bar', + tagCache, + searchableTypes: [], + }); + + expect(suggestions1).toHaveLength(1); + expect(suggestions1[0]).toEqual( + expect.objectContaining({ + label: 'tag: BAR', + suggestedSearch: 'tag:BAR', + }) + ); }); it('escapes the name in the query when containing whitespaces', () => { const suggestions = getSuggestions({ diff --git a/x-pack/plugins/maps/public/embeddable/map_api.ts b/x-pack/plugins/maps/public/embeddable/map_api.ts index bd20c45721a490..fdf2bd215b3245 100644 --- a/x-pack/plugins/maps/public/embeddable/map_api.ts +++ b/x-pack/plugins/maps/public/embeddable/map_api.ts @@ -21,6 +21,7 @@ import type { ILayer } from '../classes/layers/layer'; export type MapApi = HasType<'map'> & { getLayerList: () => ILayer[]; + reload: () => void; } & PublishesDataViews & PublishesPanelTitle & PublishesUnifiedSearch & diff --git a/x-pack/plugins/maps/public/embeddable/map_component.tsx b/x-pack/plugins/maps/public/embeddable/map_component.tsx index a6590703a547ba..9b4f56d9f3ab56 100644 --- a/x-pack/plugins/maps/public/embeddable/map_component.tsx +++ b/x-pack/plugins/maps/public/embeddable/map_component.tsx @@ -14,6 +14,7 @@ import type { LayerDescriptor, MapCenterAndZoom, MapSettings } from '../../commo import { MapEmbeddable } from './map_embeddable'; import { createBasemapLayerDescriptor } from '../classes/layers/create_basemap_layer_descriptor'; import { RenderToolTipContent } from '../classes/tooltips/tooltip_property'; +import { MapApi } from './map_api'; export interface Props { title?: string; @@ -27,6 +28,7 @@ export interface Props { mapCenter?: MapCenterAndZoom; onInitialRenderComplete?: () => void; getTooltipRenderer?: () => RenderToolTipContent; + onApiAvailable?: (api: MapApi) => void; /* * Set to false to exclude sharing attributes 'data-*'. */ @@ -70,6 +72,9 @@ export class MapComponent extends Component { if (this.props.getTooltipRenderer) { this._mapEmbeddable.setRenderTooltipContent(this.props.getTooltipRenderer()); } + if (this.props.onApiAvailable) { + this.props.onApiAvailable(this._mapEmbeddable as MapApi); + } if (this.props.onInitialRenderComplete) { this._mapEmbeddable diff --git a/x-pack/plugins/ml/public/alerting/job_selector.tsx b/x-pack/plugins/ml/public/alerting/job_selector.tsx index 5e1835ebfdfe1c..11cc0e67181e8b 100644 --- a/x-pack/plugins/ml/public/alerting/job_selector.tsx +++ b/x-pack/plugins/ml/public/alerting/job_selector.tsx @@ -202,6 +202,7 @@ export const JobSelectorControl: FC = ({ return ( > = ({ appStateHandler, bounds, children, + direction = 'row', functionDescription, job, selectedDetectorIndex, @@ -297,7 +299,7 @@ export const SeriesControls: FC> = ({ return (
- + true, + getTypeDisplayName: () => + i18n.translate('xpack.ml.singleMetricViewerEmbeddable.typeDisplayName', { + defaultMessage: 'single metric viewer', + }), + onEdit: async () => { + try { + const { resolveEmbeddableSingleMetricViewerUserInput } = await import( + './single_metric_viewer_setup_flyout' + ); + const [coreStart, { data, share }, { mlApiServices }] = services; + const result = await resolveEmbeddableSingleMetricViewerUserInput( + coreStart, + parentApi, + uuid, + { data, share }, + mlApiServices, + { + ...serializeTitles(), + ...serializeSingleMetricViewerState(), + } + ); + + singleMetricViewerControlsApi.updateUserInput(result); + } catch (e) { + return Promise.reject(); + } + }, ...titlesApi, ...timeRangeApi, ...singleMetricViewerControlsApi, diff --git a/x-pack/plugins/ml/public/embeddables/single_metric_viewer/single_metric_viewer_initializer.tsx b/x-pack/plugins/ml/public/embeddables/single_metric_viewer/single_metric_viewer_initializer.tsx index ba7171badeadf1..4e2e338eee8eed 100644 --- a/x-pack/plugins/ml/public/embeddables/single_metric_viewer/single_metric_viewer_initializer.tsx +++ b/x-pack/plugins/ml/public/embeddables/single_metric_viewer/single_metric_viewer_initializer.tsx @@ -6,64 +6,103 @@ */ import type { FC } from 'react'; -import React, { useState } from 'react'; +import React, { useEffect, useRef, useState } from 'react'; import { EuiButton, EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem, EuiForm, EuiFormRow, - EuiModalBody, - EuiModalFooter, - EuiModalHeader, - EuiModalHeaderTitle, + EuiFlyoutBody, + EuiFlyoutFooter, + EuiFlyoutHeader, + EuiTitle, EuiFieldText, - EuiModal, EuiSpacer, } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; +import useMountedState from 'react-use/lib/useMountedState'; +import { extractErrorMessage } from '@kbn/ml-error-utils'; import type { MlJob } from '@elastic/elasticsearch/lib/api/types'; import type { TimeRangeBounds } from '@kbn/ml-time-buckets'; +import type { MlApiServices } from '../../application/services/ml_api_service'; import type { SingleMetricViewerEmbeddableInput } from '..'; +import { ML_PAGES } from '../../../common/constants/locator'; import { SeriesControls } from '../../application/timeseriesexplorer/components/series_controls'; import { APP_STATE_ACTION, type TimeseriesexplorerActionType, } from '../../application/timeseriesexplorer/timeseriesexplorer_constants'; +import { useMlLink } from '../../application/contexts/kibana'; +import { JobSelectorControl } from '../../alerting/job_selector'; import type { SingleMetricViewerEmbeddableUserInput, MlEntity } from '..'; +import { getDefaultSingleMetricViewerPanelTitle } from './get_default_panel_title'; export interface SingleMetricViewerInitializerProps { bounds: TimeRangeBounds; - defaultTitle: string; initialInput?: Partial; - job: MlJob; - onCreate: (props: Partial) => void; + mlApiServices: MlApiServices; + onCreate: (props: SingleMetricViewerEmbeddableUserInput) => void; onCancel: () => void; } export const SingleMetricViewerInitializer: FC = ({ - defaultTitle, bounds, initialInput, - job, onCreate, onCancel, + mlApiServices, }) => { - const isNewJob = initialInput?.jobIds !== undefined && initialInput?.jobIds[0] !== job.job_id; + const isMounted = useMountedState(); + const newJobUrl = useMlLink({ page: ML_PAGES.ANOMALY_DETECTION_CREATE_JOB }); + const [jobId, setJobId] = useState( + initialInput?.jobIds && initialInput?.jobIds[0] + ); + const titleManuallyChanged = useRef(!!initialInput?.title); - const [panelTitle, setPanelTitle] = useState(defaultTitle); + const [job, setJob] = useState(); + const [panelTitle, setPanelTitle] = useState(initialInput?.title ?? ''); const [functionDescription, setFunctionDescription] = useState( initialInput?.functionDescription ); // Reset detector index and entities if the job has changed const [selectedDetectorIndex, setSelectedDetectorIndex] = useState( - !isNewJob && initialInput?.selectedDetectorIndex ? initialInput.selectedDetectorIndex : 0 + initialInput?.selectedDetectorIndex ?? 0 ); const [selectedEntities, setSelectedEntities] = useState( - !isNewJob && initialInput?.selectedEntities ? initialInput.selectedEntities : undefined + initialInput?.selectedEntities ); - + const [errorMessage, setErrorMessage] = useState(); const isPanelTitleValid = panelTitle.length > 0; + useEffect( + function setUpPanel() { + async function fetchJob() { + const { jobs } = await mlApiServices.getJobs({ jobId }); + + if (isMounted() && jobs.length === 1) { + setJob(jobs[0]); + setErrorMessage(undefined); + } + } + + if (jobId) { + if (!titleManuallyChanged.current) { + setPanelTitle(getDefaultSingleMetricViewerPanelTitle(jobId)); + } + // Fetch job if a jobId has been selected and if there is no corresponding fetched job or the job selection has changed + if (mlApiServices && jobId && jobId !== job?.job_id) { + fetchJob().catch((error) => { + const errorMsg = extractErrorMessage(error); + setErrorMessage(errorMsg); + }); + } + } + }, + [isMounted, jobId, mlApiServices, panelTitle, job?.job_id] + ); + const handleStateUpdate = ( action: TimeseriesexplorerActionType, payload: string | number | MlEntity @@ -84,23 +123,33 @@ export const SingleMetricViewerInitializer: FC - - - - - + <> + + +

+ +

+
+
- + + { + setJobId(update?.jobIds && update?.jobIds[0]); + // Reset values when selected job has changed + setSelectedDetectorIndex(0); + setSelectedEntities(undefined); + setFunctionDescription(undefined); + }} + {...(errorMessage && { errors: [errorMessage] })} + /> } isInvalid={!isPanelTitleValid} + fullWidth > setPanelTitle(e.target.value)} + onChange={(e) => { + titleManuallyChanged.current = true; + setPanelTitle(e.target.value); + }} isInvalid={!isPanelTitleValid} + fullWidth /> - + {job?.job_id && jobId && jobId === job.job_id ? ( + + ) : null} - - - - - - - - - - - - + + + + + + + + + + + + + + + + ); }; diff --git a/x-pack/plugins/ml/public/embeddables/single_metric_viewer/single_metric_viewer_setup_flyout.tsx b/x-pack/plugins/ml/public/embeddables/single_metric_viewer/single_metric_viewer_setup_flyout.tsx index 4023313bf8fa8d..1f54330a4829f7 100644 --- a/x-pack/plugins/ml/public/embeddables/single_metric_viewer/single_metric_viewer_setup_flyout.tsx +++ b/x-pack/plugins/ml/public/embeddables/single_metric_viewer/single_metric_viewer_setup_flyout.tsx @@ -9,62 +9,73 @@ import React from 'react'; import type { CoreStart } from '@kbn/core/public'; import { toMountPoint } from '@kbn/react-kibana-mount'; import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { tracksOverlays } from '@kbn/presentation-containers'; import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; +import type { SharePluginStart } from '@kbn/share-plugin/public'; import type { SingleMetricViewerEmbeddableUserInput, SingleMetricViewerEmbeddableInput } from '..'; -import { resolveJobSelection } from '../common/resolve_job_selection'; import { SingleMetricViewerInitializer } from './single_metric_viewer_initializer'; import type { MlApiServices } from '../../application/services/ml_api_service'; -import { getDefaultSingleMetricViewerPanelTitle } from './get_default_panel_title'; export async function resolveEmbeddableSingleMetricViewerUserInput( coreStart: CoreStart, - data: DataPublicPluginStart, + parentApi: unknown, + focusedPanelId: string, + services: { data: DataPublicPluginStart; share?: SharePluginStart }, mlApiServices: MlApiServices, input?: Partial -): Promise> { - const { overlays, ...startServices } = coreStart; +): Promise { + const { http, overlays, ...startServices } = coreStart; + const { data, share } = services; const timefilter = data.query.timefilter.timefilter; + const overlayTracker = tracksOverlays(parentApi) ? parentApi : undefined; return new Promise(async (resolve, reject) => { try { - const { jobIds } = await resolveJobSelection( - coreStart, - data.dataViews, - input?.jobIds ? input.jobIds : undefined, - true - ); - const title = input?.title ?? getDefaultSingleMetricViewerPanelTitle(jobIds[0]); - const { jobs } = await mlApiServices.getJobs({ jobId: jobIds.join(',') }); - - const modalSession = overlays.openModal( + const flyoutSession = overlays.openFlyout( toMountPoint( { - modalSession.close(); - resolve({ - jobIds, - ...explicitInput, - }); + flyoutSession.close(); + resolve(explicitInput); + overlayTracker?.clearOverlays(); }} onCancel={() => { - modalSession.close(); + flyoutSession.close(); reject(); + overlayTracker?.clearOverlays(); }} /> , startServices - ) + ), + { + type: 'push', + ownFocus: true, + size: 's', + onClose: () => { + flyoutSession.close(); + reject(); + }, + } ); + // Close the flyout when user navigates out of the current plugin + if (tracksOverlays(parentApi)) { + parentApi.openOverlay(flyoutSession, { + focusedPanelId, + }); + } } catch (error) { reject(error); } diff --git a/x-pack/plugins/ml/public/embeddables/types.ts b/x-pack/plugins/ml/public/embeddables/types.ts index 7e731e863239af..34e0b1afb32659 100644 --- a/x-pack/plugins/ml/public/embeddables/types.ts +++ b/x-pack/plugins/ml/public/embeddables/types.ts @@ -18,6 +18,7 @@ import type { Filter, Query, TimeRange } from '@kbn/es-query'; import type { MlEntityField } from '@kbn/ml-anomaly-utils'; import type { EmbeddableApiContext, + HasEditCapabilities, HasParentApi, HasType, PublishesUnifiedSearch, @@ -154,6 +155,7 @@ export interface SingleMetricViewerEmbeddableState export type SingleMetricViewerEmbeddableApi = MlEmbeddableBaseApi & PublishesWritablePanelTitle & + HasEditCapabilities & SingleMetricViewerComponentApi; /** diff --git a/x-pack/plugins/ml/public/ui_actions/create_single_metric_viewer.tsx b/x-pack/plugins/ml/public/ui_actions/create_single_metric_viewer.tsx index 209ef648f37216..55b3bdf44663ba 100644 --- a/x-pack/plugins/ml/public/ui_actions/create_single_metric_viewer.tsx +++ b/x-pack/plugins/ml/public/ui_actions/create_single_metric_viewer.tsx @@ -58,7 +58,7 @@ export function createAddSingleMetricViewerPanelAction( const presentationContainerParent = await parentApiIsCompatible(context.embeddable); if (!presentationContainerParent) throw new IncompatibleActionError(); - const [coreStart, { data }] = await getStartServices(); + const [coreStart, { data, share }] = await getStartServices(); try { const { resolveEmbeddableSingleMetricViewerUserInput } = await import( @@ -70,7 +70,9 @@ export function createAddSingleMetricViewerPanelAction( const initialState = await resolveEmbeddableSingleMetricViewerUserInput( coreStart, - data, + context.embeddable, + context.embeddable.uuid, + { data, share }, mlApiServices ); diff --git a/x-pack/plugins/ml/public/ui_actions/edit_single_metric_viewer_panel_action.tsx b/x-pack/plugins/ml/public/ui_actions/edit_single_metric_viewer_panel_action.tsx deleted file mode 100644 index 2122cec2877e43..00000000000000 --- a/x-pack/plugins/ml/public/ui_actions/edit_single_metric_viewer_panel_action.tsx +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { i18n } from '@kbn/i18n'; -import type { EmbeddableApiContext } from '@kbn/presentation-publishing'; -import type { UiActionsActionDefinition } from '@kbn/ui-actions-plugin/public'; -import { IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; -import { isSingleMetricViewerEmbeddableContext } from './open_in_single_metric_viewer_action'; -import type { MlCoreSetup } from '../plugin'; -import { HttpService } from '../application/services/http_service'; -import type { - SingleMetricViewerEmbeddableInput, - SingleMetricViewerEmbeddableApi, -} from '../embeddables/types'; - -export const EDIT_SINGLE_METRIC_VIEWER_PANEL_ACTION = 'editSingleMetricViewerPanelAction'; - -export type EditSingleMetricViewerPanelActionContext = EmbeddableApiContext & { - embeddable: SingleMetricViewerEmbeddableApi; -}; - -export function createEditSingleMetricViewerPanelAction( - getStartServices: MlCoreSetup['getStartServices'] -): UiActionsActionDefinition { - return { - id: 'edit-single-metric-viewer', - type: EDIT_SINGLE_METRIC_VIEWER_PANEL_ACTION, - order: 50, - getIconType(): string { - return 'pencil'; - }, - getDisplayName: () => - i18n.translate('xpack.ml.actions.editSingleMetricViewerTitle', { - defaultMessage: 'Edit single metric viewer', - }), - async execute(context) { - if (!isSingleMetricViewerEmbeddableContext(context)) { - throw new IncompatibleActionError(); - } - - const [coreStart, { data }] = await getStartServices(); - - try { - const { resolveEmbeddableSingleMetricViewerUserInput } = await import( - '../embeddables/single_metric_viewer/single_metric_viewer_setup_flyout' - ); - - const { mlApiServicesProvider } = await import('../application/services/ml_api_service'); - const httpService = new HttpService(coreStart.http); - const mlApiServices = mlApiServicesProvider(httpService); - - const { jobIds, selectedEntities, selectedDetectorIndex, panelTitle } = context.embeddable; - - const result = await resolveEmbeddableSingleMetricViewerUserInput( - coreStart, - data, - mlApiServices, - { - jobIds: jobIds.getValue(), - selectedDetectorIndex: selectedDetectorIndex.getValue(), - selectedEntities: selectedEntities?.getValue(), - title: panelTitle?.getValue(), - } as SingleMetricViewerEmbeddableInput - ); - - context.embeddable.updateUserInput(result as SingleMetricViewerEmbeddableInput); - context.embeddable.setPanelTitle(result.panelTitle); - } catch (e) { - return Promise.reject(); - } - }, - async isCompatible(context: EmbeddableApiContext) { - return ( - isSingleMetricViewerEmbeddableContext(context) && - context.embeddable.parentApi?.viewMode?.getValue() === 'edit' - ); - }, - }; -} diff --git a/x-pack/plugins/ml/public/ui_actions/index.ts b/x-pack/plugins/ml/public/ui_actions/index.ts index 41cdc5dcf6c4fe..08fda084b413a9 100644 --- a/x-pack/plugins/ml/public/ui_actions/index.ts +++ b/x-pack/plugins/ml/public/ui_actions/index.ts @@ -16,7 +16,6 @@ import { createApplyTimeRangeSelectionAction } from './apply_time_range_action'; import { createClearSelectionAction } from './clear_selection_action'; import { createAddSwimlanePanelAction } from './create_swim_lane'; import { createEditAnomalyChartsPanelAction } from './edit_anomaly_charts_panel_action'; -import { createEditSingleMetricViewerPanelAction } from './edit_single_metric_viewer_panel_action'; import { createAddSingleMetricViewerPanelAction } from './create_single_metric_viewer'; import { createCategorizationADJobAction, @@ -48,9 +47,6 @@ export function registerMlUiActions( core.getStartServices ); const addSwimlanePanelAction = createAddSwimlanePanelAction(core.getStartServices); - const editSingleMetricViewerPanelAction = createEditSingleMetricViewerPanelAction( - core.getStartServices - ); const openInExplorerAction = createOpenInExplorerAction(core.getStartServices); const openInSingleMetricViewerAction = createOpenInSingleMetricViewerAction( core.getStartServices @@ -71,7 +67,6 @@ export function registerMlUiActions( // Assign triggers uiActions.addTriggerAction('ADD_PANEL_TRIGGER', addSingleMetricViewerPanelAction); uiActions.addTriggerAction('ADD_PANEL_TRIGGER', addSwimlanePanelAction); - uiActions.addTriggerAction(CONTEXT_MENU_TRIGGER, editSingleMetricViewerPanelAction); uiActions.addTriggerAction(CONTEXT_MENU_TRIGGER, editExplorerPanelAction); uiActions.addTriggerAction(CONTEXT_MENU_TRIGGER, openInExplorerAction); uiActions.attachAction(CONTEXT_MENU_TRIGGER, openInSingleMetricViewerAction.id); diff --git a/x-pack/plugins/monitoring/kibana.jsonc b/x-pack/plugins/monitoring/kibana.jsonc index 4992da373a73d3..6ffcba1496163a 100644 --- a/x-pack/plugins/monitoring/kibana.jsonc +++ b/x-pack/plugins/monitoring/kibana.jsonc @@ -1,7 +1,7 @@ { "type": "plugin", "id": "@kbn/monitoring-plugin", - "owner": "@elastic/obs-ux-infra_services-team", + "owner": "@elastic/stack-monitoring", "plugin": { "id": "monitoring", "server": true, diff --git a/x-pack/plugins/monitoring_collection/kibana.jsonc b/x-pack/plugins/monitoring_collection/kibana.jsonc index 246dcce086a074..c2df8e90153263 100644 --- a/x-pack/plugins/monitoring_collection/kibana.jsonc +++ b/x-pack/plugins/monitoring_collection/kibana.jsonc @@ -1,7 +1,7 @@ { "type": "plugin", "id": "@kbn/monitoring-collection-plugin", - "owner": "@elastic/obs-ux-infra_services-team", + "owner": "@elastic/stack-monitoring", "plugin": { "id": "monitoringCollection", "server": true, diff --git a/x-pack/plugins/observability_solution/apm/kibana.jsonc b/x-pack/plugins/observability_solution/apm/kibana.jsonc index e549a6b18883cd..aa87258afbe367 100644 --- a/x-pack/plugins/observability_solution/apm/kibana.jsonc +++ b/x-pack/plugins/observability_solution/apm/kibana.jsonc @@ -29,7 +29,8 @@ "dataViews", "lens", "maps", - "uiActions" + "uiActions", + "logsDataAccess" ], "optionalPlugins": [ "actions", diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/index.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/index.tsx index db9a3dee572f2f..f483b426493756 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/index.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/service_inventory/index.tsx @@ -5,6 +5,7 @@ * 2.0. */ +import { usePerformanceContext } from '@kbn/ebt-tools'; import { EuiEmptyPrompt, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; @@ -177,6 +178,7 @@ function useServicesDetailedStatisticsFetcher({ export function ServiceInventory() { const [debouncedSearchQuery, setDebouncedSearchQuery] = useStateDebounced(''); + const { onPageReady } = usePerformanceContext(); const [renderedItems, setRenderedItems] = useState([]); @@ -281,6 +283,15 @@ export function ServiceInventory() { }); }, [mainStatisticsStatus, mainStatisticsData.items, setScreenContext]); + useEffect(() => { + if ( + mainStatisticsStatus === FETCH_STATUS.SUCCESS && + comparisonFetch.status === FETCH_STATUS.SUCCESS + ) { + onPageReady(); + } + }, [mainStatisticsStatus, comparisonFetch.status, onPageReady]); + const { fields, isSaving, saveSingleSetting } = useEditableSettings([ apmEnableServiceInventoryTableSearchBar, ]); diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/service_map/index.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/service_map/index.tsx index ff00fd12cca1ef..14c5167128725a 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/service_map/index.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/service_map/index.tsx @@ -5,6 +5,7 @@ * 2.0. */ +import { usePerformanceContext } from '@kbn/ebt-tools'; import { EuiFlexGroup, EuiFlexItem, EuiLoadingSpinner, EuiPanel } from '@elastic/eui'; import React, { ReactNode } from 'react'; import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; @@ -95,6 +96,7 @@ export function ServiceMap({ const license = useLicenseContext(); const serviceName = useServiceName(); const { config } = useApmPluginContext(); + const { onPageReady } = usePerformanceContext(); const { data = { elements: [] }, @@ -172,6 +174,10 @@ export function ServiceMap({ ); } + if (status === FETCH_STATUS.SUCCESS) { + onPageReady(); + } + return ( <> diff --git a/x-pack/plugins/observability_solution/apm/public/components/app/top_traces_overview/trace_list.tsx b/x-pack/plugins/observability_solution/apm/public/components/app/top_traces_overview/trace_list.tsx index cd2de58752c4e0..d509685ae35a58 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/app/top_traces_overview/trace_list.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/app/top_traces_overview/trace_list.tsx @@ -6,9 +6,10 @@ */ import { EuiIcon, EuiToolTip, RIGHT_ALIGNMENT } from '@elastic/eui'; +import { usePerformanceContext } from '@kbn/ebt-tools'; import { TypeOf } from '@kbn/typed-react-router-config'; import { i18n } from '@kbn/i18n'; -import React, { useMemo } from 'react'; +import React, { useEffect, useMemo } from 'react'; import { euiStyled } from '@kbn/kibana-react-plugin/common'; import { ApmRoutes } from '../../routing/apm_route_config'; import { asMillisecondDuration, asTransactionRate } from '../../../../common/utils/formatters'; @@ -132,10 +133,18 @@ const noItemsMessage = ( export function TraceList({ response }: Props) { const { data: { items } = { items: [] }, status } = response; + const { onPageReady } = usePerformanceContext(); const { query } = useApmParams('/traces'); const traceListColumns = useMemo(() => getTraceListColumns({ query }), [query]); + + useEffect(() => { + if (status === FETCH_STATUS.SUCCESS) { + onPageReady(); + } + }, [status, onPageReady]); + return ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/x-pack/plugins/observability_solution/apm/public/components/shared/charts/spark_plot/index.tsx b/x-pack/plugins/observability_solution/apm/public/components/shared/charts/spark_plot/index.tsx index 704030695de318..84e2e6cb056d07 100644 --- a/x-pack/plugins/observability_solution/apm/public/components/shared/charts/spark_plot/index.tsx +++ b/x-pack/plugins/observability_solution/apm/public/components/shared/charts/spark_plot/index.tsx @@ -76,7 +76,7 @@ export function SparkPlot({ ); } -function SparkPlotItem({ +export function SparkPlotItem({ type, color, isLoading, diff --git a/x-pack/plugins/observability_solution/apm/server/routes/assets/services/get_service_assets.ts b/x-pack/plugins/observability_solution/apm/server/routes/assets/services/get_service_assets.ts index a467ffd3f71d4a..524a20e07e00c9 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/assets/services/get_service_assets.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/assets/services/get_service_assets.ts @@ -4,13 +4,19 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { Logger } from '@kbn/core/server'; import { errors } from '@elastic/elasticsearch'; +import { ElasticsearchClient, Logger } from '@kbn/core/server'; +import { LogsDataAccessPluginStart } from '@kbn/logs-data-access-plugin/server'; import { WrappedElasticsearchClientError } from '@kbn/observability-plugin/server'; +import { ApmServiceTransactionDocumentType } from '../../../../common/document_type'; +import { RollupInterval } from '../../../../common/rollup'; +import { APMEventClient } from '../../../lib/helpers/create_es_client/create_apm_event_client'; import { AssetsESClient } from '../../../lib/helpers/create_es_client/create_assets_es_client/create_assets_es_clients'; import { withApmSpan } from '../../../utils/with_apm_span'; -import { ServiceAssetDocument } from './types'; import { getAssets } from '../get_assets'; +import { getServiceNamesPerSignalType } from '../utils/get_service_names_per_signal_type'; +import { getServicesTransactionStats } from './get_services_transaction_stats'; +import { ServiceAssetDocument } from './types'; export const MAX_NUMBER_OF_SERVICES = 1_000; @@ -20,12 +26,24 @@ export async function getServiceAssets({ end, kuery, logger, + apmEventClient, + logsDataAccessStart, + esClient, + documentType, + rollupInterval, + useDurationSummary, }: { assetsESClient: AssetsESClient; start: number; end: number; kuery: string; logger: Logger; + apmEventClient: APMEventClient; + logsDataAccessStart: LogsDataAccessPluginStart; + esClient: ElasticsearchClient; + documentType: ApmServiceTransactionDocumentType; + rollupInterval: RollupInterval; + useDurationSummary: boolean; }) { return withApmSpan('get_service_assets', async () => { try { @@ -38,7 +56,7 @@ export async function getServiceAssets({ assetType: 'service', }); - return response.hits.hits.map((hit) => { + const services = response.hits.hits.map((hit) => { const serviceAsset = hit._source as ServiceAssetDocument; return { @@ -52,6 +70,41 @@ export async function getServiceAssets({ }, }; }); + + const { logsServiceNames, tracesServiceNames } = getServiceNamesPerSignalType(services); + + const [traceMetrics = {}, logsMetrics = {}] = await Promise.all([ + tracesServiceNames.length + ? getServicesTransactionStats({ + apmEventClient, + start, + end, + kuery, + serviceNames: tracesServiceNames, + documentType, + rollupInterval, + useDurationSummary, + }) + : undefined, + logsServiceNames.length + ? logsDataAccessStart.services.getLogsRatesService({ + esClient, + identifyingMetadata: 'service.name', + timeFrom: start, + timeTo: end, + serviceNames: logsServiceNames, + }) + : undefined, + ]); + + return services.map((item) => { + const serviceTraceMetrics = traceMetrics[item.service.name]; + const serviceLogsMetrics = logsMetrics[item.service.name]; + return { + ...item, + metrics: { ...serviceTraceMetrics, ...serviceLogsMetrics }, + }; + }); } catch (error) { // If the index does not exist, handle it gracefully if ( diff --git a/x-pack/plugins/observability_solution/apm/server/routes/assets/services/get_services_transaction_stats.ts b/x-pack/plugins/observability_solution/apm/server/routes/assets/services/get_services_transaction_stats.ts new file mode 100644 index 00000000000000..a4d8a45551de28 --- /dev/null +++ b/x-pack/plugins/observability_solution/apm/server/routes/assets/services/get_services_transaction_stats.ts @@ -0,0 +1,120 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { kqlQuery, rangeQuery } from '@kbn/observability-plugin/server'; +import { ApmServiceTransactionDocumentType } from '../../../../common/document_type'; +import { SERVICE_NAME, TRANSACTION_TYPE } from '../../../../common/es_fields/apm'; +import { RollupInterval } from '../../../../common/rollup'; +import { isDefaultTransactionType } from '../../../../common/transaction_types'; +import { maybe } from '../../../../common/utils/maybe'; +import { calculateThroughputWithRange } from '../../../lib/helpers/calculate_throughput'; +import { APMEventClient } from '../../../lib/helpers/create_es_client/create_apm_event_client'; +import { getDurationFieldForTransactions } from '../../../lib/helpers/transactions'; +import { + calculateFailedTransactionRate, + getOutcomeAggregation, +} from '../../../lib/helpers/transaction_error_rate'; +import { MAX_NUMBER_OF_SERVICES } from './get_service_assets'; + +export interface TraceMetrics { + latency: number | null; + throughput: number | null; + transactionErrorRate: number | null; +} + +interface AssetServicesMetricsMap { + [serviceName: string]: TraceMetrics; +} + +export async function getServicesTransactionStats({ + apmEventClient, + start, + end, + kuery, + serviceNames, + documentType, + rollupInterval, + useDurationSummary, +}: { + apmEventClient: APMEventClient; + start: number; + end: number; + kuery: string; + serviceNames: string[]; + documentType: ApmServiceTransactionDocumentType; + rollupInterval: RollupInterval; + useDurationSummary: boolean; +}): Promise { + const response = await apmEventClient.search('get_services_transaction_stats', { + apm: { + sources: [{ documentType, rollupInterval }], + }, + body: { + track_total_hits: false, + size: 0, + query: { + bool: { + filter: [ + ...rangeQuery(start, end), + ...kqlQuery(kuery), + { terms: { [SERVICE_NAME]: serviceNames } }, + ], + }, + }, + aggs: { + services: { + terms: { + field: SERVICE_NAME, + size: MAX_NUMBER_OF_SERVICES, + }, + aggs: { + transactionType: { + terms: { + field: TRANSACTION_TYPE, + }, + aggs: { + avg_duration: { + avg: { + field: getDurationFieldForTransactions(documentType, useDurationSummary), + }, + }, + ...getOutcomeAggregation(documentType), + }, + }, + }, + }, + }, + }, + }); + + return ( + response.aggregations?.services.buckets.reduce((acc, bucket) => { + const serviceName = bucket.key as string; + const topTransactionTypeBucket = maybe( + bucket.transactionType.buckets.find(({ key }) => isDefaultTransactionType(key as string)) ?? + bucket.transactionType.buckets[0] + ); + + return { + ...acc, + [serviceName]: { + latency: topTransactionTypeBucket?.avg_duration.value || null, + throughput: topTransactionTypeBucket + ? calculateThroughputWithRange({ + start, + end, + value: topTransactionTypeBucket.doc_count, + }) + : null, + transactionErrorRate: topTransactionTypeBucket + ? calculateFailedTransactionRate(topTransactionTypeBucket) + : null, + }, + }; + }, {}) || {} + ); +} diff --git a/x-pack/plugins/observability_solution/apm/server/routes/assets/services/routes.ts b/x-pack/plugins/observability_solution/apm/server/routes/assets/services/routes.ts index 876ff495eae17d..ff79cd80e1f47f 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/assets/services/routes.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/assets/services/routes.ts @@ -5,28 +5,39 @@ * 2.0. */ import * as t from 'io-ts'; -import { createApmServerRoute } from '../../apm_routes/create_apm_server_route'; +import { toBooleanRt } from '@kbn/io-ts-utils'; import { createAssetsESClient } from '../../../lib/helpers/create_es_client/create_assets_es_client/create_assets_es_clients'; +import { getApmEventClient } from '../../../lib/helpers/get_apm_event_client'; +import { createApmServerRoute } from '../../apm_routes/create_apm_server_route'; +import { kueryRt, rangeRt, serviceTransactionDataSourceRt } from '../../default_api_types'; import { getServiceAssets } from './get_service_assets'; -import { kueryRt, rangeRt } from '../../default_api_types'; import { AssetServicesResponse } from './types'; const servicesAssetsRoute = createApmServerRoute({ endpoint: 'GET /internal/apm/assets/services', params: t.type({ - query: t.intersection([kueryRt, rangeRt]), + query: t.intersection([ + kueryRt, + rangeRt, + serviceTransactionDataSourceRt, + t.type({ useDurationSummary: toBooleanRt }), + ]), }), options: { tags: ['access:apm'] }, async handler(resources): Promise { - const { context, params, request } = resources; - const coreContext = await context.core; + const { context, params, request, plugins } = resources; + const [coreContext, apmEventClient, logsDataAccessStart] = await Promise.all([ + context.core, + getApmEventClient(resources), + plugins.logsDataAccess.start(), + ]); const assetsESClient = await createAssetsESClient({ request, esClient: coreContext.elasticsearch.client.asCurrentUser, }); - const { start, end, kuery } = params.query; + const { start, end, kuery, documentType, rollupInterval, useDurationSummary } = params.query; const services = await getServiceAssets({ assetsESClient, @@ -34,7 +45,14 @@ const servicesAssetsRoute = createApmServerRoute({ end, kuery, logger: resources.logger, + apmEventClient, + logsDataAccessStart, + esClient: coreContext.elasticsearch.client.asCurrentUser, + documentType, + rollupInterval, + useDurationSummary, }); + return { services }; }, }); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/assets/services/types.ts b/x-pack/plugins/observability_solution/apm/server/routes/assets/services/types.ts index 14fb8a012239c1..e63c12f27a1726 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/assets/services/types.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/assets/services/types.ts @@ -5,9 +5,12 @@ * 2.0. */ -export interface SignalTypes { - 'asset.trace'?: boolean; - 'asset.logs'?: boolean; +import { LogsRatesMetrics } from '@kbn/logs-data-access-plugin/server'; +import { TraceMetrics } from './get_services_transaction_stats'; + +export enum SignalType { + ASSET_TRACES = 'asset.traces', + ASSET_LOGS = 'asset.logs', } interface ServiceItem { @@ -15,6 +18,8 @@ interface ServiceItem { name: string; } +type SignalTypes = Record; + interface AssetItem { signalTypes: SignalTypes; identifyingMetadata: string[]; @@ -28,6 +33,11 @@ export interface ServiceAssetDocument { service: ServiceItem; } +export interface AssetService { + asset: AssetItem; + service: ServiceItem; +} + export interface AssetServicesResponse { - services: Array<{ asset: AssetItem; service: ServiceItem }>; + services: Array; } diff --git a/x-pack/plugins/observability_solution/apm/server/routes/assets/utils/get_service_names_per_signal_type.test.ts b/x-pack/plugins/observability_solution/apm/server/routes/assets/utils/get_service_names_per_signal_type.test.ts new file mode 100644 index 00000000000000..89c67769bf47a6 --- /dev/null +++ b/x-pack/plugins/observability_solution/apm/server/routes/assets/utils/get_service_names_per_signal_type.test.ts @@ -0,0 +1,104 @@ +/* + * Copyright 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 { AssetService } from '../services/types'; +import { getServiceNamesPerSignalType } from './get_service_names_per_signal_type'; + +describe('getServiceNamesPerSignalType', () => { + it('returns empty arrays when serviceAssets is empty', () => { + const serviceAssets: AssetService[] = []; + const result = getServiceNamesPerSignalType(serviceAssets); + expect(result).toEqual({ tracesServiceNames: [], logsServiceNames: [] }); + }); + + it('returns service names for assets with traces signal types', () => { + const serviceAssets: AssetService[] = [ + { + asset: { + signalTypes: { 'asset.traces': true, 'asset.logs': false }, + identifyingMetadata: [], + }, + service: { name: 'Service1' }, + }, + { + asset: { + signalTypes: { 'asset.traces': false, 'asset.logs': false }, + identifyingMetadata: [], + }, + service: { name: 'Service2' }, + }, + ]; + const result = getServiceNamesPerSignalType(serviceAssets); + expect(result).toEqual({ tracesServiceNames: ['Service1'], logsServiceNames: [] }); + }); + + it('returns service names for assets with logs signal types', () => { + const serviceAssets: AssetService[] = [ + { + asset: { + signalTypes: { 'asset.logs': true, 'asset.traces': false }, + identifyingMetadata: [], + }, + service: { name: 'Service1' }, + }, + { + asset: { + signalTypes: { 'asset.logs': false, 'asset.traces': false }, + identifyingMetadata: [], + }, + service: { name: 'Service2' }, + }, + ]; + const result = getServiceNamesPerSignalType(serviceAssets); + expect(result).toEqual({ tracesServiceNames: [], logsServiceNames: ['Service1'] }); + }); + + it('returns empty arrays when there are no assets with signal types', () => { + const serviceAssets: AssetService[] = [ + { + asset: { + signalTypes: { 'asset.logs': false, 'asset.traces': false }, + identifyingMetadata: [], + }, + service: { name: 'Service1' }, + }, + { + asset: { + signalTypes: { 'asset.logs': false, 'asset.traces': false }, + identifyingMetadata: [], + }, + service: { name: 'Service2' }, + }, + ]; + const result = getServiceNamesPerSignalType(serviceAssets); + expect(result).toEqual({ tracesServiceNames: [], logsServiceNames: [] }); + }); + + it('returns service names for assets with logs and traces signal types', () => { + const serviceAssets: AssetService[] = [ + { + asset: { + signalTypes: { 'asset.logs': true, 'asset.traces': true }, + identifyingMetadata: [], + }, + service: { name: 'Service1' }, + }, + { + asset: { + signalTypes: { 'asset.logs': true, 'asset.traces': true }, + identifyingMetadata: [], + }, + service: { name: 'Service2' }, + }, + ]; + const result = getServiceNamesPerSignalType(serviceAssets); + expect(result).toEqual({ + tracesServiceNames: ['Service1', 'Service2'], + logsServiceNames: ['Service1', 'Service2'], + }); + }); +}); diff --git a/x-pack/plugins/observability_solution/apm/server/routes/assets/utils/get_service_names_per_signal_type.ts b/x-pack/plugins/observability_solution/apm/server/routes/assets/utils/get_service_names_per_signal_type.ts new file mode 100644 index 00000000000000..94efeb96a3c1bb --- /dev/null +++ b/x-pack/plugins/observability_solution/apm/server/routes/assets/utils/get_service_names_per_signal_type.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { AssetService, SignalType } from '../services/types'; + +export function getServiceNamesPerSignalType(serviceAssets: AssetService[]) { + const tracesServiceNames = serviceAssets + .filter(({ asset }) => asset.signalTypes[SignalType.ASSET_TRACES]) + .map(({ service }) => service.name); + + const logsServiceNames = serviceAssets + .filter(({ asset }) => asset.signalTypes[SignalType.ASSET_LOGS]) + .map(({ service }) => service.name); + + return { tracesServiceNames, logsServiceNames }; +} diff --git a/x-pack/plugins/observability_solution/apm/server/types.ts b/x-pack/plugins/observability_solution/apm/server/types.ts index 7c91ecf2fd85e9..1aeb6defe9a57d 100644 --- a/x-pack/plugins/observability_solution/apm/server/types.ts +++ b/x-pack/plugins/observability_solution/apm/server/types.ts @@ -53,6 +53,10 @@ import { ProfilingDataAccessPluginSetup, ProfilingDataAccessPluginStart, } from '@kbn/profiling-data-access-plugin/server'; +import { + LogsDataAccessPluginSetup, + LogsDataAccessPluginStart, +} from '@kbn/logs-data-access-plugin/server'; import type { ObservabilityAIAssistantServerSetup, ObservabilityAIAssistantServerStart, @@ -88,6 +92,7 @@ export interface APMPluginSetupDependencies { usageCollection?: UsageCollectionSetup; customIntegrations?: CustomIntegrationsPluginSetup; profilingDataAccess?: ProfilingDataAccessPluginSetup; + logsDataAccess: LogsDataAccessPluginSetup; } export interface APMPluginStartDependencies { // required dependencies @@ -114,4 +119,5 @@ export interface APMPluginStartDependencies { usageCollection?: undefined; customIntegrations?: CustomIntegrationsPluginStart; profilingDataAccess?: ProfilingDataAccessPluginStart; + logsDataAccess: LogsDataAccessPluginStart; } diff --git a/x-pack/plugins/observability_solution/apm/tsconfig.json b/x-pack/plugins/observability_solution/apm/tsconfig.json index f3464ee58a648c..4a43f0821c700c 100644 --- a/x-pack/plugins/observability_solution/apm/tsconfig.json +++ b/x-pack/plugins/observability_solution/apm/tsconfig.json @@ -116,7 +116,9 @@ "@kbn/react-kibana-context-theme", "@kbn/core-http-request-handler-context-server", "@kbn/search-types", - "@kbn/presentation-publishing", + "@kbn/logs-data-access-plugin", + "@kbn/ebt-tools", + "@kbn/presentation-publishing" ], "exclude": ["target/**/*"] } diff --git a/x-pack/plugins/observability_solution/dataset_quality/common/api_types.ts b/x-pack/plugins/observability_solution/dataset_quality/common/api_types.ts index c953d4589c614f..d35748f9a74076 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/common/api_types.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/common/api_types.ts @@ -16,6 +16,7 @@ export const dataStreamStatRt = rt.intersection([ sizeBytes: rt.number, lastActivity: rt.number, integration: rt.string, + totalDocs: rt.union([rt.null, rt.number]), // rt.null is only needed for https://github.com/elastic/kibana/issues/178954 }), ]); @@ -71,7 +72,7 @@ export const getIntegrationsResponseRt = rt.exact( export const degradedDocsRt = rt.type({ dataset: rt.string, count: rt.number, - totalDocs: rt.number, + docsCount: rt.number, percentage: rt.number, }); @@ -119,3 +120,12 @@ export type DataStreamsEstimatedDataInBytes = rt.TypeOf; diff --git a/x-pack/plugins/observability_solution/dataset_quality/common/constants.ts b/x-pack/plugins/observability_solution/dataset_quality/common/constants.ts index ed984ae856a38e..d97def4d29625f 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/common/constants.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/common/constants.ts @@ -25,6 +25,7 @@ export const DEFAULT_DATEPICKER_REFRESH = { value: 60000, pause: false }; export const DEFAULT_DEGRADED_DOCS = { percentage: 0, count: 0, + docsCount: 0, quality: 'good' as QualityIndicators, }; diff --git a/x-pack/plugins/observability_solution/dataset_quality/common/data_streams_stats/data_stream_stat.ts b/x-pack/plugins/observability_solution/dataset_quality/common/data_streams_stats/data_stream_stat.ts index 0cf0a40b1b45be..806fd17962a496 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/common/data_streams_stats/data_stream_stat.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/common/data_streams_stats/data_stream_stat.ts @@ -18,13 +18,15 @@ export class DataStreamStat { name: DataStreamStatType['name']; namespace: string; title: string; - size?: DataStreamStatType['size']; - sizeBytes?: DataStreamStatType['sizeBytes']; + size?: DataStreamStatType['size']; // total datastream size + sizeBytes?: DataStreamStatType['sizeBytes']; // total datastream size lastActivity?: DataStreamStatType['lastActivity']; + totalDocs?: DataStreamStatType['totalDocs']; // total datastream docs count integration?: Integration; degradedDocs: { percentage: number; count: number; + docsCount: number; // docs count in the filtered time range quality: QualityIndicators; }; @@ -37,10 +39,12 @@ export class DataStreamStat { this.size = dataStreamStat.size; this.sizeBytes = dataStreamStat.sizeBytes; this.lastActivity = dataStreamStat.lastActivity; + this.totalDocs = dataStreamStat.totalDocs; this.integration = dataStreamStat.integration; this.degradedDocs = { percentage: dataStreamStat.degradedDocs.percentage, count: dataStreamStat.degradedDocs.count, + docsCount: dataStreamStat.degradedDocs.docsCount, quality: dataStreamStat.degradedDocs.quality, }; } @@ -57,6 +61,7 @@ export class DataStreamStat { size: dataStreamStat.size, sizeBytes: dataStreamStat.sizeBytes, lastActivity: dataStreamStat.lastActivity, + totalDocs: dataStreamStat.totalDocs, degradedDocs: DEFAULT_DEGRADED_DOCS, }; @@ -82,10 +87,16 @@ export class DataStreamStat { degradedDocs: { percentage: degradedDocStat.percentage, count: degradedDocStat.count, + docsCount: degradedDocStat.docsCount, quality: mapPercentageToQuality(degradedDocStat.percentage), }, }; return new DataStreamStat(dataStreamStatProps); } + + public static calculateFilteredSize({ sizeBytes, totalDocs, degradedDocs }: DataStreamStat) { + const avgDocSize = sizeBytes && totalDocs ? sizeBytes / totalDocs : 0; + return avgDocSize * degradedDocs.docsCount; + } } diff --git a/x-pack/plugins/observability_solution/dataset_quality/common/data_streams_stats/malformed_docs_stat.ts b/x-pack/plugins/observability_solution/dataset_quality/common/data_streams_stats/malformed_docs_stat.ts index abff1adabf5431..c86b802ea42da5 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/common/data_streams_stats/malformed_docs_stat.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/common/data_streams_stats/malformed_docs_stat.ts @@ -13,12 +13,14 @@ export class DegradedDocsStat { dataset: DegradedDocsStatType['dataset']; percentage: DegradedDocsStatType['percentage']; count: DegradedDocsStatType['count']; + docsCount: DegradedDocsStatType['docsCount']; quality: QualityIndicators; private constructor(degradedDocsStat: DegradedDocsStat) { this.dataset = degradedDocsStat.dataset; this.percentage = degradedDocsStat.percentage; this.count = degradedDocsStat.count; + this.docsCount = degradedDocsStat.docsCount; this.quality = degradedDocsStat.quality; } diff --git a/x-pack/plugins/observability_solution/dataset_quality/common/data_streams_stats/types.ts b/x-pack/plugins/observability_solution/dataset_quality/common/data_streams_stats/types.ts index 0c9456c2d72576..9905cef5f7ea5d 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/common/data_streams_stats/types.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/common/data_streams_stats/types.ts @@ -43,10 +43,10 @@ export type GetDataStreamDetailsParams = GetDataStreamDetailsPathParams & export type GetDataStreamDetailsResponse = APIReturnType<`GET /internal/dataset_quality/data_streams/{dataStream}/details`>; -export type GetDataStreamsEstimatedDataInBytesParams = - APIClientRequestParamsOf<`GET /internal/dataset_quality/data_streams/estimated_data`>['params']; -export type GetDataStreamsEstimatedDataInBytesResponse = - APIReturnType<`GET /internal/dataset_quality/data_streams/estimated_data`>; +export type GetNonAggregatableDataStreamsParams = + APIClientRequestParamsOf<`GET /internal/dataset_quality/data_streams/non_aggregatable`>['params']['query']; +export type GetNonAggregatableDataStreamsResponse = + APIReturnType<`GET /internal/dataset_quality/data_streams/non_aggregatable`>; export type GetIntegrationDashboardsParams = APIClientRequestParamsOf<`GET /internal/dataset_quality/integrations/{integration}/dashboards`>['params']['path']; diff --git a/x-pack/plugins/observability_solution/dataset_quality/common/translations.ts b/x-pack/plugins/observability_solution/dataset_quality/common/translations.ts index 1f3d1e3c8d4037..d8ea867c44e4c2 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/common/translations.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/common/translations.ts @@ -207,7 +207,7 @@ export const summaryPanelEstimatedDataText = i18n.translate( export const summaryPanelEstimatedDataTooltipText = i18n.translate( 'xpack.datasetQuality.summaryPanelEstimatedDataTooltipText', { - defaultMessage: 'The approximate amount of data stored in the last 24 hours.', + defaultMessage: 'The approximate amount of data stored in the selected time range.', } ); diff --git a/x-pack/plugins/observability_solution/dataset_quality/common/utils/dataset_name.test.ts b/x-pack/plugins/observability_solution/dataset_quality/common/utils/dataset_name.test.ts index 9244c9e65f13c7..8ffcbfe5657fa0 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/common/utils/dataset_name.test.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/common/utils/dataset_name.test.ts @@ -55,27 +55,33 @@ describe('dataset_name', () => { }); describe('extractIndexNameFromBackingIndex', () => { - it('returns the correct index name if backing index provieded', () => { + it('returns the correct index name if backing index provided', () => { expect( - extractIndexNameFromBackingIndex( - '.ds-logs-apm.app.adservice-default-2024.04.29-000001', - 'logs' - ) + extractIndexNameFromBackingIndex('.ds-logs-apm.app.adservice-default-2024.04.29-000001') ).toEqual('logs-apm.app.adservice-default'); }); it('returns the correct index name if index name is passed', () => { - expect(extractIndexNameFromBackingIndex('logs-nginx.access-default', 'logs')).toEqual( + expect(extractIndexNameFromBackingIndex('logs-nginx.access-default')).toEqual( 'logs-nginx.access-default' ); }); + it('returns the correct index name if backing index contains _', () => { + expect( + extractIndexNameFromBackingIndex('.ds-logs-elastic_agent-default-2024.04.29-000001') + ).toEqual('logs-elastic_agent-default'); + }); + + it('returns the correct index name if backing index contains only -', () => { + expect( + extractIndexNameFromBackingIndex('.ds-logs-generic-pods-default-2024.04.29-000001') + ).toEqual('logs-generic-pods-default'); + }); + it('handles different types', () => { expect( - extractIndexNameFromBackingIndex( - '.ds-metrics-apm.app.adservice-default-2024.04.29-000001', - 'metrics' - ) + extractIndexNameFromBackingIndex('.ds-metrics-apm.app.adservice-default-2024.04.29-000001') ).toEqual('metrics-apm.app.adservice-default'); }); }); diff --git a/x-pack/plugins/observability_solution/dataset_quality/common/utils/dataset_name.ts b/x-pack/plugins/observability_solution/dataset_quality/common/utils/dataset_name.ts index 8914a4d893b6df..eaca58ded64049 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/common/utils/dataset_name.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/common/utils/dataset_name.ts @@ -39,14 +39,8 @@ export const indexNameToDataStreamParts = (dataStreamName: string) => { }; }; -export const extractIndexNameFromBackingIndex = ( - indexString: string, - type: DataStreamType -): string => { - const pattern: RegExp = new RegExp( - `(?:\\.ds-)?(${type}-(?:[^-.]+(?:\\.[^.]+)+)-[^-]+)-\\d{4}\\.\\d{2}\\.\\d{2}-\\d{6}` - ); - +export const extractIndexNameFromBackingIndex = (indexString: string): string => { + const pattern = /.ds-(.*?)-[0-9]{4}\.[0-9]{2}\.[0-9]{2}-[0-9]{6}/; const match = indexString.match(pattern); return match ? match[1] : indexString; diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/dataset_quality.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/dataset_quality.tsx index ad343f912e4ffb..57c8d7a9e44cff 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/dataset_quality.tsx +++ b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/dataset_quality.tsx @@ -42,10 +42,7 @@ export const createDatasetQuality = ({ return ( - + @@ -56,6 +53,7 @@ export const createDatasetQuality = ({ }; const Header = dynamic(() => import('./header')); +const Warnings = dynamic(() => import('./warnings/warnings')); const Table = dynamic(() => import('./table/table')); const Filters = dynamic(() => import('./filters/filters')); const SummaryPanel = dynamic(() => import('./summary_panel/summary_panel')); @@ -66,6 +64,9 @@ function DatasetQuality() {
+ + + diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/last_day_data_placeholder.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/data_placeholder.tsx similarity index 88% rename from x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/last_day_data_placeholder.tsx rename to x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/data_placeholder.tsx index 2c5bbb35063cf8..0e926291356ac1 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/last_day_data_placeholder.tsx +++ b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/data_placeholder.tsx @@ -16,19 +16,14 @@ import { EuiIconTip, EuiSkeletonTitle, } from '@elastic/eui'; -interface LastDayDataPlaceholderParams { +interface DataPlaceholderParams { title: string; tooltip: string; value: string | number; isLoading: boolean; } -export function LastDayDataPlaceholder({ - title, - tooltip, - value, - isLoading, -}: LastDayDataPlaceholderParams) { +export function DataPlaceholder({ title, tooltip, value, isLoading }: DataPlaceholderParams) { return ( diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/datasets_activity.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/datasets_activity.tsx index f269c1d4ed046e..d8841439f23154 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/datasets_activity.tsx +++ b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/summary_panel/datasets_activity.tsx @@ -13,14 +13,14 @@ import { summaryPanelDatasetsActivityTooltipText, tableSummaryOfText, } from '../../../../common/translations'; -import { LastDayDataPlaceholder } from './last_day_data_placeholder'; +import { DataPlaceholder } from './data_placeholder'; export function DatasetsActivity() { const { datasetsActivity, isDatasetsActivityLoading } = useSummaryPanelContext(); const text = `${datasetsActivity.active} ${tableSummaryOfText} ${datasetsActivity.total}`; return ( - ); diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/table/columns.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/table/columns.tsx index ba7fd971352ed4..a457053db2e070 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/table/columns.tsx +++ b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/table/columns.tsx @@ -162,6 +162,7 @@ export const getDatasetQualityTableColumns = ({ loadingDataStreamStats, loadingDegradedStats, showFullDatasetNames, + isSizeStatsAvailable, isActiveDataset, }: { fieldFormats: FieldFormatsStart; @@ -169,6 +170,7 @@ export const getDatasetQualityTableColumns = ({ loadingDataStreamStats: boolean; loadingDegradedStats: boolean; showFullDatasetNames: boolean; + isSizeStatsAvailable: boolean; openFlyout: (selectedDataset: FlyoutDataset) => void; isActiveDataset: (lastActivity: number) => boolean; }): Array> => { @@ -228,22 +230,31 @@ export const getDatasetQualityTableColumns = ({ ), width: '160px', }, - { - name: sizeColumnName, - field: 'sizeBytes', - sortable: true, - render: (_, dataStreamStat: DataStreamStat) => ( - - {formatNumber(dataStreamStat.sizeBytes || 0, BYTE_NUMBER_FORMAT)} - - ), - width: '100px', - }, + ...(isSizeStatsAvailable + ? [ + { + name: sizeColumnName, + field: 'sizeBytes', + sortable: true, + render: (_: any, dataStreamStat: DataStreamStat) => { + return ( + + {formatNumber( + DataStreamStat.calculateFilteredSize(dataStreamStat), + BYTE_NUMBER_FORMAT + )} + + ); + }, + width: '100px', + }, + ] + : []), { name: ( diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/warnings/warnings.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/warnings/warnings.tsx new file mode 100644 index 00000000000000..94f99b5386ef7b --- /dev/null +++ b/x-pack/plugins/observability_solution/dataset_quality/public/components/dataset_quality/warnings/warnings.tsx @@ -0,0 +1,97 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { EuiAccordion, EuiCallOut, EuiFlexGroup, EuiFlexItem, EuiLink } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; +import React from 'react'; +import { useDatasetQualityWarnings } from '../../../hooks/use_dataset_quality_warnings'; + +const nonAggregatableWarningTitle = i18n.translate('xpack.datasetQuality.nonAggregatable.title', { + defaultMessage: 'Your request may take longer to complete', +}); + +const nonAggregatableWarningDescription = (nonAggregatableDatasets: string[]) => ( + +
    + {nonAggregatableDatasets.map((dataset) => ( +
  • {dataset}
  • + ))} +
+ + ), + }} + /> + ), + howToFixIt: ( + + {i18n.translate('xpack.datasetQuality.nonAggregatableDatasets.link.title', { + defaultMessage: 'rollover', + })} + + ), + }} + /> + ), + }} + /> + ), + }} + /> +); + +// Allow for lazy loading +// eslint-disable-next-line import/no-default-export +export default function Warnings() { + const { loading, nonAggregatableDatasets } = useDatasetQualityWarnings(); + + return ( + + {!loading && nonAggregatableDatasets.length > 0 && ( + + +

{nonAggregatableWarningDescription(nonAggregatableDatasets)}

+
+
+ )} +
+ ); +} diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/components/flyout/flyout.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/components/flyout/flyout.tsx index b99ca3f3b0004c..7543322a5dafcb 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/components/flyout/flyout.tsx +++ b/x-pack/plugins/observability_solution/dataset_quality/public/components/flyout/flyout.tsx @@ -34,6 +34,7 @@ export default function Flyout({ dataset, closeFlyout }: FlyoutProps) { dataStreamStat, dataStreamSettings, dataStreamDetails, + isNonAggregatable, fieldFormats, timeRange, loadingState, @@ -60,6 +61,7 @@ export default function Flyout({ dataset, closeFlyout }: FlyoutProps) { dataStreamDetails={dataStreamDetails} dataStreamDetailsLoading={loadingState.dataStreamDetailsLoading} timeRange={timeRange} + isNonAggregatable={isNonAggregatable} />
diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/components/flyout/flyout_summary/flyout_summary.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/components/flyout/flyout_summary/flyout_summary.tsx index 7ba5f315e607f1..c3e38d5a9940af 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/components/flyout/flyout_summary/flyout_summary.tsx +++ b/x-pack/plugins/observability_solution/dataset_quality/public/components/flyout/flyout_summary/flyout_summary.tsx @@ -6,8 +6,19 @@ */ import React, { useCallback, useState } from 'react'; -import { OnRefreshProps, OnTimeChangeProps, EuiSpacer } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { + OnRefreshProps, + OnTimeChangeProps, + EuiSpacer, + EuiFlexGroup, + EuiFlexItem, + EuiCallOut, + EuiLink, + EuiCode, +} from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; import { DegradedDocs } from '../degraded_docs_trend/degraded_docs'; import { DataStreamDetails } from '../../../../common/api_types'; import { DEFAULT_TIME_RANGE, DEFAULT_DATEPICKER_REFRESH } from '../../../../common/constants'; @@ -16,10 +27,60 @@ import { FlyoutDataset, TimeRangeConfig } from '../../../state_machines/dataset_ import { FlyoutSummaryHeader } from './flyout_summary_header'; import { FlyoutSummaryKpis, FlyoutSummaryKpisLoading } from './flyout_summary_kpis'; +const nonAggregatableWarningTitle = i18n.translate('xpack.datasetQuality.nonAggregatable.title', { + defaultMessage: 'Your request may take longer to complete', +}); + +const nonAggregatableWarningDescription = (dataset: string) => ( + + {dataset} + + ), + howToFixIt: ( + + {i18n.translate( + 'xpack.datasetQuality.flyout.nonAggregatableDatasets.link.title', + { + defaultMessage: 'rollover', + } + )} + + ), + }} + /> + ), + }} + /> + ), + }} + /> +); + export function FlyoutSummary({ dataStream, dataStreamStat, dataStreamDetails, + isNonAggregatable, dataStreamDetailsLoading, timeRange = { ...DEFAULT_TIME_RANGE, refresh: DEFAULT_DATEPICKER_REFRESH }, }: { @@ -28,6 +89,7 @@ export function FlyoutSummary({ dataStreamDetails?: DataStreamDetails; dataStreamDetailsLoading: boolean; timeRange?: TimeRangeConfig; + isNonAggregatable?: boolean; }) { const { service } = useDatasetQualityContext(); const [lastReloadTime, setLastReloadTime] = useState(Date.now()); @@ -72,6 +134,18 @@ export function FlyoutSummary({ return ( <> + {isNonAggregatable && ( + + + +

{nonAggregatableWarningDescription(dataStream)}

+
+
+
+ )} { datasetDetails: dataStreamDetails, insightsTimeRange, breakdownField, + isNonAggregatable, } = useSelector(service, (state) => state.context.flyout) ?? {}; const { timeRange } = useSelector(service, (state) => state.context.filters); @@ -36,6 +37,7 @@ export const useDatasetQualityFlyout = () => { dataStreamStat, dataStreamSettings, dataStreamDetails, + isNonAggregatable, fieldFormats, timeRange: insightsTimeRange ?? timeRange, breakdownField, diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/hooks/use_dataset_quality_table.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/hooks/use_dataset_quality_table.tsx index 5ca7c6e281bdf6..566d6dac5c0e73 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/hooks/use_dataset_quality_table.tsx +++ b/x-pack/plugins/observability_solution/dataset_quality/public/hooks/use_dataset_quality_table.tsx @@ -33,6 +33,7 @@ export const useDatasetQualityTable = () => { const { service } = useDatasetQualityContext(); const { page, rowsPerPage, sort } = useSelector(service, (state) => state.context.table); + const isSizeStatsAvailable = useSelector(service, (state) => state.context.isSizeStatsAvailable); const { inactive: showInactiveDatasets, @@ -113,6 +114,7 @@ export const useDatasetQualityTable = () => { loadingDataStreamStats, loadingDegradedStats, showFullDatasetNames, + isSizeStatsAvailable, isActiveDataset: isActive, }), [ @@ -122,6 +124,7 @@ export const useDatasetQualityTable = () => { loadingDataStreamStats, loadingDegradedStats, showFullDatasetNames, + isSizeStatsAvailable, isActive, ] ); @@ -216,5 +219,6 @@ export const useDatasetQualityTable = () => { showFullDatasetNames, toggleInactiveDatasets, toggleFullDatasetNames, + isSizeStatsAvailable, }; }; diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/hooks/use_dataset_quality_warnings.ts b/x-pack/plugins/observability_solution/dataset_quality/public/hooks/use_dataset_quality_warnings.ts new file mode 100644 index 00000000000000..ddb116dc483065 --- /dev/null +++ b/x-pack/plugins/observability_solution/dataset_quality/public/hooks/use_dataset_quality_warnings.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 { useSelector } from '@xstate/react'; +import { useDatasetQualityContext } from '../components/dataset_quality/context'; + +export function useDatasetQualityWarnings() { + const { service } = useDatasetQualityContext(); + + const nonAggregatableDatasets = useSelector( + service, + (state) => state.context.nonAggregatableDatasets + ); + + const isNonAggregatableDatasetsLoading = useSelector(service, (state) => + state.matches('nonAggregatableDatasets.fetching') + ); + + return { loading: isNonAggregatableDatasetsLoading, nonAggregatableDatasets }; +} diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/hooks/use_summary_panel.tsx b/x-pack/plugins/observability_solution/dataset_quality/public/hooks/use_summary_panel.tsx index db83151a2e6e37..4c37c925500e60 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/hooks/use_summary_panel.tsx +++ b/x-pack/plugins/observability_solution/dataset_quality/public/hooks/use_summary_panel.tsx @@ -6,32 +6,18 @@ */ import createContainer from 'constate'; -import { useInterpret, useSelector } from '@xstate/react'; -import { IToasts } from '@kbn/core-notifications-browser'; -import { IDataStreamsStatsClient } from '../services/data_streams_stats'; -import { createDatasetsSummaryPanelStateMachine } from '../state_machines/summary_panel'; +import { useSelector } from '@xstate/react'; +import { DataStreamStat } from '../../common/data_streams_stats/data_stream_stat'; import { useDatasetQualityTable } from '.'; import { useDatasetQualityContext } from '../components/dataset_quality/context'; import { filterInactiveDatasets } from '../utils'; -interface SummaryPanelContextDeps { - dataStreamStatsClient: IDataStreamsStatsClient; - toasts: IToasts; -} - -const useSummaryPanel = ({ dataStreamStatsClient, toasts }: SummaryPanelContextDeps) => { +const useSummaryPanel = () => { const { service } = useDatasetQualityContext(); - const { filteredItems } = useDatasetQualityTable(); + const { filteredItems, isSizeStatsAvailable } = useDatasetQualityTable(); const { timeRange } = useSelector(service, (state) => state.context.filters); - const summaryPanelStateService = useInterpret(() => - createDatasetsSummaryPanelStateMachine({ - dataStreamStatsClient, - toasts, - }) - ); - /* Datasets Quality */ @@ -62,16 +48,14 @@ const useSummaryPanel = ({ dataStreamStatsClient, toasts }: SummaryPanelContextD /* Estimated Data */ - const estimatedData = useSelector( - summaryPanelStateService, - (state) => state.context.estimatedData + const estimatedData = filteredItems.reduce( + (acc, curr) => acc + DataStreamStat.calculateFilteredSize(curr), + 0 ); + const isEstimatedDataLoading = useSelector( - summaryPanelStateService, - (state) => state.matches('estimatedData.fetching') || state.matches('estimatedData.retrying') - ); - const isEstimatedDataDisabled = useSelector(summaryPanelStateService, (state) => - state.matches('estimatedData.disabled') + service, + (state) => state.matches('datasets.fetching') || state.matches('degradedDocs.fetching') ); return { @@ -80,7 +64,7 @@ const useSummaryPanel = ({ dataStreamStatsClient, toasts }: SummaryPanelContextD isEstimatedDataLoading, estimatedData, - isEstimatedDataDisabled, + isEstimatedDataDisabled: !isSizeStatsAvailable, isDatasetsActivityLoading, datasetsActivity, diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/services/data_streams_stats/data_streams_stats_client.ts b/x-pack/plugins/observability_solution/dataset_quality/public/services/data_streams_stats/data_streams_stats_client.ts index d908c8665c1f4a..37cecebbde589f 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/services/data_streams_stats/data_streams_stats_client.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/public/services/data_streams_stats/data_streams_stats_client.ts @@ -7,12 +7,11 @@ import { HttpStart } from '@kbn/core/public'; import { decodeOrThrow } from '@kbn/io-ts-utils'; -import { Integration } from '../../../common/data_streams_stats/integration'; import { getDataStreamsDegradedDocsStatsResponseRt, getDataStreamsStatsResponseRt, - getDataStreamsEstimatedDataInBytesResponseRt, getIntegrationsResponseRt, + getNonAggregatableDatasetsRt, } from '../../../common/api_types'; import { DEFAULT_DATASET_TYPE } from '../../../common/constants'; import { @@ -22,11 +21,12 @@ import { GetDataStreamsStatsError, GetDataStreamsStatsQuery, GetDataStreamsStatsResponse, - GetDataStreamsEstimatedDataInBytesParams, - GetDataStreamsEstimatedDataInBytesResponse, GetIntegrationsParams, + GetNonAggregatableDataStreamsParams, + GetNonAggregatableDataStreamsResponse, IntegrationsResponse, } from '../../../common/data_streams_stats'; +import { Integration } from '../../../common/data_streams_stats/integration'; import { IDataStreamsStatsClient } from './types'; export class DataStreamsStatsClient implements IDataStreamsStatsClient { @@ -78,31 +78,28 @@ export class DataStreamsStatsClient implements IDataStreamsStatsClient { return degradedDocs; } - public async getDataStreamsEstimatedDataInBytes( - params: GetDataStreamsEstimatedDataInBytesParams - ) { + public async getNonAggregatableDatasets(params: GetNonAggregatableDataStreamsParams) { const response = await this.http - .get( - `/internal/dataset_quality/data_streams/estimated_data`, + .get( + '/internal/dataset_quality/data_streams/non_aggregatable', { - ...params, + query: { + ...params, + type: DEFAULT_DATASET_TYPE, + }, } ) .catch((error) => { - throw new GetDataStreamsStatsError( - `Failed to fetch data streams estimated data in bytes": ${error}` - ); + throw new GetDataStreamsStatsError(`Failed to fetch non aggregatable datasets: ${error}`); }); - const dataStreamsEstimatedDataInBytes = decodeOrThrow( - getDataStreamsEstimatedDataInBytesResponseRt, + const nonAggregatableDatasets = decodeOrThrow( + getNonAggregatableDatasetsRt, (message: string) => - new GetDataStreamsStatsError( - `Failed to decode data streams estimated data in bytes response: ${message}"` - ) + new GetDataStreamsStatsError(`Failed to fetch non aggregatable datasets: ${message}`) )(response); - return dataStreamsEstimatedDataInBytes; + return nonAggregatableDatasets; } public async getIntegrations( diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/services/data_streams_stats/types.ts b/x-pack/plugins/observability_solution/dataset_quality/public/services/data_streams_stats/types.ts index bfd36db4e83752..7e3ee958b40745 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/services/data_streams_stats/types.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/public/services/data_streams_stats/types.ts @@ -11,9 +11,9 @@ import { DataStreamStatServiceResponse, GetDataStreamsDegradedDocsStatsQuery, GetDataStreamsStatsQuery, - GetDataStreamsEstimatedDataInBytesParams, - GetDataStreamsEstimatedDataInBytesResponse, GetIntegrationsParams, + GetNonAggregatableDataStreamsParams, + GetNonAggregatableDataStreamsResponse, IntegrationsResponse, } from '../../../common/data_streams_stats'; @@ -32,8 +32,8 @@ export interface IDataStreamsStatsClient { getDataStreamsDegradedStats( params?: GetDataStreamsDegradedDocsStatsQuery ): Promise; - getDataStreamsEstimatedDataInBytes( - params: GetDataStreamsEstimatedDataInBytesParams - ): Promise; getIntegrations(params: GetIntegrationsParams['query']): Promise; + getNonAggregatableDatasets( + params: GetNonAggregatableDataStreamsParams + ): Promise; } diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/dataset_quality_controller/src/defaults.ts b/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/dataset_quality_controller/src/defaults.ts index da376fa8ca2525..72a7c2ddc24ee7 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/dataset_quality_controller/src/defaults.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/dataset_quality_controller/src/defaults.ts @@ -41,4 +41,6 @@ export const DEFAULT_CONTEXT: DefaultDatasetQualityControllerState = { }, flyout: {}, datasets: [], + isSizeStatsAvailable: true, + nonAggregatableDatasets: [], }; diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/dataset_quality_controller/src/notifications.ts b/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/dataset_quality_controller/src/notifications.ts index 3d88e6645fe479..70da9d3d74e70f 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/dataset_quality_controller/src/notifications.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/dataset_quality_controller/src/notifications.ts @@ -44,6 +44,15 @@ export const fetchDegradedStatsFailedNotifier = (toasts: IToasts, error: Error) }); }; +export const fetchNonAggregatableDatasetsFailedNotifier = (toasts: IToasts, error: Error) => { + toasts.addDanger({ + title: i18n.translate('xpack.datasetQuality.fetchNonAggregatableDatasetsFailed', { + defaultMessage: "We couldn't get non aggregatable datasets information.", + }), + text: error.message, + }); +}; + export const fetchIntegrationDashboardsFailedNotifier = (toasts: IToasts, error: Error) => { toasts.addDanger({ title: i18n.translate('xpack.datasetQuality.fetchIntegrationDashboardsFailed', { diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/dataset_quality_controller/src/state_machine.ts b/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/dataset_quality_controller/src/state_machine.ts index 7d54e268bb5df4..8d8efc3d3c3db3 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/dataset_quality_controller/src/state_machine.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/dataset_quality_controller/src/state_machine.ts @@ -17,6 +17,8 @@ import { DataStreamDetails, GetDataStreamsStatsQuery, GetIntegrationsParams, + GetNonAggregatableDataStreamsParams, + GetNonAggregatableDataStreamsResponse, } from '../../../../common/data_streams_stats'; import { DegradedDocsStat } from '../../../../common/data_streams_stats/malformed_docs_stat'; import { DataStreamType } from '../../../../common/types'; @@ -32,11 +34,13 @@ import { fetchIntegrationDashboardsFailedNotifier, fetchIntegrationsFailedNotifier, noDatasetSelected, + fetchNonAggregatableDatasetsFailedNotifier, } from './notifications'; import { DatasetQualityControllerContext, DatasetQualityControllerEvent, DatasetQualityControllerTypeState, + DefaultDatasetQualityControllerState, FlyoutDataset, } from './types'; @@ -173,12 +177,69 @@ export const createPureDatasetQualityControllerStateMachine = ( }, }, }, + nonAggregatableDatasets: { + initial: 'fetching', + states: { + fetching: { + invoke: { + src: 'loadNonAggregatableDatasets', + onDone: { + target: 'loaded', + actions: ['storeNonAggregatableDatasets'], + }, + onError: { + target: 'loaded', + actions: ['notifyFetchNonAggregatableDatasetsFailed'], + }, + }, + }, + loaded: {}, + }, + on: { + UPDATE_TIME_RANGE: { + target: 'nonAggregatableDatasets.fetching', + }, + REFRESH_DATA: { + target: 'nonAggregatableDatasets.fetching', + }, + }, + }, flyout: { initial: 'closed', states: { initializing: { type: 'parallel', states: { + nonAggregatableDataset: { + initial: 'fetching', + states: { + fetching: { + invoke: { + src: 'loadDatasetIsNonAggregatable', + onDone: { + target: 'done', + actions: ['storeDatasetIsNonAggregatable'], + }, + onError: { + target: 'done', + actions: ['notifyFetchNonAggregatableDatasetsFailed'], + }, + }, + }, + done: { + on: { + UPDATE_INSIGHTS_TIME_RANGE: { + target: 'fetching', + actions: ['storeFlyoutOptions'], + }, + SELECT_DATASET: { + target: 'fetching', + actions: ['storeFlyoutOptions'], + }, + }, + }, + }, + }, dataStreamSettings: { initial: 'fetching', states: { @@ -389,11 +450,18 @@ export const createPureDatasetQualityControllerStateMachine = ( }), resetFlyoutOptions: assign((_context, _event) => ({ flyout: undefined })), storeDataStreamStats: assign((_context, event) => { - return 'data' in event - ? { - dataStreamStats: event.data as DataStreamStat[], - } - : {}; + if ('data' in event) { + const dataStreamStats = event.data as DataStreamStat[]; + + // Check if any DataStreamStat has null; to check for serverless + const isSizeStatsAvailable = dataStreamStats.some((stat) => stat.totalDocs !== null); + + return { + dataStreamStats, + isSizeStatsAvailable, + }; + } + return {}; }), storeDegradedDocStats: assign((_context, event) => { return 'data' in event @@ -402,6 +470,18 @@ export const createPureDatasetQualityControllerStateMachine = ( } : {}; }), + storeNonAggregatableDatasets: assign( + ( + _context: DefaultDatasetQualityControllerState, + event: DoneInvokeEvent + ) => { + return 'data' in event + ? { + nonAggregatableDatasets: event.data.datasets, + } + : {}; + } + ), storeDataStreamSettings: assign((context, event) => { return 'data' in event ? { @@ -422,6 +502,21 @@ export const createPureDatasetQualityControllerStateMachine = ( } : {}; }), + storeDatasetIsNonAggregatable: assign( + ( + context: DefaultDatasetQualityControllerState, + event: DoneInvokeEvent + ) => { + return 'data' in event + ? { + flyout: { + ...context.flyout, + isNonAggregatable: !event.data.aggregatable, + }, + } + : {}; + } + ), storeIntegrations: assign((_context, event) => { return 'data' in event ? { @@ -484,6 +579,8 @@ export const createDatasetQualityControllerStateMachine = ({ fetchDatasetStatsFailedNotifier(toasts, event.data), notifyFetchDegradedStatsFailed: (_context, event: DoneInvokeEvent) => fetchDegradedStatsFailedNotifier(toasts, event.data), + notifyFetchNonAggregatableDatasetsFailed: (_context, event: DoneInvokeEvent) => + fetchNonAggregatableDatasetsFailedNotifier(toasts, event.data), notifyFetchDatasetSettingsFailed: (_context, event: DoneInvokeEvent) => fetchDatasetSettingsFailedNotifier(toasts, event.data), notifyFetchDatasetDetailsFailed: (_context, event: DoneInvokeEvent) => @@ -514,6 +611,15 @@ export const createDatasetQualityControllerStateMachine = ({ type: context.type as GetIntegrationsParams['query']['type'], }); }, + loadNonAggregatableDatasets: (context) => { + const { startDate: start, endDate: end } = getDateISORange(context.filters.timeRange); + + return dataStreamStatsClient.getNonAggregatableDatasets({ + type: context.type as GetNonAggregatableDataStreamsParams['type'], + start, + end, + }); + }, loadDataStreamSettings: (context) => { if (!context.flyout.dataset) { fetchDatasetSettingsFailedNotifier(toasts, new Error(noDatasetSelected)); @@ -566,6 +672,29 @@ export const createDatasetQualityControllerStateMachine = ({ ? dataStreamDetailsClient.getIntegrationDashboards({ integration: integration.name }) : Promise.resolve({}); }, + loadDatasetIsNonAggregatable: async (context) => { + if (!context.flyout.dataset || !context.flyout.insightsTimeRange) { + fetchDatasetDetailsFailedNotifier(toasts, new Error(noDatasetSelected)); + + return Promise.resolve({}); + } + + const { type, name: dataset, namespace } = context.flyout.dataset; + const { startDate: start, endDate: end } = getDateISORange( + context.flyout.insightsTimeRange + ); + + return dataStreamStatsClient.getNonAggregatableDatasets({ + type: context.type as GetNonAggregatableDataStreamsParams['type'], + start, + end, + dataStream: dataStreamPartsToIndexName({ + type: type as DataStreamType, + dataset, + namespace, + }), + }); + }, }, }); diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/dataset_quality_controller/src/types.ts b/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/dataset_quality_controller/src/types.ts index 10c08f8fa0bfcf..538ad16f3f977b 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/dataset_quality_controller/src/types.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/dataset_quality_controller/src/types.ts @@ -20,6 +20,7 @@ import { IntegrationsResponse, DataStreamStat, DataStreamStatType, + GetNonAggregatableDataStreamsResponse, } from '../../../../common/data_streams_stats'; export type FlyoutDataset = Omit< @@ -61,6 +62,7 @@ export interface WithFlyoutOptions { datasetDetails?: DataStreamDetails; insightsTimeRange?: TimeRangeConfig; breakdownField?: string; + isNonAggregatable?: boolean; }; } @@ -76,8 +78,13 @@ export interface WithDegradedDocs { degradedDocStats: DegradedDocsStat[]; } +export interface WithNonAggregatableDatasets { + nonAggregatableDatasets: string[]; +} + export interface WithDatasets { datasets: DataStreamStat[]; + isSizeStatsAvailable: boolean; } export interface WithIntegrations { @@ -90,6 +97,7 @@ export type DefaultDatasetQualityControllerState = { type: string } & WithTableO WithFlyoutOptions & WithDatasets & WithFilters & + WithNonAggregatableDatasets & Partial; type DefaultDatasetQualityStateContext = DefaultDatasetQualityControllerState & @@ -120,6 +128,10 @@ export type DatasetQualityControllerTypeState = value: 'integrations.fetching'; context: DefaultDatasetQualityStateContext; } + | { + value: 'nonAggregatableDatasets.fetching'; + context: DefaultDatasetQualityStateContext; + } | { value: 'flyout.initializing.dataStreamSettings.fetching'; context: DefaultDatasetQualityStateContext; @@ -189,6 +201,7 @@ export type DatasetQualityControllerEvent = query: string; } | DoneInvokeEvent + | DoneInvokeEvent | DoneInvokeEvent | DoneInvokeEvent | DoneInvokeEvent diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/src/defaults.ts b/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/src/defaults.ts deleted file mode 100644 index be67409c3dab16..00000000000000 --- a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/src/defaults.ts +++ /dev/null @@ -1,20 +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 { DefaultDatasetsSummaryPanelContext } from './types'; - -export const MAX_RETRIES = 1; -export const RETRY_DELAY_IN_MS = 5000; - -export const defaultContext: DefaultDatasetsSummaryPanelContext = { - estimatedData: { - estimatedDataInBytes: 0, - }, - retries: { - estimatedDataRetries: 0, - }, -}; diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/src/notifications.ts b/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/src/notifications.ts deleted file mode 100644 index 6b6e48ecdc785a..00000000000000 --- a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/src/notifications.ts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { IToasts } from '@kbn/core/public'; -import { i18n } from '@kbn/i18n'; - -export const fetchDatasetsEstimatedDataFailedNotifier = (toasts: IToasts, error: Error) => { - toasts.addDanger({ - title: i18n.translate('xpack.datasetQuality.fetchDatasetsEstimatedDataFailed', { - defaultMessage: "We couldn't get your datasets estimated data. Default values are shown.", - }), - text: error.message, - }); -}; diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/src/state_machine.ts b/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/src/state_machine.ts deleted file mode 100644 index 60d038549a8e10..00000000000000 --- a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/src/state_machine.ts +++ /dev/null @@ -1,148 +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 { IToasts } from '@kbn/core/public'; -import { getDateISORange } from '@kbn/timerange'; -import { assign, createMachine, DoneInvokeEvent, InterpreterFrom } from 'xstate'; -import { DEFAULT_TIME_RANGE } from '../../../../common/constants'; -import { IDataStreamsStatsClient } from '../../../services/data_streams_stats'; -import { defaultContext, MAX_RETRIES, RETRY_DELAY_IN_MS } from './defaults'; -import { fetchDatasetsEstimatedDataFailedNotifier } from './notifications'; -import { - DatasetsSummaryPanelContext, - DatasetsSummaryPanelState, - DatasetSummaryPanelEvent, - DefaultDatasetsSummaryPanelContext, - EstimatedDataDetails, - Retries, -} from './types'; - -export const createPureDatasetsSummaryPanelStateMachine = ( - initialContext: DatasetsSummaryPanelContext -) => - /** @xstate-layout N4IgpgJg5mDOIC5QGUCuBbdBDATgTwAUsA7MAGwDoIsAXLWMG2ARVSzIEsa8KAzRgMYALDsSgBiCAHtSFUQDcpAazAU0mXIRLkqteoxZtO3PoJFiECqQNocZAbQAMAXSfPEoAA5TYXO8Q8QAA9EABZQgCYKAHYAVgBmADZQ6IAOUNjQgE5YgEZYgBoQPEQAWlTcilyUx1q6lNSI0IBfZqL1bHwiUkpqOgYmVnYuHn4aYVEJMBwcKRwKTzJaXjn0NQxOrR7dfoMh41GzSctiRRsafzc3QO9fC5lAkIRI1IoK3IrE1LzonMSikoICJZChZL5NUKOTJfZJZFptEAdTTdHR9fSDIwjUzjcxTGZzBZLGgrHBrJFdbS9PQDQzDExjCYWKznS4uey5dxIEC3PwPLlPSKxCjAxJNRzxVKJLJw1IAxAfUIxdK5XLRaK5Rzg2KpVrtDbIyk7dGwACCAgu8ixDNxkhkqisKnWGgp2zRNLNFqtRyZp2stgcbJcNx8vIC-LCsSi2u+EVyEXiWUc0SlhWKiATlWqwNjwNSqSy8VisV1iP1LtR1IMHo4lvp3rxs3mi2WqydmxRVN2TGrtcOOOOzP9xCuQa5PPuYdAAviitCqWi4oSsUThdCcueWUqsca0ay0Xi+9CiRL5K2Fa7pvNNa9-bE4mmjcJLdJbYNrsr3avvexjKgJzOQ5XBywZ3P4jxhDOFBzguhaFiumTrokCRKtUjhgrk0qNNEJ5lmelBwBc2A0JAAAieg-ja0iyA6qinh2FAERwRGkeR1oDr6LIBq4o5eCGE7gc8hYULE0SRAejh5jkcLrpKiQUIk8QSbkimOLkSHxLkOHOnhDGwIRtAsXQFGTPe+JNkSJJkrh9GMcxEBkUZbE+gBE4jpyvGgXyU5hEm8kSvm8SKTBXzrlk+ZVKJEpgpKmTAlp7aGrZBn2ax9amY+zbEq2dGJXpTHJQ5WDGc5fquWywFjnxYHhs8jiKnG8QRKkdXpPGM7riqdWghh4SSrUcQZK0CLEFIEBwIEOU9CBoYCQuMQJI4EQRNEESxOKkTROupSrUKvxNcCjVQgWXzxW+57GvsIzTfxNVxlEFQ-JqMLigpW1qa8R7SotETfeqKSneWnYXZida3lA13Vd5CCqo4bz5DDiTPUk8TrnkwlFsuiYLgWinpADOlunsIM8DgjD4JMENecEiCI7DSFhdqSTLYkSYdQeFCBb8qpZE1PORvCerafRhMYnSPBkFIWBjRAlOTtTCBpJmy0ibG8MY4hsNQtkR5QvkB348LH6Xp63CywJKogtqLNLZkjSJpK66KfEcPShESGQk0arHgik3ne6X43r+Zu3Yk0TCX1NtzsCEn-GmG5yd8cbqhJc5wd7gsJe+F49lipM0OTYjB1DofO3kGluy8GShCjcfLnJyS2wu8aM1kBuGiLxvXiYEtS5ARfy2kiqFqHPM5NU+6x4Ca1CoWmqxizi0Hq3PvWbl+nESldD908KqvHEilLSta0zst65qiCQWJmFvxFqtbfbElG+FcV4OVZ5cs74j80H8tq3rafcc9xCjnIjJCzNGqBXvjoR+hkip5wLq-DyM0aorRBC9cIa1q7JmUh1I63V3r5Fkn9KB+E8p2Wfj3aW29EB2zhitZMjUmiBVlIA-cbxQhxm1GhcIqoIhDWaEAA */ - createMachine( - { - context: initialContext, - predictableActionArguments: true, - id: 'DatasetsQualitySummaryPanel', - type: 'parallel', - states: { - estimatedData: { - initial: 'fetching', - states: { - fetching: { - invoke: { - src: 'loadEstimatedData', - onDone: [ - { - target: 'disabled', - cond: { - type: 'estimatedDataIsDisabled', - }, - }, - { - target: 'loaded', - actions: ['storeEstimatedData'], - }, - ], - onError: [ - { - target: 'retrying', - cond: { - type: 'canRetry', - counter: 'estimatedDataRetries', - }, - actions: ['incrementEstimatedDataRetries'], - }, - { - target: 'loaded', - actions: ['notifyFetchEstimatedDataFailed'], - }, - ], - }, - }, - retrying: { - after: { - [RETRY_DELAY_IN_MS]: 'fetching', - }, - }, - loaded: { - type: 'final', - }, - disabled: { - type: 'final', - }, - }, - }, - }, - }, - { - actions: { - storeEstimatedData: assign((_context, event) => - 'data' in event - ? { - estimatedData: event.data as EstimatedDataDetails, - } - : {} - ), - incrementEstimatedDataRetries: assign(({ retries }, _event) => ({ - retries: { ...retries, estimatedDataRetries: retries.estimatedDataRetries + 1 }, - })), - }, - guards: { - canRetry: (context, event, { cond }) => { - if ('counter' in cond && cond.counter in context.retries) { - const retriesKey = cond.counter as keyof Retries; - return context.retries[retriesKey] < MAX_RETRIES; - } - return false; - }, - estimatedDataIsDisabled: (context, event) => { - return 'estimatedDataInBytes' in event.data && event.data.estimatedDataInBytes === null; - }, - }, - } - ); - -export interface DatasetsSummaryPanelStateMachineDependencies { - initialContext?: DefaultDatasetsSummaryPanelContext; - toasts: IToasts; - dataStreamStatsClient: IDataStreamsStatsClient; -} - -export const createDatasetsSummaryPanelStateMachine = ({ - initialContext = defaultContext, - toasts, - dataStreamStatsClient, -}: DatasetsSummaryPanelStateMachineDependencies) => - createPureDatasetsSummaryPanelStateMachine(initialContext).withConfig({ - actions: { - notifyFetchEstimatedDataFailed: (_context, event: DoneInvokeEvent) => - fetchDatasetsEstimatedDataFailedNotifier(toasts, event.data), - }, - services: { - loadEstimatedData: async (_context) => { - const { startDate, endDate } = getDateISORange(DEFAULT_TIME_RANGE); - return dataStreamStatsClient.getDataStreamsEstimatedDataInBytes({ - query: { - type: 'logs', - start: startDate, - end: endDate, - }, - }); - }, - }, - }); - -export type DatasetsSummaryPanelStateService = InterpreterFrom< - typeof createDatasetsSummaryPanelStateMachine ->; - -export type DatasetsSummaryPanelStateMachine = ReturnType< - typeof createDatasetsSummaryPanelStateMachine ->; diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/src/types.ts b/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/src/types.ts deleted file mode 100644 index 3e8b4c7ef99191..00000000000000 --- a/x-pack/plugins/observability_solution/dataset_quality/public/state_machines/summary_panel/src/types.ts +++ /dev/null @@ -1,52 +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 { DoneInvokeEvent } from 'xstate'; -import { GetDataStreamsEstimatedDataInBytesResponse } from '../../../../common/data_streams_stats'; - -export interface Retries { - estimatedDataRetries: number; -} - -export interface EstimatedDataDetails { - estimatedDataInBytes: number; -} - -export interface WithEstimatedData { - estimatedData: EstimatedDataDetails; -} - -export interface WithRetries { - retries: Retries; -} - -export type DefaultDatasetsSummaryPanelContext = WithEstimatedData & WithRetries; - -export type DatasetsSummaryPanelState = - | { - value: 'estimatedData.fetching'; - context: DefaultDatasetsSummaryPanelContext; - } - | { - value: 'estimatedData.loaded'; - context: DefaultDatasetsSummaryPanelContext; - } - | { - value: 'estimatedData.retrying'; - context: DefaultDatasetsSummaryPanelContext; - } - | { - value: 'estimatedData.disabled'; - context: DefaultDatasetsSummaryPanelContext; - }; - -export type DatasetSummaryPanelEvent = - | DoneInvokeEvent - | DoneInvokeEvent - | DoneInvokeEvent; - -export type DatasetsSummaryPanelContext = DatasetsSummaryPanelState['context']; diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/utils/generate_datasets.test.ts b/x-pack/plugins/observability_solution/dataset_quality/public/utils/generate_datasets.test.ts index 9b9a007f0c54ba..34f3812fd8e37a 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/utils/generate_datasets.test.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/public/utils/generate_datasets.test.ts @@ -55,12 +55,14 @@ describe('generateDatasets', () => { dataset: 'logs-system.application-default', percentage: 0, count: 0, + docsCount: 0, quality: 'good' as const, }, { dataset: 'logs-synth-default', percentage: 11.320754716981131, count: 6, + docsCount: 0, quality: 'poor' as const, }, ]; @@ -81,6 +83,7 @@ describe('generateDatasets', () => { degradedDocs: { percentage: degradedDocs[0].percentage, count: degradedDocs[0].count, + docsCount: degradedDocs[0].docsCount, quality: degradedDocs[0].quality, }, }, @@ -94,6 +97,7 @@ describe('generateDatasets', () => { degradedDocs: { count: 0, percentage: 0, + docsCount: 0, quality: 'good', }, }, @@ -118,6 +122,7 @@ describe('generateDatasets', () => { degradedDocs: { percentage: degradedDocs[0].percentage, count: degradedDocs[0].count, + docsCount: degradedDocs[0].docsCount, quality: degradedDocs[0].quality, }, }, @@ -134,6 +139,7 @@ describe('generateDatasets', () => { degradedDocs: { percentage: degradedDocs[1].percentage, count: degradedDocs[1].count, + docsCount: degradedDocs[1].docsCount, quality: degradedDocs[1].quality, }, }, @@ -156,6 +162,7 @@ describe('generateDatasets', () => { degradedDocs: { percentage: degradedDocs[0].percentage, count: degradedDocs[0].count, + docsCount: degradedDocs[0].docsCount, quality: degradedDocs[0].quality, }, }, @@ -169,6 +176,7 @@ describe('generateDatasets', () => { degradedDocs: { percentage: degradedDocs[1].percentage, count: degradedDocs[1].count, + docsCount: degradedDocs[1].docsCount, quality: degradedDocs[1].quality, }, }, @@ -200,6 +208,7 @@ describe('generateDatasets', () => { degradedDocs: { count: 0, percentage: 0, + docsCount: 0, quality: 'good', }, }, diff --git a/x-pack/plugins/observability_solution/dataset_quality/public/utils/generate_datasets.ts b/x-pack/plugins/observability_solution/dataset_quality/public/utils/generate_datasets.ts index e2f85d8846c992..ca6dc793d35e5c 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/public/utils/generate_datasets.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/public/utils/generate_datasets.ts @@ -59,14 +59,16 @@ export function generateDatasets( { percentage: DegradedDocsStat['percentage']; count: DegradedDocsStat['count']; + docsCount: DegradedDocsStat['docsCount']; quality: DegradedDocsStat['quality']; } > = degradedDocStats.reduce( - (degradedMapAcc, { dataset, percentage, count, quality }) => + (degradedMapAcc, { dataset, percentage, count, docsCount, quality }) => Object.assign(degradedMapAcc, { [dataset]: { percentage, count, + docsCount, quality: mapPercentageToQuality(percentage), }, }), diff --git a/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_data_streams_stats/get_data_streams_stats.test.ts b/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_data_streams_stats/get_data_streams_stats.test.ts index a0104afc1d5fe5..a3f530a943d4f6 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_data_streams_stats/get_data_streams_stats.test.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_data_streams_stats/get_data_streams_stats.test.ts @@ -55,6 +55,22 @@ jest.mock('../../../services/data_stream', () => { }, }; }); +jest.mock('../../../services/index_stats', () => { + return { + indexStatsService: { + getIndicesDocCounts: jest.fn().mockImplementation(() => { + return { + docsCountPerDataStream: { + 'logs-elastic_agent-default': 100, + 'logs-elastic_agent.filebeat-default': 200, + 'logs-elastic_agent.fleet_server-default': 0, + 'logs-elastic_agent.metricbeat-default': 245, + }, + }; + }), + }, + }; +}); describe('getDataStreams', () => { it('Passes the correct parameters to the DataStreamService', async () => { @@ -81,30 +97,35 @@ describe('getDataStreams', () => { size: '1gb', sizeBytes: 1170805528, lastActivity: 1698916071000, + totalDocs: 100, }, { name: 'logs-elastic_agent.filebeat-default', size: '1.3mb', sizeBytes: 1459100, lastActivity: 1698902209996, + totalDocs: 200, }, { name: 'logs-elastic_agent.fleet_server-default', size: '2.9mb', sizeBytes: 3052148, lastActivity: 1698914110010, + totalDocs: 0, }, { name: 'logs-elastic_agent.metricbeat-default', size: '1.6mb', sizeBytes: 1704807, lastActivity: 1698672046707, + totalDocs: 245, }, { name: 'logs-test.test-default', size: '6.2mb', sizeBytes: 6570447, lastActivity: 1698913802000, + totalDocs: 0, }, ]); }); diff --git a/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_data_streams_stats/index.ts b/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_data_streams_stats/index.ts index 508f109f0c5288..bb49b244c628ff 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_data_streams_stats/index.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_data_streams_stats/index.ts @@ -8,25 +8,42 @@ import type { ElasticsearchClient } from '@kbn/core/server'; import { DataStreamType } from '../../../../common/types'; import { dataStreamService } from '../../../services'; +import { indexStatsService } from '../../../services'; -export async function getDataStreamsStats(options: { +export async function getDataStreamsStats({ + esClient, + type, + datasetQuery, + sizeStatsAvailable = true, +}: { esClient: ElasticsearchClient; type?: DataStreamType; datasetQuery?: string; + sizeStatsAvailable?: boolean; // Only Needed to determine whether `_stats` endpoint is available https://github.com/elastic/kibana/issues/178954 }) { - const { esClient, type, datasetQuery } = options; - - const matchingDataStreamsStats = await dataStreamService.getMatchingDataStreamsStats(esClient, { + const matchingDataStreamsStats = dataStreamService.getMatchingDataStreamsStats(esClient, { type: type ?? '*', dataset: datasetQuery ? `*${datasetQuery}*` : '*', }); - const mappedDataStreams = matchingDataStreamsStats.map((dataStream) => { + const indicesDocsCount = sizeStatsAvailable + ? indexStatsService.getIndicesDocCounts(esClient, type ?? '*') + : Promise.resolve(null); + + const [indicesDocsCountStats, dataStreamsStats] = await Promise.all([ + indicesDocsCount, + matchingDataStreamsStats, + ]); + + const mappedDataStreams = dataStreamsStats.map((dataStream) => { return { name: dataStream.data_stream, size: dataStream.store_size?.toString(), sizeBytes: dataStream.store_size_bytes, lastActivity: dataStream.maximum_timestamp, + totalDocs: sizeStatsAvailable + ? indicesDocsCountStats!.docsCountPerDataStream[dataStream.data_stream] || 0 + : null, }; }); diff --git a/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_degraded_docs.ts b/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_degraded_docs.ts index 246d572ec8036c..bba1f1dce3ec5a 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_degraded_docs.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_degraded_docs.ts @@ -31,9 +31,9 @@ export async function getDegradedDocsPaginated(options: { datasetQuery?: string; after?: { degradedDocs?: { dataset: string; namespace: string }; - totalDocs?: { dataset: string; namespace: string }; + docsCount?: { dataset: string; namespace: string }; }; - prevResults?: { degradedDocs: ResultBucket[]; totalDocs: ResultBucket[] }; + prevResults?: { degradedDocs: ResultBucket[]; docsCount: ResultBucket[] }; }): Promise { const { esClient, @@ -42,7 +42,7 @@ export async function getDegradedDocsPaginated(options: { start, end, after, - prevResults = { degradedDocs: [], totalDocs: [] }, + prevResults = { degradedDocs: [], docsCount: [] }, } = options; const datasetQualityESClient = createDatasetQualityESClient(esClient); @@ -96,7 +96,7 @@ export async function getDegradedDocsPaginated(options: { filter: otherFilters, }, }, - aggs: aggs(after?.totalDocs), + aggs: aggs(after?.docsCount), }, ]); @@ -114,7 +114,7 @@ export async function getDegradedDocsPaginated(options: { count: bucket.doc_count, })) ?? []; - const totalDocs = [...prevResults.totalDocs, ...currTotalDocs]; + const docsCount = [...prevResults.docsCount, ...currTotalDocs]; if ( response.responses[0].aggregations?.datasets.after_key || @@ -132,13 +132,13 @@ export async function getDegradedDocsPaginated(options: { dataset: string; namespace: string; }) || after?.degradedDocs, - totalDocs: + docsCount: (response.responses[1].aggregations?.datasets.after_key as { dataset: string; namespace: string; - }) || after?.totalDocs, + }) || after?.docsCount, }, - prevResults: { degradedDocs, totalDocs }, + prevResults: { degradedDocs, docsCount }, }); } @@ -150,12 +150,12 @@ export async function getDegradedDocsPaginated(options: { {} ); - return totalDocs.map((curr) => { + return docsCount.map((curr) => { const degradedDocsCount = degradedDocsMap[curr.dataset as keyof typeof degradedDocsMap] || 0; return { ...curr, - totalDocs: curr.count, + docsCount: curr.count, count: degradedDocsCount, percentage: (degradedDocsCount / curr.count) * 100, }; diff --git a/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_estimated_data_in_bytes/index.ts b/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_estimated_data_in_bytes/index.ts deleted file mode 100644 index faf10417c68503..00000000000000 --- a/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_estimated_data_in_bytes/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import type { ElasticsearchClient } from '@kbn/core/server'; -import { DEFAULT_DATASET_TYPE } from '../../../../common/constants'; -import { DataStreamType } from '../../../../common/types'; -import { indexStatsService } from '../../../services'; - -export async function getEstimatedDataInBytes(args: { - esClient: ElasticsearchClient; - type?: DataStreamType; - start: number; - end: number; -}) { - const { esClient, type = DEFAULT_DATASET_TYPE, start, end } = args; - - const [{ doc_count: docCount, size_in_bytes: docSize }, indexDocCountInTimeRange] = - await Promise.all([ - indexStatsService.getIndexStats(esClient, type), - indexStatsService.getIndexDocCount(esClient, type, start, end), - ]); - - if (!docCount) return 0; - - const avgDocSize = docSize / docCount; - const estimatedDataInBytes = Math.round(indexDocCountInTimeRange * avgDocSize); - - return estimatedDataInBytes; -} diff --git a/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_non_aggregatable_data_streams.ts b/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_non_aggregatable_data_streams.ts new file mode 100644 index 00000000000000..a776bed1fbdde0 --- /dev/null +++ b/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/get_non_aggregatable_data_streams.ts @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ElasticsearchClient } from '@kbn/core-elasticsearch-server'; +import { rangeQuery } from '@kbn/observability-plugin/server/utils/queries'; +import { extractIndexNameFromBackingIndex } from '../../../common/utils'; +import { DEFAULT_DATASET_TYPE } from '../../../common/constants'; +import { _IGNORED } from '../../../common/es_fields'; +import { DataStreamType } from '../../../common/types'; +import { createDatasetQualityESClient } from '../../utils'; + +export async function getNonAggregatableDataStreams({ + esClient, + type = DEFAULT_DATASET_TYPE, + start, + end, + dataStream, +}: { + esClient: ElasticsearchClient; + type?: DataStreamType; + start: number; + end: number; + dataStream?: string; +}) { + const datasetQualityESClient = createDatasetQualityESClient(esClient); + + const response = await datasetQualityESClient.fieldCaps({ + index: dataStream ?? `${type}-*`, + fields: [_IGNORED], + index_filter: { + ...rangeQuery(start, end)[0], + }, + }); + + const ignoredField = response.fields._ignored?._ignored; + + const nonAggregatableIndices = ignoredField?.non_aggregatable_indices ?? []; + + const nonAggregatableDatasets = new Set( + (Array.isArray(nonAggregatableIndices) ? nonAggregatableIndices : [nonAggregatableIndices]).map( + extractIndexNameFromBackingIndex + ) + ); + + return { + aggregatable: ignoredField?.aggregatable ?? true, + datasets: Array.from(nonAggregatableDatasets), + }; +} diff --git a/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/routes.ts b/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/routes.ts index 3ad5a103f43138..b4a757330647eb 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/routes.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/server/routes/data_streams/routes.ts @@ -9,10 +9,10 @@ import * as t from 'io-ts'; import { keyBy, merge, values } from 'lodash'; import { DataStreamDetails, - DataStreamsEstimatedDataInBytes, DataStreamSettings, DataStreamStat, DegradedDocs, + NonAggregatableDatasets, } from '../../../common/api_types'; import { indexNameToDataStreamParts } from '../../../common/utils'; import { rangeRt, typeRt } from '../../types/default_api_types'; @@ -21,7 +21,7 @@ import { getDataStreamDetails, getDataStreamSettings } from './get_data_stream_d import { getDataStreams } from './get_data_streams'; import { getDataStreamsStats } from './get_data_streams_stats'; import { getDegradedDocsPaginated } from './get_degraded_docs'; -import { getEstimatedDataInBytes } from './get_estimated_data_in_bytes'; +import { getNonAggregatableDataStreams } from './get_non_aggregatable_data_streams'; const statsRoute = createDatasetQualityServerRoute({ endpoint: 'GET /internal/dataset_quality/data_streams/stats', @@ -39,8 +39,9 @@ const statsRoute = createDatasetQualityServerRoute({ async handler(resources): Promise<{ dataStreamsStats: DataStreamStat[]; }> { - const { context, params } = resources; + const { context, params, getEsCapabilities } = resources; const coreContext = await context.core; + const sizeStatsAvailable = !(await getEsCapabilities()).serverless; // Query datastreams as the current user as the Kibana internal user may not have all the required permissions const esClient = coreContext.elasticsearch.client.asCurrentUser; @@ -51,7 +52,7 @@ const statsRoute = createDatasetQualityServerRoute({ ...params.query, uncategorisedOnly: false, }), - getDataStreamsStats({ esClient, ...params.query }), + getDataStreamsStats({ esClient, sizeStatsAvailable, ...params.query }), ]); return { @@ -95,6 +96,33 @@ const degradedDocsRoute = createDatasetQualityServerRoute({ }, }); +const nonAggregatableDatasetsRoute = createDatasetQualityServerRoute({ + endpoint: 'GET /internal/dataset_quality/data_streams/non_aggregatable', + params: t.type({ + query: t.intersection([ + rangeRt, + typeRt, + t.partial({ + dataStream: t.string, + }), + ]), + }), + options: { + tags: [], + }, + async handler(resources): Promise { + const { context, params } = resources; + const coreContext = await context.core; + + const esClient = coreContext.elasticsearch.client.asCurrentUser; + + return await getNonAggregatableDataStreams({ + esClient, + ...params.query, + }); + }, +}); + const dataStreamSettingsRoute = createDatasetQualityServerRoute({ endpoint: 'GET /internal/dataset_quality/data_streams/{dataStream}/settings', params: t.type({ @@ -150,6 +178,7 @@ const dataStreamDetailsRoute = createDatasetQualityServerRoute({ esClient, type, datasetQuery: `${dataset}-${namespace}`, + sizeStatsAvailable, }), getDataStreamDetails({ esClient, dataStream, start, end, sizeStatsAvailable }), ]); @@ -165,42 +194,10 @@ const dataStreamDetailsRoute = createDatasetQualityServerRoute({ }, }); -const estimatedDataInBytesRoute = createDatasetQualityServerRoute({ - endpoint: 'GET /internal/dataset_quality/data_streams/estimated_data', - params: t.type({ - query: t.intersection([typeRt, rangeRt]), - }), - options: { - tags: [], - }, - async handler(resources): Promise { - const { context, params, getEsCapabilities } = resources; - const coreContext = await context.core; - - const esClient = coreContext.elasticsearch.client.asCurrentUser; - const isServerless = (await getEsCapabilities()).serverless; - - if (isServerless) { - return { - estimatedDataInBytes: null, - }; - } - - const estimatedDataInBytes = await getEstimatedDataInBytes({ - esClient, - ...params.query, - }); - - return { - estimatedDataInBytes, - }; - }, -}); - export const dataStreamsRouteRepository = { ...statsRoute, ...degradedDocsRoute, + ...nonAggregatableDatasetsRoute, ...dataStreamDetailsRoute, ...dataStreamSettingsRoute, - ...estimatedDataInBytesRoute, }; diff --git a/x-pack/plugins/observability_solution/dataset_quality/server/services/index_stats.ts b/x-pack/plugins/observability_solution/dataset_quality/server/services/index_stats.ts index c3288a893ef0e1..78db557e5f68ea 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/server/services/index_stats.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/server/services/index_stats.ts @@ -5,55 +5,39 @@ * 2.0. */ +import { chain, sumBy } from 'lodash'; import type { ElasticsearchClient } from '@kbn/core/server'; -import { rangeQuery } from '@kbn/observability-plugin/server'; -import { DataStreamType } from '../../common/types'; +import { extractIndexNameFromBackingIndex } from '../../common/utils'; + +interface IndexStatsResponse { + docsCountPerDataStream: { [indexName: string]: number }; +} class IndexStatsService { - public async getIndexStats( + public async getIndicesDocCounts( esClient: ElasticsearchClient, - type: DataStreamType - ): Promise<{ - doc_count: number; - size_in_bytes: number; - }> { + type: string + ): Promise { try { const index = `${type}-*-*`; - const indexStats = await esClient.indices.stats({ index }); - return { - doc_count: indexStats._all.total?.docs ? indexStats._all.total?.docs?.count : 0, - size_in_bytes: indexStats._all.total?.store - ? indexStats._all.total?.store.size_in_bytes - : 0, - }; - } catch (e) { - if (e.statusCode === 404) { - return { doc_count: 0, size_in_bytes: 0 }; - } - throw e; - } - } - - public async getIndexDocCount( - esClient: ElasticsearchClient, - type: DataStreamType, - start: number, - end: number - ): Promise { - try { - const index = `${type}-*-*`; + const { indices } = await esClient.indices.stats({ index, metric: ['docs'] }); - const query = rangeQuery(start, end)[0]; - const docCount = await esClient.count({ - index, - query, - }); + const docsCountPerDataStream = chain(indices || {}) + .map((indexStats, indexName) => ({ + indexName, + totalDocs: indexStats.total?.docs ? indexStats.total?.docs?.count : 0, + })) + .groupBy((object) => extractIndexNameFromBackingIndex(object.indexName)) + .mapValues((group) => sumBy(group, 'totalDocs')) + .value(); - return docCount.count; + return { + docsCountPerDataStream, + }; } catch (e) { if (e.statusCode === 404) { - return 0; + return { docsCountPerDataStream: {} }; } throw e; } diff --git a/x-pack/plugins/observability_solution/dataset_quality/server/utils/create_dataset_quality_es_client.ts b/x-pack/plugins/observability_solution/dataset_quality/server/utils/create_dataset_quality_es_client.ts index d2c95ebbf0dbf3..414c313ee373c1 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/server/utils/create_dataset_quality_es_client.ts +++ b/x-pack/plugins/observability_solution/dataset_quality/server/utils/create_dataset_quality_es_client.ts @@ -7,7 +7,7 @@ import { ESSearchRequest, InferSearchResponseOf } from '@kbn/es-types'; import { ElasticsearchClient } from '@kbn/core/server'; -import { Indices } from '@elastic/elasticsearch/lib/api/types'; +import { FieldCapsRequest, FieldCapsResponse, Indices } from '@elastic/elasticsearch/lib/api/types'; type DatasetQualityESSearchParams = ESSearchRequest & { size: number; @@ -32,5 +32,8 @@ export function createDatasetQualityESClient(esClient: ElasticsearchClient) { searches: searches.map((search) => [index, search]).flat(), }) as Promise; }, + async fieldCaps(params: FieldCapsRequest): Promise { + return esClient.fieldCaps(params) as Promise; + }, }; } diff --git a/x-pack/plugins/observability_solution/dataset_quality/tsconfig.json b/x-pack/plugins/observability_solution/dataset_quality/tsconfig.json index 58b8cfaf987e28..843b7963ffb0c7 100644 --- a/x-pack/plugins/observability_solution/dataset_quality/tsconfig.json +++ b/x-pack/plugins/observability_solution/dataset_quality/tsconfig.json @@ -25,7 +25,6 @@ "@kbn/xstate-utils", "@kbn/shared-ux-utility", "@kbn/ui-theme", - "@kbn/core-notifications-browser", "@kbn/data-service", "@kbn/observability-shared-plugin", "@kbn/data-plugin", diff --git a/x-pack/plugins/observability_solution/infra/public/apps/metrics_app.tsx b/x-pack/plugins/observability_solution/infra/public/apps/metrics_app.tsx index 566e788e6d9874..519befb57f8c0b 100644 --- a/x-pack/plugins/observability_solution/infra/public/apps/metrics_app.tsx +++ b/x-pack/plugins/observability_solution/infra/public/apps/metrics_app.tsx @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ - +import { PerformanceContextProvider } from '@kbn/ebt-tools'; import { History } from 'history'; import { CoreStart } from '@kbn/core/public'; import React from 'react'; @@ -99,12 +99,14 @@ const MetricsApp: React.FC<{ - - - {uiCapabilities?.infrastructure?.show && ( - - )} - + + + + {uiCapabilities?.infrastructure?.show && ( + + )} + + diff --git a/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/hosts_content.tsx b/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/hosts_content.tsx index 5496dcf64cd503..50feb6491578b6 100644 --- a/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/hosts_content.tsx +++ b/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/hosts_content.tsx @@ -27,21 +27,21 @@ export const HostsContent = () => { ) : ( - - - + + + - - - - - - - - - - - + + + + + + + + + + + )} diff --git a/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/hosts_table.tsx b/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/hosts_table.tsx index cc0b7302da20ad..efa72e42573554 100644 --- a/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/hosts_table.tsx +++ b/x-pack/plugins/observability_solution/infra/public/pages/metrics/hosts/components/hosts_table.tsx @@ -5,18 +5,22 @@ * 2.0. */ -import React from 'react'; +import React, { useEffect } from 'react'; +import { usePerformanceContext } from '@kbn/ebt-tools'; import { EuiBasicTable } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { EuiEmptyPrompt } from '@elastic/eui'; import { HostNodeRow, useHostsTableContext } from '../hooks/use_hosts_table'; import { useHostsViewContext } from '../hooks/use_hosts_view'; +import { useHostCountContext } from '../hooks/use_host_count'; import { FlyoutWrapper } from './host_details_flyout/flyout_wrapper'; import { DEFAULT_PAGE_SIZE, PAGE_SIZE_OPTIONS } from '../constants'; import { FilterAction } from './table/filter_action'; export const HostsTable = () => { const { loading } = useHostsViewContext(); + const { isRequestRunning: hostCountLoading } = useHostCountContext(); + const { onPageReady } = usePerformanceContext(); const { columns, @@ -33,6 +37,12 @@ export const HostsTable = () => { filterSelectedHosts, } = useHostsTableContext(); + useEffect(() => { + if (!loading && !hostCountLoading) { + onPageReady(); + } + }, [loading, hostCountLoading, onPageReady]); + return ( <> { const currentBreakpoint = useCurrentEuiBreakpoint(); const [{ detailsItemId }, setFlyoutUrlState] = useAssetDetailsFlyoutState(); + const { onPageReady } = usePerformanceContext(); const closeFlyout = useCallback( () => setFlyoutUrlState({ detailsItemId: null }), @@ -115,6 +117,10 @@ export const NodesOverview = ({ const bounds = autoBounds ? dataBounds : boundsOverride; const isStatic = ['xs', 's'].includes(currentBreakpoint!); + if (!loading) { + onPageReady(); + } + if (view === 'table') { return ( diff --git a/x-pack/plugins/observability_solution/logs_data_access/server/index.ts b/x-pack/plugins/observability_solution/logs_data_access/server/index.ts index ee394c191c276f..99ef11a0bd9531 100644 --- a/x-pack/plugins/observability_solution/logs_data_access/server/index.ts +++ b/x-pack/plugins/observability_solution/logs_data_access/server/index.ts @@ -9,6 +9,11 @@ import type { LogsDataAccessPluginSetup, LogsDataAccessPluginStart } from './plu export type { LogsDataAccessPluginSetup, LogsDataAccessPluginStart }; +export type { + LogsRatesMetrics, + LogsRatesServiceReturnType, +} from './services/get_logs_rates_service'; + export async function plugin(initializerContext: PluginInitializerContext) { const { LogsDataAccessPlugin } = await import('./plugin'); return new LogsDataAccessPlugin(initializerContext); diff --git a/x-pack/plugins/observability_solution/logs_data_access/server/services/get_logs_rates_service/index.ts b/x-pack/plugins/observability_solution/logs_data_access/server/services/get_logs_rates_service/index.ts index 1634270309689a..0ef186d16b1802 100644 --- a/x-pack/plugins/observability_solution/logs_data_access/server/services/get_logs_rates_service/index.ts +++ b/x-pack/plugins/observability_solution/logs_data_access/server/services/get_logs_rates_service/index.ts @@ -26,11 +26,13 @@ interface LogRateQueryAggregation { services: estypes.AggregationsTermsAggregateBase; } +export interface LogsRatesMetrics { + logRatePerMinute: number; + logErrorRate: null | number; +} + export interface LogsRatesServiceReturnType { - [serviceName: string]: { - logRatePerMinute: number; - logErrorRate: null | number; - }; + [serviceName: string]: LogsRatesMetrics; } export function createGetLogsRatesService(params: RegisterServicesParams) { @@ -47,6 +49,12 @@ export function createGetLogsRatesService(params: RegisterServicesParams) { query: { bool: { filter: [ + { + exists: { + // For now, we don't want to count APM server logs or any other logs that don't have the log.level field. + field: 'log.level', + }, + }, { terms: { [identifyingMetadata]: serviceNames, diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.test.tsx b/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.test.tsx index ddb4d214dd1a7e..29be65499b8265 100644 --- a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.test.tsx +++ b/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.test.tsx @@ -136,7 +136,6 @@ describe('AlertDetailsAppSection', () => { View related logs diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.tsx b/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.tsx index d1ad5fcd5cc7de..0bb3ef31da99ee 100644 --- a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.tsx +++ b/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/alert_details_app_section.tsx @@ -167,7 +167,6 @@ export default function AlertDetailsAppSection({ {i18n.translate( 'xpack.observability.alertDetailsAppSection.a.viewRelatedLogsLabel', diff --git a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/groups.tsx b/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/groups.tsx index b818fb737c2ee7..f2644ac78b0c57 100644 --- a/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/groups.tsx +++ b/x-pack/plugins/observability_solution/observability/public/components/custom_threshold/components/alert_details_app_section/groups.tsx @@ -60,7 +60,6 @@ export function Groups({ groups, timeRange }: { groups: Group[]; timeRange: Time {group.value} diff --git a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/chat/chat_header.tsx b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/chat/chat_header.tsx index 4d5a824ebe3042..d4ede58040391f 100644 --- a/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/chat/chat_header.tsx +++ b/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/components/chat/chat_header.tsx @@ -138,8 +138,8 @@ export function ChatHeader({ onSaveTitle(e); } }} - onCancel={(previousTitle: string) => { - setNewTitle(previousTitle); + onCancel={() => { + setNewTitle(title); }} /> diff --git a/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/home.cy.ts b/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/home.cy.ts index fe97f53975d6c4..27392c65e9dc75 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/home.cy.ts +++ b/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/home.cy.ts @@ -5,7 +5,8 @@ * 2.0. */ -describe('[Observability onboarding] Landing page', () => { +// Failing: See https://github.com/elastic/kibana/issues/183341 +describe.skip('[Observability onboarding] Landing page', () => { beforeEach(() => { cy.loginAsElastic(); }); diff --git a/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/logs/custom_logs/configure.cy.ts b/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/logs/custom_logs/configure.cy.ts index 95360694ece154..fb7153d88dfb53 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/logs/custom_logs/configure.cy.ts +++ b/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/logs/custom_logs/configure.cy.ts @@ -5,7 +5,8 @@ * 2.0. */ -describe('[Logs onboarding] Custom logs - configure step', () => { +// Failing: See https://github.com/elastic/kibana/issues/183341 +describe.skip('[Logs onboarding] Custom logs - configure step', () => { describe('logFilePaths', () => { beforeEach(() => { cy.loginAsViewerUser(); diff --git a/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/logs/feedback.cy.ts b/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/logs/feedback.cy.ts index eb48abb827c9f9..1e04d4b25119f3 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/logs/feedback.cy.ts +++ b/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/logs/feedback.cy.ts @@ -5,7 +5,8 @@ * 2.0. */ -describe('[Logs onboarding] Give Feedback', () => { +// Failing: See https://github.com/elastic/kibana/issues/183341 +describe.skip('[Logs onboarding] Give Feedback', () => { beforeEach(() => { cy.loginAsElastic(); cy.visitKibana('/app/observabilityOnboarding'); diff --git a/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/logs/system_logs.cy.ts b/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/logs/system_logs.cy.ts index c92caf9f686d11..4d2a43d8590855 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/logs/system_logs.cy.ts +++ b/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/logs/system_logs.cy.ts @@ -5,7 +5,8 @@ * 2.0. */ -describe('[Logs onboarding] System logs', () => { +// Failing: See https://github.com/elastic/kibana/issues/183341 +describe.skip('[Logs onboarding] System logs', () => { describe('System integration', () => { beforeEach(() => { cy.deleteIntegration('system'); diff --git a/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/navigation.cy.ts b/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/navigation.cy.ts index 05ce80d22fde94..32dfce528c66f1 100644 --- a/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/navigation.cy.ts +++ b/x-pack/plugins/observability_solution/observability_onboarding/e2e/cypress/e2e/navigation.cy.ts @@ -5,7 +5,8 @@ * 2.0. */ -describe('[Observability onboarding] Navigation', () => { +// Failing: See https://github.com/elastic/kibana/issues/183341 +describe.skip('[Observability onboarding] Navigation', () => { beforeEach(() => { cy.loginAsElastic(); cy.visitKibana('/app/observabilityOnboarding/'); diff --git a/x-pack/plugins/observability_solution/profiling/common/frame_type_colors.ts b/x-pack/plugins/observability_solution/profiling/common/frame_type_colors.ts index 95de74b32ab965..162b87a87319e8 100644 --- a/x-pack/plugins/observability_solution/profiling/common/frame_type_colors.ts +++ b/x-pack/plugins/observability_solution/profiling/common/frame_type_colors.ts @@ -39,7 +39,7 @@ export const FRAME_TYPE_COLOR_MAP = { [FrameType.Perl]: [0xf98bb9, 0xfaa2c7, 0xfbb9d5, 0xfdd1e3], [FrameType.JavaScript]: [0xcbc3e3, 0xd5cfe8, 0xdfdbee, 0xeae7f3], [FrameType.PHPJIT]: [0xccfc82, 0xd1fc8e, 0xd6fc9b, 0xdbfca7], - [FrameType.DotNET]: [0x7014eb, 0x7e2ced, 0x8d43ef, 0x9b5bf1], + [FrameType.DotNET]: [0x6c60e1, 0x8075e5, 0x948be9, 0xa8a0ed], [FrameType.ErrorFlag]: [0x0, 0x0, 0x0, 0x0], // This is a special case, it's not a real frame type [FrameType.Error]: [0xfd8484, 0xfd9d9d, 0xfeb5b5, 0xfecece], }; diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/apm_availability/apm_availability_indicator_type_form.tsx b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/apm_availability/apm_availability_indicator_type_form.tsx index cb50694027c14a..ee08e073bcac9e 100644 --- a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/apm_availability/apm_availability_indicator_type_form.tsx +++ b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/apm_availability/apm_availability_indicator_type_form.tsx @@ -6,6 +6,7 @@ */ import { EuiFlexGroup, EuiFlexItem, EuiIconTip } from '@elastic/eui'; +import { APMTransactionErrorRateIndicator } from '@kbn/slo-schema'; import { i18n } from '@kbn/i18n'; import React, { useEffect } from 'react'; import { useFormContext } from 'react-hook-form'; @@ -16,11 +17,34 @@ import { CreateSLOForm } from '../../types'; import { FieldSelector } from '../apm_common/field_selector'; import { DataPreviewChart } from '../common/data_preview_chart'; import { QueryBuilder } from '../common/query_builder'; +import { formatAllFilters } from '../../helpers/format_filters'; +import { getGroupByCardinalityFilters } from '../apm_common/get_group_by_cardinality_filters'; export function ApmAvailabilityIndicatorTypeForm() { - const { watch, setValue } = useFormContext(); + const { watch, setValue } = useFormContext>(); const { data: apmIndex } = useFetchApmIndex(); + const [ + serviceName = '', + environment = '', + transactionType = '', + transactionName = '', + globalFilters, + ] = watch([ + 'indicator.params.service', + 'indicator.params.environment', + 'indicator.params.transactionType', + 'indicator.params.transactionName', + 'indicator.params.filter', + ]); + const indicatorParamsFilters = getGroupByCardinalityFilters({ + serviceName, + environment, + transactionType, + transactionName, + }); + const allFilters = formatAllFilters(globalFilters, indicatorParamsFilters); + useEffect(() => { if (apmIndex !== '') { setValue('indicator.params.index', apmIndex); @@ -126,7 +150,7 @@ export function ApmAvailabilityIndicatorTypeForm() { - + diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/apm_common/get_group_by_cardinality_filters.test.ts b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/apm_common/get_group_by_cardinality_filters.test.ts new file mode 100644 index 00000000000000..bb0114214a0e03 --- /dev/null +++ b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/apm_common/get_group_by_cardinality_filters.test.ts @@ -0,0 +1,112 @@ +/* + * Copyright 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 { getGroupByCardinalityFilters } from './get_group_by_cardinality_filters'; +import { ALL_VALUE } from '@kbn/slo-schema'; + +describe('get group by cardinality filters', () => { + it('formats filters correctly', () => { + const serviceName = 'testService'; + const environment = 'testEnvironment'; + const transactionName = 'testTransactionName'; + const transactionType = 'testTransactionType'; + expect( + getGroupByCardinalityFilters({ serviceName, environment, transactionName, transactionType }) + ).toEqual([ + { + $state: { store: 'appState' }, + meta: { + alias: null, + disabled: false, + key: 'service.name', + negate: false, + params: serviceName, + type: 'phrases', + }, + query: { + bool: { + minimum_should_match: 1, + should: { match_phrase: { 'service.name': serviceName } }, + }, + }, + }, + { + $state: { store: 'appState' }, + meta: { + alias: null, + disabled: false, + key: 'service.environment', + negate: false, + params: environment, + type: 'phrases', + }, + query: { + bool: { + minimum_should_match: 1, + should: { match_phrase: { 'service.environment': environment } }, + }, + }, + }, + { + $state: { store: 'appState' }, + meta: { + alias: null, + disabled: false, + key: 'transaction.type', + negate: false, + params: transactionType, + type: 'phrases', + }, + query: { + bool: { + minimum_should_match: 1, + should: { match_phrase: { 'transaction.type': transactionType } }, + }, + }, + }, + { + $state: { store: 'appState' }, + meta: { + alias: null, + disabled: false, + key: 'transaction.name', + negate: false, + params: transactionName, + type: 'phrases', + }, + query: { + bool: { + minimum_should_match: 1, + should: { match_phrase: { 'transaction.name': transactionName } }, + }, + }, + }, + ]); + }); + + it('does not include filters when values are undefined', () => { + expect( + getGroupByCardinalityFilters({ + // @ts-ignore + serviceName: undefined, + environment: undefined, + transactionName: undefined, + transactionType: undefined, + }) + ).toEqual([]); + }); + + it('does not include filters when values are ALL_VALUE', () => { + expect( + getGroupByCardinalityFilters({ + serviceName: ALL_VALUE, + environment: ALL_VALUE, + transactionName: ALL_VALUE, + transactionType: ALL_VALUE, + }) + ).toEqual([]); + }); +}); diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/apm_common/get_group_by_cardinality_filters.ts b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/apm_common/get_group_by_cardinality_filters.ts new file mode 100644 index 00000000000000..f92648fdbae95e --- /dev/null +++ b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/apm_common/get_group_by_cardinality_filters.ts @@ -0,0 +1,135 @@ +/* + * Copyright 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 { ALL_VALUE, FiltersSchema } from '@kbn/slo-schema'; +import { FilterStateStore } from '@kbn/es-query'; + +export const getGroupByCardinalityFilters = ({ + serviceName, + environment, + transactionType, + transactionName, +}: { + serviceName: string; + environment?: string; + transactionType?: string; + transactionName?: string; +}): FiltersSchema => { + const serviceNameFilter = + serviceName && serviceName !== ALL_VALUE + ? { + meta: { + disabled: false, + negate: false, + alias: null, + key: 'service.name', + params: serviceName, + type: 'phrases', + }, + $state: { + store: FilterStateStore.APP_STATE, + }, + query: { + bool: { + minimum_should_match: 1, + should: { + match_phrase: { + 'service.name': serviceName, + }, + }, + }, + }, + } + : null; + + const environmentFilter = + environment && environment !== ALL_VALUE + ? { + meta: { + disabled: false, + negate: false, + alias: null, + key: 'service.environment', + params: environment, + type: 'phrases', + }, + $state: { + store: FilterStateStore.APP_STATE, + }, + query: { + bool: { + minimum_should_match: 1, + should: { + match_phrase: { + 'service.environment': environment, + }, + }, + }, + }, + } + : null; + + const transactionTypeFilter = + transactionType && transactionType !== ALL_VALUE + ? { + meta: { + disabled: false, + negate: false, + alias: null, + key: 'transaction.type', + params: transactionType, + type: 'phrases', + }, + $state: { + store: FilterStateStore.APP_STATE, + }, + query: { + bool: { + minimum_should_match: 1, + should: { + match_phrase: { + 'transaction.type': transactionType, + }, + }, + }, + }, + } + : null; + + const transactionNameFilter = + transactionName && transactionName !== ALL_VALUE + ? { + meta: { + disabled: false, + negate: false, + alias: null, + key: 'transaction.name', + params: transactionName, + type: 'phrases', + }, + $state: { + store: FilterStateStore.APP_STATE, + }, + query: { + bool: { + minimum_should_match: 1, + should: { + match_phrase: { + 'transaction.name': transactionName, + }, + }, + }, + }, + } + : null; + + return [ + serviceNameFilter, + environmentFilter, + transactionTypeFilter, + transactionNameFilter, + ].filter((value) => !!value) as FiltersSchema; +}; diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/apm_latency/apm_latency_indicator_type_form.tsx b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/apm_latency/apm_latency_indicator_type_form.tsx index 18a95eb1da2929..8902bde6407f21 100644 --- a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/apm_latency/apm_latency_indicator_type_form.tsx +++ b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/apm_latency/apm_latency_indicator_type_form.tsx @@ -6,6 +6,7 @@ */ import { EuiFieldNumber, EuiFlexGroup, EuiFlexItem, EuiFormRow, EuiIconTip } from '@elastic/eui'; +import { APMTransactionDurationIndicator } from '@kbn/slo-schema'; import { i18n } from '@kbn/i18n'; import React, { useEffect } from 'react'; import { Controller, useFormContext } from 'react-hook-form'; @@ -16,11 +17,35 @@ import { CreateSLOForm } from '../../types'; import { FieldSelector } from '../apm_common/field_selector'; import { DataPreviewChart } from '../common/data_preview_chart'; import { QueryBuilder } from '../common/query_builder'; +import { formatAllFilters } from '../../helpers/format_filters'; +import { getGroupByCardinalityFilters } from '../apm_common/get_group_by_cardinality_filters'; export function ApmLatencyIndicatorTypeForm() { - const { control, watch, getFieldState, setValue } = useFormContext(); + const { control, watch, getFieldState, setValue } = + useFormContext>(); const { data: apmIndex } = useFetchApmIndex(); + const [ + serviceName = '', + environment = '', + transactionType = '', + transactionName = '', + globalFilters, + ] = watch([ + 'indicator.params.service', + 'indicator.params.environment', + 'indicator.params.transactionType', + 'indicator.params.transactionName', + 'indicator.params.filter', + ]); + const indicatorParamsFilters = getGroupByCardinalityFilters({ + serviceName, + environment, + transactionType, + transactionName, + }); + const allFilters = formatAllFilters(globalFilters, indicatorParamsFilters); + useEffect(() => { if (apmIndex !== '') { setValue('indicator.params.index', apmIndex); @@ -160,7 +185,7 @@ export function ApmLatencyIndicatorTypeForm() { - + diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/group_by_field.tsx b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/group_by_field.tsx index 38ed0988b23200..939755b8a9e3eb 100644 --- a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/group_by_field.tsx +++ b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/common/group_by_field.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { ALL_VALUE } from '@kbn/slo-schema'; +import { ALL_VALUE, QuerySchema } from '@kbn/slo-schema'; import { i18n } from '@kbn/i18n'; import { EuiIconTip } from '@elastic/eui'; import React from 'react'; @@ -16,7 +16,15 @@ import { CreateSLOForm } from '../../types'; import { IndexFieldSelector } from './index_field_selector'; import { GroupByCardinality } from './group_by_cardinality'; -export function GroupByField({ dataView, isLoading }: { dataView?: DataView; isLoading: boolean }) { +export function GroupByField({ + dataView, + isLoading, + filters, +}: { + dataView?: DataView; + isLoading: boolean; + filters?: QuerySchema; +}) { const { watch } = useFormContext(); const groupByFields = dataView?.fields?.filter((field) => canGroupBy(field)) ?? []; @@ -48,7 +56,7 @@ export function GroupByField({ dataView, isLoading }: { dataView?: DataView; isL isLoading={!!index && isLoading} isDisabled={!index} /> - + ); } diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/synthetics_availability/synthetics_availability_indicator_type_form.test.tsx b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/synthetics_availability/synthetics_availability_indicator_type_form.test.tsx index 781c4fea23db72..96b3f3177d5bf5 100644 --- a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/synthetics_availability/synthetics_availability_indicator_type_form.test.tsx +++ b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/synthetics_availability/synthetics_availability_indicator_type_form.test.tsx @@ -4,10 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { - formatAllFilters, - getGroupByCardinalityFilters, -} from './synthetics_availability_indicator_type_form'; +import { getGroupByCardinalityFilters } from './synthetics_availability_indicator_type_form'; describe('get group by cardinality filters', () => { it('formats filters correctly', () => { @@ -80,252 +77,3 @@ describe('get group by cardinality filters', () => { expect(getGroupByCardinalityFilters(monitorIds, projects, tags)).toEqual([]); }); }); - -describe('formatAllFilters', () => { - const monitorIds = ['1234']; - const tags = ['tag1', 'tag2']; - const projects = ['project1', 'project2']; - const cardinalityFilters = getGroupByCardinalityFilters(monitorIds, projects, tags); - - it('handles global kql filter', () => { - const kqlFilter = 'monitor.id: "1234"'; - expect(formatAllFilters(kqlFilter, cardinalityFilters)).toEqual({ - filters: [ - { - $state: { - store: 'appState', - }, - meta: { - alias: null, - disabled: false, - key: 'monitor.id', - negate: false, - params: ['1234'], - type: 'phrases', - }, - query: { - bool: { - minimum_should_match: 1, - should: [ - { - match_phrase: { - 'monitor.id': '1234', - }, - }, - ], - }, - }, - }, - { - $state: { - store: 'appState', - }, - meta: { - alias: null, - disabled: false, - key: 'monitor.project.id', - negate: false, - params: ['project1', 'project2'], - type: 'phrases', - }, - query: { - bool: { - minimum_should_match: 1, - should: [ - { - match_phrase: { - 'monitor.project.id': 'project1', - }, - }, - { - match_phrase: { - 'monitor.project.id': 'project2', - }, - }, - ], - }, - }, - }, - { - $state: { - store: 'appState', - }, - meta: { - alias: null, - disabled: false, - key: 'tags', - negate: false, - params: ['tag1', 'tag2'], - type: 'phrases', - }, - query: { - bool: { - minimum_should_match: 1, - should: [ - { - match_phrase: { - tags: 'tag1', - }, - }, - { - match_phrase: { - tags: 'tag2', - }, - }, - ], - }, - }, - }, - ], - kqlQuery: 'monitor.id: "1234"', - }); - }); - - it('handles global filters meta ', () => { - const globalFilters = { - filters: [ - { - $state: { - store: 'appState', - }, - meta: { - alias: null, - disabled: false, - key: 'monitor.name', - negate: false, - params: ['test name'], - type: 'phrases', - }, - query: { - bool: { - minimum_should_match: 1, - should: [ - { - match_phrase: { - 'monitor.name': 'test name', - }, - }, - ], - }, - }, - }, - ], - kqlQuery: 'monitor.id: "1234"', - }; - expect(formatAllFilters(globalFilters, cardinalityFilters)).toEqual({ - filters: [ - { - $state: { - store: 'appState', - }, - meta: { - alias: null, - disabled: false, - key: 'monitor.name', - negate: false, - params: ['test name'], - type: 'phrases', - }, - query: { - bool: { - minimum_should_match: 1, - should: [ - { - match_phrase: { - 'monitor.name': 'test name', - }, - }, - ], - }, - }, - }, - { - $state: { - store: 'appState', - }, - meta: { - alias: null, - disabled: false, - key: 'monitor.id', - negate: false, - params: ['1234'], - type: 'phrases', - }, - query: { - bool: { - minimum_should_match: 1, - should: [ - { - match_phrase: { - 'monitor.id': '1234', - }, - }, - ], - }, - }, - }, - { - $state: { - store: 'appState', - }, - meta: { - alias: null, - disabled: false, - key: 'monitor.project.id', - negate: false, - params: ['project1', 'project2'], - type: 'phrases', - }, - query: { - bool: { - minimum_should_match: 1, - should: [ - { - match_phrase: { - 'monitor.project.id': 'project1', - }, - }, - { - match_phrase: { - 'monitor.project.id': 'project2', - }, - }, - ], - }, - }, - }, - { - $state: { - store: 'appState', - }, - meta: { - alias: null, - disabled: false, - key: 'tags', - negate: false, - params: ['tag1', 'tag2'], - type: 'phrases', - }, - query: { - bool: { - minimum_should_match: 1, - should: [ - { - match_phrase: { - tags: 'tag1', - }, - }, - { - match_phrase: { - tags: 'tag2', - }, - }, - ], - }, - }, - }, - ], - kqlQuery: 'monitor.id: "1234"', - }); - }); -}); diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/synthetics_availability/synthetics_availability_indicator_type_form.tsx b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/synthetics_availability/synthetics_availability_indicator_type_form.tsx index 6820bb6df1303f..a1ec5714de5044 100644 --- a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/synthetics_availability/synthetics_availability_indicator_type_form.tsx +++ b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/components/synthetics_availability/synthetics_availability_indicator_type_form.tsx @@ -11,16 +11,16 @@ import { ALL_VALUE, SyntheticsAvailabilityIndicator, QuerySchema, - kqlQuerySchema, - kqlWithFiltersSchema, + FiltersSchema, } from '@kbn/slo-schema'; -import { Filter, FilterStateStore } from '@kbn/es-query'; +import { FilterStateStore } from '@kbn/es-query'; import { useFormContext } from 'react-hook-form'; import { FieldSelector } from '../synthetics_common/field_selector'; import { CreateSLOForm } from '../../types'; import { DataPreviewChart } from '../common/data_preview_chart'; import { QueryBuilder } from '../common/query_builder'; import { GroupByCardinality } from '../common/group_by_cardinality'; +import { formatAllFilters } from '../../helpers/format_filters'; const ONE_DAY_IN_MILLISECONDS = 1 * 60 * 60 * 1000 * 24; @@ -45,7 +45,7 @@ export function SyntheticsAvailabilityIndicatorTypeForm() { projects: projects.map((project) => project.value).filter((id) => id !== ALL_VALUE), tags: tags.map((tag) => tag.value).filter((id) => id !== ALL_VALUE), }; - const groupByCardinalityFilters: Filter[] = getGroupByCardinalityFilters( + const groupByCardinalityFilters = getGroupByCardinalityFilters( filters.monitorIds, filters.projects, filters.tags @@ -156,7 +156,7 @@ export const getGroupByCardinalityFilters = ( monitorIds: string[], projects: string[], tags: string[] -): Filter[] => { +): FiltersSchema => { const monitorIdFilters = monitorIds.length ? { meta: { @@ -235,19 +235,5 @@ export const getGroupByCardinalityFilters = ( } : null; - return [monitorIdFilters, projectFilters, tagFilters].filter((value) => !!value) as Filter[]; -}; - -export const formatAllFilters = ( - globalFilters: QuerySchema = '', - groupByCardinalityFilters: Filter[] -) => { - if (kqlQuerySchema.is(globalFilters)) { - return { kqlQuery: globalFilters, filters: groupByCardinalityFilters }; - } else if (kqlWithFiltersSchema) { - return { - kqlQuery: globalFilters.kqlQuery, - filters: [...globalFilters.filters, ...groupByCardinalityFilters], - }; - } + return [monitorIdFilters, projectFilters, tagFilters].filter((value) => !!value) as FiltersSchema; }; diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/format_filters.test.ts b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/format_filters.test.ts new file mode 100644 index 00000000000000..16ad733619e653 --- /dev/null +++ b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/format_filters.test.ts @@ -0,0 +1,257 @@ +/* + * Copyright 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 { getGroupByCardinalityFilters } from '../components/synthetics_availability/synthetics_availability_indicator_type_form'; +import { formatAllFilters } from './format_filters'; + +describe('formatAllFilters', () => { + const monitorIds = ['1234']; + const tags = ['tag1', 'tag2']; + const projects = ['project1', 'project2']; + const cardinalityFilters = getGroupByCardinalityFilters(monitorIds, projects, tags); + + it('handles global kql filter', () => { + const kqlFilter = 'monitor.id: "1234"'; + expect(formatAllFilters(kqlFilter, cardinalityFilters)).toEqual({ + filters: [ + { + $state: { + store: 'appState', + }, + meta: { + alias: null, + disabled: false, + key: 'monitor.id', + negate: false, + params: ['1234'], + type: 'phrases', + }, + query: { + bool: { + minimum_should_match: 1, + should: [ + { + match_phrase: { + 'monitor.id': '1234', + }, + }, + ], + }, + }, + }, + { + $state: { + store: 'appState', + }, + meta: { + alias: null, + disabled: false, + key: 'monitor.project.id', + negate: false, + params: ['project1', 'project2'], + type: 'phrases', + }, + query: { + bool: { + minimum_should_match: 1, + should: [ + { + match_phrase: { + 'monitor.project.id': 'project1', + }, + }, + { + match_phrase: { + 'monitor.project.id': 'project2', + }, + }, + ], + }, + }, + }, + { + $state: { + store: 'appState', + }, + meta: { + alias: null, + disabled: false, + key: 'tags', + negate: false, + params: ['tag1', 'tag2'], + type: 'phrases', + }, + query: { + bool: { + minimum_should_match: 1, + should: [ + { + match_phrase: { + tags: 'tag1', + }, + }, + { + match_phrase: { + tags: 'tag2', + }, + }, + ], + }, + }, + }, + ], + kqlQuery: 'monitor.id: "1234"', + }); + }); + + it('handles global filters meta ', () => { + const globalFilters = { + filters: [ + { + $state: { + store: 'appState', + }, + meta: { + alias: null, + disabled: false, + key: 'monitor.name', + negate: false, + params: ['test name'], + type: 'phrases', + }, + query: { + bool: { + minimum_should_match: 1, + should: [ + { + match_phrase: { + 'monitor.name': 'test name', + }, + }, + ], + }, + }, + }, + ], + kqlQuery: 'monitor.id: "1234"', + }; + expect(formatAllFilters(globalFilters, cardinalityFilters)).toEqual({ + filters: [ + { + $state: { + store: 'appState', + }, + meta: { + alias: null, + disabled: false, + key: 'monitor.name', + negate: false, + params: ['test name'], + type: 'phrases', + }, + query: { + bool: { + minimum_should_match: 1, + should: [ + { + match_phrase: { + 'monitor.name': 'test name', + }, + }, + ], + }, + }, + }, + { + $state: { + store: 'appState', + }, + meta: { + alias: null, + disabled: false, + key: 'monitor.id', + negate: false, + params: ['1234'], + type: 'phrases', + }, + query: { + bool: { + minimum_should_match: 1, + should: [ + { + match_phrase: { + 'monitor.id': '1234', + }, + }, + ], + }, + }, + }, + { + $state: { + store: 'appState', + }, + meta: { + alias: null, + disabled: false, + key: 'monitor.project.id', + negate: false, + params: ['project1', 'project2'], + type: 'phrases', + }, + query: { + bool: { + minimum_should_match: 1, + should: [ + { + match_phrase: { + 'monitor.project.id': 'project1', + }, + }, + { + match_phrase: { + 'monitor.project.id': 'project2', + }, + }, + ], + }, + }, + }, + { + $state: { + store: 'appState', + }, + meta: { + alias: null, + disabled: false, + key: 'tags', + negate: false, + params: ['tag1', 'tag2'], + type: 'phrases', + }, + query: { + bool: { + minimum_should_match: 1, + should: [ + { + match_phrase: { + tags: 'tag1', + }, + }, + { + match_phrase: { + tags: 'tag2', + }, + }, + ], + }, + }, + }, + ], + kqlQuery: 'monitor.id: "1234"', + }); + }); +}); diff --git a/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/format_filters.ts b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/format_filters.ts new file mode 100644 index 00000000000000..6712dc979fc7a8 --- /dev/null +++ b/x-pack/plugins/observability_solution/slo/public/pages/slo_edit/helpers/format_filters.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 { QuerySchema, FiltersSchema, kqlQuerySchema, kqlWithFiltersSchema } from '@kbn/slo-schema'; + +export const formatAllFilters = ( + globalFilters: QuerySchema = '', + groupByCardinalityFilters: FiltersSchema +): QuerySchema => { + if (kqlQuerySchema.is(globalFilters)) { + return { kqlQuery: globalFilters, filters: groupByCardinalityFilters }; + } else if (kqlWithFiltersSchema.is(globalFilters)) { + return { + kqlQuery: globalFilters.kqlQuery, + filters: [...globalFilters.filters, ...groupByCardinalityFilters], + }; + } else { + return { kqlQuery: '', filters: groupByCardinalityFilters }; + } +}; diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts b/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts index 3c091a2882e088..efb725bff3d5f6 100644 --- a/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts +++ b/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts @@ -24,229 +24,227 @@ import { import { clickRuleName, inputQuery, typeInECSFieldInput } from '../../tasks/live_query'; import { closeDateTabIfVisible, closeToastIfVisible } from '../../tasks/integrations'; -// Failing: See https://github.com/elastic/kibana/issues/169785 -describe.skip( - 'Alert Event Details - Response Actions Form', - { tags: ['@ess', '@serverless'] }, - () => { - let multiQueryPackId: string; - let multiQueryPackName: string; - let ruleId: string; - let ruleName: string; - let packId: string; - let packName: string; - const packData = packFixture(); - const multiQueryPackData = multiQueryPackFixture(); - before(() => { - initializeDataViews(); - }); - beforeEach(() => { - loadPack(packData).then((data) => { - packId = data.saved_object_id; - packName = data.name; - }); - loadPack(multiQueryPackData).then((data) => { - multiQueryPackId = data.saved_object_id; - multiQueryPackName = data.name; - }); - loadRule().then((data) => { - ruleId = data.id; - ruleName = data.name; - }); - }); - afterEach(() => { - cleanupPack(packId); - cleanupPack(multiQueryPackId); - cleanupRule(ruleId); - }); - - it('adds response actions with osquery with proper validation and form values', () => { - cy.visit('/app/security/rules'); - clickRuleName(ruleName); - cy.getBySel('globalLoadingIndicator').should('not.exist'); - cy.getBySel('editRuleSettingsLink').click(); - cy.getBySel('globalLoadingIndicator').should('not.exist'); - closeDateTabIfVisible(); - cy.getBySel('edit-rule-actions-tab').click(); - cy.getBySel('globalLoadingIndicator').should('not.exist'); - cy.contains('Response actions are run on each rule execution.'); - cy.getBySel(OSQUERY_RESPONSE_ACTION_ADD_BUTTON).click(); - - cy.getBySel(RESPONSE_ACTIONS_ERRORS).within(() => { - cy.contains('Query is a required field'); - cy.contains('The timeout value must be 60 seconds or higher.').should('not.exist'); - }); +describe('Alert Event Details - Response Actions Form', { tags: ['@ess', '@serverless'] }, () => { + let multiQueryPackId: string; + let multiQueryPackName: string; + let ruleId: string; + let ruleName: string; + let packId: string; + let packName: string; + const packData = packFixture(); + const multiQueryPackData = multiQueryPackFixture(); + before(() => { + initializeDataViews(); + }); + beforeEach(() => { + loadPack(packData).then((data) => { + packId = data.saved_object_id; + packName = data.name; + }); + loadPack(multiQueryPackData).then((data) => { + multiQueryPackId = data.saved_object_id; + multiQueryPackName = data.name; + }); + loadRule().then((data) => { + ruleId = data.id; + ruleName = data.name; + }); + }); + afterEach(() => { + cleanupPack(packId); + cleanupPack(multiQueryPackId); + cleanupRule(ruleId); + }); + + it('adds response actions with osquery with proper validation and form values', () => { + cy.visit('/app/security/rules'); + clickRuleName(ruleName); + cy.getBySel('globalLoadingIndicator').should('not.exist'); + cy.getBySel('editRuleSettingsLink').click(); + cy.getBySel('globalLoadingIndicator').should('not.exist'); + closeDateTabIfVisible(); + cy.getBySel('edit-rule-actions-tab').click(); + cy.getBySel('globalLoadingIndicator').should('not.exist'); + cy.contains('Response actions are run on each rule execution.'); + cy.getBySel(OSQUERY_RESPONSE_ACTION_ADD_BUTTON).click(); + + cy.getBySel(RESPONSE_ACTIONS_ERRORS).within(() => { + cy.contains('Query is a required field'); + cy.contains('The timeout value must be 60 seconds or higher.').should('not.exist'); + }); - // check if changing error state of one input doesn't clear other errors - START - cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { - cy.contains('Advanced').click(); - cy.getBySel('timeout-input').clear(); - cy.contains('The timeout value must be 60 seconds or higher.'); - }); + // check if changing error state of one input doesn't clear other errors - START + cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { + cy.contains('Advanced').click(); + cy.getBySel('timeout-input').clear(); + cy.contains('The timeout value must be 60 seconds or higher.'); + }); - cy.getBySel(RESPONSE_ACTIONS_ERRORS).within(() => { - cy.contains('Query is a required field'); - cy.contains('The timeout value must be 60 seconds or higher.'); - }); - - cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { - cy.getBySel('timeout-input').type('6'); - cy.contains('The timeout value must be 60 seconds or higher.'); - }); - cy.getBySel(RESPONSE_ACTIONS_ERRORS).within(() => { - cy.contains('Query is a required field'); - cy.contains('The timeout value must be 60 seconds or higher.'); - }); - cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { - cy.getBySel('timeout-input').type('6'); - cy.contains('The timeout value must be 60 seconds or higher.').should('not.exist'); - }); - cy.getBySel(RESPONSE_ACTIONS_ERRORS).within(() => { - cy.contains('Query is a required field'); - }); - cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { - cy.getBySel('timeout-input').type('6'); - }); - cy.getBySel(RESPONSE_ACTIONS_ERRORS).within(() => { - cy.contains('Query is a required field'); - cy.contains('The timeout value must be 60 seconds or higher.').should('not.exist'); - }); - // check if changing error state of one input doesn't clear other errors - END + cy.getBySel(RESPONSE_ACTIONS_ERRORS).within(() => { + cy.contains('Query is a required field'); + cy.contains('The timeout value must be 60 seconds or higher.'); + }); + + cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { + cy.getBySel('timeout-input').type('6'); + cy.contains('The timeout value must be 60 seconds or higher.'); + }); + cy.getBySel(RESPONSE_ACTIONS_ERRORS).within(() => { + cy.contains('Query is a required field'); + cy.contains('The timeout value must be 60 seconds or higher.'); + }); + cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { + cy.getBySel('timeout-input').type('6'); + cy.contains('The timeout value must be 60 seconds or higher.').should('not.exist'); + }); + cy.getBySel(RESPONSE_ACTIONS_ERRORS).within(() => { + cy.contains('Query is a required field'); + }); + cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { + cy.getBySel('timeout-input').type('6'); + }); + cy.getBySel(RESPONSE_ACTIONS_ERRORS).within(() => { + cy.contains('Query is a required field'); + cy.contains('The timeout value must be 60 seconds or higher.').should('not.exist'); + }); + // check if changing error state of one input doesn't clear other errors - END + + cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { + cy.contains('Query is a required field'); + inputQuery('select * from uptime1'); + }); + cy.getBySel(OSQUERY_RESPONSE_ACTION_ADD_BUTTON).click(); + cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { + cy.contains('Run a set of queries in a pack').click(); + }); + cy.getBySel(RESPONSE_ACTIONS_ERRORS) + .within(() => { + cy.contains('Pack is a required field'); + }) + .should('exist'); + cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { + cy.contains('Pack is a required field'); + cy.getBySel('comboBoxInput').click(); + cy.getBySel('comboBoxInput').type(`${packName}`); + cy.contains(`doesn't match any options`).should('not.exist'); + cy.getBySel('comboBoxInput').type('{downArrow}{enter}'); + }); + + cy.getBySel(OSQUERY_RESPONSE_ACTION_ADD_BUTTON).click(); - cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { + cy.getBySel(RESPONSE_ACTIONS_ITEM_2) + .within(() => { cy.contains('Query is a required field'); - inputQuery('select * from uptime1'); - }); - cy.getBySel(OSQUERY_RESPONSE_ACTION_ADD_BUTTON).click(); - cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { - cy.contains('Run a set of queries in a pack').click(); - }); - cy.getBySel(RESPONSE_ACTIONS_ERRORS) - .within(() => { - cy.contains('Pack is a required field'); - }) - .should('exist'); - cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { + inputQuery('select * from uptime'); + cy.contains('Query is a required field').should('not.exist'); + cy.contains('Advanced').click(); + typeInECSFieldInput('label{downArrow}{enter}'); + cy.getBySel('osqueryColumnValueSelect').type('days{downArrow}{enter}'); + }) + .clickOutside(); + + cy.getBySel('ruleEditSubmitButton').click(); + cy.contains(`${ruleName} was saved`).should('exist'); + closeToastIfVisible(); + + cy.getBySel('globalLoadingIndicator').should('not.exist'); + cy.getBySel('editRuleSettingsLink').click(); + cy.getBySel('globalLoadingIndicator').should('not.exist'); + cy.getBySel('edit-rule-actions-tab').click(); + cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { + cy.contains('select * from uptime1'); + }); + cy.getBySel(RESPONSE_ACTIONS_ITEM_2).within(() => { + cy.contains('select * from uptime'); + cy.contains('Custom key/value pairs. e.g. {"application":"foo-bar","env":"production"}'); + cy.contains('Days of uptime'); + }); + cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { + cy.getBySel('comboBoxSearchInput').should('have.value', packName); + cy.getBySel('comboBoxInput').type('{selectall}{backspace}{enter}'); + }); + cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { + cy.contains('select * from uptime1'); + cy.getBySel('remove-response-action').click(); + }); + cy.getBySel(RESPONSE_ACTIONS_ITEM_0) + .within(() => { + cy.getBySel('comboBoxSearchInput').click(); + cy.contains('Search for a pack to run'); cy.contains('Pack is a required field'); cy.getBySel('comboBoxInput').type(`${packName}{downArrow}{enter}`); - }); - - cy.getBySel(OSQUERY_RESPONSE_ACTION_ADD_BUTTON).click(); - - cy.getBySel(RESPONSE_ACTIONS_ITEM_2) - .within(() => { - cy.contains('Query is a required field'); - inputQuery('select * from uptime'); - cy.contains('Query is a required field').should('not.exist'); - cy.contains('Advanced').click(); - typeInECSFieldInput('{downArrow}{enter}'); - cy.getBySel('osqueryColumnValueSelect').type('days{downArrow}{enter}'); - }) - .clickOutside(); - - cy.getBySel('ruleEditSubmitButton').click(); - cy.contains(`${ruleName} was saved`).should('exist'); - closeToastIfVisible(); - - cy.getBySel('globalLoadingIndicator').should('not.exist'); - cy.getBySel('editRuleSettingsLink').click(); - cy.getBySel('globalLoadingIndicator').should('not.exist'); - cy.getBySel('edit-rule-actions-tab').click(); - cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { - cy.contains('select * from uptime1'); - }); - cy.getBySel(RESPONSE_ACTIONS_ITEM_2).within(() => { - cy.contains('select * from uptime'); - cy.contains('Custom key/value pairs. e.g. {"application":"foo-bar","env":"production"}'); - cy.contains('Days of uptime'); - }); - cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { + cy.contains(packName); + }) + .clickOutside(); + cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { + cy.contains('select * from uptime'); + cy.contains('Custom key/value pairs. e.g. {"application":"foo-bar","env":"production"}'); + cy.contains('Days of uptime'); + }); + + cy.intercept('PUT', '/api/detection_engine/rules').as('saveRuleSingleQuery'); + + cy.getBySel('ruleEditSubmitButton').click(); + cy.wait('@saveRuleSingleQuery', { timeout: 15000 }).should(({ request }) => { + const oneQuery = [ + { + interval: 3600, + query: 'select * from uptime;', + id: Object.keys(packData.queries)[0], + }, + ]; + expect(request.body.response_actions[0].params.queries).to.deep.equal(oneQuery); + }); + + cy.contains(`${ruleName} was saved`).should('exist'); + closeToastIfVisible(); + + cy.getBySel('globalLoadingIndicator').should('not.exist'); + cy.getBySel('editRuleSettingsLink').click(); + cy.getBySel('globalLoadingIndicator').should('not.exist'); + + cy.getBySel('edit-rule-actions-tab').click(); + cy.getBySel(RESPONSE_ACTIONS_ITEM_0) + .within(() => { cy.getBySel('comboBoxSearchInput').should('have.value', packName); - cy.getBySel('comboBoxInput').type('{selectall}{backspace}{enter}'); - }); - cy.getBySel(RESPONSE_ACTIONS_ITEM_0).within(() => { - cy.contains('select * from uptime1'); - cy.getBySel('remove-response-action').click(); - }); - cy.getBySel(RESPONSE_ACTIONS_ITEM_0) - .within(() => { - cy.getBySel('comboBoxSearchInput').click(); - cy.contains('Search for a pack to run'); - cy.contains('Pack is a required field'); - cy.getBySel('comboBoxInput').type(`${packName}{downArrow}{enter}`); - cy.contains(packName); - }) - .clickOutside(); - cy.getBySel(RESPONSE_ACTIONS_ITEM_1).within(() => { + cy.getBySel('comboBoxInput').type( + `{selectall}{backspace}${multiQueryPackName}{downArrow}{enter}` + ); + cy.contains('SELECT * FROM memory_info;'); + cy.contains('SELECT * FROM system_info;'); + }) + .clickOutside(); + + cy.getBySel(RESPONSE_ACTIONS_ITEM_1) + .within(() => { cy.contains('select * from uptime'); cy.contains('Custom key/value pairs. e.g. {"application":"foo-bar","env":"production"}'); cy.contains('Days of uptime'); - }); - - cy.intercept('PUT', '/api/detection_engine/rules').as('saveRuleSingleQuery'); - - cy.getBySel('ruleEditSubmitButton').click(); - cy.wait('@saveRuleSingleQuery', { timeout: 15000 }).should(({ request }) => { - const oneQuery = [ - { - interval: 3600, - query: 'select * from uptime;', - id: Object.keys(packData.queries)[0], - }, - ]; - expect(request.body.response_actions[0].params.queries).to.deep.equal(oneQuery); - }); - - cy.contains(`${ruleName} was saved`).should('exist'); - closeToastIfVisible(); - - cy.getBySel('globalLoadingIndicator').should('not.exist'); - cy.getBySel('editRuleSettingsLink').click(); - cy.getBySel('globalLoadingIndicator').should('not.exist'); - - cy.getBySel('edit-rule-actions-tab').click(); - cy.getBySel(RESPONSE_ACTIONS_ITEM_0) - .within(() => { - cy.getBySel('comboBoxSearchInput').should('have.value', packName); - cy.getBySel('comboBoxInput').type( - `{selectall}{backspace}${multiQueryPackName}{downArrow}{enter}` - ); - cy.contains('SELECT * FROM memory_info;'); - cy.contains('SELECT * FROM system_info;'); - }) - .clickOutside(); - - cy.getBySel(RESPONSE_ACTIONS_ITEM_1) - .within(() => { - cy.contains('select * from uptime'); - cy.contains('Custom key/value pairs. e.g. {"application":"foo-bar","env":"production"}'); - cy.contains('Days of uptime'); - }) - .clickOutside(); - cy.intercept('PUT', '/api/detection_engine/rules').as('saveRuleMultiQuery'); - - cy.contains('Save changes').click(); - cy.wait('@saveRuleMultiQuery', { timeout: 15000 }).should(({ request }) => { - const threeQueries = [ - { - interval: 3600, - query: 'SELECT * FROM memory_info;', - platform: 'linux', - id: Object.keys(multiQueryPackData.queries)[0], - }, - { - interval: 3600, - query: 'SELECT * FROM system_info;', - id: Object.keys(multiQueryPackData.queries)[1], - }, - { - interval: 10, - query: 'select opera_extensions.* from users join opera_extensions using (uid);', - id: Object.keys(multiQueryPackData.queries)[2], - }, - ]; - expect(request.body.response_actions[0].params.queries).to.deep.equal(threeQueries); - }); - }); - } -); + }) + .clickOutside(); + cy.intercept('PUT', '/api/detection_engine/rules').as('saveRuleMultiQuery'); + + cy.contains('Save changes').click(); + cy.wait('@saveRuleMultiQuery', { timeout: 15000 }).should(({ request }) => { + const threeQueries = [ + { + interval: 3600, + query: 'SELECT * FROM memory_info;', + platform: 'linux', + id: Object.keys(multiQueryPackData.queries)[0], + }, + { + interval: 3600, + query: 'SELECT * FROM system_info;', + id: Object.keys(multiQueryPackData.queries)[1], + }, + { + interval: 10, + query: 'select opera_extensions.* from users join opera_extensions using (uid);', + id: Object.keys(multiQueryPackData.queries)[2], + }, + ]; + expect(request.body.response_actions[0].params.queries).to.deep.equal(threeQueries); + }); + }); +}); diff --git a/x-pack/plugins/osquery/cypress/e2e/all/packs_integration.cy.ts b/x-pack/plugins/osquery/cypress/e2e/all/packs_integration.cy.ts index 68c151d5138f8a..417394784bd4d7 100644 --- a/x-pack/plugins/osquery/cypress/e2e/all/packs_integration.cy.ts +++ b/x-pack/plugins/osquery/cypress/e2e/all/packs_integration.cy.ts @@ -104,8 +104,7 @@ describe('ALL - Packs', { tags: ['@ess', '@serverless'] }, () => { } ); - // FLAKY: https://github.com/elastic/kibana/issues/176543 - describe.skip('Load prebuilt packs', { tags: ['@ess', '@serverless'] }, () => { + describe('Load prebuilt packs', { tags: ['@ess', '@serverless'] }, () => { afterEach(() => { cleanupAllPrebuiltPacks(); }); @@ -164,6 +163,7 @@ describe('ALL - Packs', { tags: ['@ess', '@serverless'] }, () => { cy.contains('New live query').click(); cy.contains('Run a set of queries in a pack.').click(); cy.getBySel(LIVE_QUERY_EDITOR).should('not.exist'); + cy.getBySel('globalLoadingIndicator').should('not.exist'); cy.getBySel('select-live-pack').click().type('osquery-monitoring{downArrow}{enter}'); selectAllAgents(); submitQuery(); diff --git a/x-pack/plugins/osquery/cypress/plugins/index.ts b/x-pack/plugins/osquery/cypress/plugins/index.ts index 8a8e6542021344..ee375ff757c980 100644 --- a/x-pack/plugins/osquery/cypress/plugins/index.ts +++ b/x-pack/plugins/osquery/cypress/plugins/index.ts @@ -27,8 +27,6 @@ // @ts-ignore // eslint-disable-next-line @typescript-eslint/no-explicit-any module.exports = (on: any, config: any) => { - // eslint-disable-next-line @typescript-eslint/no-var-requires - require('@cypress/code-coverage/task')(on, config); // eslint-disable-next-line @typescript-eslint/no-var-requires require('@cypress/grep/src/plugin')(config); diff --git a/x-pack/plugins/osquery/cypress/support/coverage.ts b/x-pack/plugins/osquery/cypress/support/coverage.ts deleted file mode 100644 index ddcb99477e9166..00000000000000 --- a/x-pack/plugins/osquery/cypress/support/coverage.ts +++ /dev/null @@ -1,277 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -/* eslint-disable prettier/prettier,no-console,@typescript-eslint/ban-ts-comment,@typescript-eslint/no-var-requires,import/no-extraneous-dependencies,padding-line-between-statements */ - -// / -// @ts-check - -// TODO: we should be able to remove this ts-ignore while using isolatedModules -// this is a skip for the errors created when typechecking with isolatedModules -// @ts-ignore - -const dayjs = require('dayjs'); -const duration = require('dayjs/plugin/duration'); -// const { filterSpecsFromCoverage } = require('./support-utils'); - -dayjs.extend(duration); - - -/** - * Sends collected code coverage object to the backend code - * via "cy.task". - */ -const sendCoverage = (coverage: any, pathname = '/') => { - logMessage(`Saving code coverage for **${pathname}**`); - - // const withoutSpecs = filterSpecsFromCoverage(coverage); - const appCoverageOnly = filterSupportFilesFromCoverage(coverage); - - // stringify coverage object for speed - cy.task('combineCoverage', JSON.stringify(appCoverageOnly), { - log: false, - }); -}; - -/** - * Consistently logs the given string to the Command Log - * so the user knows the log message is coming from this plugin. - * @param {string} s Message to log. - */ -const logMessage = (s: string) => { - cy.log(`${s} \`[@cypress/code-coverage]\``); -}; - -/** - * Removes support file from the coverage object. - * If there are more files loaded from support folder, also removes them - */ -const filterSupportFilesFromCoverage = (totalCoverage: any) => { - // @ts-expect-error update types - const integrationFolder = Cypress.config('e2eFolder'); - const supportFile = Cypress.config('supportFile'); - - /** @type {string} Cypress run-time config has the support folder string */ - // @ts-ignore - const supportFolder = Cypress.config('supportFolder'); - - const isSupportFile = (filename: string) => filename === supportFile; - - let coverage = Cypress._.omitBy(totalCoverage, (fileCoverage, filename) => - isSupportFile(filename) - ); - - // check the edge case - // if we have files from support folder AND the support folder is not same - // as the integration, or its prefix (this might remove all app source files) - // then remove all files from the support folder - // @ts-expect-error update types - if (!integrationFolder.startsWith(supportFolder)) { - // remove all covered files from support folder - coverage = Cypress._.omitBy(totalCoverage, (fileCoverage, filename) => - filename.startsWith(supportFolder) - ); - } - return coverage; -}; - -const registerHooks = () => { - let windowCoverageObjects: any[]; - - const hasE2ECoverage = () => Boolean(windowCoverageObjects.length); - - // @ts-ignore - const hasUnitTestCoverage = () => Boolean(window.__coverage__); - - before(() => { - // we need to reset the coverage when running - // in the interactive mode, otherwise the counters will - // keep increasing every time we rerun the tests - const logInstance = Cypress.log({ - name: 'Coverage', - message: ['Reset [@cypress/code-coverage]'], - }); - - cy.task( - 'resetCoverage', - { - // @ts-ignore - isInteractive: Cypress.config('isInteractive'), - }, - { log: false } - ).then(() => { - logInstance.end(); - }); - }); - - beforeEach(() => { - // each object will have the coverage and url pathname - // to let the user know the coverage has been collected - windowCoverageObjects = []; - - const saveCoverageObject = (win: any) => { - console.log('wwwww', win, win.windows?.__coverage__, win.__coverage__); - // if application code has been instrumented, the app iframe "window" has an object - const applicationSourceCoverage = win.__coverage__; - if (!applicationSourceCoverage) { - return; - } - - if ( - Cypress._.find(windowCoverageObjects, { - coverage: applicationSourceCoverage, - }) - ) { - // this application code coverage object is already known - // which can happen when combining `window:load` and `before` callbacks - return; - } - - windowCoverageObjects.push({ - coverage: applicationSourceCoverage, - pathname: win.location.pathname, - }); - }; - - // save reference to coverage for each app window loaded in the test - cy.on('window:load', saveCoverageObject); - - // save reference if visiting a page inside a before() hook - cy.window({ log: false }).then(saveCoverageObject); - }); - - afterEach(() => { - // save coverage after the test - // because now the window coverage objects have been updated - windowCoverageObjects.forEach((cover) => { - sendCoverage(cover.coverage, cover.pathname); - }); - - if (!hasE2ECoverage()) { - if (hasUnitTestCoverage()) { - logMessage(`👉 Only found unit test code coverage.`); - } else { - const expectBackendCoverageOnly = Cypress._.get( - Cypress.env('codeCoverage'), - 'expectBackendCoverageOnly', - false - ); - if (!expectBackendCoverageOnly) { - logMessage(` - ⚠️ Could not find any coverage information in your application - by looking at the window coverage object. - Did you forget to instrument your application? - See [code-coverage#instrument-your-application](https://github.com/cypress-io/code-coverage#instrument-your-application) - `); - } - } - } - }); - - after(() => { - // I wish I could fail the tests if there is no code coverage information - // but throwing an error here does not fail the test run due to - // https://github.com/cypress-io/cypress/issues/2296 - - // there might be server-side code coverage information - // we should grab it once after all tests finish - // @ts-ignore - const baseUrl = Cypress.config('baseUrl') || cy.state('window').origin; - // @ts-ignore - const runningEndToEndTests = baseUrl !== Cypress.config('proxyUrl'); - const specType = Cypress._.get(Cypress.spec, 'specType', 'integration'); - const isIntegrationSpec = specType === 'integration'; - - if (runningEndToEndTests && isIntegrationSpec) { - // we can only request server-side code coverage - // if we are running end-to-end tests, - // otherwise where do we send the request? - const url = Cypress._.get(Cypress.env('codeCoverage'), 'url', '/__coverage__'); - cy.request({ - url, - log: false, - failOnStatusCode: false, - }) - .then((r) => Cypress._.get(r, 'body.coverage', null)) - .then((coverage) => { - if (!coverage) { - // we did not get code coverage - this is the - // original failed request - const expectBackendCoverageOnly = Cypress._.get( - Cypress.env('codeCoverage'), - 'expectBackendCoverageOnly', - false - ); - if (expectBackendCoverageOnly) { - throw new Error(`Expected to collect backend code coverage from ${url}`); - } else { - // we did not really expect to collect the backend code coverage - return; - } - } - sendCoverage(coverage, 'backend'); - }); - } - }); - - after(() => { - // collect and merge frontend coverage - - // if spec bundle has been instrumented (using Cypress preprocessor) - // then we will have unit test coverage - // NOTE: spec iframe is NOT reset between the tests, so we can grab - // the coverage information only once after all tests have finished - // @ts-ignore - const unitTestCoverage = window.__coverage__; - if (unitTestCoverage) { - sendCoverage(unitTestCoverage, 'unit'); - } - }); - - after(() => { - // when all tests finish, lets generate the coverage report - const logInstance = Cypress.log({ - name: 'Coverage', - message: ['Generating report [@cypress/code-coverage]'], - }); - cy.task('coverageReport', null, { - timeout: dayjs.duration(3, 'minutes').asMilliseconds(), - log: false, - }).then((coverageReportFolder) => { - logInstance.set('consoleProps', () => ({ - 'coverage report folder': coverageReportFolder, - })); - logInstance.end(); - return coverageReportFolder; - }); - }); -}; - -// to disable code coverage commands and save time -// pass environment variable coverage=false -// cypress run --env coverage=false -// or -// CYPRESS_coverage=false cypress run -// see https://on.cypress.io/environment-variables - -// to avoid "coverage" env variable being case-sensitive, convert to lowercase -const cyEnvs = Cypress._.mapKeys(Cypress.env(), (value, key) => key.toLowerCase()); - -if (cyEnvs.coverage === false) { - console.log('Skipping code coverage hooks'); -} else if (Cypress.env('codeCoverageTasksRegistered') !== true) { - // register a hook just to log a message - before(() => { - logMessage(` - ⚠️ Code coverage tasks were not registered by the plugins file. - See [support issue](https://github.com/cypress-io/code-coverage/issues/179) - for possible workarounds. - `); - }); -} else { - registerHooks(); -} diff --git a/x-pack/plugins/osquery/cypress/tasks/live_query.ts b/x-pack/plugins/osquery/cypress/tasks/live_query.ts index b1ad8124dc8c6a..cf6bf6020f9030 100644 --- a/x-pack/plugins/osquery/cypress/tasks/live_query.ts +++ b/x-pack/plugins/osquery/cypress/tasks/live_query.ts @@ -69,11 +69,14 @@ export const checkResults = () => { export const typeInECSFieldInput = (text: string, index = 0) => cy.getBySel('ECS-field-input').eq(index).type(text); + export const typeInOsqueryFieldInput = (text: string, index = 0) => cy .getBySel('osqueryColumnValueSelect') .eq(index) .within(() => { + cy.getBySel('comboBoxInput').click(); + cy.getBySel('globalLoadingIndicator').should('not.exist'); cy.getBySel('comboBoxInput').type(text); }); diff --git a/x-pack/plugins/screenshotting/server/browsers/chromium/driver_factory/args.test.ts b/x-pack/plugins/screenshotting/server/browsers/chromium/driver_factory/args.test.ts index c6b1ffb8c10d77..6e955fa3928aad 100644 --- a/x-pack/plugins/screenshotting/server/browsers/chromium/driver_factory/args.test.ts +++ b/x-pack/plugins/screenshotting/server/browsers/chromium/driver_factory/args.test.ts @@ -51,7 +51,7 @@ describe('headless webgl arm mac workaround', () => { // please double-check that the --use-angle flag is still needed for arm macs // instead of --use-angle you may need --enable-gpu expect(getChromiumPackage().binaryChecksum).toBe( - '9ff994371f828a9e7ac8c69f95fd1d38b1115c438f4f94a4d75a41843ec53673' + 'e5d4ccdbf3b66532c7c0973be2d5bbd3189079646ced55fe4db61d8e7e7bfc7e' ); // just putting this here so that someone updating the chromium version will see this comment }); }); diff --git a/x-pack/plugins/screenshotting/server/browsers/chromium/paths.ts b/x-pack/plugins/screenshotting/server/browsers/chromium/paths.ts index 1ec89f1abe797d..21dde6af6b7de6 100644 --- a/x-pack/plugins/screenshotting/server/browsers/chromium/paths.ts +++ b/x-pack/plugins/screenshotting/server/browsers/chromium/paths.ts @@ -44,10 +44,10 @@ export class ChromiumArchivePaths { platform: 'darwin', architecture: 'x64', archiveFilename: 'chrome-mac.zip', - archiveChecksum: 'd9b07faf9607cabf019282e30b81324542b259b9e1e1e85b9ac550fb680cf84d', - binaryChecksum: 'bf8ee3dcf9d4124c9dcaf3986a4ff633b2c7e12d57e06813aa7441b22935765d', + archiveChecksum: 'f69bb2f5f402aa2bdd28ccab3a9b36857d1591a1f443fa5b8865df644805cb96', + binaryChecksum: 'c6289a1a1d45021b2259ea0c9ae65ea37199452b5457831680a5e192a3f19add', binaryRelativePath: 'chrome-mac/Chromium.app/Contents/MacOS/Chromium', - revision: 1250580, + revision: 1274550, location: 'common', archivePath: 'Mac', isPreInstalled: false, @@ -56,10 +56,10 @@ export class ChromiumArchivePaths { platform: 'darwin', architecture: 'arm64', archiveFilename: 'chrome-mac.zip', - archiveChecksum: '8278ea0dba09f3cb8e74ed87ef0d10930c5bbc66f46711dfe82fa807a2053611', - binaryChecksum: '9ff994371f828a9e7ac8c69f95fd1d38b1115c438f4f94a4d75a41843ec53673', + archiveChecksum: '55d8cfe56d4461645a663de263ae670f78cc69b69aee16a62c47f361fa9a62f2', + binaryChecksum: 'e5d4ccdbf3b66532c7c0973be2d5bbd3189079646ced55fe4db61d8e7e7bfc7e', binaryRelativePath: 'chrome-mac/Chromium.app/Contents/MacOS/Chromium', - revision: 1250595, // 1250580 is not available for Mac_Arm + revision: 1274557, // 1274542 is not available for Mac_Arm location: 'common', archivePath: 'Mac_Arm', isPreInstalled: false, @@ -67,22 +67,22 @@ export class ChromiumArchivePaths { { platform: 'linux', architecture: 'x64', - archiveFilename: 'chromium-81bc525-locales-linux_x64.zip', - archiveChecksum: 'b5d6bfca425e166d8dc15c556a935d79f1f23a4c7d52cecf16a8245c215336ce', - binaryChecksum: 'ec1c63d3509513b1324c58725c08668e3ff445f2e459ba934c1232016e27701e', + archiveFilename: 'chromium-46cf136-locales-linux_x64.zip', + archiveChecksum: '8ea5f2d72352230f7927725a6ffd6d5fb462a0c8ad76e320003748b62df6d221', + binaryChecksum: 'e7f8109ef7535dab500166b335524dfa4e92324fa31a2a61f510a5fa5afc2eee', binaryRelativePath: 'headless_shell-linux_x64/headless_shell', - revision: 1250580, + revision: 1274542, location: 'custom', isPreInstalled: true, }, { platform: 'linux', architecture: 'arm64', - archiveFilename: 'chromium-81bc525-locales-linux_arm64.zip', - archiveChecksum: 'b2ec85aa31956d272a7ab221edeea6ca41f8719ebf22f1d1853b8c4827babeaa', - binaryChecksum: 'f43490761fa34d511208abf684c0c9ee48fedbd2d0e311404779f9dc4e33549c', + archiveFilename: 'chromium-46cf136-locales-linux_arm64.zip', + archiveChecksum: '7d01fe8a78a019cf714c913d37353f85d54c4c7d4fde91d6c96605d259a66414', + binaryChecksum: 'd1a8b8708dc5ced8a9c526a0d823a4074325573f9c06fabe14e18fd3a36691c9', binaryRelativePath: 'headless_shell-linux_arm64/headless_shell', - revision: 1250580, + revision: 1274542, location: 'custom', isPreInstalled: true, }, @@ -90,10 +90,10 @@ export class ChromiumArchivePaths { platform: 'win32', architecture: 'x64', archiveFilename: 'chrome-win.zip', - archiveChecksum: '6d1838bd84bf182e75fc31f387971b9c7ca3204ae67d4724fe34fe6a953c1662', - binaryChecksum: 'f785da29c45a5301dde6a68cb80f97fcc7233e8810db7550cfa053bc5968a61c', + archiveChecksum: 'd5e9691fb9d378ae13c8956be0d9eb45674d033e8b38125ace2f2fdd458e5ca0', + binaryChecksum: '4d8f95e4f218fc3010ab2f0d8f8674f16d554622218e73f9a7c8a22dbba2e078', binaryRelativePath: path.join('chrome-win', 'chrome.exe'), - revision: 1250580, + revision: 1274557, location: 'common', archivePath: 'Win', isPreInstalled: true, diff --git a/x-pack/plugins/search_playground/__mocks__/fetch_query_source_fields.mock.ts b/x-pack/plugins/search_playground/__mocks__/fetch_query_source_fields.mock.ts index 514d84f365fe70..ecdb85dfaa4457 100644 --- a/x-pack/plugins/search_playground/__mocks__/fetch_query_source_fields.mock.ts +++ b/x-pack/plugins/search_playground/__mocks__/fetch_query_source_fields.mock.ts @@ -45,6 +45,110 @@ export const ELSER_PASSAGE_CHUNKED_TWO_INDICES_DOCS = [ }, ]; +export const DENSE_INPUT_OUTPUT_ONE_INDEX = [ + { + _index: 'index2', + _id: 'KQ6Wco8BO787m9kIp1Ug', + _score: 1, + _source: { + text_embedding: [0.03889123350381851], + text: 'hello there', + model_id: '.multilingual-e5-small', + }, + }, +]; + +export const SPARSE_INPUT_OUTPUT_ONE_INDEX = [ + { + _index: 'index', + _id: 'Iw6Bco8BO787m9kIa1Wo', + _score: 1, + _source: { + text_embedding: { + interview: 0.42307013, + }, + text: 'hello there', + model_id: '.elser_model_2', + }, + }, +]; + +export const SPARSE_INPUT_OUTPUT_ONE_INDEX_FIELD_CAPS = { + indices: ['index'], + fields: { + text_embedding: { + sparse_vector: { + type: 'sparse_vector', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + text: { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + model_id: { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + 'model_id.keyword': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + }, +}; + +export const DENSE_INPUT_OUTPUT_ONE_INDEX_FIELD_CAPS = { + indices: ['index2'], + fields: { + text_embedding: { + dense_vector: { + type: 'dense_vector', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + text: { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + model_id: { + text: { + type: 'text', + metadata_field: false, + searchable: true, + aggregatable: false, + }, + }, + 'model_id.keyword': { + keyword: { + type: 'keyword', + metadata_field: false, + searchable: true, + aggregatable: true, + }, + }, + }, +}; + export const DENSE_VECTOR_DOCUMENT_FIRST = [ { _index: 'workplace_index_nested', diff --git a/x-pack/plugins/search_playground/public/hooks/use_llms_models.test.ts b/x-pack/plugins/search_playground/public/hooks/use_llms_models.test.ts index b5167537e96874..800d96a4271399 100644 --- a/x-pack/plugins/search_playground/public/hooks/use_llms_models.test.ts +++ b/x-pack/plugins/search_playground/public/hooks/use_llms_models.test.ts @@ -46,6 +46,18 @@ describe('useLLMsModels Hook', () => { value: 'gpt-3.5-turbo', promptTokenLimit: 16385, }, + { + connectorId: 'connectorId1', + connectorName: undefined, + connectorType: LLMs.openai, + disabled: false, + icon: expect.any(Function), + id: 'connectorId1gpt-4o ', + name: 'gpt-4o ', + showConnectorName: false, + value: 'gpt-4o', + promptTokenLimit: 128000, + }, { connectorId: 'connectorId1', connectorName: undefined, diff --git a/x-pack/plugins/search_playground/public/hooks/use_llms_models.ts b/x-pack/plugins/search_playground/public/hooks/use_llms_models.ts index 7212325e5bbbaa..0f4e22bfb18ee7 100644 --- a/x-pack/plugins/search_playground/public/hooks/use_llms_models.ts +++ b/x-pack/plugins/search_playground/public/hooks/use_llms_models.ts @@ -30,6 +30,7 @@ const mapLlmToModels: Record< model: 'gpt-3.5-turbo', limit: 16385, }, + { model: 'gpt-4o', limit: 128000 }, { model: 'gpt-4-turbo', limit: 128000 }, ].map((model) => ({ label: `${model.model} ${includeName ? `(${connectorName})` : ''}`, diff --git a/x-pack/plugins/search_playground/server/lib/conversational_chain.test.ts b/x-pack/plugins/search_playground/server/lib/conversational_chain.test.ts index 5d3d82d4ba80ee..8d4460f1377369 100644 --- a/x-pack/plugins/search_playground/server/lib/conversational_chain.test.ts +++ b/x-pack/plugins/search_playground/server/lib/conversational_chain.test.ts @@ -19,7 +19,8 @@ describe('conversational chain', () => { expectedFinalAnswer: string, expectedDocs: any, expectedTokens: any, - expectedSearchRequest: any + expectedSearchRequest: any, + contentField: Record = { index: 'field', website: 'body_content' } ) => { const searchMock = jest.fn().mockImplementation(() => { return { @@ -37,6 +38,9 @@ describe('conversational chain', () => { _id: '1', _source: { body_content: 'value2', + metadata: { + source: 'value3', + }, }, }, ], @@ -69,7 +73,7 @@ describe('conversational chain', () => { }, }, }), - content_field: { index: 'field', website: 'body_content' }, + content_field: contentField, size: 3, }, prompt: 'you are a QA bot', @@ -147,6 +151,41 @@ describe('conversational chain', () => { ); }); + it('should be able to create a conversational chain with nested field', async () => { + await createTestChain( + ['the final answer'], + [ + { + id: '1', + role: 'user', + content: 'what is the work from home policy?', + }, + ], + 'the final answer', + [ + { + documents: [ + { metadata: { _id: '1', _index: 'index' }, pageContent: 'value' }, + { metadata: { _id: '1', _index: 'website' }, pageContent: 'value3' }, + ], + type: 'retrieved_docs', + }, + ], + [ + { type: 'context_token_count', count: 15 }, + { type: 'prompt_token_count', count: 5 }, + ], + [ + { + method: 'POST', + path: '/index,website/_search', + body: { query: { match: { field: 'what is the work from home policy?' } }, size: 3 }, + }, + ], + { index: 'field', website: 'metadata.source' } + ); + }); + it('asking with chat history should re-write the question', async () => { await createTestChain( ['rewrite the question', 'the final answer'], diff --git a/x-pack/plugins/search_playground/server/lib/elasticsearch_retriever.ts b/x-pack/plugins/search_playground/server/lib/elasticsearch_retriever.ts index a34848298edf4b..4a2c3344b29342 100644 --- a/x-pack/plugins/search_playground/server/lib/elasticsearch_retriever.ts +++ b/x-pack/plugins/search_playground/server/lib/elasticsearch_retriever.ts @@ -13,6 +13,7 @@ import { SearchHit, SearchResponse, } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { getValueForSelectedField } from '../utils/get_value_for_selected_field'; export interface ElasticsearchRetrieverInput extends BaseRetrieverInput { /** @@ -87,8 +88,11 @@ export class ElasticsearchRetriever extends BaseRetriever { ? this.content_field : this.content_field[hit._index as string]; + // we need to iterate over the _source object to get the value of complex key definition such as metadata.source + const valueForSelectedField = getValueForSelectedField(hit._source, pageContentFieldKey); + return new Document({ - pageContent: hit._source[pageContentFieldKey], + pageContent: valueForSelectedField, metadata: { _score: hit._score, _id: hit._id, diff --git a/x-pack/plugins/search_playground/server/lib/fetch_query_source_fields.test.ts b/x-pack/plugins/search_playground/server/lib/fetch_query_source_fields.test.ts index 048c0a8fd83e1a..70b640f1ea70da 100644 --- a/x-pack/plugins/search_playground/server/lib/fetch_query_source_fields.test.ts +++ b/x-pack/plugins/search_playground/server/lib/fetch_query_source_fields.test.ts @@ -14,6 +14,10 @@ import { ELSER_PASSAGE_CHUNKED_TWO_INDICES, ELSER_PASSAGE_CHUNKED_TWO_INDICES_DOCS, SPARSE_DOC_SINGLE_INDEX, + DENSE_INPUT_OUTPUT_ONE_INDEX, + DENSE_INPUT_OUTPUT_ONE_INDEX_FIELD_CAPS, + SPARSE_INPUT_OUTPUT_ONE_INDEX, + SPARSE_INPUT_OUTPUT_ONE_INDEX_FIELD_CAPS, } from '../../__mocks__/fetch_query_source_fields.mock'; import { parseFieldsCapabilities } from './fetch_query_source_fields'; @@ -195,5 +199,57 @@ describe('fetch_query_source_fields', () => { }, }); }); + + it('should return the correct fields for dense vector using input_output configuration', () => { + expect( + parseFieldsCapabilities(DENSE_INPUT_OUTPUT_ONE_INDEX_FIELD_CAPS, [ + { + index: 'index2', + doc: DENSE_INPUT_OUTPUT_ONE_INDEX[0], + }, + ]) + ).toEqual({ + index2: { + bm25_query_fields: ['text'], + dense_vector_query_fields: [ + { + field: 'text_embedding', + indices: ['index2'], + model_id: '.multilingual-e5-small', + nested: false, + }, + ], + elser_query_fields: [], + source_fields: ['text'], + skipped_fields: 2, + }, + }); + }); + + it('should return the correct fields for sparse vector using input_output configuration', () => { + expect( + parseFieldsCapabilities(SPARSE_INPUT_OUTPUT_ONE_INDEX_FIELD_CAPS, [ + { + index: 'index', + doc: SPARSE_INPUT_OUTPUT_ONE_INDEX[0], + }, + ]) + ).toEqual({ + index: { + bm25_query_fields: ['text'], + elser_query_fields: [ + { + field: 'text_embedding', + indices: ['index'], + model_id: '.elser_model_2', + nested: false, + }, + ], + dense_vector_query_fields: [], + source_fields: ['text'], + skipped_fields: 2, + }, + }); + }); }); }); diff --git a/x-pack/plugins/search_playground/server/lib/fetch_query_source_fields.ts b/x-pack/plugins/search_playground/server/lib/fetch_query_source_fields.ts index fb2eba4835cb28..6bea3f8f03978b 100644 --- a/x-pack/plugins/search_playground/server/lib/fetch_query_source_fields.ts +++ b/x-pack/plugins/search_playground/server/lib/fetch_query_source_fields.ts @@ -58,7 +58,16 @@ const hasModelField = (field: string, indexDoc: any, nestedField: string | false return false; }; +// For input_output inferred fields, the model_id is at the top level +const hasTopLevelModelField = (indexDoc: any) => { + return has(indexDoc.doc, `_source.model_id`); +}; + const getModelField = (field: string, indexDoc: any, nestedField: string | false) => { + if (hasTopLevelModelField(indexDoc)) { + return get(indexDoc.doc, `_source.model_id`); + } + // If the field is nested, we need to get the first occurrence as its an array const path = nestedField ? field.replace(`${nestedField}.`, `${nestedField}[0].`) : field; return get(indexDoc.doc, `_source.${[path.replace(INFERENCE_MODEL_FIELD_REGEXP, '.model_id')]}`); @@ -103,7 +112,7 @@ export const parseFieldsCapabilities = ( // metadata fields that are ignored const shouldIgnoreField = (field: string) => { - return !field.endsWith('.model_id'); + return !field.endsWith('model_id'); }; const querySourceFields = Object.keys(fields).reduce( @@ -120,7 +129,13 @@ export const parseFieldsCapabilities = ( if ('rank_features' in field || 'sparse_vector' in field) { const nestedField = isFieldNested(fieldKey, fieldCapsResponse); - if (!nestedField) { + // Check if the sparse vector field has a model_id associated with it + // skip this field if has no model associated with it + // and the vectors were embedded outside of stack + if ( + (hasModelField(fieldKey, indexDoc, nestedField) || hasTopLevelModelField(indexDoc)) && + !nestedField + ) { const elserModelField = { field: fieldKey, model_id: getModelField(fieldKey, indexDoc, nestedField), @@ -137,7 +152,10 @@ export const parseFieldsCapabilities = ( // Check if the dense vector field has a model_id associated with it // skip this field if has no model associated with it // and the vectors were embedded outside of stack - if (hasModelField(fieldKey, indexDoc, nestedField) && !nestedField) { + if ( + (hasModelField(fieldKey, indexDoc, nestedField) || hasTopLevelModelField(indexDoc)) && + !nestedField + ) { const denseVectorField = { field: fieldKey, model_id: getModelField(fieldKey, indexDoc, nestedField), diff --git a/x-pack/plugins/search_playground/server/routes.ts b/x-pack/plugins/search_playground/server/routes.ts index 60e95ed399097c..eba939e6eaa4aa 100644 --- a/x-pack/plugins/search_playground/server/routes.ts +++ b/x-pack/plugins/search_playground/server/routes.ts @@ -109,6 +109,11 @@ export function defineRoutes({ try { sourceFields = JSON.parse(data.source_fields); + sourceFields = Object.keys(sourceFields).reduce((acc, key) => { + // @ts-ignore + acc[key] = sourceFields[key][0]; + return acc; + }, {}); } catch (e) { logger.error('Failed to parse the source fields', e); throw Error(e); diff --git a/x-pack/plugins/search_playground/server/utils/get_value_for_selected_field.test.ts b/x-pack/plugins/search_playground/server/utils/get_value_for_selected_field.test.ts new file mode 100644 index 00000000000000..fb52b6145ea1c5 --- /dev/null +++ b/x-pack/plugins/search_playground/server/utils/get_value_for_selected_field.test.ts @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getValueForSelectedField } from './get_value_for_selected_field'; + +describe('getValueForSelectedField', () => { + test('should return for simple key', () => { + const hit = { + _index: 'sample-index', + _id: '8jSNY48B6iHEi98DL1C-', + _score: 0.7789394, + _source: { + test: 'The Shawshank Redemption', + metadata: { + source: + 'Over the course of several years, two convicts form a friendship, seeking consolation and, eventually, redemption through basic compassion', + }, + }, + }; + + expect(getValueForSelectedField(hit._source, 'test')).toEqual('The Shawshank Redemption'); + }); + + test('should return for combined key', () => { + const hit = { + _index: 'sample-index', + _id: '8jSNY48B6iHEi98DL1C-', + _score: 0.7789394, + _source: { + test: 'The Shawshank Redemption', + metadata: { + source: + 'Over the course of several years, two convicts form a friendship, seeking consolation and, eventually, redemption through basic compassion', + }, + }, + }; + + expect(getValueForSelectedField(hit._source, 'metadata.source')).toEqual( + 'Over the course of several years, two convicts form a friendship, seeking consolation and, eventually, redemption through basic compassion' + ); + }); + + test('should return undefined for missing key', () => { + const hit = { + _index: 'sample-index', + _id: '8jSNY48B6iHEi98DL1C-', + _score: 0.7789394, + _source: { + test: 'The Shawshank Redemption', + metadata: { + source: + 'Over the course of several years, two convicts form a friendship, seeking consolation and, eventually, redemption through basic compassion', + }, + }, + }; + + expect(getValueForSelectedField(hit._source, 'metadata.sources')).toBeUndefined(); + }); +}); diff --git a/x-pack/plugins/search_playground/server/utils/get_value_for_selected_field.ts b/x-pack/plugins/search_playground/server/utils/get_value_for_selected_field.ts new file mode 100644 index 00000000000000..6aab9cafb387a8 --- /dev/null +++ b/x-pack/plugins/search_playground/server/utils/get_value_for_selected_field.ts @@ -0,0 +1,11 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +// @ts-ignore +export const getValueForSelectedField = (source, path: string): string => { + return path.split('.').reduce((acc, key) => acc[key], source); +}; diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/page_title/index.tsx b/x-pack/plugins/security_solution/public/attack_discovery/pages/page_title/index.tsx index 236ad73a6995b6..998df2ad24f88b 100644 --- a/x-pack/plugins/security_solution/public/attack_discovery/pages/page_title/index.tsx +++ b/x-pack/plugins/security_solution/public/attack_discovery/pages/page_title/index.tsx @@ -5,21 +5,12 @@ * 2.0. */ -import { - EuiFlexGroup, - EuiFlexItem, - EuiIcon, - EuiTitle, - EuiToolTip, - useEuiTheme, -} from '@elastic/eui'; +import { EuiBetaBadge, EuiFlexGroup, EuiFlexItem, EuiTitle, useEuiTheme } from '@elastic/eui'; import { css } from '@emotion/react'; import React from 'react'; import * as i18n from './translations'; -const BETA_BADGE_SIZE = 24; // px - const PageTitleComponent: React.FC = () => { const { euiTheme } = useEuiTheme(); @@ -31,29 +22,17 @@ const PageTitleComponent: React.FC = () => { - - - - + + ); diff --git a/x-pack/plugins/security_solution/public/attack_discovery/pages/page_title/translations.ts b/x-pack/plugins/security_solution/public/attack_discovery/pages/page_title/translations.ts index 5d2b8bf92dbac8..a0cd457f89070e 100644 --- a/x-pack/plugins/security_solution/public/attack_discovery/pages/page_title/translations.ts +++ b/x-pack/plugins/security_solution/public/attack_discovery/pages/page_title/translations.ts @@ -20,3 +20,11 @@ export const BETA = i18n.translate( defaultMessage: 'Beta', } ); + +export const BETA_TOOLTIP = i18n.translate( + 'xpack.securitySolution.attackDiscovery.pages.pageTitle.betaTooltip', + { + defaultMessage: + 'This functionality is in beta and is subject to change. Please use Attack Discovery with caution in production environments.', + } +); diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/__mocks__/mock.ts b/x-pack/plugins/security_solution/public/explore/network/components/embeddables/__mocks__/mock.ts index af915a63dea317..02889acb048664 100644 --- a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/__mocks__/mock.ts +++ b/x-pack/plugins/security_solution/public/explore/network/components/embeddables/__mocks__/mock.ts @@ -398,36 +398,9 @@ const mockApmDataStreamClientServerLineLayer = { label: 'traces-apm*,logs-apm*,metrics-apm*,apm-* | Line', }; -export const mockLayerList = [ - { - sourceDescriptor: { type: 'EMS_TMS', isAutoSelect: true }, - id: 'uuidv4()', - label: null, - minZoom: 0, - maxZoom: 24, - alpha: 1, - visible: true, - style: null, - type: LAYER_TYPE.EMS_VECTOR_TILE, - }, - mockLineLayer, - mockDestinationLayer, - mockSourceLayer, - mockLayerGroup, -]; +export const mockLayerList = [mockLineLayer, mockDestinationLayer, mockSourceLayer, mockLayerGroup]; export const mockLayerListDouble = [ - { - sourceDescriptor: { type: 'EMS_TMS', isAutoSelect: true }, - id: 'uuidv4()', - label: null, - minZoom: 0, - maxZoom: 24, - alpha: 1, - visible: true, - style: null, - type: LAYER_TYPE.EMS_VECTOR_TILE, - }, mockLineLayer, mockDestinationLayer, mockSourceLayer, @@ -439,17 +412,6 @@ export const mockLayerListDouble = [ ]; export const mockLayerListMixed = [ - { - sourceDescriptor: { type: 'EMS_TMS', isAutoSelect: true }, - id: 'uuidv4()', - label: null, - minZoom: 0, - maxZoom: 24, - alpha: 1, - visible: true, - style: null, - type: LAYER_TYPE.EMS_VECTOR_TILE, - }, mockLineLayer, mockDestinationLayer, mockSourceLayer, diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/create_embeddable.test.tsx b/x-pack/plugins/security_solution/public/explore/network/components/embeddables/create_embeddable.test.tsx deleted file mode 100644 index 5ef6d2a19a28f7..00000000000000 --- a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/create_embeddable.test.tsx +++ /dev/null @@ -1,54 +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 { embeddablePluginMock } from '@kbn/embeddable-plugin/public/mocks'; -import { createEmbeddable } from './create_embeddable'; -import { createHtmlPortalNode } from 'react-reverse-portal'; - -const mockEmbeddable = embeddablePluginMock.createStartContract(); - -mockEmbeddable.getEmbeddableFactory = jest.fn().mockImplementation(() => ({ - create: () => ({ - reload: jest.fn(), - setRenderTooltipContent: jest.fn(), - setLayerList: jest.fn(), - }), -})); - -describe('createEmbeddable', () => { - test('attaches refresh action', async () => { - const setQueryMock = jest.fn(); - await createEmbeddable( - [], - [], - { query: '', language: 'kuery' }, - '2020-07-07T08:20:18.966Z', - '2020-07-08T08:20:18.966Z', - setQueryMock, - createHtmlPortalNode(), - mockEmbeddable - ); - expect(setQueryMock).toHaveBeenCalledTimes(1); - }); - - test('attaches refresh action with correct reference', async () => { - const setQueryMock = jest.fn(({ id, inspect, loading, refetch }) => refetch); - const embeddable = await createEmbeddable( - [], - [], - { query: '', language: 'kuery' }, - '2020-07-07T08:20:18.966Z', - '2020-07-08T08:20:18.966Z', - setQueryMock, - createHtmlPortalNode(), - mockEmbeddable - ); - expect(setQueryMock.mock.calls[0][0].refetch).not.toBe(embeddable.reload); - setQueryMock.mock.results[0].value(); - expect(embeddable.reload).toHaveBeenCalledTimes(1); - }); -}); diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/create_embeddable.tsx b/x-pack/plugins/security_solution/public/explore/network/components/embeddables/create_embeddable.tsx deleted file mode 100644 index 9b8842650a7e26..00000000000000 --- a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/create_embeddable.tsx +++ /dev/null @@ -1,126 +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 { v4 as uuidv4 } from 'uuid'; -import React from 'react'; -import type { HtmlPortalNode } from 'react-reverse-portal'; -import { OutPortal } from 'react-reverse-portal'; -import type { Filter, Query } from '@kbn/es-query'; -import { MAP_SAVED_OBJECT_TYPE } from '@kbn/maps-plugin/public'; -import type { - RenderTooltipContentParams, - MapEmbeddable, - MapEmbeddableInput, -} from '@kbn/maps-plugin/public'; -import type { - EmbeddableStart, - EmbeddableOutput, - ErrorEmbeddable, -} from '@kbn/embeddable-plugin/public'; -import { isErrorEmbeddable, ViewMode } from '@kbn/embeddable-plugin/public'; -import type { IndexPatternMapping } from './types'; -import { getLayerList } from './map_config'; -import * as i18n from './translations'; - -import type { GlobalTimeArgs } from '../../../../common/containers/use_global_time'; - -/** - * Creates MapEmbeddable with provided initial configuration - * - * @param filters any existing global filters - * @param indexPatterns list of index patterns to configure layers for - * @param query initial query constraints as Query - * @param startDate - * @param endDate - * @param setQuery function as provided by the GlobalTime component for reacting to refresh - * @param portalNode wrapper for MapToolTip so it is not rendered in the embeddables component tree - * @param embeddableApi - * - * @throws Error if EmbeddableFactory does not exist - */ -export const createEmbeddable = async ( - filters: Filter[], - indexPatterns: IndexPatternMapping[], - query: Query, - startDate: GlobalTimeArgs['from'], - endDate: GlobalTimeArgs['to'], - setQuery: GlobalTimeArgs['setQuery'], - portalNode: HtmlPortalNode, - embeddableApi: EmbeddableStart -): Promise => { - const factory = embeddableApi.getEmbeddableFactory< - MapEmbeddableInput, - EmbeddableOutput, - MapEmbeddable - >(MAP_SAVED_OBJECT_TYPE); - - if (!factory) { - throw new Error('Map embeddable factory undefined'); - } - - const input: MapEmbeddableInput = { - title: i18n.MAP_TITLE, - attributes: { title: '' }, - id: uuidv4(), - filters, - hidePanelTitles: true, - query, - timeRange: { - from: new Date(startDate).toISOString(), - to: new Date(endDate).toISOString(), - }, - viewMode: ViewMode.VIEW, - isLayerTOCOpen: false, - openTOCDetails: [], - hideFilterActions: false, - mapCenter: { lon: -1.05469, lat: 15.96133, zoom: 1 }, - disabledActions: ['CUSTOM_TIME_RANGE', 'CUSTOM_TIME_RANGE_BADGE'], - }; - - const renderTooltipContent = ({ - addFilters, - closeTooltip, - features, - isLocked, - getLayerName, - loadFeatureProperties, - loadFeatureGeometry, - }: RenderTooltipContentParams) => { - const props = { - addFilters, - closeTooltip, - features, - isLocked, - getLayerName, - loadFeatureProperties, - loadFeatureGeometry, - }; - return ; - }; - - const embeddableObject = await factory.create(input); - - if (!embeddableObject) { - throw new Error('Map embeddable is undefined'); - } - - if (!isErrorEmbeddable(embeddableObject)) { - embeddableObject.setRenderTooltipContent(renderTooltipContent); - // @ts-expect-error - embeddableObject.setLayerList(getLayerList(indexPatterns)); - } - - // Wire up to app refresh action - setQuery({ - id: 'embeddedMap', // Scope to page type if using map elsewhere - inspect: null, - loading: false, - refetch: () => embeddableObject.reload(), - }); - - return embeddableObject; -}; diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/embedded_map.test.tsx b/x-pack/plugins/security_solution/public/explore/network/components/embeddables/embedded_map.test.tsx index c25865eebd7b04..2e1c7b7d986922 100644 --- a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/embedded_map.test.tsx +++ b/x-pack/plugins/security_solution/public/explore/network/components/embeddables/embedded_map.test.tsx @@ -10,14 +10,11 @@ import React from 'react'; import { TestProviders, mockGlobalState, createMockStore } from '../../../../common/mock'; import { EmbeddedMapComponent } from './embedded_map'; -import { createEmbeddable } from './create_embeddable'; import { getLayerList } from './map_config'; import { useIsFieldInIndexPattern } from '../../../containers/fields'; -import { buildTimeRangeFilter } from '../../../../detections/components/alerts_table/helpers'; import { setStubKibanaServices } from '@kbn/embeddable-plugin/public/mocks'; -jest.mock('./create_embeddable'); jest.mock('./map_config'); jest.mock('../../../../common/containers/sourcerer'); jest.mock('../../../containers/fields'); @@ -33,6 +30,9 @@ jest.mock('../../../../common/lib/kibana', () => ({ siem: { networkMap: '' }, }, }, + maps: { + Map: () =>
{'mockMap'}
, + }, storage: { get: mockGetStorage, set: mockSetStorage, @@ -46,12 +46,7 @@ jest.mock('../../../../common/lib/kibana', () => ({ remove: jest.fn(), }), })); -jest.mock('@kbn/embeddable-plugin/public', () => ({ - ...jest.requireActual('@kbn/embeddable-plugin/public'), - EmbeddablePanel: jest.fn().mockReturnValue(
), -})); -const mockCreateEmbeddable = createEmbeddable as jest.Mock; const mockUseIsFieldInIndexPattern = useIsFieldInIndexPattern as jest.Mock; const mockGetStorage = jest.fn(); const mockSetStorage = jest.fn(); @@ -92,35 +87,6 @@ const mockState = { }, }; const defaultMockStore = createMockStore(mockState); -const mockUpdateInput = jest.fn(); -const embeddableValue = { - destroyed: false, - enhancements: { dynamicActions: {} }, - getActionContext: jest.fn(), - getFilterActions: jest.fn(), - id: '70969ddc-4d01-4048-8073-4ea63d595638', - input: { - viewMode: 'view', - title: 'Source -> Destination Point-to-Point Map', - id: '70969ddc-4d01-4048-8073-4ea63d595638', - filters: Array(0), - hidePanelTitles: true, - }, - input$: {}, - isContainer: false, - output: {}, - output$: {}, - parent: undefined, - parentSubscription: undefined, - renderComplete: {}, - runtimeId: 1, - reload: jest.fn(), - setLayerList: jest.fn(), - setEventHandlers: jest.fn(), - setRenderTooltipContent: jest.fn(), - type: 'map', - updateInput: mockUpdateInput, -}; const testProps = { endDate: '2019-08-28T05:50:57.877Z', filters: [], @@ -132,7 +98,6 @@ describe('EmbeddedMapComponent', () => { beforeEach(() => { setQuery.mockClear(); mockGetStorage.mockReturnValue(true); - mockCreateEmbeddable.mockResolvedValue(embeddableValue); mockUseIsFieldInIndexPattern.mockReturnValue(() => true); // stub Kibana services for the embeddable plugin to ensure embeddable panel renders. @@ -154,21 +119,7 @@ describe('EmbeddedMapComponent', () => { }); }); - test('calls updateInput with time range filter', async () => { - render( - - - - ); - await waitFor(() => { - expect(mockUpdateInput).toHaveBeenCalledTimes(2); - expect(mockUpdateInput).toHaveBeenNthCalledWith(2, { - filters: buildTimeRangeFilter(testProps.startDate, testProps.endDate), - }); - }); - }); - - test('renders EmbeddablePanel from embeddable plugin', async () => { + test('renders Map', async () => { const { getByTestId, queryByTestId } = render( @@ -176,9 +127,8 @@ describe('EmbeddedMapComponent', () => { ); await waitFor(() => { - expect(getByTestId('EmbeddablePanel')).toBeInTheDocument(); + expect(getByTestId('MapPanel')).toBeInTheDocument(); expect(queryByTestId('IndexPatternsMissingPrompt')).not.toBeInTheDocument(); - expect(queryByTestId('loading-spinner')).not.toBeInTheDocument(); }); }); @@ -198,24 +148,8 @@ describe('EmbeddedMapComponent', () => { ); await waitFor(() => { - expect(queryByTestId('EmbeddablePanel')).not.toBeInTheDocument(); + expect(queryByTestId('MapPanel')).not.toBeInTheDocument(); expect(getByTestId('IndexPatternsMissingPrompt')).toBeInTheDocument(); - expect(queryByTestId('loading-spinner')).not.toBeInTheDocument(); - }); - }); - - test('renders Loader', async () => { - mockCreateEmbeddable.mockResolvedValue(null); - - const { getByTestId, queryByTestId } = render( - - - - ); - await waitFor(() => { - expect(queryByTestId('EmbeddablePanel')).not.toBeInTheDocument(); - expect(queryByTestId('IndexPatternsMissingPrompt')).not.toBeInTheDocument(); - expect(getByTestId('loading-spinner')).toBeInTheDocument(); }); }); diff --git a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/embedded_map.tsx b/x-pack/plugins/security_solution/public/explore/network/components/embeddables/embedded_map.tsx index ee36fb22f8a461..bec177cc5c2614 100644 --- a/x-pack/plugins/security_solution/public/explore/network/components/embeddables/embedded_map.tsx +++ b/x-pack/plugins/security_solution/public/explore/network/components/embeddables/embedded_map.tsx @@ -10,23 +10,17 @@ import { EuiAccordion, EuiLink, EuiText } from '@elastic/eui'; import React, { useCallback, useEffect, useState, useMemo } from 'react'; import { useSelector } from 'react-redux'; -import { createHtmlPortalNode, InPortal } from 'react-reverse-portal'; +import { createHtmlPortalNode, InPortal, OutPortal } from 'react-reverse-portal'; import styled, { css } from 'styled-components'; import type { Filter, Query } from '@kbn/es-query'; -import { - EmbeddablePanel, - isErrorEmbeddable, - type ErrorEmbeddable, -} from '@kbn/embeddable-plugin/public'; -import type { MapEmbeddable } from '@kbn/maps-plugin/public/embeddable'; import { isEqual } from 'lodash/fp'; +import type { MapApi, RenderTooltipContentParams } from '@kbn/maps-plugin/public'; +import type { LayerDescriptor } from '@kbn/maps-plugin/common'; import { buildTimeRangeFilter } from '../../../../detections/components/alerts_table/helpers'; import { useAppToasts } from '../../../../common/hooks/use_app_toasts'; import { useIsFieldInIndexPattern } from '../../../containers/fields'; -import { Loader } from '../../../../common/components/loader'; import type { GlobalTimeArgs } from '../../../../common/containers/use_global_time'; import { Embeddable } from './embeddable'; -import { createEmbeddable } from './create_embeddable'; import { IndexPatternsMissingPrompt } from './index_patterns_missing_prompt'; import { MapToolTip } from './map_tool_tip/map_tool_tip'; import * as i18n from './translations'; @@ -43,7 +37,7 @@ interface EmbeddableMapProps { maintainRatio?: boolean; } -const EmbeddableMap = styled.div.attrs(() => ({ +const EmbeddableMapRatioHolder = styled.div.attrs(() => ({ className: 'siemEmbeddable__map', }))` .embPanel { @@ -89,7 +83,18 @@ const StyledEuiAccordion = styled(EuiAccordion)` } `; -EmbeddableMap.displayName = 'EmbeddableMap'; +EmbeddableMapRatioHolder.displayName = 'EmbeddableMapRatioHolder'; + +const EmbeddableMapWrapper = styled.div` + position: relative; +`; + +const EmbeddableMap = styled.div` + height: 100%; + width: 100%; + position: absolute; + top: 0; +`; export interface EmbeddedMapProps { query: Query; @@ -106,10 +111,6 @@ export const EmbeddedMapComponent = ({ setQuery, startDate, }: EmbeddedMapProps) => { - const [embeddable, setEmbeddable] = React.useState( - undefined - ); - const { services } = useKibana(); const { storage } = services; @@ -126,7 +127,7 @@ export const EmbeddedMapComponent = ({ const isFieldInIndexPattern = useIsFieldInIndexPattern(); - const [mapDataViews, setMapDataViews] = useState([]); + const [layerList, setLayerList] = useState([]); const [availableDataViews, setAvailableDataViews] = useState([]); useEffect(() => { @@ -140,11 +141,11 @@ export const EmbeddedMapComponent = ({ // ensures only index patterns with maps fields are passed const goodDataViews = availableDataViews.filter((_, i) => apiResponse[i] ?? false); if (!canceled) { - setMapDataViews(goodDataViews); + setLayerList(getLayerList(goodDataViews)); } } catch (e) { if (!canceled) { - setMapDataViews([]); + setLayerList([]); addError(e, { title: i18n.ERROR_CREATING_EMBEDDABLE }); setIsError(true); } @@ -174,88 +175,9 @@ export const EmbeddedMapComponent = ({ // Search InPortal/OutPortal for implementation touch points const portalNode = React.useMemo(() => createHtmlPortalNode(), []); - // Initial Load useEffect - useEffect(() => { - let isSubscribed = true; - async function setupEmbeddable() { - // Create & set Embeddable - try { - const embeddableObject = await createEmbeddable( - filters, - mapDataViews, - query, - startDate, - endDate, - setQuery, - portalNode, - services.embeddable - ); - if (isSubscribed) { - setEmbeddable(embeddableObject); - } - } catch (e) { - if (isSubscribed) { - addError(e, { title: i18n.ERROR_CREATING_EMBEDDABLE }); - setIsError(true); - } - } - } - - if (embeddable == null && selectedPatterns.length > 0 && !isIndexError) { - setupEmbeddable(); - } - - return () => { - isSubscribed = false; - }; - }, [ - addError, - endDate, - embeddable, - filters, - mapDataViews, - query, - portalNode, - services.embeddable, - selectedPatterns, - setQuery, - startDate, - isIndexError, - ]); - - // update layer with new index patterns - useEffect(() => { - const setLayerList = async () => { - if (embeddable != null && mapDataViews.length) { - // @ts-expect-error - await embeddable.setLayerList(getLayerList(mapDataViews)); - embeddable.reload(); - } - }; - if (embeddable != null && !isErrorEmbeddable(embeddable)) { - setLayerList(); - } - }, [embeddable, mapDataViews]); - - // queryExpression updated useEffect - useEffect(() => { - if (embeddable != null) { - embeddable.updateInput({ query }); - } - }, [embeddable, query]); - - const timeRangeFilter = useMemo( - () => buildTimeRangeFilter(startDate, endDate), - [startDate, endDate] - ); - useEffect(() => { - if (embeddable != null) { - // pass time range as filter instead of via timeRange param - // if user's data view does not have a time field, the timeRange param is not applied - // using filter will always apply the time range - embeddable.updateInput({ filters: [...filters, ...timeRangeFilter] }); - } - }, [embeddable, filters, timeRangeFilter]); + const appliedFilters = useMemo(() => { + return [...filters, ...buildTimeRangeFilter(startDate, endDate)]; + }, [filters, startDate, endDate]); const setDefaultMapVisibility = useCallback( (isOpen: boolean) => { @@ -265,28 +187,40 @@ export const EmbeddedMapComponent = ({ [storage] ); - const content = useMemo(() => { - if (!storageValue) { - return null; - } - return ( - - - - - - - {isIndexError ? ( - - ) : embeddable != null ? ( - - ) : ( - - )} - - - ); - }, [embeddable, isIndexError, portalNode, storageValue]); + const content = !storageValue ? null : ( + + + + + + + {isIndexError ? ( + + ) : ( + + (tooltipProps: RenderTooltipContentParams) => + } + mapCenter={{ lon: -1.05469, lat: 15.96133, zoom: 1 }} + layerList={layerList} + filters={appliedFilters} + query={query} + onApiAvailable={(api: MapApi) => { + // Wire up to app refresh action + setQuery({ + id: 'embeddedMap', // Scope to page type if using map elsewhere + inspect: null, + loading: false, + refetch: () => api.reload(), + }); + }} + /> + + )} + + + ); return isError ? null : ( { */ export const getLayerList = (indexPatternIds: IndexPatternMapping[]) => { return [ - { - sourceDescriptor: { type: SOURCE_TYPES.EMS_TMS, isAutoSelect: true }, - id: uuidv4(), - label: null, - minZoom: 0, - maxZoom: 24, - alpha: 1, - visible: true, - style: null, - type: LAYER_TYPE.EMS_VECTOR_TILE, - }, ...indexPatternIds.reduce((acc: object[], { title, id }) => { const layerGroupDescriptor = { id: uuidv4(), @@ -152,7 +142,7 @@ export const getLayerList = (indexPatternIds: IndexPatternMapping[]) => { layerGroupDescriptor, ]; }, []), - ]; + ] as LayerDescriptor[]; }; /** diff --git a/x-pack/plugins/security_solution/public/explore/network/pages/network.test.tsx b/x-pack/plugins/security_solution/public/explore/network/pages/network.test.tsx index 9faa3da9ba3b6b..724e0b86e57609 100644 --- a/x-pack/plugins/security_solution/public/explore/network/pages/network.test.tsx +++ b/x-pack/plugins/security_solution/public/explore/network/pages/network.test.tsx @@ -93,6 +93,9 @@ jest.mock('../../../common/lib/kibana', () => { cases: { ...mockCasesContract(), }, + maps: { + Map: () =>
{'mockMap'}
, + }, }, }), useToasts: jest.fn().mockReturnValue({ diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.tsx index b06206ff5937f0..6e3c8241136ea5 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/analyzer_preview_container.tsx @@ -39,9 +39,9 @@ export const AnalyzerPreviewContainer: React.FC = () => { }); // open timeline to the analyzer tab because the expandable flyout left panel Visualize => Analyzer tab is not ready - const goToAnalyzerTab = useCallback(() => { + const goToAnalyzerTab = useCallback(async () => { // open timeline - investigateInTimelineAlertClick(); + await investigateInTimelineAlertClick(); // open analyzer tab startTransaction({ name: ALERTS_ACTIONS.OPEN_ANALYZER }); diff --git a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.tsx b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.tsx index 7d4309dd6b1adc..54990dd6b67f8a 100644 --- a/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.tsx +++ b/x-pack/plugins/security_solution/public/flyout/document_details/right/components/session_preview_container.tsx @@ -44,9 +44,9 @@ export const SessionPreviewContainer: FC = () => { ecsRowData: dataAsNestedObject, }); - const goToSessionViewTab = useCallback(() => { + const goToSessionViewTab = useCallback(async () => { // open timeline - investigateInTimelineAlertClick(); + await investigateInTimelineAlertClick(); // open session view tab startTransaction({ name: ALERTS_ACTIONS.OPEN_SESSION_VIEW }); diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts index 4fb913f62c8200..0996e2de367a45 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/automated_response_actions/automated_response_actions.cy.ts @@ -99,7 +99,7 @@ describe( visitRuleAlerts(ruleName); closeAllToasts(); - changeAlertsFilter('process.name: "agentbeat"'); + changeAlertsFilter(`process.name: "agentbeat" and agent.id: "${createdHost.agentId}"`); cy.getByTestSubj('expand-event').eq(0).click(); cy.getByTestSubj('securitySolutionFlyoutNavigationExpandDetailButton').click(); cy.getByTestSubj('securitySolutionFlyoutResponseTab').click(); diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_list/endpoints.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_list/endpoints.cy.ts index 4396937e572289..0aeb46b32fb43a 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_list/endpoints.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/endpoint_list/endpoints.cy.ts @@ -28,7 +28,8 @@ import { createEndpointHost } from '../../tasks/create_endpoint_host'; import { deleteAllLoadedEndpointData } from '../../tasks/delete_all_endpoint_data'; import { enableAllPolicyProtections } from '../../tasks/endpoint_policy'; -describe('Endpoints page', { tags: ['@ess', '@serverless'] }, () => { +// FLAKY: https://github.com/elastic/kibana/issues/168284 +describe.skip('Endpoints page', { tags: ['@ess', '@serverless'] }, () => { let indexedPolicy: IndexedFleetEndpointPolicyResponse; let policy: PolicyData; let createdHost: CreateAndEnrollEndpointHostResponse; diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/complete_with_endpoint_roles.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/complete_with_endpoint_roles.cy.ts index 331d2cb3a667f8..ce5fdef8d48725 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/complete_with_endpoint_roles.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/roles/complete_with_endpoint_roles.cy.ts @@ -30,8 +30,7 @@ import { visitPolicyList, } from '../../../screens'; -// Failing: See https://github.com/elastic/kibana/issues/179274 -describe.skip( +describe( 'User Roles for Security Complete PLI with Endpoint Complete addon', { tags: ['@serverless'], @@ -152,8 +151,7 @@ describe.skip( ensureFleetPermissionDeniedScreen(); }); - // FLAKY: https://github.com/elastic/kibana/issues/179281 - describe.skip('Response Actions access', () => { + describe('Response Actions access', () => { beforeEach(() => { visitEndpointList(); openConsoleFromEndpointList(); diff --git a/x-pack/plugins/security_solution/public/management/cypress/screens/endpoint_list.ts b/x-pack/plugins/security_solution/public/management/cypress/screens/endpoint_list.ts index e435602ebceb47..0034cd0fd035dd 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/screens/endpoint_list.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/screens/endpoint_list.ts @@ -29,7 +29,8 @@ export const TABLE_ROW_ACTIONS = 'endpointTableRowActions'; const pageById: DeepReadonly = getEndpointManagementPageMap(); export const visitEndpointList = (): Cypress.Chainable => { - return cy.visit(pageById.endpointList.url); + cy.visit(pageById.endpointList.url); + return cy.getByTestSubj('globalLoadingIndicator').should('not.exist'); }; /** diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/models/advanced_policy_schema.ts b/x-pack/plugins/security_solution/public/management/pages/policy/models/advanced_policy_schema.ts index 8370e0fa681678..f7df8942d2d913 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/models/advanced_policy_schema.ts +++ b/x-pack/plugins/security_solution/public/management/pages/policy/models/advanced_policy_schema.ts @@ -1732,4 +1732,37 @@ export const AdvancedPolicySchema: AdvancedPolicySchemaType[] = [ } ), }, + { + key: 'windows.advanced.events.event_on_access.file_paths', + first_supported_version: '8.15', + documentation: i18n.translate( + 'xpack.securitySolution.endpoint.policy.advanced.windows.advanced.events.event_on_access.file_paths', + { + defaultMessage: + 'Comma-separated list of additional wildcard patterns that will be monitored for read access. Endpoint will report at most one match per pattern per process. Endpoint will attempt to convert drive letters to NT paths (e.g. \\\\Device\\\\HarddiskVolume4), but conversion will fail for per-user drives such as network drives. Put only commas (no spaces) between entries. Wildcard matching is case-insensitive. See Microsoft FsRtlIsNameInExpression documentation for wildcard matching rules.', + } + ), + }, + { + key: 'windows.advanced.events.event_on_access.registry_paths', + first_supported_version: '8.15', + documentation: i18n.translate( + 'xpack.securitySolution.endpoint.policy.advanced.windows.advanced.events.event_on_access.registry_paths', + { + defaultMessage: + 'Comma-separated list of registry paths that will be monitored for read access. These must be NT paths (e.g. \\\\REGISTRY\\\\MACHINE\\\\SOFTWARE\\\\Microsoft\\\\...). Endpoint will report at most one match per pattern per process. Put only commas (no spaces) between entries. Wildcard matching is case-insensitive. See Microsoft FsRtlIsNameInExpression documentation for wildcard matching rules.', + } + ), + }, + { + key: 'mac.advanced.events.event_on_access.file_paths', + first_supported_version: '8.15', + documentation: i18n.translate( + 'xpack.securitySolution.endpoint.policy.advanced.mac.advanced.events.event_on_access.file_paths', + { + defaultMessage: + 'Comma-separated list of additional wildcard patterns that will be monitored for read access. Put only commas (no spaces) between entries. Wildcard matching is case-insensitive.', + } + ), + }, ]; diff --git a/x-pack/plugins/security_solution/public/types.ts b/x-pack/plugins/security_solution/public/types.ts index eb891e3145dd2e..1eb944143c0fef 100644 --- a/x-pack/plugins/security_solution/public/types.ts +++ b/x-pack/plugins/security_solution/public/types.ts @@ -59,6 +59,7 @@ import type { UpsellingService } from '@kbn/security-solution-upselling/service' import type { ChartsPluginStart } from '@kbn/charts-plugin/public'; import type { SavedSearchPublicPluginStart } from '@kbn/saved-search-plugin/public'; import type { PluginStartContract } from '@kbn/alerting-plugin/public/plugin'; +import type { MapsStartApi } from '@kbn/maps-plugin/public'; import type { ResolverPluginSetup } from './resolver/types'; import type { Inspect } from '../common/search_strategy'; import type { Detections } from './detections'; @@ -130,6 +131,7 @@ export interface StartPlugins { timelines: TimelinesUIStart; sessionView: SessionViewStart; uiActions: UiActionsStart; + maps: MapsStartApi; ml?: MlPluginStart; spaces?: SpacesPluginStart; dataViewFieldEditor: IndexPatternFieldEditorStart; 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 67cc7c743be114..e99e3825980396 100644 --- a/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts +++ b/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts @@ -207,14 +207,25 @@ ${JSON.stringify(cypressConfigFile, null, 2)} const failedSpecFilePaths: string[] = []; const runSpecs = async (filePaths: string[]) => - pMap( + pMap< + string, + | CypressCommandLine.CypressRunResult + | CypressCommandLine.CypressFailedRunResult + | undefined + >( filePaths, async (filePath) => { let result: | CypressCommandLine.CypressRunResult | CypressCommandLine.CypressFailedRunResult | undefined; - await withProcRunner(log, async (procs) => { + failedSpecFilePaths.push(filePath); + + await withProcRunner< + | CypressCommandLine.CypressRunResult + | CypressCommandLine.CypressFailedRunResult + | undefined + >(log, async (procs) => { const abortCtrl = new AbortController(); const onEarlyExit = (msg: string) => { @@ -435,12 +446,11 @@ ${JSON.stringify(cyCustomEnv, null, 2)} env: cyCustomEnv, }, }); - if ((result as CypressCommandLine.CypressRunResult)?.totalFailed) { - failedSpecFilePaths.push(filePath); + if (!(result as CypressCommandLine.CypressRunResult)?.totalFailed) { + _.pull(failedSpecFilePaths, filePath); } } catch (error) { result = error; - failedSpecFilePaths.push(filePath); } } @@ -465,7 +475,7 @@ ${JSON.stringify(cyCustomEnv, null, 2)} // If there are failed tests, retry them const retryResults = await runSpecs([...failedSpecFilePaths]); - renderSummaryTable([ + const finalResults = [ // Don't include failed specs from initial run in results ..._.filter( initialResults, @@ -477,7 +487,10 @@ ${JSON.stringify(cyCustomEnv, null, 2)} ) ), ...retryResults, - ] as CypressCommandLine.CypressRunResult[]); + ] as CypressCommandLine.CypressRunResult[]; + + renderSummaryTable(finalResults); + const hasFailedTests = ( runResults: Array< | CypressCommandLine.CypressFailedRunResult @@ -496,6 +509,10 @@ ${JSON.stringify(cyCustomEnv, null, 2)} const hasFailedInitialTests = hasFailedTests(initialResults); const hasFailedRetryTests = hasFailedTests(retryResults); + if (finalResults.length !== files.length) { + throw createFailError('Cypress crashed', { exitCode: -1 }); + } + // If the initialResults had failures and failedSpecFilePaths was not populated properly return errors if (hasFailedRetryTests || (hasFailedInitialTests && !retryResults.length)) { throw createFailError('Not all tests passed'); diff --git a/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts b/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts index 7dddfa32a19676..f28f6abb737cac 100644 --- a/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts +++ b/x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts @@ -570,8 +570,6 @@ describe('ingest_integration tests ', () => { licenseEmitter.next(Enterprise); // set license level to enterprise }); - const validDateYesterday = moment.utc().subtract(1, 'day'); - it('should throw if endpointProtectionUpdates productFeature is disabled and user modifies global_manifest_version', async () => { productFeaturesService = createProductFeaturesServiceMock( ALL_PRODUCT_FEATURE_KEYS.filter((key) => key !== 'endpoint_protection_updates') @@ -610,21 +608,23 @@ describe('ingest_integration tests ', () => { }, { date: '2100-10-01', - message: `Global manifest version cannot be in the future. Latest selectable date is ${validDateYesterday.format( - 'MMMM DD, YYYY' - )} UTC time.`, + message: `Global manifest version cannot be in the future. Latest selectable date is ${moment + .utc() + .subtract(1, 'day') + .format('MMMM DD, YYYY')} UTC time.`, }, { - date: validDateYesterday.clone().add(1, 'day').format('YYYY-MM-DD'), - message: `Global manifest version cannot be in the future. Latest selectable date is ${validDateYesterday.format( - 'MMMM DD, YYYY' - )} UTC time.`, + date: moment.utc().format('YYYY-MM-DD'), + message: `Global manifest version cannot be in the future. Latest selectable date is ${moment + .utc() + .subtract(1, 'day') + .format('MMMM DD, YYYY')} UTC time.`, }, { date: 'latest', }, { - date: validDateYesterday.format('YYYY-MM-DD'), // Correct date + date: moment.utc().subtract(1, 'day').format('YYYY-MM-DD'), // Correct date }, ])( 'should return bad request for invalid endpoint package policy global manifest values', diff --git a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/send_telemetry_events.ts b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/send_telemetry_events.ts index c72be7edc9be85..c3c4f8c4d5f238 100644 --- a/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/send_telemetry_events.ts +++ b/x-pack/plugins/security_solution/server/lib/detection_engine/rule_types/utils/send_telemetry_events.ts @@ -10,6 +10,7 @@ import type { TelemetryEvent } from '../../../telemetry/types'; import type { IRuleExecutionLogForExecutors } from '../../rule_monitoring'; import type { SignalSource, SignalSourceHit } from '../types'; import { TelemetryChannel } from '../../../telemetry/types'; +import { copyAllowlistedFields, filterList } from '../../../telemetry/filterlists'; interface SearchResultSource { _source: SignalSource; @@ -71,7 +72,11 @@ export function sendAlertTelemetryEvents( selectedEvents = enrichEndpointAlertsSignalID(selectedEvents, signalIdMap); } try { - eventsTelemetry.sendAsync(TelemetryChannel.ENDPOINT_ALERTS, selectedEvents); + const filtered = selectedEvents.map( + (event: TelemetryEvent): TelemetryEvent => + copyAllowlistedFields(filterList.endpointAlerts, event) + ); + eventsTelemetry.sendAsync(TelemetryChannel.ENDPOINT_ALERTS, filtered); } catch (exc) { ruleExecutionLogger.error(`Queuing telemetry events failed: ${exc}`); } diff --git a/x-pack/plugins/stack_connectors/common/sentinelone/schema.ts b/x-pack/plugins/stack_connectors/common/sentinelone/schema.ts index fbca8dde4774b8..66a50a42dc4193 100644 --- a/x-pack/plugins/stack_connectors/common/sentinelone/schema.ts +++ b/x-pack/plugins/stack_connectors/common/sentinelone/schema.ts @@ -66,7 +66,7 @@ export const SentinelOneGetAgentsResponseSchema = schema.object({ registeredAt: schema.string(), lastIpToMgmt: schema.string(), storageName: schema.nullable(schema.string()), - osUsername: schema.string(), + osUsername: schema.nullable(schema.string()), groupIp: schema.string(), createdAt: schema.string(), remoteProfilingState: schema.string(), diff --git a/x-pack/plugins/stack_connectors/public/connector_types/jira/jira_params.test.tsx b/x-pack/plugins/stack_connectors/public/connector_types/jira/jira_params.test.tsx index 5c3dd8e017d12c..774139f6d3936b 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/jira/jira_params.test.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/jira/jira_params.test.tsx @@ -12,7 +12,7 @@ import { useGetFieldsByIssueType } from './use_get_fields_by_issue_type'; import { useGetIssues } from './use_get_issues'; import { useGetSingleIssue } from './use_get_single_issue'; import { ActionConnector } from '@kbn/triggers-actions-ui-plugin/public/types'; -import { act, fireEvent, render, waitFor, within } from '@testing-library/react'; +import { act, fireEvent, render, waitFor, within, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; jest.mock('@kbn/triggers-actions-ui-plugin/public/common/lib/kibana'); @@ -489,6 +489,16 @@ describe('JiraParamsFields renders', () => { expect(editAction.mock.calls[0][1].incident.otherFields).toEqual(TEST_VALUE); }); + it('updating additional fields with an empty string sets its value to null', async () => { + render(); + const otherFields = await screen.findByTestId('otherFieldsJsonEditor'); + + userEvent.paste(otherFields, 'foobar'); + userEvent.clear(otherFields); + + expect(editAction.mock.calls[1][1].incident.otherFields).toEqual(null); + }); + it('Clears any left behind priority when issueType changes and hasPriority becomes false', async () => { useGetFieldsByIssueTypeMock .mockReturnValueOnce(useGetFieldsByIssueTypeResponse) diff --git a/x-pack/plugins/stack_connectors/public/connector_types/jira/jira_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/jira/jira_params.tsx index 6946fd4363661b..b01b01e5befad4 100644 --- a/x-pack/plugins/stack_connectors/public/connector_types/jira/jira_params.tsx +++ b/x-pack/plugins/stack_connectors/public/connector_types/jira/jira_params.tsx @@ -424,7 +424,7 @@ const JiraParamsFields: React.FunctionComponent } onDocumentsChange={(json: string) => { - editSubActionProperty('otherFields', json); + editSubActionProperty('otherFields', json === '' ? null : json); }} /> diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index 53cc9b4396e8ba..1df1f05c5cb1e5 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -5513,7 +5513,6 @@ "searchApiPanels.welcomeBanner.selectClient.elasticsearchClientDocLink": "Clients d'Elasticsearch ", "searchApiPanels.welcomeBanner.selectClient.heading": "Choisissez-en un", "searchApiPanels.welcomeBanner.selectClient.title": "Sélectionner votre client", - "searchApiPanels.welcomeBanner.tryInConsoleButton": "Essayer dans la console", "searchConnectors.config.invalidInteger": "{label} doit être un nombre entier.", "searchConnectors.configurationConnector.config.defaultValue": "Si cette option est laissée vide, la valeur par défaut {defaultValue} sera utilisée.", "searchConnectors.index.syncJobs.documents.volume.aboutLabel": "À propos de {volume}", @@ -6655,6 +6654,7 @@ "timelion.vis.invalidIntervalErrorMessage": "Format d'intervalle non valide.", "timelion.vis.selectIntervalHelpText": "Choisissez une option ou créez une valeur personnalisée. Exemples : 30s, 20m, 24h, 2d, 1w, 1M", "timelion.vis.selectIntervalPlaceholder": "Choisir un intervalle", + "tryInConsole.button": "Essayer dans la console", "uiActionsEnhanced.components.DrilldownTable.deleteDrilldownsButtonLabel": "Supprimer ({count})", "uiActionsEnhanced.components.DrilldownTemplateTable.copyButtonLabel": "Copier ({count})", "uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.invalidDrilldownType": "Le type de recherche {type} n'existe pas", @@ -13183,7 +13183,6 @@ "xpack.datasetQuality.expandLabel": "Développer", "xpack.datasetQuality.fetchDatasetDetailsFailed": "Nous n'avons pas pu obtenir les détails de votre ensemble de données.", "xpack.datasetQuality.fetchDatasetDetailsFailed.noDatasetSelected": "Vous n'avez sélectionné aucun ensemble de données", - "xpack.datasetQuality.fetchDatasetsEstimatedDataFailed": "Nous n'avons pas pu obtenir les données estimées de vos ensembles de données. Les valeurs par défaut sont affichées.", "xpack.datasetQuality.fetchDatasetStatsFailed": "Nous n'avons pas pu obtenir vos ensembles de données.", "xpack.datasetQuality.fetchDegradedStatsFailed": "Nous n'avons pas pu obtenir d'informations sur vos documents dégradés.", "xpack.datasetQuality.flyoutCancelText": "Annuler", @@ -18698,10 +18697,6 @@ "xpack.fleet.multiRowInput.addRow": "Ajouter une ligne", "xpack.fleet.multiRowInput.deleteButton": "Supprimer la ligne", "xpack.fleet.multiTextInput.addRow": "Ajouter une ligne", - "xpack.fleet.namespaceValidation.invalidCharactersErrorMessage": "L'espace de nom contient des caractères non valides", - "xpack.fleet.namespaceValidation.lowercaseErrorMessage": "L'espace de nom doit être en minuscules", - "xpack.fleet.namespaceValidation.requiredErrorMessage": "L'espace de nom est obligatoire", - "xpack.fleet.namespaceValidation.tooLongErrorMessage": "L'espace de nom ne peut pas dépasser 100 octets", "xpack.fleet.newEnrollmentKey.cancelButtonLabel": "Annuler", "xpack.fleet.newEnrollmentKey.helpText": "Un ID de jeton sera utilisé si ce champ est laissé vide.", "xpack.fleet.newEnrollmentKey.keyCreatedToasts": "Jeton d'enregistrement créé", @@ -27796,7 +27791,6 @@ "xpack.ml.severitySelector.formControlAriaLabel": "Sélectionner le seuil de sévérité", "xpack.ml.severitySelector.formControlLabel": "Sévérité", "xpack.ml.singleMetricViewerEmbeddable.panelTitleLabel": "Titre du panneau", - "xpack.ml.singleMetricViewerEmbeddable.setupModal.cancelButtonLabel": "Annuler", "xpack.ml.singleMetricViewerEmbeddable.setupModal.confirmButtonLabel": "Confirmer les configurations", "xpack.ml.SingleMetricViewerEmbeddable.setupModal.title": "Configuration de la visionneuse d'indicateur unique", "xpack.ml.singleMetricViewerPageLabel": "Single Metric Viewer (Visionneuse d'indicateur unique)", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 3318a28e48a955..3fdf62dd1d457e 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -5506,7 +5506,6 @@ "searchApiPanels.welcomeBanner.selectClient.elasticsearchClientDocLink": "Elasticsearchクライアント ", "searchApiPanels.welcomeBanner.selectClient.heading": "1つ選択", "searchApiPanels.welcomeBanner.selectClient.title": "クライアントを選択", - "searchApiPanels.welcomeBanner.tryInConsoleButton": "コンソールで試す", "searchConnectors.config.invalidInteger": "{label}は整数でなければなりません。", "searchConnectors.configurationConnector.config.defaultValue": "空にする場合は、デフォルト値の{defaultValue}が使用されます。", "searchConnectors.index.syncJobs.documents.volume.aboutLabel": "{volume}について", @@ -6644,6 +6643,7 @@ "timelion.vis.invalidIntervalErrorMessage": "無効な間隔フォーマット。", "timelion.vis.selectIntervalHelpText": "オプションを選択するかカスタム値を作成します。例:30s、20m、24h、2d、1w、1M", "timelion.vis.selectIntervalPlaceholder": "間隔を選択", + "tryInConsole.button": "コンソールで試す", "uiActionsEnhanced.components.DrilldownTable.deleteDrilldownsButtonLabel": "削除({count})", "uiActionsEnhanced.components.DrilldownTemplateTable.copyButtonLabel": "コピー({count})", "uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.invalidDrilldownType": "ドリルダウンタイプ{type}が存在しません", @@ -13163,7 +13163,6 @@ "xpack.datasetQuality.expandLabel": "拡張", "xpack.datasetQuality.fetchDatasetDetailsFailed": "データセット詳細を取得できませんでした。", "xpack.datasetQuality.fetchDatasetDetailsFailed.noDatasetSelected": "データセットが選択されていません", - "xpack.datasetQuality.fetchDatasetsEstimatedDataFailed": "データセット推定データを取得できませんでした。デフォルト値が表示されます。", "xpack.datasetQuality.fetchDatasetStatsFailed": "データセットを取得できませんでした。", "xpack.datasetQuality.fetchDegradedStatsFailed": "劣化したドキュメント情報を取得できませんでした。", "xpack.datasetQuality.flyoutCancelText": "キャンセル", @@ -18675,10 +18674,6 @@ "xpack.fleet.multiRowInput.addRow": "行の追加", "xpack.fleet.multiRowInput.deleteButton": "行の削除", "xpack.fleet.multiTextInput.addRow": "行の追加", - "xpack.fleet.namespaceValidation.invalidCharactersErrorMessage": "名前空間に無効な文字が含まれています", - "xpack.fleet.namespaceValidation.lowercaseErrorMessage": "名前空間は小文字で指定する必要があります", - "xpack.fleet.namespaceValidation.requiredErrorMessage": "名前空間は必須です", - "xpack.fleet.namespaceValidation.tooLongErrorMessage": "名前空間は100バイト以下でなければなりません", "xpack.fleet.newEnrollmentKey.cancelButtonLabel": "キャンセル", "xpack.fleet.newEnrollmentKey.helpText": "これを空にすると、トークンIDが使用されます。", "xpack.fleet.newEnrollmentKey.keyCreatedToasts": "登録トークンが作成されました", @@ -27769,7 +27764,6 @@ "xpack.ml.severitySelector.formControlAriaLabel": "重要度のしきい値を選択", "xpack.ml.severitySelector.formControlLabel": "深刻度", "xpack.ml.singleMetricViewerEmbeddable.panelTitleLabel": "パネルタイトル", - "xpack.ml.singleMetricViewerEmbeddable.setupModal.cancelButtonLabel": "キャンセル", "xpack.ml.singleMetricViewerEmbeddable.setupModal.confirmButtonLabel": "構成を確認", "xpack.ml.SingleMetricViewerEmbeddable.setupModal.title": "シングルメトリックビューアー構成", "xpack.ml.singleMetricViewerPageLabel": "シングルメトリックビューアー", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index f712ceef525156..cf47a5dec1bfc9 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -5517,7 +5517,6 @@ "searchApiPanels.welcomeBanner.selectClient.elasticsearchClientDocLink": "Elasticsearch 客户端 ", "searchApiPanels.welcomeBanner.selectClient.heading": "选择一个", "searchApiPanels.welcomeBanner.selectClient.title": "选择客户端", - "searchApiPanels.welcomeBanner.tryInConsoleButton": "在 Console 中试用", "searchConnectors.config.invalidInteger": "{label} 必须为整数。", "searchConnectors.configurationConnector.config.defaultValue": "如果留空,将使用默认值 {defaultValue}。", "searchConnectors.index.syncJobs.documents.volume.aboutLabel": "关于 {volume}", @@ -6658,6 +6657,7 @@ "timelion.vis.invalidIntervalErrorMessage": "时间间隔格式无效。", "timelion.vis.selectIntervalHelpText": "选择选项或创建定制值。示例:30s、20m、24h、2d、1w、1M", "timelion.vis.selectIntervalPlaceholder": "选择时间间隔", + "tryInConsole.button": "在 Console 中试用", "uiActionsEnhanced.components.DrilldownTable.deleteDrilldownsButtonLabel": "删除 ({count})", "uiActionsEnhanced.components.DrilldownTemplateTable.copyButtonLabel": "复制 ({count})", "uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.invalidDrilldownType": "向下钻取类型 {type} 不存在", @@ -13188,7 +13188,6 @@ "xpack.datasetQuality.expandLabel": "展开", "xpack.datasetQuality.fetchDatasetDetailsFailed": "无法获取数据集详情。", "xpack.datasetQuality.fetchDatasetDetailsFailed.noDatasetSelected": "尚未选择任何数据集", - "xpack.datasetQuality.fetchDatasetsEstimatedDataFailed": "无法获取数据集估计数据。将显示默认值。", "xpack.datasetQuality.fetchDatasetStatsFailed": "无法获取数据集。", "xpack.datasetQuality.fetchDegradedStatsFailed": "无法获取已降级文档信息。", "xpack.datasetQuality.flyoutCancelText": "取消", @@ -18704,10 +18703,6 @@ "xpack.fleet.multiRowInput.addRow": "添加行", "xpack.fleet.multiRowInput.deleteButton": "删除行", "xpack.fleet.multiTextInput.addRow": "添加行", - "xpack.fleet.namespaceValidation.invalidCharactersErrorMessage": "命名空间包含无效字符", - "xpack.fleet.namespaceValidation.lowercaseErrorMessage": "命名空间必须小写", - "xpack.fleet.namespaceValidation.requiredErrorMessage": "“命名空间”必填", - "xpack.fleet.namespaceValidation.tooLongErrorMessage": "命名空间不能超过 100 个字节", "xpack.fleet.newEnrollmentKey.cancelButtonLabel": "取消", "xpack.fleet.newEnrollmentKey.helpText": "此项留空时,将使用令牌 ID。", "xpack.fleet.newEnrollmentKey.keyCreatedToasts": "注册令牌已创建", @@ -27807,7 +27802,6 @@ "xpack.ml.severitySelector.formControlAriaLabel": "选择严重性阈值", "xpack.ml.severitySelector.formControlLabel": "严重性", "xpack.ml.singleMetricViewerEmbeddable.panelTitleLabel": "面板标题", - "xpack.ml.singleMetricViewerEmbeddable.setupModal.cancelButtonLabel": "取消", "xpack.ml.singleMetricViewerEmbeddable.setupModal.confirmButtonLabel": "确认配置", "xpack.ml.SingleMetricViewerEmbeddable.setupModal.title": "Single Metric Viewer 配置", "xpack.ml.singleMetricViewerPageLabel": "Single Metric Viewer", diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/action_task_params/migrations.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/action_task_params/migrations.ts index c7c9611b213124..2c9147ac2dfb53 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/action_task_params/migrations.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/action_task_params/migrations.ts @@ -16,7 +16,8 @@ export default function createGetTests({ getService }: FtrProviderContext) { const es = getService('es'); const esArchiver = getService('esArchiver'); - describe('migrations', () => { + // FLAKY: https://github.com/elastic/kibana/issues/154358 + describe.skip('migrations', () => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/action_task_params'); }); diff --git a/x-pack/test/apm_api_integration/tests/asset_services/asset_services.spec.ts b/x-pack/test/apm_api_integration/tests/asset_services/asset_services.spec.ts index 983c2c7ec7c2ff..64a202fe2ca8e0 100644 --- a/x-pack/test/apm_api_integration/tests/asset_services/asset_services.spec.ts +++ b/x-pack/test/apm_api_integration/tests/asset_services/asset_services.spec.ts @@ -21,15 +21,20 @@ import { APIReturnType, APIClientRequestParamsOf, } from '@kbn/apm-plugin/public/services/rest/create_call_apm_api'; +import { ApmDocumentType } from '@kbn/apm-plugin/common/document_type'; +import { RollupInterval } from '@kbn/apm-plugin/common/rollup'; import { FtrProviderContext } from '../../common/ftr_provider_context'; export default function ApiTest({ getService }: FtrProviderContext) { const registry = getService('registry'); const apmApiClient = getService('apmApiClient'); const assetsSynthtraceClient = getService('assetsSynthtraceEsClient'); + const apmSynthtraceClient = getService('apmSynthtraceEsClient'); + const logSynthtraceClient = getService('logSynthtraceEsClient'); - const start = new Date(moment().subtract(10, 'minutes').valueOf()).toISOString(); - const end = new Date(moment().valueOf()).toISOString(); + const now = new Date(); + const start = new Date(moment(now).subtract(10, 'minutes').valueOf()).toISOString(); + const end = new Date(moment(now).valueOf()).toISOString(); const range = timerange(start, end); async function getServiceAssets( @@ -44,6 +49,9 @@ export default function ApiTest({ getService }: FtrProviderContext) { start, end, kuery: '', + documentType: ApmDocumentType.TransactionEvent, + rollupInterval: RollupInterval.None, + useDurationSummary: false, ...overrides?.query, }, }, @@ -65,7 +73,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); registry.when('Asset services when data is loaded', { config: 'basic', archives: [] }, () => { - before(async () => { + before(() => { const transactionName = '240rpm/75% 1000ms'; const successfulTimestamps = range.interval('1m').rate(1); @@ -167,16 +175,27 @@ export default function ApiTest({ getService }: FtrProviderContext) { function* createGeneratorFromArray(arr: Array>) { yield* arr; } + + const logsValuesArray = [...logEvents]; + const logsGen = createGeneratorFromArray(logsValuesArray); + const logsGenAssets = createGeneratorFromArray(logsValuesArray); + const traces = instances.flatMap((instance) => instanceSpans(instance)); + const tracesGen = createGeneratorFromArray(traces); const tracesGenAssets = createGeneratorFromArray(traces); - // - return await assetsSynthtraceClient.index( - Readable.from(Array.from(logEvents).concat(Array.from(tracesGenAssets))) - ); + return Promise.all([ + assetsSynthtraceClient.index( + Readable.from(Array.from(logsGenAssets).concat(Array.from(tracesGenAssets))) + ), + logSynthtraceClient.index(logsGen), + apmSynthtraceClient.index(tracesGen), + ]); }); after(async () => { + await logSynthtraceClient.clean(); + await apmSynthtraceClient.clean(); await assetsSynthtraceClient.clean(); }); @@ -215,6 +234,42 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(logsOnly?.asset.signalTypes).to.eql({ 'asset.logs': true }); expect(logsOnly?.service.environment).not.to.be('testing'); }); + + it('return traces and logs metrics for services when multi-signals', () => { + const multiSignalService = response.body.services.find( + (item) => item.service.name === 'multisignal-service' + ); + + expect(multiSignalService?.metrics.latency).to.be(1000 * 1000); // microseconds + expect(multiSignalService?.metrics.throughput).to.be(2); + expect(multiSignalService?.metrics.transactionErrorRate).to.be(0.5); + expect(multiSignalService?.metrics.logRatePerMinute).to.be(1); + expect(multiSignalService?.metrics.logErrorRate).to.be(1); + }); + + it('return traces only metrics', () => { + const apmService = response.body.services.find( + (item) => item.service.name === 'apm-only-service' + ); + + expect(apmService?.metrics.latency).to.be(1000 * 1000); // microseconds + expect(apmService?.metrics.throughput).to.be(2); + expect(apmService?.metrics.transactionErrorRate).to.be(0.5); + expect(apmService?.metrics.logRatePerMinute).to.be(undefined); + expect(apmService?.metrics.logErrorRate).to.be(undefined); + }); + + it('return logs only metrics', () => { + const logsService = response.body.services.find( + (item) => item.service.name === 'logs-only-service' + ); + + expect(logsService?.metrics.latency).to.be(undefined); + expect(logsService?.metrics.throughput).to.be(undefined); + expect(logsService?.metrics.transactionErrorRate).to.be(undefined); + expect(logsService?.metrics.logRatePerMinute).to.be(1); + expect(logsService?.metrics.logErrorRate).to.be(1); + }); }); describe('when additional filters are applied', () => { @@ -229,8 +284,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { it('returns services when the time range is within the data range', async () => { response = await getServiceAssets({ query: { - start: new Date(moment().subtract(2, 'days').valueOf()).toISOString(), - end: new Date(moment().add(1, 'days').valueOf()).toISOString(), + start: new Date(moment(now).subtract(2, 'days').valueOf()).toISOString(), + end: new Date(moment(now).add(1, 'days').valueOf()).toISOString(), }, }); @@ -246,6 +301,11 @@ export default function ApiTest({ getService }: FtrProviderContext) { const service = response.body.services[0]; expect(service.service.name).to.be('logs-only-service'); expect(service.asset.signalTypes['asset.logs']).to.be(true); + expect(service.metrics.latency).to.be(undefined); + expect(service.metrics.throughput).to.be(undefined); + expect(service.metrics.transactionErrorRate).to.be(undefined); + expect(service.metrics.logRatePerMinute).to.be(1); + expect(service.metrics.logErrorRate).to.be(1); }); it('returns not services when filtering by a field that does not exist in assets', async () => { diff --git a/x-pack/test/dataset_quality_api_integration/tests/data_streams/estimated_data.spec.ts b/x-pack/test/dataset_quality_api_integration/tests/data_streams/estimated_data.spec.ts deleted file mode 100644 index 46a9822aa05acc..00000000000000 --- a/x-pack/test/dataset_quality_api_integration/tests/data_streams/estimated_data.spec.ts +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { log, timerange } from '@kbn/apm-synthtrace-client'; -import expect from '@kbn/expect'; -import { DatasetQualityApiClientKey } from '../../common/config'; -import { FtrProviderContext } from '../../common/ftr_provider_context'; - -export default function ApiTest({ getService }: FtrProviderContext) { - const registry = getService('registry'); - const synthtrace = getService('logSynthtraceEsClient'); - const datasetQualityApiClient = getService('datasetQualityApiClient'); - const start = '2023-12-11T18:00:00.000Z'; - const oneDayEnd = '2023-12-12T18:00:00.000Z'; - const oneWeekEnd = '2023-12-18T18:00:00.000Z'; - const dataset = 'nginx.access'; - const namespace = 'default'; - - async function callApiAs(type: 'logs' | 'metrics', end: string) { - const user = 'datasetQualityLogsUser' as DatasetQualityApiClientKey; - return await datasetQualityApiClient[user]({ - endpoint: 'GET /internal/dataset_quality/data_streams/estimated_data', - params: { - query: { - type, - start, - end, - }, - }, - }); - } - - registry.when('Estimated Data Details', { config: 'basic' }, () => { - describe('gets the data streams estimated data', () => { - before(async () => { - await synthtrace.index([ - timerange(start, oneWeekEnd) - .interval('1h') - .rate(1) - .generator((timestamp) => - log - .create() - .message('This is a log message') - .timestamp(timestamp) - .dataset(dataset) - .namespace(namespace) - .defaults({ - 'log.file.path': '/my-service.log', - }) - ), - ]); - }); - - it('returns a non-empty body', async () => { - const resp = await callApiAs('logs', oneDayEnd); - expect(resp.body).not.empty(); - }); - - it('returns correct estimated data for 1 day of logs', async () => { - const resp = await callApiAs('logs', oneDayEnd); - expect(resp.body.estimatedDataInBytes).to.be.lessThan(2500).greaterThan(1000); - }); - - it('returns correct estimated data for 1 week of logs', async () => { - const resp = await callApiAs('logs', oneWeekEnd); - expect(resp.body.estimatedDataInBytes).to.be.lessThan(20000).greaterThan(10000); - }); - - it('returns correct estimated data for no data index', async () => { - const resp = await callApiAs('metrics', oneWeekEnd); - expect(resp.body.estimatedDataInBytes).to.equal(0); - }); - - after(async () => { - await synthtrace.clean(); - }); - }); - }); -} diff --git a/x-pack/test/dataset_quality_api_integration/tests/data_streams/stats.spec.ts b/x-pack/test/dataset_quality_api_integration/tests/data_streams/stats.spec.ts index 7fa60dcb4b118e..39f8407305bae6 100644 --- a/x-pack/test/dataset_quality_api_integration/tests/data_streams/stats.spec.ts +++ b/x-pack/test/dataset_quality_api_integration/tests/data_streams/stats.spec.ts @@ -69,6 +69,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(stats.body.dataStreamsStats[0].size).not.empty(); expect(stats.body.dataStreamsStats[0].sizeBytes).greaterThan(0); expect(stats.body.dataStreamsStats[0].lastActivity).greaterThan(0); + expect(stats.body.dataStreamsStats[0].totalDocs).greaterThan(0); }); after(async () => { @@ -99,6 +100,7 @@ export default function ApiTest({ getService }: FtrProviderContext) { expect(stats.body.dataStreamsStats[0].size).not.empty(); expect(stats.body.dataStreamsStats[0].sizeBytes).greaterThan(0); expect(stats.body.dataStreamsStats[0].lastActivity).greaterThan(0); + expect(stats.body.dataStreamsStats[0].totalDocs).greaterThan(0); }); after(async () => { diff --git a/x-pack/test/fleet_api_integration/apis/package_policy/input_package_rollback.ts b/x-pack/test/fleet_api_integration/apis/package_policy/input_package_rollback.ts index 50c325dac22fbc..f470b872a8e529 100644 --- a/x-pack/test/fleet_api_integration/apis/package_policy/input_package_rollback.ts +++ b/x-pack/test/fleet_api_integration/apis/package_policy/input_package_rollback.ts @@ -79,7 +79,7 @@ export default function (providerContext: FtrProviderContext) { .send(policy) .expect(expectStatusCode); - return res.body.item; + return expectStatusCode === 200 ? res.body.item : res; }; const createAgentPolicy = async (name = 'Input Package Test 3') => { @@ -117,7 +117,10 @@ export default function (providerContext: FtrProviderContext) { setupFleetAndAgents(providerContext); it('should rollback package install on package policy create failure', async () => { - await createPackagePolicyWithDataset(agentPolicyId, 'test*', 400); + const res = await createPackagePolicyWithDataset(agentPolicyId, 'test*', 400); + expect(res.body.message).to.eql( + 'Package policy is invalid: inputs.logfile.streams.input_package_upgrade.logs.vars.data_stream.dataset: Dataset contains invalid characters' + ); const pkg = await getPackage(PACKAGE_NAME, START_VERSION); expect(pkg?.status).to.eql('not_installed'); diff --git a/x-pack/test/fleet_api_integration/apis/uninstall_token/get.ts b/x-pack/test/fleet_api_integration/apis/uninstall_token/get.ts index e1686b8236ef2c..b3a85524f2d8ab 100644 --- a/x-pack/test/fleet_api_integration/apis/uninstall_token/get.ts +++ b/x-pack/test/fleet_api_integration/apis/uninstall_token/get.ts @@ -17,7 +17,11 @@ import { import { AgentPolicy } from '@kbn/fleet-plugin/common'; import { testUsers } from '../test_users'; import { FtrProviderContext } from '../../../api_integration/ftr_provider_context'; -import { addUninstallTokenToPolicy, generateNPolicies } from '../../helpers'; +import { + addUninstallTokenToPolicy, + generateAgentPolicy, + generateNAgentPolicies, +} from '../../helpers'; export default function (providerContext: FtrProviderContext) { const { getService } = providerContext; @@ -39,7 +43,7 @@ export default function (providerContext: FtrProviderContext) { let generatedPolicies: Map; before(async () => { - const generatedPoliciesArray = await generateNPolicies(supertest, 20); + const generatedPoliciesArray = await generateNAgentPolicies(supertest, 20); generatedPolicies = new Map(); generatedPoliciesArray.forEach((policy) => generatedPolicies.set(policy.id, policy)); @@ -86,7 +90,7 @@ export default function (providerContext: FtrProviderContext) { }); it('should return default perPage number of token metadata if total is above default perPage', async () => { - const additionalPolicy = (await generateNPolicies(supertest, 1))[0]; + const additionalPolicy = (await generateNAgentPolicies(supertest, 1))[0]; generatedPolicies.set(additionalPolicy.id, additionalPolicy); const response1 = await supertest @@ -167,7 +171,7 @@ export default function (providerContext: FtrProviderContext) { let timestampBeforeAddingNewTokens: number; before(async () => { - generatedPolicies = await generateNPolicies(supertest, 20); + generatedPolicies = await generateNAgentPolicies(supertest, 20); timestampBeforeAddingNewTokens = Date.now(); @@ -204,8 +208,8 @@ export default function (providerContext: FtrProviderContext) { let managedPolicies: AgentPolicy[]; before(async () => { - notManagedPolicies = await generateNPolicies(supertest, 3); - managedPolicies = await generateNPolicies(supertest, 4, { is_managed: true }); + notManagedPolicies = await generateNAgentPolicies(supertest, 3); + managedPolicies = await generateNAgentPolicies(supertest, 4, { is_managed: true }); }); after(async () => { @@ -236,7 +240,7 @@ export default function (providerContext: FtrProviderContext) { let generatedPolicyArray: AgentPolicy[]; before(async () => { - generatedPolicyArray = await generateNPolicies(supertest, 5); + generatedPolicyArray = await generateNAgentPolicies(supertest, 5); }); after(async () => { @@ -313,16 +317,35 @@ export default function (providerContext: FtrProviderContext) { describe('when `search` query param is used', () => { let generatedManagedPolicyArray: AgentPolicy[]; let generatedPolicyArray: AgentPolicy[]; + const specialCharactersForNameAndId = `!@#$%^&*-=_+()[]{}:;'\`|/<>,.?~`.split(''); + const specialCharactersForNameOnly = `"\\`.split(''); before(async () => { - generatedPolicyArray = await generateNPolicies(supertest, 8); - generatedPolicyArray.push( - ...(await generateNPolicies(supertest, 1, { name: 'Special: Policy' })) - ); - generatedPolicyArray.push( - ...(await generateNPolicies(supertest, 1, { name: 'Special | Promise> = []; + + promises.push( + // random policies + generateNAgentPolicies(supertest, 8), + // policies with special characters in policy name + ...specialCharactersForNameAndId.map((c) => + generateAgentPolicy(supertest, { name: `name ${c}${c}${c}` }) + ), + ...specialCharactersForNameOnly.map((c) => + generateAgentPolicy(supertest, { name: `name ${c}${c}${c}` }) + ), + // policies with special characters in policy id + ...specialCharactersForNameAndId.map((c) => + generateAgentPolicy(supertest, { id: `id ${c}${c}${c}${c}` }) + ) ); - generatedManagedPolicyArray = await generateNPolicies(supertest, 3, { is_managed: true }); + + const policies = (await Promise.all(promises)).flat(); + generatedPolicyArray.push(...policies); + + generatedManagedPolicyArray = await generateNAgentPolicies(supertest, 3, { + is_managed: true, + }); }); after(async () => { @@ -364,7 +387,7 @@ export default function (providerContext: FtrProviderContext) { }); it('should return token metadata for policyID even if policy is deleted', async () => { - const deletedPolicy = (await generateNPolicies(supertest, 1))[0]; + const deletedPolicy = (await generateNAgentPolicies(supertest, 1))[0]; await supertest .post(agentPolicyRouteService.getDeletePath()) .set('kbn-xsrf', 'xxxx') @@ -480,19 +503,37 @@ export default function (providerContext: FtrProviderContext) { expect(body.items).to.eql([]); }); - it('should remove special characters', async () => { - const response = await supertest - .get(uninstallTokensRouteService.getListPath()) - .query({ - search: 'Special Policy', - }) - .expect(200); + describe('when searching from special characters', () => { + specialCharactersForNameAndId.forEach((c) => { + it(`should successfully search for ${c} both in name and id`, async () => { + const response = await supertest + .get(uninstallTokensRouteService.getListPath()) + .query({ + search: `${c}${c}`, + }) + .expect(200); + + const body: GetUninstallTokensMetadataResponse = response.body; + expect(body.total).to.equal(2); + expect(body.items.map((item) => item.policy_name)).to.contain(`name ${c}${c}${c}`); + expect(body.items.map((item) => item.policy_id)).to.contain(`id ${c}${c}${c}${c}`); + }); + }); - const body: GetUninstallTokensMetadataResponse = response.body; - expect(body.total).to.equal(2); - const returnedPolicyNames = body.items.map((item) => item.policy_name); - expect(returnedPolicyNames).to.contain('Special: Policy'); - expect(returnedPolicyNames).to.contain('Special { + it(`should successfully search for ${c} in name`, async () => { + const response = await supertest + .get(uninstallTokensRouteService.getListPath()) + .query({ + search: `${c}${c}`, + }) + .expect(200); + + const body: GetUninstallTokensMetadataResponse = response.body; + expect(body.total).to.equal(1); + expect(body.items[0].policy_name).to.equal(`name ${c}${c}${c}`); + }); + }); }); it('should return 400 if both `search` and `policyId` are used', async () => { diff --git a/x-pack/test/fleet_api_integration/apis/uninstall_token/privileges.ts b/x-pack/test/fleet_api_integration/apis/uninstall_token/privileges.ts index ff348f2b9f4e6b..25b23074bd7c1d 100644 --- a/x-pack/test/fleet_api_integration/apis/uninstall_token/privileges.ts +++ b/x-pack/test/fleet_api_integration/apis/uninstall_token/privileges.ts @@ -5,13 +5,12 @@ * 2.0. */ -import { AgentPolicy } from '@kbn/fleet-plugin/common'; import { FtrProviderContext } from '../../../api_integration/ftr_provider_context'; import { skipIfNoDockerRegistry } from '../../helpers'; import { runPrivilegeTests } from '../../privileges_helpers'; import { setupFleetAndAgents } from '../agents/services'; import { testUsers } from '../test_users'; -import { generateNPolicies } from '../../helpers'; +import { generateNAgentPolicies } from '../../helpers'; export default function (providerContext: FtrProviderContext) { const { getService } = providerContext; @@ -27,12 +26,8 @@ export default function (providerContext: FtrProviderContext) { after(async () => { await kibanaServer.savedObjects.cleanStandardList(); }); - let generatedPolicies: Map; before(async () => { - const generatedPoliciesArray = await generateNPolicies(supertest, 2); - - generatedPolicies = new Map(); - generatedPoliciesArray.forEach((policy) => generatedPolicies.set(policy.id, policy)); + await generateNAgentPolicies(supertest, 2); }); skipIfNoDockerRegistry(providerContext); diff --git a/x-pack/test/fleet_api_integration/helpers.ts b/x-pack/test/fleet_api_integration/helpers.ts index 074ac2656e7f4e..bf8729dba368b9 100644 --- a/x-pack/test/fleet_api_integration/helpers.ts +++ b/x-pack/test/fleet_api_integration/helpers.ts @@ -15,6 +15,7 @@ import { } from '@kbn/fleet-plugin/common'; import { KbnClient } from '@kbn/test'; import { UNINSTALL_TOKENS_SAVED_OBJECT_TYPE } from '@kbn/fleet-plugin/common'; +import { SuperTest, Test } from 'supertest'; import { FtrProviderContext } from '../api_integration/ftr_provider_context'; export function warnAndSkipTest(mochaContext: Mocha.Context, log: ToolingLog) { @@ -108,7 +109,7 @@ export async function generateAgent( }); } -export function setPrereleaseSetting(supertest: any) { +export function setPrereleaseSetting(supertest: SuperTest) { before(async () => { await supertest .put('/api/fleet/settings') @@ -124,26 +125,33 @@ export function setPrereleaseSetting(supertest: any) { }); } -export const generateNPolicies = async ( - supertest: any, +export const generateNAgentPolicies = async ( + supertest: SuperTest, number: number, overwrite?: Partial ): Promise => { - const promises = []; + const agentPolicyPromises: Array> = []; for (let i = 0; i < number; i++) { - promises.push( - supertest - .post(agentPolicyRouteService.getCreatePath()) - .set('kbn-xsrf', 'xxxx') - .send({ name: `Agent Policy ${uuid.v4()}`, namespace: 'default', ...overwrite }) - .expect(200) - ); + agentPolicyPromises.push(generateAgentPolicy(supertest, overwrite)); } - const responses = await Promise.all(promises); + const agentPolicies = await Promise.all(agentPolicyPromises); - return responses.map(({ body }) => (body as CreateAgentPolicyResponse).item); + return agentPolicies; +}; + +export const generateAgentPolicy = async ( + supertest: SuperTest, + overwrite?: Partial +): Promise => { + const response = await supertest + .post(agentPolicyRouteService.getCreatePath()) + .set('kbn-xsrf', 'xxxx') + .send({ name: `Agent Policy ${uuid.v4()}`, namespace: 'default', ...overwrite }) + .expect(200); + + return (response.body as CreateAgentPolicyResponse).item; }; export const addUninstallTokenToPolicy = async ( diff --git a/x-pack/test/functional/apps/dashboard/group2/dashboard_search_by_value.ts b/x-pack/test/functional/apps/dashboard/group2/dashboard_search_by_value.ts index b597eadc8a93ae..803844999a60d0 100644 --- a/x-pack/test/functional/apps/dashboard/group2/dashboard_search_by_value.ts +++ b/x-pack/test/functional/apps/dashboard/group2/dashboard_search_by_value.ts @@ -94,7 +94,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { panels[0] ) ).to.be(true); - await dashboardPanelActions.legacyUnlinkFromLibary(panels[0]); + await dashboardPanelActions.legacyUnlinkFromLibrary(panels[0]); await testSubjects.existOrFail('unlinkPanelSuccess'); panels = await testSubjects.findAll('embeddablePanel'); expect(panels.length).to.be(1); diff --git a/x-pack/test/functional/apps/dashboard/group2/panel_titles.ts b/x-pack/test/functional/apps/dashboard/group2/panel_titles.ts index e03b5e616629a4..1eb629fdf0d35f 100644 --- a/x-pack/test/functional/apps/dashboard/group2/panel_titles.ts +++ b/x-pack/test/functional/apps/dashboard/group2/panel_titles.ts @@ -14,6 +14,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const dashboardPanelActions = getService('dashboardPanelActions'); const dashboardCustomizePanel = getService('dashboardCustomizePanel'); + const testSubjects = getService('testSubjects'); const PageObjects = getPageObjects([ 'common', 'dashboard', @@ -23,11 +24,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'lens', ]); - const DASHBOARD_NAME = 'Panel Title Test'; - const CUSTOM_TITLE = 'Test Custom Title'; const EMPTY_TITLE = '[No Title]'; - const LIBRARY_TITLE_FOR_CUSTOM_TESTS = 'Library Title for Custom Title Tests'; - const LIBRARY_TITLE_FOR_EMPTY_TESTS = 'Library Title for Empty Title Tests'; describe('panel titles', () => { before(async () => { @@ -39,13 +36,20 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.dashboard.navigateToApp(); await PageObjects.dashboard.preserveCrossAppState(); await PageObjects.dashboard.clickNewDashboard(); - await PageObjects.dashboard.saveDashboard(DASHBOARD_NAME); + await PageObjects.dashboard.saveDashboard('Panel Title Test'); + await PageObjects.lens.createAndAddLensFromDashboard({}); + }); + + beforeEach(async () => { + // close any open flyouts to prevent dirty state between tests + if (await testSubjects.exists('euiFlyoutCloseButton')) { + await testSubjects.click('euiFlyoutCloseButton'); + } }); describe('by value', () => { it('new panel by value has empty title', async () => { - await PageObjects.lens.createAndAddLensFromDashboard({}); - const newPanelTitle = (await PageObjects.dashboard.getPanelTitles())[0]; + const [newPanelTitle] = await PageObjects.dashboard.getPanelTitles(); expect(newPanelTitle).to.equal(EMPTY_TITLE); }); @@ -58,78 +62,115 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('custom title causes unsaved changes and saving clears it', async () => { await dashboardPanelActions.customizePanel(); - await dashboardCustomizePanel.setCustomPanelTitle(CUSTOM_TITLE); + await dashboardCustomizePanel.setCustomPanelTitle('Custom title'); await dashboardCustomizePanel.clickSaveButton(); - const panelTitle = (await PageObjects.dashboard.getPanelTitles())[0]; - expect(panelTitle).to.equal(CUSTOM_TITLE); + const [panelTitle] = await PageObjects.dashboard.getPanelTitles(); + expect(panelTitle).to.equal('Custom title'); await PageObjects.dashboard.clearUnsavedChanges(); }); - it('resetting title on a by value panel sets it to the empty string', async () => { - const BY_VALUE_TITLE = 'Reset Title - By Value'; + it('reset title should be hidden on a by value panel', async () => { await dashboardPanelActions.customizePanel(); - await dashboardCustomizePanel.setCustomPanelTitle(BY_VALUE_TITLE); + await dashboardCustomizePanel.setCustomPanelTitle('Some title'); await dashboardCustomizePanel.clickSaveButton(); + await dashboardPanelActions.customizePanel(); + expect(await testSubjects.exists('resetCustomEmbeddablePanelTitleButton')).to.be(false); + }); + it('reset description should be hidden on a by value panel', async () => { await dashboardPanelActions.customizePanel(); - await dashboardCustomizePanel.resetCustomPanelTitle(); + await dashboardCustomizePanel.setCustomPanelDescription('Some description'); await dashboardCustomizePanel.clickSaveButton(); - const panelTitle = (await PageObjects.dashboard.getPanelTitles())[0]; - expect(panelTitle).to.equal(EMPTY_TITLE); - await PageObjects.dashboard.clearUnsavedChanges(); + await dashboardPanelActions.customizePanel(); + expect(await testSubjects.exists('resetCustomEmbeddablePanelDescriptionButton')).to.be( + false + ); }); }); - describe('by reference', () => { + describe('nick by reference', () => { + const VIS_LIBRARY_DESCRIPTION = 'Vis library description'; + + let count = 0; + const getVisTitle = (increment = false) => + `Vis Library Title - ${increment ? ++count : count}`; + it('linking a by value panel with a custom title to the library will overwrite the custom title with the library title', async () => { await dashboardPanelActions.customizePanel(); - await dashboardCustomizePanel.setCustomPanelTitle(CUSTOM_TITLE); + await dashboardCustomizePanel.setCustomPanelTitle('Custom title'); await dashboardCustomizePanel.clickSaveButton(); - await dashboardPanelActions.legacySaveToLibrary(LIBRARY_TITLE_FOR_CUSTOM_TESTS); - await retry.try(async () => { + await dashboardPanelActions.legacySaveToLibrary(getVisTitle(true)); + await retry.tryForTime(500, async () => { // need to surround in 'retry' due to delays in HTML updates causing the title read to be behind - const newPanelTitle = (await PageObjects.dashboard.getPanelTitles())[0]; - expect(newPanelTitle).to.equal(LIBRARY_TITLE_FOR_CUSTOM_TESTS); + const [newPanelTitle] = await PageObjects.dashboard.getPanelTitles(); + expect(newPanelTitle).to.equal(getVisTitle()); }); }); it('resetting title on a by reference panel sets it to the library title', async () => { await dashboardPanelActions.customizePanel(); - await dashboardCustomizePanel.setCustomPanelTitle('This should go away'); + await dashboardCustomizePanel.setCustomPanelTitle('Custom Title'); await dashboardCustomizePanel.clickSaveButton(); - await dashboardPanelActions.customizePanel(); await dashboardCustomizePanel.resetCustomPanelTitle(); await dashboardCustomizePanel.clickSaveButton(); - const resetPanelTitle = (await PageObjects.dashboard.getPanelTitles())[0]; - expect(resetPanelTitle).to.equal(LIBRARY_TITLE_FOR_CUSTOM_TESTS); + await dashboardPanelActions.customizePanel(); + expect(await dashboardCustomizePanel.getCustomPanelTitle()).to.equal(getVisTitle()); + }); + + it('resetting description on a by reference panel sets it to the library title', async () => { + await dashboardPanelActions.openContextMenu(); + await dashboardPanelActions.navigateToEditorFromFlyout(); + // legacySaveToLibrary UI cannot set description + await PageObjects.lens.save( + getVisTitle(true), + false, + undefined, + undefined, + undefined, + undefined, + VIS_LIBRARY_DESCRIPTION + ); + + await dashboardPanelActions.customizePanel(); + await dashboardCustomizePanel.setCustomPanelDescription('Custom description'); + await dashboardCustomizePanel.clickSaveButton(); + + await dashboardPanelActions.customizePanel(); + await dashboardCustomizePanel.resetCustomPanelDescription(); + await dashboardCustomizePanel.clickSaveButton(); + + await dashboardPanelActions.customizePanel(); + expect(await dashboardCustomizePanel.getCustomPanelDescription()).to.equal( + VIS_LIBRARY_DESCRIPTION + ); }); it('unlinking a by reference panel with a custom title will keep the current title', async () => { await dashboardPanelActions.customizePanel(); - await dashboardCustomizePanel.setCustomPanelTitle(CUSTOM_TITLE); + await dashboardCustomizePanel.setCustomPanelTitle('Custom title'); await dashboardCustomizePanel.clickSaveButton(); - await dashboardPanelActions.legacyUnlinkFromLibary(); - const newPanelTitle = (await PageObjects.dashboard.getPanelTitles())[0]; - expect(newPanelTitle).to.equal(CUSTOM_TITLE); + await dashboardPanelActions.legacyUnlinkFromLibrary(); + const [newPanelTitle] = await PageObjects.dashboard.getPanelTitles(); + expect(newPanelTitle).to.equal('Custom title'); }); it("linking a by value panel with a blank title to the library will set the panel's title to the library title", async () => { await dashboardPanelActions.customizePanel(); await dashboardCustomizePanel.setCustomPanelTitle(''); await dashboardCustomizePanel.clickSaveButton(); - await dashboardPanelActions.legacySaveToLibrary(LIBRARY_TITLE_FOR_EMPTY_TESTS); - await retry.try(async () => { + await dashboardPanelActions.legacySaveToLibrary(getVisTitle(true)); + await retry.tryForTime(500, async () => { // need to surround in 'retry' due to delays in HTML updates causing the title read to be behind - const newPanelTitle = (await PageObjects.dashboard.getPanelTitles())[0]; - expect(newPanelTitle).to.equal(LIBRARY_TITLE_FOR_EMPTY_TESTS); + const [newPanelTitle] = await PageObjects.dashboard.getPanelTitles(); + expect(newPanelTitle).to.equal(getVisTitle()); }); }); it('unlinking a by reference panel without a custom title will keep the library title', async () => { - await dashboardPanelActions.legacyUnlinkFromLibary(); - const newPanelTitle = (await PageObjects.dashboard.getPanelTitles())[0]; - expect(newPanelTitle).to.equal(LIBRARY_TITLE_FOR_EMPTY_TESTS); + await dashboardPanelActions.legacyUnlinkFromLibrary(); + const [newPanelTitle] = await PageObjects.dashboard.getPanelTitles(); + expect(newPanelTitle).to.equal(getVisTitle()); }); }); }); diff --git a/x-pack/test/functional/apps/lens/group4/dashboard.ts b/x-pack/test/functional/apps/lens/group4/dashboard.ts index 773a9a04e646b0..33e3277855d2fb 100644 --- a/x-pack/test/functional/apps/lens/group4/dashboard.ts +++ b/x-pack/test/functional/apps/lens/group4/dashboard.ts @@ -242,7 +242,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await dashboardAddPanel.closeAddPanel(); const originalPanel = await testSubjects.find('embeddablePanelHeading-lnsPieVis'); - await panelActions.legacyUnlinkFromLibary(originalPanel); + await panelActions.legacyUnlinkFromLibrary(originalPanel); await testSubjects.existOrFail('unlinkPanelSuccess'); const updatedPanel = await testSubjects.find('embeddablePanelHeading-lnsPieVis'); diff --git a/x-pack/test/functional/apps/maps/group2/embeddable/embeddable_library.js b/x-pack/test/functional/apps/maps/group2/embeddable/embeddable_library.js index 45b17547221536..a14d80bd080ecd 100644 --- a/x-pack/test/functional/apps/maps/group2/embeddable/embeddable_library.js +++ b/x-pack/test/functional/apps/maps/group2/embeddable/embeddable_library.js @@ -59,7 +59,7 @@ export default function ({ getPageObjects, getService }) { it('unlink map panel from embeddable library', async () => { const originalPanel = await testSubjects.find('embeddablePanelHeading-embeddablelibrarymap'); - await dashboardPanelActions.unlinkFromLibary(originalPanel); + await dashboardPanelActions.unlinkFromLibrary(originalPanel); await testSubjects.existOrFail('unlinkPanelSuccess'); const updatedPanel = await testSubjects.find('embeddablePanelHeading-embeddablelibrarymap'); diff --git a/x-pack/test/functional/apps/ml/anomaly_detection_integrations/single_metric_viewer_dashboard_embeddables.ts b/x-pack/test/functional/apps/ml/anomaly_detection_integrations/single_metric_viewer_dashboard_embeddables.ts index 1caa425d80ee4b..26905bb9e2a550 100644 --- a/x-pack/test/functional/apps/ml/anomaly_detection_integrations/single_metric_viewer_dashboard_embeddables.ts +++ b/x-pack/test/functional/apps/ml/anomaly_detection_integrations/single_metric_viewer_dashboard_embeddables.ts @@ -67,15 +67,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('can select jobs', async () => { - await ml.dashboardJobSelectionTable.setRowRadioButtonState( - testData.jobConfig.job_id, - true - ); - await ml.dashboardJobSelectionTable.applyJobSelection(); + await ml.alerting.selectJobs([testData.jobConfig.job_id]); + await ml.alerting.assertJobSelection([testData.jobConfig.job_id]); }); it('can configure single metric viewer panel', async () => { - await ml.dashboardEmbeddables.assertSingleMetricViewerEmbeddableInitializerExists(); await ml.singleMetricViewer.assertDetectorInputExist(); await ml.singleMetricViewer.assertDetectorInputValue( testData.expected.detectorInputValue diff --git a/x-pack/test/functional/page_objects/dataset_quality.ts b/x-pack/test/functional/page_objects/dataset_quality.ts index 45dfca75faf9a1..f81cffea160f82 100644 --- a/x-pack/test/functional/page_objects/dataset_quality.ts +++ b/x-pack/test/functional/page_objects/dataset_quality.ts @@ -127,6 +127,8 @@ export function DatasetQualityPageObject({ getPageObjects, getService }: FtrProv }, async parseSummaryPanel(excludeKeys: string[] = []): Promise { + await this.waitUntilSummaryPanelLoaded(); + const kpiTitleAndKeys = [ { title: texts.datasetHealthPoor, key: 'datasetHealthPoor' }, { title: texts.datasetHealthDegraded, key: 'datasetHealthDegraded' }, diff --git a/x-pack/test/functional/page_objects/lens_page.ts b/x-pack/test/functional/page_objects/lens_page.ts index 8b8f84adfa55e9..5e27c50848051e 100644 --- a/x-pack/test/functional/page_objects/lens_page.ts +++ b/x-pack/test/functional/page_objects/lens_page.ts @@ -746,7 +746,8 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont redirectToOrigin?: boolean, saveToLibrary?: boolean, addToDashboard?: 'new' | 'existing' | null, - dashboardId?: string + dashboardId?: string, + description?: string ) { await PageObjects.timeToVisualize.setSaveModalValues(title, { saveAsNew, @@ -754,6 +755,7 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont addToDashboard: addToDashboard ? addToDashboard : null, dashboardId, saveToLibrary, + description, }); await testSubjects.click('confirmSaveSavedObjectButton'); @@ -774,7 +776,8 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont redirectToOrigin?: boolean, saveToLibrary?: boolean, addToDashboard?: 'new' | 'existing' | null, - dashboardId?: string + dashboardId?: string, + description?: string ) { await PageObjects.header.waitUntilLoadingHasFinished(); await testSubjects.click('lnsApp_saveButton'); @@ -785,7 +788,8 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont redirectToOrigin, saveToLibrary, addToDashboard, - dashboardId + dashboardId, + description ); }, diff --git a/x-pack/test/functional/services/ml/dashboard_embeddables.ts b/x-pack/test/functional/services/ml/dashboard_embeddables.ts index 685a1a5755b184..cf403bab147d84 100644 --- a/x-pack/test/functional/services/ml/dashboard_embeddables.ts +++ b/x-pack/test/functional/services/ml/dashboard_embeddables.ts @@ -25,14 +25,6 @@ export function MachineLearningDashboardEmbeddablesProvider( }); }, - async assertSingleMetricViewerEmbeddableInitializerExists() { - await retry.tryForTime(10 * 1000, async () => { - await testSubjects.existOrFail('mlSingleMetricViewerEmbeddableInitializer', { - timeout: 1000, - }); - }); - }, - async assertSingleMetricViewerEmbeddableInitializerNotExists() { await retry.tryForTime(10 * 1000, async () => { await testSubjects.missingOrFail('mlSingleMetricViewerEmbeddableInitializer', { @@ -133,11 +125,11 @@ export function MachineLearningDashboardEmbeddablesProvider( if (mlEmbeddableType === 'ml_single_metric_viewer') { await dashboardAddPanel.clickAddNewPanelFromUIActionLink('Single metric viewer'); + await testSubjects.existOrFail('mlAnomalyJobSelectionControls', { timeout: 2000 }); } else { await dashboardAddPanel.clickAddNewEmbeddableLink(mlEmbeddableType); + await mlDashboardJobSelectionTable.assertJobSelectionTableExists(); } - - await mlDashboardJobSelectionTable.assertJobSelectionTableExists(); }); }, }; diff --git a/x-pack/test/search_sessions_integration/tests/apps/dashboard/session_sharing/lens.ts b/x-pack/test/search_sessions_integration/tests/apps/dashboard/session_sharing/lens.ts index 4087aeb465fa9f..39253534c54c7c 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/dashboard/session_sharing/lens.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/dashboard/session_sharing/lens.ts @@ -59,7 +59,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // Convert to by-value const byRefPanel = await testSubjects.find('embeddablePanelHeading-' + lensTitle); - await dashboardPanelActions.legacyUnlinkFromLibary(byRefPanel); + await dashboardPanelActions.legacyUnlinkFromLibrary(byRefPanel); await PageObjects.dashboard.waitForRenderComplete(); const byValueSessionId = await dashboardPanelActions.getSearchSessionIdByTitle(lensTitle); diff --git a/x-pack/test/security_solution_cypress/cypress/README.md b/x-pack/test/security_solution_cypress/cypress/README.md index b3190e1fe4cdca..1bbbd463ca32ca 100644 --- a/x-pack/test/security_solution_cypress/cypress/README.md +++ b/x-pack/test/security_solution_cypress/cypress/README.md @@ -243,11 +243,12 @@ cy.task('esArchiverUnload', { archiveName: 'overview'}); ``` -You can also use archives stored in `kibana/x-pack/test/functional/es_archives`. In order to do sow uste it on the tests as follow. +You can also use archives located in `x-pack/test/functional/es_archives/security_solution` by specifying `type: 'ftr'` in the archiver tasks: ```typescript -cy.task('esArchiverLoad', { archiveName: 'security_solution/alias', type: 'ftr'}); -cy.task('esArchiverUnload', { archiveName: 'security_solution/alias', type:'ftr'}); +// loads then unloads from x-pack/test/functional/es_archives/security_solution/alias +cy.task('esArchiverLoad', { archiveName: 'alias', type: 'ftr'}); +cy.task('esArchiverUnload', { archiveName: 'alias', type:'ftr'}); ``` ## Serverless diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/common_flows.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/common_flows.cy.ts index bdcbbcf987eb6c..540d9e09b5dacf 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/common_flows.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/detection_response/detection_engine/rule_creation/common_flows.cy.ts @@ -52,7 +52,9 @@ import { visit } from '../../../../tasks/navigation'; // to ensure we don't miss any changes that maybe affect one of these more obscure UI components // in the creation form. For any rule type specific functionalities, please include // them in the relevant /rule_creation/[RULE_TYPE].cy.ts test. -describe('Common rule creation flows', { tags: ['@ess', '@serverless'] }, () => { + +// FLAKY: https://github.com/elastic/kibana/issues/183437 +describe.skip('Common rule creation flows', { tags: ['@ess', '@serverless'] }, () => { beforeEach(() => { login(); deleteAlertsAndRules(); diff --git a/x-pack/test/security_solution_endpoint/apps/integrations/endpoint_exceptions.ts b/x-pack/test/security_solution_endpoint/apps/integrations/endpoint_exceptions.ts index 23b5b4f0581525..e1d77eb2938962 100644 --- a/x-pack/test/security_solution_endpoint/apps/integrations/endpoint_exceptions.ts +++ b/x-pack/test/security_solution_endpoint/apps/integrations/endpoint_exceptions.ts @@ -29,7 +29,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const comboBox = getService('comboBox'); const toasts = getService('toasts'); - describe('Endpoint Exceptions', function () { + // Failing: See https://github.com/elastic/kibana/issues/176009 + describe.skip('Endpoint Exceptions', function () { targetTags(this, ['@ess', '@serverless']); this.timeout(10 * 60_000); diff --git a/x-pack/test_serverless/functional/test_suites/common/discover/esql/_esql_view.ts b/x-pack/test_serverless/functional/test_suites/common/discover/esql/_esql_view.ts index 5f051ac77bba0f..a8d140345e5167 100644 --- a/x-pack/test_serverless/functional/test_suites/common/discover/esql/_esql_view.ts +++ b/x-pack/test_serverless/functional/test_suites/common/discover/esql/_esql_view.ts @@ -49,7 +49,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.timePicker.setDefaultAbsoluteRange(); }); - describe('test', () => { + // FLAKY: https://github.com/elastic/kibana/issues/183193 + describe.skip('test', () => { it('should render esql view correctly', async function () { await PageObjects.unifiedFieldList.waitUntilSidebarHasLoaded(); diff --git a/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/dataset_quality_table.ts b/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/dataset_quality_table.ts index 04145eb3a06415..096045db79ea75 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/dataset_quality_table.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/dataset_quality/dataset_quality_table.ts @@ -88,7 +88,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(updatedDegradedDocsColCellTexts[2]).to.not.eql('0%'); }); - it('shows the updated size of the index', async () => { + // https://github.com/elastic/kibana/issues/178954 + it.skip('shows the updated size of the index', async () => { const testDatasetIndex = 2; const cols = await PageObjects.datasetQuality.parseDatasetTable(); const datasetNameCol = cols['Dataset Name']; diff --git a/yarn.lock b/yarn.lock index b4529660306285..efc5192e28f3da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1511,21 +1511,6 @@ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz#b6b8d81780b9a9f6459f4bfe9226ac6aefaefe87" integrity sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA== -"@cypress/code-coverage@^3.12.18": - version "3.12.19" - resolved "https://registry.yarnpkg.com/@cypress/code-coverage/-/code-coverage-3.12.19.tgz#5bf197cb48826c315c7cce7acf1b3057de34a033" - integrity sha512-RNpgESArIwX2PG7k0KEb941eSYSBEGF1WB5NPeWrVJMX6KeAxj3Ki5aeYlFeV+wxoAJ+7gcF4s5xV18BQLCpjQ== - dependencies: - "@cypress/webpack-preprocessor" "^6.0.0" - chalk "4.1.2" - dayjs "1.11.10" - debug "4.3.4" - execa "4.1.0" - globby "11.1.0" - istanbul-lib-coverage "^3.0.0" - js-yaml "4.1.0" - nyc "15.1.0" - "@cypress/grep@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@cypress/grep/-/grep-4.0.1.tgz#bce679f85da286c4979bb9ffc79b2782dc5b75c6" @@ -1559,7 +1544,7 @@ tunnel-agent "^0.6.0" uuid "^8.3.2" -"@cypress/webpack-preprocessor@^6.0.0", "@cypress/webpack-preprocessor@^6.0.1": +"@cypress/webpack-preprocessor@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-6.0.1.tgz#5369527c063b2f4718a125ddbd163c5775086e06" integrity sha512-WVNeFVSnFKxE3WZNRIriduTgqJRpevaiJIPlfqYTTzfXRD7X1Pv4woDE+G4caPV9bJqVKmVFiwzrXMRNeJxpxA== @@ -6494,6 +6479,10 @@ version "0.0.0" uid "" +"@kbn/try-in-console@link:packages/kbn-try-in-console": + version "0.0.0" + uid "" + "@kbn/ts-projects@link:packages/kbn-ts-projects": version "0.0.0" uid "" @@ -7732,10 +7721,10 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= -"@puppeteer/browsers@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.1.0.tgz#2683d3c908ecfc9af6b63111b5037679d3cebfd8" - integrity sha512-xloWvocjvryHdUjDam/ZuGMh7zn4Sn3ZAaV4Ah2e2EwEt90N3XphZlSsU3n0VDc1F7kggCjMuH0UuxfPQ5mD9w== +"@puppeteer/browsers@2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.2.3.tgz#ad6b79129c50825e77ddaba082680f4dad0b674e" + integrity sha512-bJ0UBsk0ESOs6RFcLXOt99a3yTDcOKlzfjad+rhFwdaG1Lu/Wzq58GHYCDTlZ9z6mldf4g+NTb+TXEfe0PpnsQ== dependencies: debug "4.3.4" extract-zip "2.0.1" @@ -10279,7 +10268,7 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@20.10.5", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=18.0.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.0.0", "@types/node@^18.11.18": +"@types/node@*", "@types/node@20.10.5", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0", "@types/node@>=18.0.0", "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^18.0.0", "@types/node@^18.11.18", "@types/node@^18.17.5": version "20.10.5" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.5.tgz#47ad460b514096b7ed63a1dae26fad0914ed3ab2" integrity sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw== @@ -13435,14 +13424,6 @@ chalk@2.4.2, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2, chalk@~4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chalk@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -13462,6 +13443,14 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2, chalk@~4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^5.1.2, chalk@^5.2.0, chalk@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" @@ -13592,13 +13581,14 @@ chromedriver@^123.0.3: proxy-from-env "^1.1.0" tcp-port-used "^1.0.2" -chromium-bidi@0.5.10: - version "0.5.10" - resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-0.5.10.tgz#03ac8381e6a0d6be67886d27f77777ef3a978429" - integrity sha512-4hsPE1VaLLM/sgNK/SlLbI24Ra7ZOuWAjA3rhw1lVCZ8ZiUgccS6cL5L/iqo4hjRcl5vwgYJ8xTtbXdulA9b6Q== +chromium-bidi@0.5.19: + version "0.5.19" + resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-0.5.19.tgz#e4f4951b7d9b20d668d6b387839f7b7bf2d69ef4" + integrity sha512-UA6zL77b7RYCjJkZBsZ0wlvCTD+jTjllZ8f6wdO4buevXgTZYjV+XLB9CiEa2OuuTGGTLnI7eN9I60YxuALGQg== dependencies: mitt "3.0.1" urlpattern-polyfill "10.0.0" + zod "3.22.4" ci-info@^2.0.0: version "2.0.0" @@ -14379,13 +14369,6 @@ cronstrue@^1.51.0: resolved "https://registry.yarnpkg.com/cronstrue/-/cronstrue-1.51.0.tgz#7a63153d61d940344049037628da38a60784c8e2" integrity sha512-fSRAz/MV0TRjeNZKAsovmH/MSsly7+8np4XsfsrjOOz7sjxLrE9SmedRYAs3nPAtLLC5UsMpvenjXYRz463bMA== -cross-fetch@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" - integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== - dependencies: - node-fetch "^2.6.12" - cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -14702,13 +14685,14 @@ cypress-recurse@^1.35.2: dependencies: humanize-duration "^3.27.3" -cypress@^13.6.3: - version "13.6.3" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.6.3.tgz#54f03ca07ee56b2bc18211e7bd32abd2533982ba" - integrity sha512-d/pZvgwjAyZsoyJ3FOsJT5lDsqnxQ/clMqnNc++rkHjbkkiF2h9s0JsZSyyH4QXhVFW3zPFg82jD25roFLOdZA== +cypress@13.6.2: + version "13.6.2" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.6.2.tgz#c70df09db0a45063298b3cecba2fa21109768e08" + integrity sha512-TW3bGdPU4BrfvMQYv1z3oMqj71YI4AlgJgnrycicmPZAXtvywVFZW9DAToshO65D97rCWfG/kqMFsYB6Kp91gQ== dependencies: "@cypress/request" "^3.0.0" "@cypress/xvfb" "^1.2.4" + "@types/node" "^18.17.5" "@types/sinonjs__fake-timers" "8.1.1" "@types/sizzle" "^2.3.2" arch "^2.2.0" @@ -15082,7 +15066,7 @@ dateformat@^4.5.1: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== -dayjs@1.11.10, dayjs@^1.10.4: +dayjs@^1.10.4: version "1.11.10" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== @@ -15547,10 +15531,10 @@ detective@^5.0.2: defined "^1.0.0" minimist "^1.1.1" -devtools-protocol@0.0.1249869: - version "0.0.1249869" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1249869.tgz#000c3cf1afc189a18db98135a50d4a8f95a47d29" - integrity sha512-Ctp4hInA0BEavlUoRy9mhGq0i+JSo/AwVyX2EFgZmV1kYB+Zq+EMBAn52QWu6FbRr10hRb6pBl420upbp4++vg== +devtools-protocol@0.0.1273771: + version "0.0.1273771" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1273771.tgz#46aeb5db41417e2c2ad3d8367c598c975290b1a5" + integrity sha512-QDbb27xcTVReQQW/GHJsdQqGKwYBE7re7gxehj467kKP2DKuYBUj6i2k5LRiAC66J1yZG/9gsxooz/s9pcm0Og== dezalgo@^1.0.0, dezalgo@^1.0.4: version "1.0.4" @@ -18330,18 +18314,6 @@ globby@10.0.0: merge2 "^1.2.3" slash "^3.0.0" -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== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - globby@^10.0.1: version "10.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" @@ -18356,6 +18328,18 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.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== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -23318,7 +23302,7 @@ node-fetch-h2@^2.3.0: dependencies: http2-client "^1.2.5" -node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: +node-fetch@^2.6.1, node-fetch@^2.6.7: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -23595,7 +23579,7 @@ nwsapi@^2.2.2: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0" integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== -nyc@15.1.0, nyc@^15.1.0: +nyc@^15.1.0: version "15.1.0" resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== @@ -25538,26 +25522,26 @@ pupa@^3.1.0: dependencies: escape-goat "^4.0.0" -puppeteer-core@22.3.0: - version "22.3.0" - resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-22.3.0.tgz#89fa75bbbcfa2927e3045c69253cc676f7bda728" - integrity sha512-Ho5Vdpdro05ZyCx/l5Hkc5vHiibKTaY37fIAD9NF9Gi/vDxkVTeX40U/mFnEmeoxyuYALvWCJfi7JTT82R6Tuw== +puppeteer-core@22.8.1: + version "22.8.1" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-22.8.1.tgz#757ec8983ca38486dad8e5464e744f4b8aff5a13" + integrity sha512-m1F6ZSTw1xrJ6xD4B+HonkSNVQmMrRMaqca/ivRcZYJ6jqzOnfEh3QgO9HpNPj6heiAZ2+4IPAU3jdZaTIDnSA== dependencies: - "@puppeteer/browsers" "2.1.0" - chromium-bidi "0.5.10" - cross-fetch "4.0.0" + "@puppeteer/browsers" "2.2.3" + chromium-bidi "0.5.19" debug "4.3.4" - devtools-protocol "0.0.1249869" - ws "8.16.0" + devtools-protocol "0.0.1273771" + ws "8.17.0" -puppeteer@22.3.0: - version "22.3.0" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-22.3.0.tgz#4ea1f1c8c5a527b0e4ca21a242af7d3d9b89e294" - integrity sha512-GC+tyjzYKjaNjhlDAuqRgDM+IOsqOG75Da4L28G4eULNLLxKDt+79x2OOSQ47HheJBgGq7ATSExNE6gayxP6cg== +puppeteer@22.8.1: + version "22.8.1" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-22.8.1.tgz#d0b96cd722f62a157804dcc3b0d4909e3620bf1d" + integrity sha512-CFgPSKV+iydjO/8/hJVj251Hqp2PLcIa70j6H7sYqkwM8YJ+D3CA74Ufuj+yKtvDIntQPB/nLw4EHrHPcHOPjw== dependencies: - "@puppeteer/browsers" "2.1.0" + "@puppeteer/browsers" "2.2.3" cosmiconfig "9.0.0" - puppeteer-core "22.3.0" + devtools-protocol "0.0.1273771" + puppeteer-core "22.8.1" pure-rand@^6.0.0: version "6.0.2" @@ -31824,10 +31808,10 @@ write-file-atomic@^4.0.1, write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" -ws@8.16.0, ws@>=8.14.2, ws@^8.2.3, ws@^8.4.2, ws@^8.9.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" - integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== +ws@8.17.0, ws@>=8.14.2, ws@^8.2.3, ws@^8.4.2, ws@^8.9.0: + version "8.17.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" + integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== ws@^7.3.1, ws@^7.4.2: version "7.5.9" @@ -32137,7 +32121,7 @@ zod-to-json-schema@^3.22.3, zod-to-json-schema@^3.22.5: resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.22.5.tgz#3646e81cfc318dbad2a22519e5ce661615418673" integrity sha512-+akaPo6a0zpVCCseDed504KBJUQpEW5QZw7RMneNmKw+fGaML1Z9tUNLnHHAC8x6dzVRO1eB2oEMyZRnuBZg7Q== -zod@^3.22.3, zod@^3.22.4: +zod@3.22.4, zod@^3.22.3, zod@^3.22.4: version "3.22.4" resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff" integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==